Search in sources :

Example 11 with Vector2D

use of spacesettlers.utilities.Vector2D in project spacesettlers by amymcgovern.

the class TestCollisionHandler method testElasticCollisionsAsteroidsMoveableToMoveableOnX.

@Test
public void testElasticCollisionsAsteroidsMoveableToMoveableOnX() {
    Asteroid asteroid1, asteroid2;
    Position position1 = new Position(0, 0, Math.PI / 4);
    position1.setTranslationalVelocity(new Vector2D(20, 0));
    asteroid1 = new Asteroid(position1, false, 10, true, .33, .33, .34);
    Position position2 = new Position(10, 0, -Math.PI / 4);
    position2.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid2 = new Asteroid(position2, false, 10, true, .33, .33, .34);
    collisionHandler.collide(asteroid1, asteroid2, space);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid2.getPosition().getTranslationalVelocityX(), 20, 0.01);
    assertEquals(asteroid2.getPosition().getTranslationalVelocityY(), 0, 0.01);
}
Also used : Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 12 with Vector2D

use of spacesettlers.utilities.Vector2D in project spacesettlers by amymcgovern.

the class TestToroidal2DPhysics method testfindShortestDistance.

/**
 * Tests points all around the current point
 *
 * (40, 40)			(60, 40)
 *
 * 			(50,50)
 *
 * (40, 60)			(60, 60)
 */
@Test
public void testfindShortestDistance() {
    Position pos2;
    position.setX(50);
    position.setY(50);
    // start with the same location so the vector should be 0,0
    pos2 = new Position(50, 50);
    Vector2D shortestDist = space.findShortestDistanceVector(position, pos2);
    assertEquals(shortestDist.getMagnitude(), 0, 0.01);
    assertEquals(shortestDist.getXValue(), 0, 0.01);
    assertEquals(shortestDist.getYValue(), 0, 0.01);
    assertEquals(shortestDist.getAngle(), 0, 0.01);
    // start in the upper left corner (on the diagram in the comments)
    double expectedMagnitude = Math.sqrt(200);
    pos2.setX(40);
    pos2.setY(40);
    shortestDist = space.findShortestDistanceVector(position, pos2);
    assertEquals(shortestDist.getMagnitude(), expectedMagnitude, 0.01);
    assertEquals(shortestDist.getXValue(), -10, 0.01);
    assertEquals(shortestDist.getYValue(), -10, 0.01);
    assertEquals(shortestDist.getAngle(), -(3 * Math.PI) / 4, 0.01);
    // upper right quadrant
    pos2.setX(60);
    pos2.setY(40);
    shortestDist = space.findShortestDistanceVector(position, pos2);
    assertEquals(shortestDist.getMagnitude(), expectedMagnitude, 0.01);
    assertEquals(shortestDist.getXValue(), 10, 0.01);
    assertEquals(shortestDist.getYValue(), -10, 0.01);
    assertEquals(shortestDist.getAngle(), -(Math.PI / 4), 0.01);
    // lower right quadrant
    pos2.setX(60);
    pos2.setY(60);
    shortestDist = space.findShortestDistanceVector(position, pos2);
    assertEquals(shortestDist.getMagnitude(), expectedMagnitude, 0.01);
    assertEquals(shortestDist.getXValue(), 10, 0.01);
    assertEquals(shortestDist.getYValue(), 10, 0.01);
    assertEquals(shortestDist.getAngle(), Math.PI / 4, 0.01);
    // lower left quadrant
    pos2.setX(40);
    pos2.setY(60);
    shortestDist = space.findShortestDistanceVector(position, pos2);
    assertEquals(shortestDist.getMagnitude(), expectedMagnitude, 0.01);
    assertEquals(shortestDist.getXValue(), -10, 0.01);
    assertEquals(shortestDist.getYValue(), 10, 0.01);
    assertEquals(shortestDist.getAngle(), (3 * Math.PI) / 4, 0.01);
}
Also used : Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 13 with Vector2D

use of spacesettlers.utilities.Vector2D in project spacesettlers by amymcgovern.

the class TestToroidal2DPhysics method testApplyOrientationMoveFromStop.

@Test
public void testApplyOrientationMoveFromStop() {
    Movement movement = new Movement();
    double angularAccel = Math.PI / 60.0;
    movement.setAngularAccleration(angularAccel);
    movement.setTranslationalAcceleration(new Vector2D());
    double expectedOrientation = angularAccel;
    Position newPosition = space.applyMovement(position, movement, timestep);
    assertEquals(newPosition.getOrientation(), expectedOrientation, 0.01);
    assertEquals(newPosition.getAngularVelocity(), angularAccel, 0.01);
    assertEquals(newPosition.getX(), 0, 0.0);
    assertEquals(newPosition.getY(), 0, 0.0);
    assertEquals(newPosition.getTotalTranslationalVelocity(), 0, 0);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 14 with Vector2D

use of spacesettlers.utilities.Vector2D in project spacesettlers by amymcgovern.

the class TestToroidal2DPhysics method testApplyTranslationalMovementVerticalFromStop.

@Test
public void testApplyTranslationalMovementVerticalFromStop() {
    Movement movement = new Movement();
    movement.setAngularAccleration(0);
    movement.setTranslationalAcceleration(new Vector2D(0, 10));
    position.setOrientation(Math.PI / 2);
    double expectedX = 0;
    double expectedY = 10;
    Position newPosition = space.applyMovement(position, movement, timestep);
    assertEquals(newPosition.getX(), expectedX, 0.01);
    assertEquals(newPosition.getY(), expectedY, 0.01);
    assertEquals(newPosition.getOrientation(), Math.PI / 2, 0.01);
    assertEquals(newPosition.getAngularVelocity(), 0, 0.01);
    assertEquals(newPosition.getTranslationalVelocityX(), 0, 0.01);
    assertEquals(newPosition.getTranslationalVelocityY(), 10, 0.01);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 15 with Vector2D

use of spacesettlers.utilities.Vector2D in project spacesettlers by amymcgovern.

the class TestToroidal2DPhysics method testApplyTranslationalMovementAngledFromStop.

@Test
public void testApplyTranslationalMovementAngledFromStop() {
    Movement movement = new Movement();
    movement.setAngularAccleration(0);
    movement.setTranslationalAcceleration(new Vector2D(10, 10));
    position.setOrientation(Math.PI / 4);
    double expectedX = 10;
    double expectedY = 10;
    Position newPosition = space.applyMovement(position, movement, timestep);
    assertEquals(newPosition.getX(), expectedX, 0.01);
    assertEquals(newPosition.getY(), expectedY, 0.01);
    assertEquals(newPosition.getOrientation(), Math.PI / 4, 0.01);
    assertEquals(newPosition.getAngularVelocity(), 0, 0.01);
    assertEquals(newPosition.getTranslationalVelocityX(), 10, 0.01);
    assertEquals(newPosition.getTranslationalVelocityY(), 10, 0.01);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Aggregations

Vector2D (spacesettlers.utilities.Vector2D)49 Test (org.junit.Test)33 Position (spacesettlers.utilities.Position)26 Movement (spacesettlers.utilities.Movement)15 Asteroid (spacesettlers.objects.Asteroid)8 Ship (spacesettlers.objects.Ship)8 MoveAction (spacesettlers.actions.MoveAction)4 Before (org.junit.Before)3 AbstractObject (spacesettlers.objects.AbstractObject)3 Toroidal2DPhysics (spacesettlers.simulator.Toroidal2DPhysics)2 HashMap (java.util.HashMap)1 Random (java.util.Random)1 UUID (java.util.UUID)1 AbstractAction (spacesettlers.actions.AbstractAction)1 DoNothingAction (spacesettlers.actions.DoNothingAction)1 RawAction (spacesettlers.actions.RawAction)1 LineGraphics (spacesettlers.graphics.LineGraphics)1 StarGraphics (spacesettlers.graphics.StarGraphics)1 Beacon (spacesettlers.objects.Beacon)1 Flag (spacesettlers.objects.Flag)1