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)); }
public int find(Vec vec) { for (int i = 0; i < _vecs.length; i++) if (vec.equals(_vecs[i])) return i; return -1; }