use of spacesettlers.utilities.Movement 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.Movement in project spacesettlers by amymcgovern.
the class TestToroidal2DPhysics method testApplyMovementTurnAndMoveFromStop.
@Test
public void testApplyMovementTurnAndMoveFromStop() {
Movement movement = new Movement();
movement.setAngularAccleration(Math.PI / 60);
movement.setTranslationalAcceleration(new Vector2D(10, 10));
position.setOrientation(Math.PI / 4);
double expectedOrientation = (Math.PI / 4) + (Math.PI / 60);
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(), expectedOrientation, 0.01);
assertEquals(newPosition.getAngularVelocity(), Math.PI / 60, 0.01);
assertEquals(newPosition.getTranslationalVelocityX(), 10, 0.01);
assertEquals(newPosition.getTranslationalVelocityY(), 10, 0.01);
}
use of spacesettlers.utilities.Movement in project spacesettlers by amymcgovern.
the class TestToroidal2DPhysics method testApplyTranslationalMovementHorizontalFromStop.
@Test
public void testApplyTranslationalMovementHorizontalFromStop() {
Movement movement = new Movement();
movement.setAngularAccleration(0);
movement.setTranslationalAcceleration(new Vector2D(10, 0));
double expectedX = 10;
double expectedY = 0;
Position newPosition = space.applyMovement(position, movement, timestep);
assertEquals(newPosition.getX(), expectedX, 0.01);
assertEquals(newPosition.getY(), expectedY, 0.01);
assertEquals(newPosition.getOrientation(), 0, 0.01);
assertEquals(newPosition.getAngularVelocity(), 0, 0.01);
assertEquals(newPosition.getTranslationalVelocityX(), 10, 0.01);
assertEquals(newPosition.getTranslationalVelocityY(), 0, 0.01);
}
use of spacesettlers.utilities.Movement in project spacesettlers by amymcgovern.
the class TestToroidal2DPhysics method testApplyOrientationMoveFromTurning.
@Test
public void testApplyOrientationMoveFromTurning() {
Movement movement = new Movement();
movement.setAngularAccleration(Math.PI / 180.0);
movement.setTranslationalAcceleration(new Vector2D());
double expectedOrientation = (3.0 * Math.PI) / 180.0;
// first time is from stop
Position newPosition = space.applyMovement(position, movement, timestep);
// second time it is moving already
newPosition = space.applyMovement(newPosition, movement, timestep);
assertEquals(newPosition.getOrientation(), expectedOrientation, 0.01);
assertEquals(newPosition.getAngularVelocity(), Math.PI / 90.0, 0.01);
assertEquals(newPosition.getX(), 0, 0.0);
assertEquals(newPosition.getY(), 0, 0.0);
assertEquals(newPosition.getTranslationalVelocityX(), 0, 0);
assertEquals(newPosition.getTranslationalVelocityY(), 0, 0);
}
use of spacesettlers.utilities.Movement in project spacesettlers by amymcgovern.
the class TestToroidal2DPhysics method testApplyNoMovementFromStop.
@Test
public void testApplyNoMovementFromStop() {
Movement movement = new Movement();
movement.setAngularAccleration(0);
movement.setTranslationalAcceleration(new Vector2D());
Position newPosition = space.applyMovement(position, movement, timestep);
assertEquals(newPosition.getX(), 0, 0.01);
assertEquals(newPosition.getY(), 0, 0.01);
assertEquals(newPosition.getOrientation(), 0, 0.01);
assertEquals(newPosition.getAngularVelocity(), 0, 0.01);
assertEquals(newPosition.getTranslationalVelocityX(), 0, 0.01);
assertEquals(newPosition.getTranslationalVelocityY(), 0, 0.01);
}
Aggregations