15 public (
double planetRAHour,
double planetRAMin,
double planetRASec,
double planetDecDeg,
double planetDecMin,
double planetDecSec)
ApproximatePositionOfPlanet(
double lctHour,
double lctMin,
double lctSec,
bool isDaylightSaving,
int zoneCorrectionHours,
double localDateDay,
int localDateMonth,
int localDateYear,
string planetName)
17 int daylightSaving = isDaylightSaving ? 1 : 0;
27 double npDeg1 = 360 * dDays / (365.242191 * planetInfo.
tp_PeriodOrbit);
28 double npDeg2 = npDeg1 - 360 * (npDeg1 / 360).Floor();
30 double lpDeg1 = npDeg2 + (360 * planetInfo.ecc_EccentricityOrbit * mpDeg.ToRadians().Sine() / Math.PI) + planetInfo.
long_LongitudeEpoch;
31 double lpDeg2 = lpDeg1 - 360 * (lpDeg1 / 360).Floor();
37 double neDeg1 = 360 * dDays / (365.242191 * earthInfo.tp_PeriodOrbit);
38 double neDeg2 = neDeg1 - 360 * (neDeg1 / 360).Floor();
39 double meDeg = neDeg2 + earthInfo.long_LongitudeEpoch - earthInfo.peri_LongitudePerihelion;
40 double leDeg1 = neDeg2 + earthInfo.long_LongitudeEpoch + 360 * earthInfo.ecc_EccentricityOrbit * meDeg.ToRadians().Sine() / Math.PI;
41 double leDeg2 = leDeg1 - 360 * (leDeg1 / 360).Floor();
42 double earthTrueAnomalyDeg = leDeg2 - earthInfo.peri_LongitudePerihelion;
43 double rAU2 = earthInfo.axis_AxisOrbit * (1 - Math.Pow(earthInfo.ecc_EccentricityOrbit, 2)) / (1 + earthInfo.ecc_EccentricityOrbit * earthTrueAnomalyDeg.ToRadians().Cosine());
47 double x = lpNodeRad.Cosine();
49 double rdAU = rAU * psiRad.Cosine();
50 double leLdRad = (leDeg2 - ldDeg).ToRadians();
51 double atan2Type1 = (rdAU * leLdRad.Sine()).AngleTangent2(rAU2 - rdAU * leLdRad.Cosine());
52 double atan2Type2 = (rAU2 * (-leLdRad).Sine()).AngleTangent2(rdAU - rAU2 * leLdRad.Cosine());
53 double aRad = (rdAU < 1) ? atan2Type1 : atan2Type2;
55 double lamdaDeg2 = lamdaDeg1 - 360 * (lamdaDeg1 / 360).Floor();
56 double betaDeg =
PAMacros.
Degrees((rdAU * psiRad.Tangent() * (lamdaDeg2 - ldDeg).ToRadians().Sine() / (rAU2 * (-leLdRad).Sine())).AngleTangent());
58 double decDeg =
PAMacros.
EcDec(lamdaDeg2, 0, 0, betaDeg, 0, 0, gdateDay, gdateMonth, gdateYear);
73 public (
double planetRAHour,
double planetRAMin,
double planetRASec,
double planetDecDeg,
double planetDecMin,
double planetDecSec)
PrecisePositionOfPlanet(
double lctHour,
double lctMin,
double lctSec,
bool isDaylightSaving,
int zoneCorrectionHours,
double localDateDay,
int localDateMonth,
int localDateYear,
string planetName)
75 int daylightSaving = isDaylightSaving ? 1 : 0;
77 (
double planetLongitude,
double planetLatitude,
double planetDistanceAU,
double planetHLong1,
double planetHLong2,
double planetHLat,
double planetRVect) coordinateResults =
PAMacros.
PlanetCoordinates(lctHour, lctMin, lctSec, daylightSaving, zoneCorrectionHours, localDateDay, localDateMonth, localDateYear, planetName);
80 double planetDecDeg1 =
PAMacros.
EcDec(coordinateResults.planetLongitude, 0, 0, coordinateResults.planetLatitude, 0, 0, localDateDay, localDateMonth, localDateYear);
105 public (
double distanceAU,
double angDiaArcsec,
double phase,
double lightTimeHour,
double lightTimeMinutes,
double lightTimeSeconds,
double posAngleBrightLimbDeg,
double approximateMagnitude)
VisualAspectsOfAPlanet(
double lctHour,
double lctMin,
double lctSec,
bool isDaylightSaving,
int zoneCorrectionHours,
double localDateDay,
int localDateMonth,
int localDateYear,
string planetName)
107 int daylightSaving = isDaylightSaving ? 1 : 0;
109 double greenwichDateDay =
PAMacros.
LocalCivilTimeGreenwichDay(lctHour, lctMin, lctSec, daylightSaving, zoneCorrectionHours, localDateDay, localDateMonth, localDateYear);
113 (
double planetLongitude,
double planetLatitude,
double planetDistanceAU,
double planetHLong1,
double planetHLong2,
double planetHLat,
double planetRVect) planetCoordInfo =
PAMacros.
PlanetCoordinates(lctHour, lctMin, lctSec, daylightSaving, zoneCorrectionHours, localDateDay, localDateMonth, localDateYear, planetName);
115 double planetRARad =
PAMacros.
EcRA(planetCoordInfo.planetLongitude, 0, 0, planetCoordInfo.planetLatitude, 0, 0, localDateDay, localDateMonth, localDateYear).ToRadians();
116 double planetDecRad =
PAMacros.
EcDec(planetCoordInfo.planetLongitude, 0, 0, planetCoordInfo.planetLatitude, 0, 0, localDateDay, localDateMonth, localDateYear).ToRadians();
118 double lightTravelTimeHours = planetCoordInfo.planetDistanceAU * 0.1386;
120 double angularDiameterArcsec = planetInfo.theta0_AngularDiameter / planetCoordInfo.planetDistanceAU;
121 double phase1 = 0.5 * (1.0 + (planetCoordInfo.planetLongitude - planetCoordInfo.planetHLong1).ToRadians().Cosine());
123 double sunEclLongDeg =
PAMacros.
SunLong(lctHour, lctMin, lctSec, daylightSaving, zoneCorrectionHours, localDateDay, localDateMonth, localDateYear);
124 double sunRARad =
PAMacros.
EcRA(sunEclLongDeg, 0, 0, 0, 0, 0, greenwichDateDay, greenwichDateMonth, greenwichDateYear).ToRadians();
125 double sunDecRad =
PAMacros.
EcDec(sunEclLongDeg, 0, 0, 0, 0, 0, greenwichDateDay, greenwichDateMonth, greenwichDateYear).ToRadians();
127 double y = sunDecRad.Cosine() * (sunRARad - planetRARad).Sine();
128 double x = planetDecRad.Cosine() * sunDecRad.Sine() - planetDecRad.Sine() * sunDecRad.Cosine() * (sunRARad - planetRARad).Cosine();
131 double radiusVectorAU = planetCoordInfo.planetRVect;
132 double approximateMagnitude1 = 5.0 * (radiusVectorAU * planetCoordInfo.planetDistanceAU / phase1.SquareRoot()).Log10() + planetInfo.
v0_VisualMagnitude;
134 double distanceAU = Math.Round(planetCoordInfo.planetDistanceAU, 5);
135 double angDiaArcsec = Math.Round(angularDiameterArcsec, 1);
136 double phase = Math.Round(phase1, 2);
141 double approximateMagnitude = Math.Round(approximateMagnitude1, 1);
Information about a planet.
double incl_OrbitalInclination
Orbital inclination.
double ecc_EccentricityOrbit
Eccentricity of the orbit.
double v0_VisualMagnitude
Visual magnitude at 1 AU.
double long_LongitudeEpoch
Longitude at the epoch.
double node_LongitudeAscendingNode
Longitude of the ascending node.
double peri_LongitudePerihelion
Longitude of the perihelion.
double tp_PeriodOrbit
Period of orbit.
Data manager for planets.
static PlanetData GetPlanetInfo(string name)
Get information about a planet.
Miscellaneous macro functions supporting the other classes.
static double double double double double double double planetRVect PlanetCoordinates(double lh, double lm, double ls, int ds, int zc, double dy, int mn, int yr, string s)
static double LocalCivilTimeGreenwichDay(double lctHours, double lctMinutes, double lctSeconds, int daylightSaving, int zoneCorrection, double localDay, int localMonth, int localYear)
Determine Greenwich Day for Local Time.
static double CivilDateToJulianDate(double day, double month, double year)
Convert a Greenwich Date/Civil Date (day,month,year) to Julian Date.
static double Degrees(double w)
Convert W to Degrees.
static double EcDec(double eld, double elm, double els, double bd, double bm, double bs, double gd, int gm, int gy)
Ecliptic - Declination (degrees)
static double DecimalDegreesToDegreeHours(double decimalDegrees)
Convert Decimal Degrees to Degree-Hours.
static double EcRA(double eld, double elm, double els, double bd, double bm, double bs, double gd, int gm, int gy)
Ecliptic - Right Ascension (degrees)
static int DecimalHoursMinute(double decimalHours)
Return the minutes part of a Decimal Hours.
static double DecimalHoursSecond(double decimalHours)
Return the seconds part of a Decimal Hours.
static double DecimalDegreesSeconds(double decimalDegrees)
Return Seconds part of Decimal Degrees.
static int DecimalHoursHour(double decimalHours)
Return the hour part of a Decimal Hours.
static double SunLong(double lch, double lcm, double lcs, int ds, int zc, double ld, int lm, int ly)
Calculate Sun's ecliptic longitude.
static double LocalCivilTimeToUniversalTime(double lctHours, double lctMinutes, double lctSeconds, int daylightSaving, int zoneCorrection, double localDay, int localMonth, int localYear)
Convert Local Civil Time to Universal Time.
static double DecimalDegreesMinutes(double decimalDegrees)
Return Minutes part of Decimal Degrees.
static int LocalCivilTimeGreenwichMonth(double lctHours, double lctMinutes, double lctSeconds, int daylightSaving, int zoneCorrection, double localDay, int localMonth, int localYear)
Determine Greenwich Month for Local Time.
static double DecimalDegreesDegrees(double decimalDegrees)
Return Degrees part of Decimal Degrees.
static int LocalCivilTimeGreenwichYear(double lctHours, double lctMinutes, double lctSeconds, int daylightSaving, int zoneCorrection, double localDay, int localMonth, int localYear)
Determine Greenwich Year for Local Time.
double double angDiaArcsec
double double double double double planetDecMin
double double double double double lightTimeMinutes
double double double double double double double posAngleBrightLimbDeg
double double double planetRASec
double distanceAU
Calculate several visual aspects of a planet.
double double double double double double lightTimeSeconds
double double double double lightTimeHour
double double double double planetDecDeg
double double double double double double planetDecSec PrecisePositionOfPlanet(double lctHour, double lctMin, double lctSec, bool isDaylightSaving, int zoneCorrectionHours, double localDateDay, int localDateMonth, int localDateYear, string planetName)
double double planetRAMin
double double double phase
double double double double double double planetDecSec ApproximatePositionOfPlanet(double lctHour, double lctMin, double lctSec, bool isDaylightSaving, int zoneCorrectionHours, double localDateDay, int localDateMonth, int localDateYear, string planetName)
double double double double double double double double approximateMagnitude VisualAspectsOfAPlanet(double lctHour, double lctMin, double lctSec, bool isDaylightSaving, int zoneCorrectionHours, double localDateDay, int localDateMonth, int localDateYear, string planetName)
double planetRAHour
Calculate approximate position of a planet.