MoteurPhysique { public void update(List<Corps> corps, double dt) { if (corps != null && dt > 0) { for (Corps c1 : corps) { if (c1 != null && !c1.estStatique()) { c1.asgPosition(c1.reqPosition().additionner(c1.reqVitesse().multiplication(dt))); Vecteur force = new Vecteur(); for (Corps c2 : corps) { if (c1 != c2 && c2 != null) { double distance = c2.reqPosition().soustraire(c1.reqPosition()).getNorme(); Vecteur direction = c2.reqPosition().soustraire(c1.reqPosition()).normaliser(); force = force.additionner(direction.multiplication((GRAVITE * c1.reqMasse() * c2.reqMasse()) / Math.pow(distance, 2))); } } force = force.additionner(c1.reqForceExt()); c1.asgVitesse(c1.reqVitesse() .additionner(force.multiplication(1.0 / c1.reqMasse()) .multiplication(dt))); } } gererCollisions(corps); } } MoteurPhysique(); double getTailleEcranX(); void setTailleEcranX(double nouvelleTailleEcran); double getTailleEcranY(); void setTailleEcranY(double nouvelleTailleEcran); void update(List<Corps> corps, double dt);  }
@Test public void testUpdate() { moteur1.update(corps1, 0.5); assertEquals(vaisseau1.reqPositionX(), 5.0, 0.001); moteur1.update(corps1, 0.5); assertEquals(vaisseau1.reqPositionX(), 10.0, 0.001); moteur1.update(corps1, 0); assertEquals(vaisseau1.reqPositionX(), 10.0, 0.001); moteur1.update(null, 1); assertEquals(vaisseau1.reqPositionX(), 10.0, 0.001); moteur1.update(null, 0); assertEquals(vaisseau1.reqPositionX(), 10.0, 0.001); assertEquals(vaisseau2.reqVitesse().getX(), 10, 0.001); moteur1.update(corps2, 2); assertEquals(vaisseau2.reqVitesse().getX(), 10, 0.001); moteur1.update(corps2, 0.5); assertEquals(vaisseau2.reqVitesse().getX(), 0, 0.001); assertEquals(vaisseau3.reqVitesse().getX(), 10, 0.001); moteur1.update(corps3, 2); assertEquals(vaisseau3.reqVitesse().getX(), 10, 0.001); moteur1.update(corps3, 0.5); assertEquals(vaisseau3.reqVitesse().getX(), 0, 0.001); moteur2.update(corps4, 1.0); assertEquals(tete1.reqVitesse().getX(), -50, 0.001); moteur2.update(corps4, 1.0); assertEquals(tete1.reqVitesse().getY(), -50, 0.001); moteur2.update(corps4, 30.0); assertEquals(tete1.reqVitesse().getX(), 50, 0.001); moteur2.update(corps4, 1.0); assertEquals(tete1.reqVitesse().getY(), 50, 0.001); }