private static double SiderealTime(kaplarianElements earth, double longitude) { double II = (double)(earth.omega * degs + earth.w * degs); double M = (double)earth.m * degs; var t = new TimeSpan(0, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond); var tz = TimeZoneInfo.Local.GetUtcOffset(DateTime.Now); double merSt = (M + II + 15 * ((double)(t.TotalHours - tz.TotalHours))) % 360; double st = (merSt + (longitude * degs)) % 360; logger.log(Logger.Level.DEBUG, "Found Sidereal Time at:" + st); return(st); }
private static vector3D cartPlaneCalc(kaplarianElements elements) { var m = elements.m; for (int i = 0; i < 400; i++) { m = m - ((m - elements.e * Sin(m) - m) / (1 - elements.e * Cos(m))); } //Calculate radius vector var radius = elements.a * ((1 - (elements.e * elements.e)) / (1 + elements.e * Cos(elements.nu))); var x = radius * (Cos(elements.omega) * Cos((elements.w + elements.nu)) - Sin(elements.omega) * Cos(elements.i) * Sin((elements.w + elements.nu))); var y = radius * (Sin(elements.omega) * Cos((elements.w + elements.nu)) + Cos(elements.omega) * Cos(elements.i) * Sin((elements.w + elements.nu))); var z = radius * Sin(elements.i) * Sin((elements.w + elements.nu)); logger.log(Logger.Level.DEBUG, "Found Cartesian coordinates X:" + x + ", Y:" + y + ", Z:" + z); return(new vector3D { x = x, y = y, z = z }); }