Search in sources :

Example 16 with Movement

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);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 17 with Movement

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);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 18 with Movement

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);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 19 with Movement

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);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 20 with Movement

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);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Aggregations

Movement (spacesettlers.utilities.Movement)20 Position (spacesettlers.utilities.Position)16 Test (org.junit.Test)15 Vector2D (spacesettlers.utilities.Vector2D)15 MoveAction (spacesettlers.actions.MoveAction)4 LinkedHashSet (java.util.LinkedHashSet)1 UUID (java.util.UUID)1 ExecutionException (java.util.concurrent.ExecutionException)1 ExecutorService (java.util.concurrent.ExecutorService)1 TimeoutException (java.util.concurrent.TimeoutException)1 AbstractAction (spacesettlers.actions.AbstractAction)1 DoNothingAction (spacesettlers.actions.DoNothingAction)1 AbstractActionableObject (spacesettlers.objects.AbstractActionableObject)1 AbstractObject (spacesettlers.objects.AbstractObject)1 AiCore (spacesettlers.objects.AiCore)1 Base (spacesettlers.objects.Base)1 Ship (spacesettlers.objects.Ship)1 ResourcePile (spacesettlers.objects.resources.ResourcePile)1