public void ShouldCalculateExample1() { List <OrbitalBody> bodies = new List <OrbitalBody>() { // Short cycle new OrbitalBody(new Vector3(-1, 0, 2)), new OrbitalBody(new Vector3(2, -10, -7)), new OrbitalBody(new Vector3(4, -8, 8)), new OrbitalBody(new Vector3(3, 5, -1)) }; JovianSystem jovianSystem = new JovianSystem(bodies); Assert.Equal(2772, jovianSystem.GetNumberOfStepsPerCycle()); }
public void ShouldCalculateExample2() { List <OrbitalBody> bodies = new List <OrbitalBody>() { // Stupid long cycle new OrbitalBody(new Vector3(-8, -10, 0)), new OrbitalBody(new Vector3(5, 5, 10)), new OrbitalBody(new Vector3(2, -7, 3)), new OrbitalBody(new Vector3(9, -8, -3)) }; JovianSystem jovianSystem = new JovianSystem(bodies); Assert.Equal(4686774924, jovianSystem.GetNumberOfStepsPerCycle()); }
public void ShouldCalculateExample2() { List <OrbitalBody> bodies = new List <OrbitalBody>() { new OrbitalBody(new Vector3(-1, 0, 2)), new OrbitalBody(new Vector3(2, -10, -7)), new OrbitalBody(new Vector3(4, -8, 8)), new OrbitalBody(new Vector3(3, 5, -1)), }; JovianSystem jovianSystem = new JovianSystem(bodies); jovianSystem.DoTimeSteps(10); Assert.Equal(179, jovianSystem.GetSystemEnergy()); }
public void ShouldCalculateExample1_InitialConditionIsCorrect() { List <OrbitalBody> bodies = new List <OrbitalBody>() { new OrbitalBody(new Vector3(-1, 0, 2)), new OrbitalBody(new Vector3(2, -10, -7)), new OrbitalBody(new Vector3(4, -8, 8)), new OrbitalBody(new Vector3(3, 5, -1)), }; JovianSystem jovianSystem = new JovianSystem(bodies); Assert.Equal("pos=<x=-1, y=0, z=2>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[0].ToString()); Assert.Equal("pos=<x=2, y=-10, z=-7>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[1].ToString()); Assert.Equal("pos=<x=4, y=-8, z=8>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[2].ToString()); Assert.Equal("pos=<x=3, y=5, z=-1>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[3].ToString()); }
public void ShouldCalculateExample3() { List <OrbitalBody> bodies = new List <OrbitalBody>() { new OrbitalBody(new Vector3(-8, -10, 0)), new OrbitalBody(new Vector3(5, 5, 10)), new OrbitalBody(new Vector3(2, -7, 3)), new OrbitalBody(new Vector3(9, -8, -3)), }; JovianSystem jovianSystem = new JovianSystem(bodies); jovianSystem.DoTimeSteps(100); Assert.Equal("pos=<x=8, y=-12, z=-9>, vel=<x=-7, y=3, z=0>", jovianSystem.OrbitalBodies[0].ToString()); Assert.Equal("pos=<x=13, y=16, z=-3>, vel=<x=3, y=-11, z=-5>", jovianSystem.OrbitalBodies[1].ToString()); Assert.Equal("pos=<x=-29, y=-11, z=-1>, vel=<x=-3, y=7, z=4>", jovianSystem.OrbitalBodies[2].ToString()); Assert.Equal("pos=<x=16, y=-13, z=23>, vel=<x=7, y=1, z=1>", jovianSystem.OrbitalBodies[3].ToString()); Assert.Equal(1940, jovianSystem.GetSystemEnergy()); }
public void ShouldCalculateExample1_FirstStep() { List <OrbitalBody> bodies = new List <OrbitalBody>() { new OrbitalBody(new Vector3(-1, 0, 2)), new OrbitalBody(new Vector3(2, -10, -7)), new OrbitalBody(new Vector3(4, -8, 8)), new OrbitalBody(new Vector3(3, 5, -1)), }; JovianSystem jovianSystem = new JovianSystem(bodies); Assert.Equal("pos=<x=-1, y=0, z=2>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[0].ToString()); Assert.Equal("pos=<x=2, y=-10, z=-7>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[1].ToString()); Assert.Equal("pos=<x=4, y=-8, z=8>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[2].ToString()); Assert.Equal("pos=<x=3, y=5, z=-1>, vel=<x=0, y=0, z=0>", jovianSystem.OrbitalBodies[3].ToString()); jovianSystem.DoTimeStep(); Assert.Equal("pos=<x=2, y=-1, z=1>, vel=<x=3, y=-1, z=-1>", jovianSystem.OrbitalBodies[0].ToString()); Assert.Equal("pos=<x=3, y=-7, z=-4>, vel=<x=1, y=3, z=3>", jovianSystem.OrbitalBodies[1].ToString()); Assert.Equal("pos=<x=1, y=-7, z=5>, vel=<x=-3, y=1, z=-3>", jovianSystem.OrbitalBodies[2].ToString()); Assert.Equal("pos=<x=2, y=2, z=0>, vel=<x=-1, y=-3, z=1>", jovianSystem.OrbitalBodies[3].ToString()); }