public static double SiderealTimeGreenwich(double date) { double jd, t; double delta_phi = 0.0, epsilon = 0.0; jd = date; t = (jd - 2451545.0) / 36525.0; GCEarthData.CalculateNutations(date, out delta_phi, out epsilon); return(GCMath.putIn360(280.46061837 + 360.98564736629 * (jd - 2451545.0) + t * t * (0.000387933 - t / 38710000) + delta_phi * GCMath.cosDeg(epsilon))); }
/// <summary> /// /// </summary> /// <param name="julianDateUTC">Time in UT1 or for general use UTC. This should reflect also hours, minutes and seconds. When finding local sidereal time, /// this argument should contains time that is observed on Greenwich meridian. Use function GetJulianDetailed or GetGreenwichDateTime</param> /// <param name="longitudeDegrees"></param> /// <returns></returns> public static double SiderealTimeLocal(double julianDateUTC, double longitudeDegrees, double timezoneDegrees) { double julianDate2000, julianMillenium; double delta_phi = 0.0, epsilon = 0.0; julianDate2000 = julianDateUTC - 2451545.0; julianMillenium = julianDate2000 / 36525.0; GCEarthData.CalculateNutations(julianDateUTC, out delta_phi, out epsilon); return(GCMath.putIn360(280.46061837 + 360.98564736629 * julianDate2000 + julianMillenium * julianMillenium * (0.000387933 - julianMillenium / 38710000) + delta_phi * GCMath.cosDeg(epsilon) + longitudeDegrees - timezoneDegrees)); }
public static GCEquatorialCoords eclipticalToEquatorialCoords(ref GCEclipticalCoords ecc, double date) { //var GCEquatorialCoords eqc; double epsilon; double nutationLongitude; GCEarthData.CalculateNutations(date, out nutationLongitude, out epsilon); // formula from Chapter 21 ecc.longitude = GCMath.putIn360(ecc.longitude + nutationLongitude); // formulas from Chapter 12 eqc.rightAscension = GCMath.arcTan2Deg(GCMath.sinDeg(ecc.longitude) * GCMath.cosDeg(epsilon) - GCMath.tanDeg(ecc.latitude) * GCMath.sinDeg(epsilon), GCMath.cosDeg(ecc.longitude)); eqc.declination = GCMath.arcSinDeg(GCMath.sinDeg(ecc.latitude) * GCMath.cosDeg(epsilon) + GCMath.cosDeg(ecc.latitude) * GCMath.sinDeg(epsilon) * GCMath.sinDeg(ecc.longitude)); return(eqc); }