Search in sources :

Example 6 with Vector2D

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

the class TestMoveActionWithOrientation method testpdControlMoveToGoal.

/**
 * Test moving to the goal
 *
 * (40, 40)
 * 			(50,50)
 * (40, 60)
 *
 * @throws SpaceSettlersActionException
 */
@Test
public void testpdControlMoveToGoal() throws SpaceSettlersActionException {
    // first to -3pi/4
    Position currentLoc = new Position(50, 50);
    Position goalLoc = new Position(40, 40);
    currentLoc.setOrientation(-(3 * Math.PI) / 4);
    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(), -(3 * Math.PI) / 4, 0.01);
    assertEquals(currentLoc.getX(), 40, 0.05);
    assertEquals(currentLoc.getY(), 40, 0.05);
    // then to 3pi/4
    currentLoc = new Position(50, 50);
    currentLoc.setOrientation(0);
    goalLoc = new Position(40, 60);
    currentLoc.setOrientation((3 * Math.PI) / 4);
    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(), (3 * Math.PI) / 4, 0.01);
    assertEquals(currentLoc.getX(), 40, 0.05);
    assertEquals(currentLoc.getY(), 60, 0.05);
}
Also used : Movement(spacesettlers.utilities.Movement) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Test(org.junit.Test)

Example 7 with Vector2D

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

the class TestCollisionHandler method testCollidingInsideRadius.

@Test
public void testCollidingInsideRadius() {
    Ship ship;
    Asteroid asteroid;
    Position ship1Pos = new Position(100, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
    ship = new Ship("team1", Color.BLUE, ship1Pos);
    Position asteroid2Pos = new Position(134, 0, -Math.PI / 4);
    asteroid2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid = new Asteroid(asteroid2Pos, false, 20, true, .33, .33, .34);
    ship.setMass(asteroid.getMass());
    // ship radius is 15 and is at 100,0
    // asteroid radius is 20 here and at 134,0
    // ship should bounce back to -99.33,0 (edge of collision) and asteroid to 134.33 (edge of collision, based on velocities)
    collisionHandler.collide(ship, asteroid, space);
    assertEquals(ship.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(ship.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityX(), 20, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(ship.getPosition().getX(), 99.33, 0.01);
    assertEquals(ship.getPosition().getY(), 0, 0.01);
    assertEquals(asteroid.getPosition().getX(), 134.33, 0.01);
    assertEquals(asteroid.getPosition().getY(), 0, 0.01);
}
Also used : Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 8 with Vector2D

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

the class TestCollisionHandler method testElasticCollisionsShipToAsteroidX.

@Test
public void testElasticCollisionsShipToAsteroidX() {
    Ship ship1;
    Asteroid asteroid;
    Position ship1Pos = new Position(0, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
    ship1 = new Ship("team1", Color.BLUE, ship1Pos);
    Position asteroid2Pos = new Position(10, 0, -Math.PI / 4);
    asteroid2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid = new Asteroid(asteroid2Pos, false, 10, true, .33, .33, .34);
    ship1.setMass(asteroid.getMass());
    collisionHandler.collide(ship1, asteroid, space);
    assertEquals(ship1.getPosition().getTranslationalVelocityX(), -10, 0.01);
    assertEquals(ship1.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityX(), 20, 0.01);
    assertEquals(asteroid.getPosition().getTranslationalVelocityY(), 0, 0.01);
}
Also used : Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 9 with Vector2D

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

the class TestCollisionHandler method testCollidingWithMineableAsteroid.

@Test
public void testCollidingWithMineableAsteroid() {
    Ship ship1;
    Asteroid asteroid;
    Position ship1Pos = new Position(0, 0, Math.PI / 4);
    ship1Pos.setTranslationalVelocity(new Vector2D(20, 0));
    ship1 = new Ship("team1", Color.BLUE, ship1Pos);
    Position asteroid2Pos = new Position(10, 0, -Math.PI / 4);
    asteroid2Pos.setTranslationalVelocity(new Vector2D(-10, 0));
    asteroid = new Asteroid(asteroid2Pos, true, 10, true, .33, .33, .34);
    ResourcePile asteroidResources = asteroid.getResources();
    collisionHandler.collide(ship1, asteroid, space);
    assertEquals(ship1.getResources().getResourceQuantity(ResourceTypes.FUEL), asteroidResources.getResourceQuantity(ResourceTypes.FUEL), 0.0);
    assertEquals(ship1.getResources().getResourceQuantity(ResourceTypes.WATER), asteroidResources.getResourceQuantity(ResourceTypes.WATER), 0.0);
    assertEquals(ship1.getResources().getResourceQuantity(ResourceTypes.METALS), asteroidResources.getResourceQuantity(ResourceTypes.METALS), 0.0);
}
Also used : ResourcePile(spacesettlers.objects.resources.ResourcePile) Asteroid(spacesettlers.objects.Asteroid) Vector2D(spacesettlers.utilities.Vector2D) Position(spacesettlers.utilities.Position) Ship(spacesettlers.objects.Ship) Test(org.junit.Test)

Example 10 with Vector2D

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

the class TestCollisionHandler method testElasticCollisionsAsteroidsMoveableToNonMoveableOnX.

@Test
public void testElasticCollisionsAsteroidsMoveableToNonMoveableOnX() {
    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);
    asteroid2 = new Asteroid(position2, false, 10, false, .33, .33, .34);
    collisionHandler.collide(asteroid1, asteroid2, space);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityX(), -20, 0.01);
    assertEquals(asteroid1.getPosition().getTranslationalVelocityY(), 0, 0.01);
    assertEquals(asteroid2.getPosition().getTranslationalVelocityX(), 0, 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)

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