diff options
Diffstat (limited to '2d/softbody/softbody_1/undamped.cpp')
-rw-r--r-- | 2d/softbody/softbody_1/undamped.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/2d/softbody/softbody_1/undamped.cpp b/2d/softbody/softbody_1/undamped.cpp index 68e0636..578a126 100644 --- a/2d/softbody/softbody_1/undamped.cpp +++ b/2d/softbody/softbody_1/undamped.cpp @@ -150,9 +150,9 @@ namespace Undamped { void Spring::load(Renderer2d* renderer, SpringWeight* inWeight, float32 length, float32 initialDisplacement, float32 inK, float32 loopRadius) { weight = inWeight; - position = initialDisplacement; + position = -initialDisplacement; k = inK; - force = -k * initialDisplacement; + force = -k * position; velocity = sqrtf(k / weight->mass); const int32 verticesPerSegment = 6; @@ -198,7 +198,8 @@ namespace Undamped { void Spring::update(float32 dtSeconds) { float32 lastPosition = position; force = -k * position; - velocity = velocity + (force * dtSeconds) / weight->mass; + auto acceleration = (force / weight->mass); + velocity = velocity + acceleration * dtSeconds; position = position + velocity * dtSeconds; float32 dx = position - lastPosition; |