public Contact(Particle p1, Particle p2, VectorN _normal, double _depth) : base(p1, p2) { normal = _normal; depth = _depth; restitution = 0.7; VectorN relVelVec = new VectorN(pair[0].v); relVelVec.Sub(pair[1].v); relVel = relVelVec.Dot(normal); }
public void Update() { if (immovable) { return; } double energy = v.Dot(v); if (energy < 0.01) { if (aboutToFreeze) { //curGravity.Scale(0.8); framesToFreeze++; if (framesToFreeze > 20) { freezed = true; aboutToFreeze = false; v.Clear(); } } else { framesToFreeze = 0; aboutToFreeze = true; } } else { if (aboutToFreeze) { aboutToFreeze = false; } } }