コード例 #1
0
        PlanetValues InternalCalcPlanet(Planet planet, EphemerisTime time, double?armc = null, Longitude?longitude = null, double?trueEclipticObliquity = null)
        {
            CheckInitialized();
            String serr = null;

            Double[] x    = new double[24];
            String   star = String.Empty;
            int      iflgret;
            var      result = new PlanetValues()
            {
                Planet = planet
            };

            if (planet == Planet.FixedStar)
            {
                iflgret           = Sweph.swe_fixstar(star, time, _SwephFlag, x, ref serr);
                result.PlanetName = star;
            }
            else
            {
                iflgret           = Sweph.swe_calc(time, planet, _SwephFlag, x, ref serr);
                result.PlanetName = Sweph.swe_get_planet_name(planet);
                if (planet.IsAsteroid)
                {
                    result.PlanetName = String.Format("#{0}", planet - Planet.FirstAsteroid);
                }
            }
            if (iflgret >= 0)
            {
                result.Longitude      = x[0];
                result.Latitude       = x[1];
                result.Distance       = x[2];
                result.LongitudeSpeed = x[3];
                result.LatitudeSpeed  = x[4];
                result.DistanceSpeed  = x[5];
                if (armc.HasValue && longitude.HasValue && trueEclipticObliquity.HasValue)
                {
                    result.HousePosition = Sweph.swe_house_pos(armc.Value, longitude.Value, trueEclipticObliquity.Value, HouseSystemToChar(_HouseSystem), x, ref serr);
                    if (result.HousePosition == 0)
                    {
                        iflgret = SwissEph.ERR;
                    }
                }
            }
            if (iflgret < 0)
            {
                if (!String.IsNullOrEmpty(serr))
                {
                    result.ErrorMessage = serr;
                }
            }
            else if (!String.IsNullOrEmpty(serr) && String.IsNullOrEmpty(result.WarnMessage))
            {
                result.WarnMessage = serr;
            }
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// Calcul des nutations écliptiques
        /// </summary>
        public EclipticNutationValues CalcEclipticNutation(EphemerisTime time)
        {
            CheckInitialized();
            String serr = null;

            Double[] x       = new double[24];
            var      iflgret = Sweph.swe_calc(time, SwissEph.SE_ECL_NUT, _SwephFlag, x, ref serr);

            return(new EclipticNutationValues {
                TrueEclipticObliquity = x[0],
                MeanEclipticObliquity = x[1],
                NutationLongitude = x[2],
                NutationObliquity = x[3]
            });
        }
コード例 #3
0
 public int SweCalc(double tjd, int ipl, int iflag, ref double[] xx, ref string serr)
 {
     xx = new double[32];
     return(Sweph.swe_calc(tjd, ipl, iflag, xx, ref serr));
 }
コード例 #4
0
 /// <summary>
 /// planets, moon, nodes etc.
 /// </summary>
 public Int32 swe_calc(double tjd, int ipl, Int32 iflag, double[] xx, ref string serr)
 {
     return(Sweph.swe_calc(tjd, ipl, iflag, xx, ref serr));
 }