Пример #1
0
        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);
        }
Пример #2
0
        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
            });
        }