diff options
| author | Matthew Kosarek <mattkae@protonmail.com> | 2021-06-24 13:49:23 -0400 |
|---|---|---|
| committer | Matthew Kosarek <mattkae@protonmail.com> | 2021-06-24 13:49:23 -0400 |
| commit | 410a072c3862481f729c293402ddd49c5ae98769 (patch) | |
| tree | 6fbd4b31b355cd0228bd790415762b446dcd4ab3 /2d/rigidbody/rigidbody_2/main.cpp | |
| parent | 0f1275d7ba1a7e3ad838423c15d78e23c960f80e (diff) | |
(mkosarek) Decent enough discussion of 2d rotational forces
Diffstat (limited to '2d/rigidbody/rigidbody_2/main.cpp')
| -rw-r--r-- | 2d/rigidbody/rigidbody_2/main.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/2d/rigidbody/rigidbody_2/main.cpp b/2d/rigidbody/rigidbody_2/main.cpp index bad6949..123cf7e 100644 --- a/2d/rigidbody/rigidbody_2/main.cpp +++ b/2d/rigidbody/rigidbody_2/main.cpp @@ -63,13 +63,15 @@ struct Rigidbody { float32 nextTimeAppliedSeconds = i.timeAppliedSeconds + deltaTimeSeconds; if (nextTimeAppliedSeconds >= i.timeOfApplicationSeconds) { - nextTimeAppliedSeconds = i.timeOfApplicationSeconds; // Do the remainder of the time + nextTimeAppliedSeconds = i.timeOfApplicationSeconds; i.isDead = true; } float32 impulseDtSeconds = nextTimeAppliedSeconds - i.timeAppliedSeconds; Vector2 forceToApply = i.force * (impulseDtSeconds / i.timeOfApplicationSeconds); force += forceToApply * impulseDtSeconds; + + // New! Increment the torque for each force torque += i.pointOfApplication.getPerp().dot(forceToApply); i.timeAppliedSeconds = nextTimeAppliedSeconds; @@ -79,12 +81,11 @@ struct Rigidbody { velocity += (acceleration * deltaTimeSeconds); position += (velocity * deltaTimeSeconds); - // New: Update the rotational velocity as well + // New! Update the rotational velocity as well float32 rotationalAcceleration = torque / momentOfInertia; rotationalVelocity += (rotationalAcceleration * deltaTimeSeconds); rotation += (rotationalVelocity * deltaTimeSeconds); - // Cleanup any impulses that have expired in the mean time for (int32 idx = 0; idx < numImpulses; idx++) { if (activeImpulses[idx].isDead) { for (int j = idx + 1; j < numImpulses; j++) { |
