use of spacesettlers.objects.Asteroid 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);
}
use of spacesettlers.objects.Asteroid 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);
}
use of spacesettlers.objects.Asteroid 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);
}
use of spacesettlers.objects.Asteroid 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);
}
use of spacesettlers.objects.Asteroid 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);
}
Aggregations