public static Planets GetPlanets(List <String> names = null, Dictionary <String, Tuple <InitialValues> > initialValues = null)
        {
            var planets = new Planets();

            var execturingAssembly = Assembly.GetExecutingAssembly();

            using (var resourceStream = execturingAssembly.GetManifestResourceStream("NBodyProblem.SolarSystem.data_solarsystem.json"))
            {
                using (var streamReader = new StreamReader(resourceStream))
                {
                    var dataSolarSystem = JsonConvert.DeserializeObject <Dictionary <string, object> >(streamReader.ReadToEnd());

                    foreach (var kvp in dataSolarSystem)
                    {
                        var name = kvp.Key;

                        if (names.Any() && !names.Contains(name))
                        {
                            continue;
                        }

                        var data = ((JObject)(kvp.Value)).ToObject <Dictionary <string, object> >();

                        var _moons = new Planets();
                        if (data.ContainsKey(moons))
                        {
                            foreach (var moon in ((JObject)(data[moons])).ToObject <Dictionary <string, Dictionary <string, double> > >())
                            {
                                _moons.Add(new Planet(moon.Key, (double)(moon.Value[mass]), (double)(moon.Value[diameter])));
                            }
                        }

                        planets.Add(new Planet(name, (double)data[mass], (double)data[diameter], _moons));
                    }
                }
            }

            return(planets);
        }
 private PlanetarySystem(Planets planets) : base(planets.ToBodies())
 {
     Bodies.Add(new Sun());
 }
Beispiel #3
0
 public Planet(string name, double mass, double diameter, Planets moons = null) : base(mass)
 {
     Name     = name;
     Diameter = diameter;
     Moons    = moons;
 }