use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestCollisionHandler method testElasticCollisionsShipToMoveableAsteroidY.
@Test
public void testElasticCollisionsShipToMoveableAsteroidY() {
Ship ship1;
Asteroid asteroid;
Position ship1Pos = new Position(0, 0, Math.PI / 4);
ship1Pos.setTranslationalVelocity(new Vector2D(0, 20));
ship1 = new Ship("team1", Color.BLUE, ship1Pos);
Position asteroid2Pos = new Position(0, 10, -Math.PI / 4);
asteroid2Pos.setTranslationalVelocity(new Vector2D(0, -10));
asteroid = new Asteroid(asteroid2Pos, false, 10, true, .33, .33, .34);
ship1.setMass(asteroid.getMass());
collisionHandler.collide(ship1, asteroid, space);
assertEquals(ship1.getPosition().getTranslationalVelocityX(), 0, 0.01);
assertEquals(ship1.getPosition().getTranslationalVelocityY(), -10.0, 0.01);
assertEquals(asteroid.getPosition().getTranslationalVelocityX(), 0, 0.01);
assertEquals(asteroid.getPosition().getTranslationalVelocityY(), 20, 0.01);
}
use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestToroidal2DPhysics method setUp.
@Before
public void setUp() throws Exception {
position = new Position(0, 0, 0);
height = 480;
width = 640;
space = new Toroidal2DPhysics(height, width, timestep);
}
use of spacesettlers.utilities.Position 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.Position in project spacesettlers by amymcgovern.
the class TestToroidal2DPhysics method testGetRandomFreeLocationInRegion.
@Test
public void testGetRandomFreeLocationInRegion() {
int numTries = 1000;
Random rand = new Random();
double maxDistance = 100;
int freeRadius = 10;
Position center = new Position(0, 0);
for (int i = 0; i < numTries; i++) {
Position position = space.getRandomFreeLocationInRegion(rand, freeRadius, 0, 0, maxDistance);
double dist = space.findShortestDistance(center, position);
if (dist > maxDistance) {
System.out.println(position);
}
assertTrue(dist <= maxDistance);
}
}
use of spacesettlers.utilities.Position in project spacesettlers by amymcgovern.
the class TestToroidal2DPhysics method testToroidalWrap.
@Test
public void testToroidalWrap() {
Position position = new Position(0, 0);
// try from the 0,0 position (which should not wrap)
space.toroidalWrap(position);
assertEquals(position.getX(), 0, 0);
assertEquals(position.getY(), 0, 0);
// now wrap from negative
position.setX(-100);
position.setY(-100);
space.toroidalWrap(position);
assertEquals(position.getX(), width - 100, 0);
assertEquals(position.getY(), height - 100, 0);
// wrap from the right
position.setX(width + 100);
position.setY(height / 2);
space.toroidalWrap(position);
assertEquals(position.getX(), 100, 0);
assertEquals(position.getY(), height / 2, 0);
// wrap over the top
position.setX(width / 2);
position.setY(height + 100);
space.toroidalWrap(position);
assertEquals(position.getX(), width / 2, 0);
assertEquals(position.getY(), 100, 0);
}
Aggregations