public void relax() {
   if (p1.inv_mass == 0 && p2.inv_mass == 0) return;
   Vec displacement = get_displacement();
   if (displacement.equals(new Vec(0, 0))) return;
   double prop1, prop2;
   if (p1.inv_mass == 0) {
     prop1 = 0;
     prop2 = 1;
   } else if (p2.inv_mass == 0) {
     prop1 = 1;
     prop2 = 0;
   } else {
     double imass_total = p1.inv_mass + p2.inv_mass;
     prop1 = p1.inv_mass / imass_total;
     prop2 = p2.inv_mass / imass_total;
   }
   p1.pos.iadd(displacement.mul(prop1));
   p2.pos.isub(displacement.mul(prop2));
 }
Ejemplo n.º 2
0
 public int find(Vec vec) {
   for (int i = 0; i < _vecs.length; i++) if (vec.equals(_vecs[i])) return i;
   return -1;
 }