Exemple #1
0
        /// <summary>
        /// Calculates radius of Martian polar cap, in degrees of latitude,
        /// depending on areocentric longitude of Sun.
        /// </summary>
        /// <param name="ls">Areocentric longitude of Sun</param>
        /// <param name="cap">Northern or southern cap</param>
        /// <returns>Radius of Martian polar cap, in degrees of latitude</returns>
        /// <remarks>
        /// The method is based on following simple assumtions:
        ///   1. Polar cap size changes by sine law
        ///   2. Radius of polar cap is between:
        ///     - 7...30 degrees for northern cap
        ///     - 0...30 degrees for southern cap
        ///   3. Maximal width of NPC is around Ls = 345 degrees
        ///   4. Maximal width of SPC is around Ls = 165 degrees
        /// Refs:
        /// https://www.sciencedirect.com/science/article/abs/pii/S0019103509003133
        /// http://www.alpo-astronomy.org/jbeish/Observing_Mars_3.html
        /// </remarks>
        public static double MarsPolarCapRadius(double ls, PolarCap cap)
        {
            double LsMax = cap == PolarCap.Northern ? 345 : 165;
            double Wmax  = 30;
            double Wmin  = cap == PolarCap.Northern ? 7 : 0;

            return(((-Math.Cos((ls + 180 - LsMax) / 180.0 * Math.PI) + 1.0) / 2.0) * (Wmax - Wmin) + Wmin);
        }
Exemple #2
0
        private double Mars_PolarCap(SkyContext c, PolarCap cap)
        {
            double ls = c.Get(Mars_Calendar).Ls;

            return(PlanetEphem.MarsPolarCapRadius(ls, cap));
        }