diff options
Diffstat (limited to 'tools/mq_editor/utils.js')
| -rw-r--r-- | tools/mq_editor/utils.js | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/mq_editor/utils.js b/tools/mq_editor/utils.js index 2c6b2f5..ed34b8e 100644 --- a/tools/mq_editor/utils.js +++ b/tools/mq_editor/utils.js @@ -8,7 +8,7 @@ function evalBezier(curve, t) { const dt = curve.t3 - curve.t0; if (dt <= 0) return curve.v0; let u = (t - curve.t0) / dt; - u = Math.max(0, Math.min(1, u)); + u = clamp(u, 0, 1); const u1 = (curve.t1 - curve.t0) / dt; const u2 = (curve.t2 - curve.t0) / dt; const d0 = (-u1) * (-u2) * (-1); @@ -29,7 +29,7 @@ function evalBezierAmp(curve, t) { const dt = curve.t3 - curve.t0; if (dt <= 0) return curve.a0; let u = (t - curve.t0) / dt; - u = Math.max(0, Math.min(1, u)); + u = clamp(u, 0, 1); const u1 = (curve.t1 - curve.t0) / dt; const u2 = (curve.t2 - curve.t0) / dt; const d0 = (-u1) * (-u2) * (-1); @@ -45,6 +45,8 @@ function evalBezierAmp(curve, t) { return l0 * curve.a0 + l1 * curve.a1 + l2 * curve.a2 + l3 * curve.a3; } +function clamp(v, lo, hi) { return v < lo ? lo : v > hi ? hi : v; } + // Get canvas-relative {x, y} from a mouse event function getCanvasCoords(e, canvas) { const rect = canvas.getBoundingClientRect(); |
