use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestMoveActionWithOrientation method testpdControlMoveToAlongX.
/**
* Test moving to the goal
*
* (30, 50) (50,50) (70, 50)
*
* @throws SpaceSettlersActionException
*/
@Test
public void testpdControlMoveToAlongX() throws SpaceSettlersActionException {
// first positive x (60,50)
Position currentLoc = new Position(50, 50);
Position goalLoc = new Position(70, 50);
currentLoc.setOrientation(0);
moveAction = new MoveActionWithOrientation();
Vector2D accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
Movement movement = new Movement();
while (accel.getMagnitude() > MoveAction.TARGET_REACHED_ACCEL) {
movement.setTranslationalAcceleration(accel);
currentLoc = space.applyMovement(currentLoc, movement, timestep);
accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
}
assertEquals(currentLoc.getOrientation(), 0, 0.01);
assertEquals(currentLoc.getX(), 70, 0.05);
assertEquals(currentLoc.getY(), 50, 0.05);
// then to the negative x
currentLoc = new Position(50, 50);
currentLoc.setOrientation(0);
goalLoc = new Position(30, 50);
currentLoc.setOrientation(-Math.PI);
accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
while (accel.getMagnitude() > MoveAction.TARGET_REACHED_ACCEL) {
movement.setTranslationalAcceleration(accel);
currentLoc = space.applyMovement(currentLoc, movement, timestep);
accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
}
assertEquals(currentLoc.getOrientation(), -Math.PI, 0.01);
assertEquals(currentLoc.getX(), 30, 0.05);
assertEquals(currentLoc.getY(), 50, 0.05);
}
use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestMoveActionWithOrientation method testpdControlMoveToAlongY.
/**
* Test moving to the goal along the y dimension
* (50, 40)
* (50, 50)
* (50,60)
*
* @throws SpaceSettlersActionException
*/
@Test
public void testpdControlMoveToAlongY() throws SpaceSettlersActionException {
// first positive y (50, 60)
Position currentLoc = new Position(50, 50);
Position goalLoc = new Position(50, 60);
currentLoc.setOrientation(Math.PI / 2);
moveAction = new MoveActionWithOrientation();
Vector2D accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
Movement movement = new Movement();
while (accel.getMagnitude() > MoveAction.TARGET_REACHED_ACCEL) {
movement.setTranslationalAcceleration(accel);
currentLoc = space.applyMovement(currentLoc, movement, timestep);
accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
}
assertEquals(currentLoc.getOrientation(), Math.PI / 2, 0.01);
assertEquals(currentLoc.getX(), 50, 0.05);
assertEquals(currentLoc.getY(), 60, 0.05);
// then to the negative y
currentLoc = new Position(50, 50);
currentLoc.setOrientation(0);
goalLoc = new Position(50, 40);
currentLoc.setOrientation(-Math.PI / 2);
accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
while (accel.getMagnitude() > MoveAction.TARGET_REACHED_ACCEL) {
movement.setTranslationalAcceleration(accel);
currentLoc = space.applyMovement(currentLoc, movement, timestep);
accel = moveAction.pdControlMoveToGoal(space, goalLoc, currentLoc, targetVelocity);
}
assertEquals(currentLoc.getOrientation(), -Math.PI / 2, 0.01);
assertEquals(currentLoc.getX(), 50, 0.05);
assertEquals(currentLoc.getY(), 40, 0.05);
}
use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestCollisionHandler method testElasticCollisionsShipsX.
@Test
public void testElasticCollisionsShipsX() {
Ship ship1, ship2;
Position ship1Pos = new Position(0, 0, Math.PI / 4);
ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
ship1 = new Ship("team1", Color.BLUE, ship1Pos);
Position ship2Pos = new Position(10, 0, -Math.PI / 4);
ship2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
ship2 = new Ship("team2", Color.RED, ship2Pos);
collisionHandler.collide(ship1, ship2, space);
assertEquals(ship1.getPosition().getTranslationalVelocityX(), -10, 0.01);
assertEquals(ship1.getPosition().getTranslationalVelocityY(), 0, 0.01);
assertEquals(ship2.getPosition().getTranslationalVelocityX(), 20, 0.01);
assertEquals(ship2.getPosition().getTranslationalVelocityY(), 0, 0.01);
}
use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestCollisionHandler method testElasticCollisionsShipsY.
@Test
public void testElasticCollisionsShipsY() {
Ship ship1, ship2;
Position ship1Pos = new Position(0, 0, Math.PI / 4);
ship1Pos.setTranslationalVelocity(new Vector2D(0, 20));
ship1 = new Ship("team1", Color.BLUE, ship1Pos);
Position ship2Pos = new Position(0, 10, -Math.PI / 4);
ship2Pos.setTranslationalVelocity(new Vector2D(0, -10));
ship2 = new Ship("team2", Color.RED, ship2Pos);
collisionHandler.collide(ship1, ship2, space);
assertEquals(ship1.getPosition().getTranslationalVelocityX(), 0, 0.01);
assertEquals(ship1.getPosition().getTranslationalVelocityY(), -10, 0.01);
assertEquals(ship2.getPosition().getTranslationalVelocityX(), 0, 0.01);
assertEquals(ship2.getPosition().getTranslationalVelocityY(), 20, 0.01);
}
use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestCollisionHandler method testElasticCollisionsShipsDiagonal.
@Test
public void testElasticCollisionsShipsDiagonal() {
Ship ship1, ship2;
Position ship1Pos = new Position(0, 0, Math.PI / 4);
ship1Pos.setTranslationalVelocity(new Vector2D(2, 2));
ship1 = new Ship("team1", Color.BLUE, ship1Pos);
Position ship2Pos = new Position(10, 10, -Math.PI / 4);
ship2Pos.setTranslationalVelocity(new Vector2D(-10, -10));
ship2 = new Ship("team2", Color.RED, ship2Pos);
collisionHandler.collide(ship1, ship2, space);
assertEquals(ship1.getPosition().getTranslationalVelocityX(), -10, 0.01);
assertEquals(ship1.getPosition().getTranslationalVelocityY(), -10, 0.01);
assertEquals(ship2.getPosition().getTranslationalVelocityX(), 2, 0.01);
assertEquals(ship2.getPosition().getTranslationalVelocityY(), 2, 0.01);
}
Aggregations