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()); }
public Planet(string name, double mass, double diameter, Planets moons = null) : base(mass) { Name = name; Diameter = diameter; Moons = moons; }