public void update(double dt) { sp = Math.Max(-maxTorque, Math.Min(maxTorque, sp + av)); double dx = -curr.y; double dy = curr.x; double len = Math.Sqrt(dx * dx + dy * dy); dx = dx / len; dy = dy / len; curr.x = curr.x + sp * dx; curr.y = curr.y + sp * dy; double ox = prev.x; double oy = prev.y; prev.x = curr.x; double px = prev.x; //= curr.x prev.y = curr.y; double py = prev.y; //= curr.y curr.x = curr.x + APEngine.getDamping() * (px - ox); curr.y = curr.y + APEngine.getDamping() * (py - oy); double clen = Math.Sqrt(curr.x * curr.x + curr.y * curr.y); double diff = (clen - wr) / clen; curr.x = curr.x - curr.x * diff; curr.y = curr.y - curr.y * diff; }
public virtual void update(double dt2) { if (_fixed) { return; return; } addForce(APEngine.force); addMasslessForce(APEngine.masslessForce); temp.copy(curr); Vector nv = getVelocity().plus(forces.multEquals(dt2)); curr.plusEquals(nv.multEquals(APEngine.getDamping())); prev.copy(temp); forces.setTo(0, 0); }