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);
}
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);
}
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);
}
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);
}
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);
}
Aggregations