コード例 #1
0
        private List <CelestialObjectPositionModel> SeedPlanet(CelestialObject planet, Dictionary <DateTimeOffset, CelestialObjectPositionModel> earthPositions)
        {
            var result            = new List <CelestialObjectPositionModel>();
            var celestialObjectId = CelestialObjectDictionary[planet.ToConstant()];
            var referenceDate     = new DateTimeOffset(1950, 1, 1, 0, 0, 0, TimeSpan.Zero);
            var endDate           = new DateTimeOffset(2100, 1, 1, 0, 0, 0, TimeSpan.Zero);
            var keplerianModel    = KeplerianValueConstants.PlanetKeplerianModels.Single(x => x.SolarSystemObject == planet);

            while (referenceDate <= endDate)
            {
                var dateModel        = new KeplerianDateModel(referenceDate, keplerianModel);
                var calculationModel = new KeplerianCalculationModel(dateModel);

                if (earthPositions != null)
                {
                    var earthPosition = earthPositions[referenceDate];
                    calculationModel.SetEarthPosition(earthPosition.Location, earthPosition.CentricDistance);
                }

                var positionModel = planet == CelestialObject.Earth
                    ? new CelestialObjectPositionModel(celestialObjectId, referenceDate, calculationModel.Location, 1, calculationModel.CentricDistance)
                    : new CelestialObjectPositionModel(celestialObjectId, referenceDate, calculationModel);

                result.Add(positionModel);

                referenceDate = referenceDate.AddDays(1);
            }

            return(result);
        }