Esempio n. 1
0
        protected override void OnTimeChanged()
        {
            // Calculate geocentric coordinates
            Vector3            bodyLocation         = this.HeliocentricLocation - Earth.Instance.HeliocentricLocation;
            EclipticCoordinate geocentricCoordinate = new EclipticCoordinate(bodyLocation);

            this.EquatorialCoordinate = ODE.Astronomy.EquatorialCoordinate.From(geocentricCoordinate, this.Time);

            base.OnTimeChanged();
        }
Esempio n. 2
0
        // Time not used in current calculation, but might be need in future refinements
        public static EquatorialCoordinate From(EclipticCoordinate eclipticCoordinate, Time time)
        {
            // Calculate right ascension and declination
            Angle angleEpsilon = Angle.FromDegrees(23.4392911); // obliquity of the ecliptic -- see Meeus, pg. 92

            Angle angleRightAscension = Angle.ArcTangent(eclipticCoordinate.Longitude.Sine * angleEpsilon.Cosine - eclipticCoordinate.Latitude.Tangent * angleEpsilon.Sine, eclipticCoordinate.Longitude.Cosine);

            angleRightAscension.NormalizePositive();

            Angle angleDeclination = Angle.Zero;

            angleDeclination.Sine = eclipticCoordinate.Latitude.Sine * angleEpsilon.Cosine + eclipticCoordinate.Latitude.Cosine * angleEpsilon.Sine * eclipticCoordinate.Longitude.Sine;

            angleDeclination.NormalizeAroundZero();

            return(new EquatorialCoordinate(angleRightAscension, angleDeclination));
        }