satisfy method
void
satisfy()
Implementation
void satisfy() {
if (isTorn) return;
final double dx = p2.x - p1.x;
final double dy = p2.y - p1.y;
final double dz = p2.z - p1.z;
final double distance = math.sqrt(dx * dx + dy * dy + dz * dz);
if (distance < 1e-6) return;
final double w1 = p1.isPinned ? 0.0 : 1.0;
final double w2 = p2.isPinned ? 0.0 : 1.0;
final double wSum = w1 + w2;
if (wSum == 0.0) return;
final double diff = (distance - restingDistance) / distance * stiffness;
final double c1 = diff * w1 / wSum;
final double c2 = diff * w2 / wSum;
p1.x += dx * c1;
p1.y += dy * c1;
p1.z += dz * c1;
p2.x -= dx * c2;
p2.y -= dy * c2;
p2.z -= dz * c2;
}