diff --git a/generate/csdown/csdown/CodeInfo.cs b/generate/csdown/csdown/CodeInfo.cs index 65aaf2b1..d1e42328 100644 --- a/generate/csdown/csdown/CodeInfo.cs +++ b/generate/csdown/csdown/CodeInfo.cs @@ -129,6 +129,17 @@ namespace csdown return ""; } + public CodeItem FindConstructor(ConstructorInfo c) + { + string id = c.DeclaringType.FullName + ".#ctor"; + ParameterInfo[] parms = c.GetParameters(); + if (parms.Length > 0) + id += "(" + string.Join(",", parms.Select(p => p.ParameterType.FullName)) + ")"; + CodeItem item; + table.TryGetValue(id, out item); + return item; + } + public CodeItem FindMethod(MethodInfo f) { string id = f.DeclaringType.FullName + "." + f.Name; @@ -147,6 +158,12 @@ namespace csdown return table[id]; } + public CodeItem FindProperty(PropertyInfo p) + { + string id = p.DeclaringType.FullName + "." + p.Name; + return table[id]; + } + public CodeItem FindType(Type t) { return table[t.FullName]; diff --git a/generate/csdown/csdown/Program.cs b/generate/csdown/csdown/Program.cs index 04681dc5..a09cd33a 100644 --- a/generate/csdown/csdown/Program.cs +++ b/generate/csdown/csdown/Program.cs @@ -76,6 +76,8 @@ namespace csdown private static void AppendTypeMarkdown(StringBuilder sb, CodeInfo cinfo, Type type) { + var temp_sb = new StringBuilder(); + string kind; if (type.IsClass) kind = "class"; @@ -119,33 +121,63 @@ namespace csdown } else { - // Dump struct/class fields. - FieldInfo[] fields = type.GetFields(); - if (fields.Length > 0) + // Dump constructor(s). + temp_sb.Clear(); + ConstructorInfo[] ctors = type.GetConstructors(); + foreach (ConstructorInfo c in ctors) + AppendConstructorMarkdown(temp_sb, cinfo, c); + if (temp_sb.Length > 0) { - sb.AppendLine("| Type | Name | Description |"); - sb.AppendLine("| --- | --- | --- |"); - foreach (FieldInfo f in fields) - if (f.DeclaringType == type) - AppendMemberVariableMarkdown(sb, cinfo, f); + sb.AppendLine("### constructors"); + sb.AppendLine(); + sb.Append(temp_sb); sb.AppendLine(); } - } - // Member functions + // Dump struct/class fields. + temp_sb.Clear(); + FieldInfo[] fields = type.GetFields(); + foreach (FieldInfo f in fields) + if (f.DeclaringType == type) + AppendMemberVariableMarkdown(temp_sb, cinfo, f); + if (temp_sb.Length > 0) + { + sb.AppendLine("### member variables"); + sb.AppendLine(); + sb.AppendLine("| Type | Name | Description |"); + sb.AppendLine("| --- | --- | --- |"); + sb.Append(temp_sb); + sb.AppendLine(); + } - MethodInfo[] funcs = type.GetMethods() - .Where(m => m.IsPublic && m.DeclaringType == type) - .OrderBy(m => m.Name.ToUpperInvariant()) - .ToArray(); + temp_sb.Clear(); + PropertyInfo[] props = type.GetProperties(); + foreach (PropertyInfo p in props) + if (p.DeclaringType == type) + AppendPropertyMarkdown(temp_sb, cinfo, p); + if (temp_sb.Length > 0) + { + sb.AppendLine("### properties"); + sb.AppendLine(); + sb.AppendLine("| Type | Name | Description |"); + sb.AppendLine("| --- | --- | --- |"); + sb.Append(temp_sb); + sb.AppendLine(); + } - if (funcs.Length > 0) - { - sb.AppendLine("### member functions"); - sb.AppendLine(); + // Member functions + MethodInfo[] funcs = type.GetMethods() + .Where(m => m.IsPublic && m.DeclaringType == type) + .OrderBy(m => m.Name.ToUpperInvariant()) + .ToArray(); - foreach (MethodInfo f in funcs) - AppendFunctionMarkdown(sb, cinfo, f); + if (funcs.Length > 0) + { + sb.AppendLine("### member functions"); + sb.AppendLine(); + foreach (MethodInfo f in funcs) + AppendFunctionMarkdown(sb, cinfo, f); + } } sb.AppendLine("---"); @@ -164,6 +196,18 @@ namespace csdown sb.AppendLine(" |"); } + private static void AppendPropertyMarkdown(StringBuilder sb, CodeInfo cinfo, PropertyInfo p) + { + CodeItem item = cinfo.FindProperty(p); + sb.Append("| "); + sb.Append(TypeMarkdown(p.PropertyType)); + sb.Append(" | `"); + sb.Append(p.Name); + sb.Append("` | "); + sb.Append(CodeInfo.Linear(item.Summary)); + sb.AppendLine(" |"); + } + private static void AppendEnumValueMarkdown(StringBuilder sb, CodeInfo cinfo, FieldInfo f) { CodeItem item = cinfo.FindField(f); @@ -223,20 +267,48 @@ namespace csdown sb.AppendLine(); } + private static void AppendConstructorMarkdown(StringBuilder sb, CodeInfo cinfo, ConstructorInfo c) + { + CodeItem item = cinfo.FindConstructor(c); + if (item != null) + { + AppendCallableMarkdown( + sb, + item, + c.GetParameters(), + null, // not so easy to create an anchor for multiple constructors, and not yet needed + "new " + c.DeclaringType.Name, + null + ); + } + } + private static void AppendFunctionMarkdown(StringBuilder sb, CodeInfo cinfo, MethodInfo f) { CodeItem item = cinfo.FindMethod(f); - if (item == null) - return; + if (item != null) + { + string name = f.DeclaringType.Name + "." + f.Name; + AppendCallableMarkdown(sb, item, f.GetParameters(), name, name, f.ReturnType); + } + } - ParameterInfo[] parms = f.GetParameters(); - string parentClassName = f.DeclaringType.Name; - sb.AppendFormat("", parentClassName, f.Name); - sb.AppendLine(); - sb.AppendFormat("### {0}.{1}(", parentClassName, f.Name); + private static void AppendCallableMarkdown( + StringBuilder sb, + CodeItem item, + ParameterInfo[] parms, + string anchor, + string display, + Type returnType) + { + if (anchor != null) + sb.AppendLine($""); + sb.Append($"### {display}("); sb.Append(string.Join(", ", parms.Select(p => p.Name))); - sb.AppendFormat(") ⇒ {0}", TypeMarkdown(f.ReturnType)); + sb.Append(")"); + if (returnType != null) // constructors don't have return types (not even `void`) + sb.AppendFormat(" ⇒ {0}", TypeMarkdown(returnType)); sb.AppendLine(); sb.AppendLine(); if (!string.IsNullOrWhiteSpace(item.Summary)) diff --git a/generate/template/astronomy.cs b/generate/template/astronomy.cs index d70e07a1..649445bb 100644 --- a/generate/template/astronomy.cs +++ b/generate/template/astronomy.cs @@ -40,7 +40,7 @@ namespace CosineKitty public class EarthNotAllowedException: ArgumentException { /// Creates an exception indicating that the Earth is not allowed as a target body. - public EarthNotAllowedException(): + internal EarthNotAllowedException(): base("The Earth is not allowed as the body parameter.") {} } @@ -52,7 +52,8 @@ namespace CosineKitty public class InvalidBodyException: ArgumentException { /// Creates an exception indicating that the given body is not valid for this operation. - public InvalidBodyException(Body body): + /// The body that was invalid. + internal InvalidBodyException(Body body): base("Invalid body: " + body) {} } @@ -65,7 +66,8 @@ namespace CosineKitty public class InternalError: Exception { /// Creates an exception indicating that an unexpected error ocurred. - public InternalError(string message): + /// Diagnostic text about the internal error. + internal InternalError(string message): base("Internal error. Please report an issue at: https://github.com/cosinekitty/astronomy/issues. Diagnostic: " + message) {} } @@ -860,7 +862,7 @@ namespace CosineKitty /// Declination in degrees. /// Distance to the celestial body in AU. /// Equatorial coordinates in vector form. - public Equatorial(double ra, double dec, double dist, AstroVector vec) + internal Equatorial(double ra, double dec, double dist, AstroVector vec) { this.ra = ra; this.dec = dec; @@ -902,7 +904,7 @@ namespace CosineKitty /// ecliptic vector /// ecliptic latitude /// ecliptic longitude - public Ecliptic(AstroVector vec, double elat, double elon) + internal Ecliptic(AstroVector vec, double elat, double elon) { this.vec = vec; this.elat = elat; @@ -947,7 +949,7 @@ namespace CosineKitty /// Angle in degrees above (positive) or below (negative) the observer's horizon. /// Right ascension in sidereal hours. /// Declination in degrees. - public Topocentric(double azimuth, double altitude, double ra, double dec) + internal Topocentric(double azimuth, double altitude, double ra, double dec) { this.azimuth = azimuth; this.altitude = altitude; @@ -1057,7 +1059,7 @@ namespace CosineKitty /// /// The date and time when the body crosses the specified hour angle. /// Apparent coordinates of the body at the time it crosses the specified hour angle. - public HourAngleInfo(AstroTime time, Topocentric hor) + internal HourAngleInfo(AstroTime time, Topocentric hor) { this.time = time; this.hor = hor; @@ -1090,7 +1092,7 @@ namespace CosineKitty /// Whether the body is best seen in the morning or the evening. /// The angle in degrees between the body and the Sun, as seen from the Earth. /// The difference between the ecliptic longitudes of the body and the Sun, as seen from the Earth. - public ElongationInfo(AstroTime time, Visibility visibility, double elongation, double ecliptic_separation) + internal ElongationInfo(AstroTime time, Visibility visibility, double elongation, double ecliptic_separation) { this.time = time; this.visibility = visibility; diff --git a/source/csharp/README.md b/source/csharp/README.md index 293f62aa..e88bf79b 100644 --- a/source/csharp/README.md +++ b/source/csharp/README.md @@ -2254,6 +2254,8 @@ point is called *apogee*. The closest approach of a planet to the Sun is called This data structure is returned by [`Astronomy.SearchLunarApsis`](#Astronomy.SearchLunarApsis) and [`Astronomy.NextLunarApsis`](#Astronomy.NextLunarApsis) to iterate through consecutive alternating perigees and apogees. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `time` | The date and time of the apsis. | @@ -2280,6 +2282,40 @@ to iterate through consecutive alternating perigees and apogees. **A date and time used for astronomical calculations.** +### constructors + +### new AstroTime(ut) + +**Creates an `AstroTime` object from a Universal Time day value.** + +| Type | Parameter | Description | +| --- | --- | --- | +| `double` | `ut` | The number of days after the J2000 epoch. | + +### new AstroTime(d) + +**Creates an `AstroTime` object from a .NET `DateTime` object.** + +| Type | Parameter | Description | +| --- | --- | --- | +| `DateTime` | `d` | The date and time to be converted to AstroTime format. | + +### new AstroTime(year, month, day, hour, minute, second) + +**Creates an `AstroTime` object from a UTC year, month, day, hour, minute and second.** + +| Type | Parameter | Description | +| --- | --- | --- | +| `int` | `year` | The UTC year value. | +| `int` | `month` | The UTC month value 1..12. | +| `int` | `day` | The UTC day of the month 1..31. | +| `int` | `hour` | The UTC hour value 0..23. | +| `int` | `minute` | The UTC minute value 0..59. | +| `int` | `second` | The UTC second value 0..59. | + + +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `ut` | UT1/UTC number of days since noon on January 1, 2000. | @@ -2345,6 +2381,22 @@ an `AstroTime` value that can be passed to Astronomy Engine functions. **A 3D Cartesian vector whose components are expressed in Astronomical Units (AU).** +### constructors + +### new AstroVector(x, y, z, t) + +**Creates an AstroVector.** + +| Type | Parameter | Description | +| --- | --- | --- | +| `double` | `x` | A Cartesian x-coordinate expressed in AU. | +| `double` | `y` | A Cartesian y-coordinate expressed in AU. | +| `double` | `z` | A Cartesian z-coordinate expressed in AU. | +| [`AstroTime`](#AstroTime) | `t` | The date and time at which this vector is valid. | + + +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `x` | The Cartesian x-coordinate of the vector in AU. | @@ -2390,6 +2442,8 @@ The fields `ra`, `dec`, and `spin` correspond to the variables The field `north` is a unit vector pointing in the direction of the body's north pole. It is expressed in the equatorial J2000 system (EQJ). +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `ra` | The J2000 right ascension of the body's north pole direction, in sidereal hours. | @@ -2434,6 +2488,8 @@ Constellations are defined with respect to the B1875 equatorial system per IAU standard. Although `Astronomy.Constellation` requires J2000 equatorial coordinates, the struct contains converted B1875 coordinates for reference. +### member variables + | Type | Name | Description | | --- | --- | --- | | `string` | `Symbol` | 3-character mnemonic symbol for the constellation, e.g. "Ori". | @@ -2499,6 +2555,8 @@ visible if the Earth were transparent, but the observer cannot actually see it. If `altitude` is positive but less than a few degrees, visibility will be impaired by atmospheric interference (sunrise or sunset conditions). +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `time` | The date and time of the event. | @@ -2529,6 +2587,8 @@ atmospheric interference (sunrise or sunset conditions). Coordinates of a celestial body as seen from the center of the Sun (heliocentric), oriented with respect to the plane of the Earth's orbit around the Sun (the ecliptic). +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroVector`](#AstroVector) | `vec` | Cartesian ecliptic vector, with components as follows: x: the direction of the equinox along the ecliptic plane. y: in the ecliptic plane 90 degrees prograde from the equinox. z: perpendicular to the ecliptic plane. Positive is north. | @@ -2544,6 +2604,8 @@ oriented with respect to the plane of the Earth's orbit around the Sun (the ecli See [`Astronomy.Elongation`](#Astronomy.Elongation) for more detailed information about the members of this structure. See also [`Astronomy.SearchMaxElongation`](#Astronomy.SearchMaxElongation) for how to search for maximum elongation events.** +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `time` | The date and time of the observation. | @@ -2587,6 +2649,8 @@ Coordinates of a celestial body as seen from the Earth (geocentric or topocentric, depending on context), oriented with respect to the projection of the Earth's equator onto the sky. +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `ra` | Right ascension in sidereal hours. | @@ -2621,6 +2685,8 @@ onto the daytime side of the Earth at the instant of the eclipse's peak. If `kind` has any other value, `latitude` and `longitude` are undefined and should not be used. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`EclipseKind`](#EclipseKind) | `kind` | The type of solar eclipse: `EclipseKind.Partial`, `EclipseKind.Annular`, or `EclipseKind.Total`. | @@ -2644,10 +2710,19 @@ list of initial positions and velocities for the small bodies. Then the class can update the positions and velocities over small time steps. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`Body`](#Body) | `OriginBody` | The origin of the reference frame. See constructor for more info. | +### properties + +| Type | Name | Description | +| --- | --- | --- | +| `int` | `NumSmallBodies` | The number of small bodies that are included in this gravity simulation. | +| [`AstroTime`](#AstroTime) | `Time` | The time represented by the current step of the gravity simulation. | + ### member functions @@ -2724,6 +2799,8 @@ to the `originBody` that was used to construct this simulator. Returned by the function [`Astronomy.SearchHourAngle`](#Astronomy.SearchHourAngle) to report information about a celestial body crossing a certain hour angle as seen by a specified topocentric observer. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `time` | The date and time when the body crosses the specified hour angle. | @@ -2739,6 +2816,8 @@ a celestial body crossing a certain hour angle as seen by a specified topocentri Returned by the functions [`Astronomy.Illumination`](#Astronomy.Illumination) and [`Astronomy.SearchPeakMagnitude`](#Astronomy.SearchPeakMagnitude) to report the visual magnitude and illuminated fraction of a celestial body at a given date and time. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `time` | The date and time of the observation. | @@ -2780,6 +2859,8 @@ the EQJ system (that is, using Earth's equator at the J2000 epoch). The positions are expressed in astronomical units (AU), and the velocities in AU/day. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`StateVector`](#StateVector) | `io` | The position and velocity of Jupiter's moon Io. | @@ -2794,6 +2875,8 @@ and the velocities in AU/day. **Lunar libration angles, returned by [`Astronomy.Libration`](#Astronomy.Libration).** +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `elat` | Sub-Earth libration ecliptic latitude angle, in degrees. | @@ -2832,6 +2915,8 @@ When an event field is valid, the caller must also check its `altitude` field to see whether the Sun is above the horizon at the time indicated by the `time` field. See [`EclipseEvent`](#EclipseEvent) for more information. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`EclipseKind`](#EclipseKind) | `kind` | The type of solar eclipse: `EclipseKind.Partial`, `EclipseKind.Annular`, or `EclipseKind.Total`. | @@ -2867,6 +2952,8 @@ phase (expressed in minutes), or 0 if the eclipse never reaches that phase. By converting from minutes to days, and subtracting/adding with `peak`, the caller may determine the date and time of the beginning/end of each eclipse phase. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`EclipseKind`](#EclipseKind) | `kind` | The type of lunar eclipse found. | @@ -2882,6 +2969,8 @@ may determine the date and time of the beginning/end of each eclipse phase. **A lunar quarter event (new moon, first quarter, full moon, or third quarter) along with its date and time.** +### member variables + | Type | Name | Description | | --- | --- | --- | | `int` | `quarter` | 0=new moon, 1=first quarter, 2=full moon, 3=third quarter. | @@ -2897,6 +2986,8 @@ may determine the date and time of the beginning/end of each eclipse phase. This structure is returned by [`Astronomy.SearchMoonNode`](#Astronomy.SearchMoonNode) and [`Astronomy.NextMoonNode`](#Astronomy.NextMoonNode) to report information about the center of the Moon passing through the ecliptic plane. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `time` | The time when the body passes through the ecliptic plane. | @@ -2925,6 +3016,21 @@ to report information about the center of the Moon passing through the ecliptic This structure is passed to functions that calculate phenomena as observed from a particular place on the Earth. +### constructors + +### new Observer(latitude, longitude, height) + +**Creates an Observer object.** + +| Type | Parameter | Description | +| --- | --- | --- | +| `double` | `latitude` | Geographic latitude in degrees north (positive) or south (negative) of the equator. | +| `double` | `longitude` | Geographic longitude in degrees east (positive) or west (negative) of the prime meridian at Greenwich, England. | +| `double` | `height` | The height above (positive) or below (negative) sea level, expressed in meters. | + + +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `latitude` | Geographic latitude in degrees north (positive) or south (negative) of the equator. | @@ -2951,6 +3057,8 @@ from a particular place on the Earth. **A rotation matrix that can be used to transform one coordinate system to another.** +### member variables + | Type | Name | Description | | --- | --- | --- | | `double[3,3]` | `rot` | A normalized 3x3 rotation matrix. | @@ -2984,6 +3092,8 @@ See [`Astronomy.Search`](#Astronomy.Search).** **The dates and times of changes of season for a given calendar year. Call [`Astronomy.Seasons`](#Astronomy.Seasons) to calculate this data structure for a given year.** +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `mar_equinox` | The date and time of the March equinox for the specified year. | @@ -2998,6 +3108,21 @@ Call [`Astronomy.Seasons`](#Astronomy.Seasons) to calculate this data structure **Spherical coordinates: latitude, longitude, distance.** +### constructors + +### new Spherical(lat, lon, dist) + +**Creates a set of spherical coordinates.** + +| Type | Parameter | Description | +| --- | --- | --- | +| `double` | `lat` | The latitude angle: -90..+90 degrees. | +| `double` | `lon` | The longitude angle: 0..360 degrees. | +| `double` | `dist` | Distance in AU. | + + +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `lat` | The latitude angle: -90..+90 degrees. | @@ -3015,6 +3140,35 @@ A state vector represents the dynamic state of a point at a given moment. It includes the position vector of the point, expressed in Astronomical Units (AU) along with the velocity vector of the point, expressed in AU/day. +### constructors + +### new StateVector(x, y, z, vx, vy, vz, t) + +**Creates an AstroVector.** + +| Type | Parameter | Description | +| --- | --- | --- | +| `double` | `x` | A position x-coordinate expressed in AU. | +| `double` | `y` | A position y-coordinate expressed in AU. | +| `double` | `z` | A position z-coordinate expressed in AU. | +| `double` | `vx` | A velocity x-component expressed in AU/day. | +| `double` | `vy` | A velocity y-component expressed in AU/day. | +| `double` | `vz` | A velocity z-component expressed in AU/day. | +| [`AstroTime`](#AstroTime) | `t` | The date and time at which this state vector is valid. | + +### new StateVector(pos, vel, time) + +**Combines a position vector and a velocity vector into a single state vector.** + +| Type | Parameter | Description | +| --- | --- | --- | +| [`AstroVector`](#AstroVector) | `pos` | A position vector. | +| [`AstroVector`](#AstroVector) | `vel` | A velocity vector. | +| [`AstroTime`](#AstroTime) | `time` | The common time that represents the given position and velocity. | + + +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `x` | The position x-coordinate in AU. | @@ -3048,6 +3202,8 @@ Contains horizontal and equatorial coordinates seen by an observer on or near the surface of the Earth (a topocentric observer). Optionally corrected for atmospheric refraction. +### member variables + | Type | Name | Description | | --- | --- | --- | | `double` | `azimuth` | Compass direction around the horizon in degrees. 0=North, 90=East, 180=South, 270=West. | @@ -3076,6 +3232,8 @@ against the Sun in its background. The calculations are performed from the point of view of a geocentric observer. +### member variables + | Type | Name | Description | | --- | --- | --- | | [`AstroTime`](#AstroTime) | `start` | Date and time at the beginning of the transit. | diff --git a/source/csharp/astronomy.cs b/source/csharp/astronomy.cs index 803a651b..aacf1eee 100644 --- a/source/csharp/astronomy.cs +++ b/source/csharp/astronomy.cs @@ -40,7 +40,7 @@ namespace CosineKitty public class EarthNotAllowedException: ArgumentException { /// Creates an exception indicating that the Earth is not allowed as a target body. - public EarthNotAllowedException(): + internal EarthNotAllowedException(): base("The Earth is not allowed as the body parameter.") {} } @@ -52,7 +52,8 @@ namespace CosineKitty public class InvalidBodyException: ArgumentException { /// Creates an exception indicating that the given body is not valid for this operation. - public InvalidBodyException(Body body): + /// The body that was invalid. + internal InvalidBodyException(Body body): base("Invalid body: " + body) {} } @@ -65,7 +66,8 @@ namespace CosineKitty public class InternalError: Exception { /// Creates an exception indicating that an unexpected error ocurred. - public InternalError(string message): + /// Diagnostic text about the internal error. + internal InternalError(string message): base("Internal error. Please report an issue at: https://github.com/cosinekitty/astronomy/issues. Diagnostic: " + message) {} } @@ -860,7 +862,7 @@ namespace CosineKitty /// Declination in degrees. /// Distance to the celestial body in AU. /// Equatorial coordinates in vector form. - public Equatorial(double ra, double dec, double dist, AstroVector vec) + internal Equatorial(double ra, double dec, double dist, AstroVector vec) { this.ra = ra; this.dec = dec; @@ -902,7 +904,7 @@ namespace CosineKitty /// ecliptic vector /// ecliptic latitude /// ecliptic longitude - public Ecliptic(AstroVector vec, double elat, double elon) + internal Ecliptic(AstroVector vec, double elat, double elon) { this.vec = vec; this.elat = elat; @@ -947,7 +949,7 @@ namespace CosineKitty /// Angle in degrees above (positive) or below (negative) the observer's horizon. /// Right ascension in sidereal hours. /// Declination in degrees. - public Topocentric(double azimuth, double altitude, double ra, double dec) + internal Topocentric(double azimuth, double altitude, double ra, double dec) { this.azimuth = azimuth; this.altitude = altitude; @@ -1057,7 +1059,7 @@ namespace CosineKitty /// /// The date and time when the body crosses the specified hour angle. /// Apparent coordinates of the body at the time it crosses the specified hour angle. - public HourAngleInfo(AstroTime time, Topocentric hor) + internal HourAngleInfo(AstroTime time, Topocentric hor) { this.time = time; this.hor = hor; @@ -1090,7 +1092,7 @@ namespace CosineKitty /// Whether the body is best seen in the morning or the evening. /// The angle in degrees between the body and the Sun, as seen from the Earth. /// The difference between the ecliptic longitudes of the body and the Sun, as seen from the Earth. - public ElongationInfo(AstroTime time, Visibility visibility, double elongation, double ecliptic_separation) + internal ElongationInfo(AstroTime time, Visibility visibility, double elongation, double ecliptic_separation) { this.time = time; this.visibility = visibility;