Exemple #1
0
        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();
        }
Exemple #2
0
        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
        }