Exemplo n.º 1
0
        public new static string AngleFormatOf(Double degree, string format)
        {
            if (format == null)
            {
                return(degree.ToString());
            }

            if (format.Contains("Astro"))
            {
                string decimalFormat = "F0";

                if (char.IsNumber(format, format.Length - 1))
                {
                    decimalFormat = "F" + format.Substring(format.Length - 1, 1);
                }

                Sign   sign    = Sign.SignOf(degree);
                Double offset  = degree % 30;
                Double minutes = (offset - (int)offset) * 60;

                return(String.Format("{0:D2}{1}{2}", (int)offset, sign, minutes.ToString(decimalFormat)));
            }
            else
            {
                return(Angle.AngleFormatOf(degree, format));
            }
        }
Exemplo n.º 2
0
        private static DateTimeOffset entryDateAround(PlanetId star, Sign destSign, DateTimeOffset around)
        {
            Double         speed         = Planet.AverageSpeedOf(star);
            int            dayAdjustment = 0;
            DateTimeOffset date          = around.UtcDateTime.Date;
            Position       pos           = CurrentEphemeris[date, star];

            int dif = destSign.Order - Sign.SignOf(pos.Longitude).Order;

            dayAdjustment = dif > 0 ? (int)((destSign.Order - Sign.SignOf(pos.Longitude).Order - 1) * 30 / speed)
                : (int)((11 + destSign.Order - Sign.SignOf(pos.Longitude).Order) * 30 / speed);

            do
            {
                date = date.AddDays(dayAdjustment);
                pos  = CurrentEphemeris[date, star];
                dayAdjustment--;
            } while (Sign.SignOf(pos.Longitude) != destSign.Previous);

            if (Sign.SignOf(pos.Longitude) != destSign.Previous)
            {
                throw new Exception();
            }

            do
            {
                date = date.AddDays(1);
                pos  = CurrentEphemeris[date, star];
                if (Sign.SignOf(pos.Longitude) == destSign)
                {
                    return(date);
                }
            } while (true);

            throw new Exception();
        }