public static void LoadNineBodiesScenario(GravitySim sim) { const double baseSize = 30.0; const double baseMass = 100000.0; SetScenarioName(sim, "9 Bodies Scenario"); sim.ClearSim(); sim.SetSimSpace(new SimulationSpace(SimulationSpace.Space.Toy)); sim.SetAccelerationLimits(true, toySpaceScenariosDefaultAccelerationLimit, toySpaceScenariosDeaultMinimumSeparation); sim.SetCalculationSettings(new CalculationSettings(10, false, false)); sim.SetSimRounding(8); // 0 -> Symmetry breaks down at ~75 sec. // 8 -> Works well sim.SetCheckSim(false); sim.AddBody(baseMass, baseSize, 3, GravitySim.BodyStartPosition.StageLeft); sim.AddBody(baseMass, baseSize, 2, GravitySim.BodyStartPosition.StageTop); sim.AddBody(baseMass, baseSize, 1, GravitySim.BodyStartPosition.StageRight); sim.AddBody(baseMass, baseSize, 7, GravitySim.BodyStartPosition.StageBottom); sim.AddBody(baseMass, baseSize, 4, GravitySim.BodyStartPosition.StageTopLeft); sim.AddBody(baseMass, baseSize, 5, GravitySim.BodyStartPosition.StageTopRight); sim.AddBody(baseMass, baseSize, 6, GravitySim.BodyStartPosition.StageBottomRight); sim.AddBody(baseMass, baseSize, 8, GravitySim.BodyStartPosition.StageBottomLeft); sim.AddBody(baseMass, baseSize, 9, GravitySim.BodyStartPosition.CenterOfTheUniverse); sim.SetMonitoredBody(8); // center = 8 sim.SetMonitoredValues(); }
public static void LoadFiveBodiesScenario(GravitySim sim, bool diagonals) { const double baseSize = 30.0; const double baseMass = 100000.0; if (diagonals) { SetScenarioName(sim, "5 Bodies Scenario - Diagonals"); } else { SetScenarioName(sim, "5 Bodies Scenario - Cross"); } sim.ClearSim(); sim.SetSimSpace(new SimulationSpace(SimulationSpace.Space.Toy)); sim.SetAccelerationLimits(true, toySpaceScenariosDefaultAccelerationLimit, toySpaceScenariosDeaultMinimumSeparation); sim.SetCalculationSettings(new CalculationSettings(10, false, false)); sim.SetSimRounding(0); if (diagonals) { sim.AddBody(baseMass, baseSize, 4, GravitySim.BodyStartPosition.StageTopLeft); sim.AddBody(baseMass, baseSize, 5, GravitySim.BodyStartPosition.StageTopRight); sim.AddBody(baseMass, baseSize, 6, GravitySim.BodyStartPosition.StageBottomRight); sim.AddBody(baseMass, baseSize, 8, GravitySim.BodyStartPosition.StageBottomLeft); } else { sim.AddBody(baseMass, baseSize, 3, GravitySim.BodyStartPosition.StageLeft); sim.AddBody(baseMass, baseSize, 2, GravitySim.BodyStartPosition.StageTop); sim.AddBody(baseMass, baseSize, 1, GravitySim.BodyStartPosition.StageRight); sim.AddBody(baseMass, baseSize, 7, GravitySim.BodyStartPosition.StageBottom); } sim.AddBody(baseMass, baseSize, 9, GravitySim.BodyStartPosition.CenterOfTheUniverse); sim.SetMonitoredBody(4); // center = 4 sim.SetMonitoredValues(); sim.SetCheckSim(false); //sim.SetCheckSim(!diagonals); // Sim checking is only implemented for the Cross version }