From 567742186bcb152e2c35081a4f5e2d6d50d9d8d4 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sun, 9 Feb 2025 00:54:29 -0500 Subject: [PATCH] fix(perf): canonicalize angle in 3d rotations --- src/Main.elm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Main.elm b/src/Main.elm index eb46284..d3bd06b 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -98,6 +98,16 @@ type Msg | Copy String +modulo : Float -> Float -> Float +modulo a b = + b - toFloat (floor (b / a)) * a + + +canonicalize : Float -> Float +canonicalize angle = + modulo 360 angle + + update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = let @@ -134,7 +144,7 @@ update msg model = } Rotate time -> - wrap { model | angle = model.angle + 2 * (2 + sin (toFloat (Time.posixToMillis time) / 1000)) } + wrap { model | angle = canonicalize (model.angle + 2 * (2 + sin (toFloat (Time.posixToMillis time) / 1000))) } Copy text -> ( model, copyToClipboard text )