diff --git a/src/spring.luau b/src/spring.luau index e60e3ae..66dc896 100644 --- a/src/spring.luau +++ b/src/spring.luau @@ -161,6 +161,11 @@ local function spring(source: () -> T, period: number?, damping_ratio: number local c_c = 2*w_n local c = z * c_c + -- todo: is there a solution to this other than upping step frequency? + if c > UPDATE_RATE*2 then -- solver will explode if this is true + throw("spring damping too high, consider reducing damping or increasing period") + end + local data: SpringData = { k = k, c = c, diff --git a/test/spring-test.luau b/test/spring-test.luau index c22d955..2e3bc9b 100644 --- a/test/spring-test.luau +++ b/test/spring-test.luau @@ -48,14 +48,14 @@ local function main() local reset = "\27[H\27[2J" -- ANSI clear terminal local offset = string.rep("\n", MAX - fv + OFFSET) local bar = testkit.color.gray(remainder_to_block(v - fv) .. "\n" .. string.rep(BLOCK .. "\n", fv)) - print(reset .. offset .. bar) + print(reset .. offset .. bar .. "\n" .. v) end) - local elapsed = 0 + local T = 3 + local elapsed = T/1.2 repeat local dt = step() vide.step(dt) - local T = 3 elapsed += dt while elapsed >= T do elapsed -= T