From 504c5f860d998f595f1e2c8f19b174221500da53 Mon Sep 17 00:00:00 2001
From: Ananth Venkatesh <dev.quantum9innovation@gmail.com>
Date: Sun, 16 Feb 2025 00:22:06 -0500
Subject: [PATCH] refactor: fix elm-review suggestions

---
 elm.json                    |   4 +-
 review/src/ReviewConfig.elm |   2 -
 src/Main.elm                | 198 ++++++++++++++++++------------------
 3 files changed, 102 insertions(+), 102 deletions(-)

diff --git a/elm.json b/elm.json
index 8a0d238..99dd366 100644
--- a/elm.json
+++ b/elm.json
@@ -18,7 +18,6 @@
       "ianmackenzie/elm-triangular-mesh": "1.1.0",
       "ianmackenzie/elm-units": "2.10.0",
       "mdgriffith/elm-ui": "1.1.8",
-      "rl-king/elm-scroll-to": "1.1.2",
       "w0rm/elm-obj-file": "1.2.1"
     },
     "indirect": {
@@ -31,8 +30,7 @@
       "ianmackenzie/elm-float-extra": "1.1.0",
       "ianmackenzie/elm-geometry-linear-algebra-interop": "2.0.2",
       "ianmackenzie/elm-interval": "3.1.0",
-      "ianmackenzie/elm-units-interval": "3.2.0",
-      "tad-lispy/springs": "1.0.5"
+      "ianmackenzie/elm-units-interval": "3.2.0"
     }
   },
   "elm-version": "0.19.1",
diff --git a/review/src/ReviewConfig.elm b/review/src/ReviewConfig.elm
index c645afe..6470693 100644
--- a/review/src/ReviewConfig.elm
+++ b/review/src/ReviewConfig.elm
@@ -12,7 +12,6 @@ when inside the directory containing this file.
 -}
 
 import Docs.ReviewAtDocs
-import NoConfusingPrefixOperator
 import NoDebug.Log
 import NoDebug.TodoOrToString
 import NoExposingEverything
@@ -36,7 +35,6 @@ import Simplify
 config : List Rule
 config =
     [ Docs.ReviewAtDocs.rule
-    , NoConfusingPrefixOperator.rule
     , NoDebug.Log.rule
     , NoDebug.TodoOrToString.rule
         |> Rule.ignoreErrorsForDirectories [ "tests/" ]
diff --git a/src/Main.elm b/src/Main.elm
index 4ca1613..762f948 100644
--- a/src/Main.elm
+++ b/src/Main.elm
@@ -1,4 +1,4 @@
-module Main exposing (Flags, Model, Msg, Object3d, main, sitemap)
+module Main exposing (Flags, Model, Msg, Object3d, main)
 
 import Angle
 import Array
@@ -176,10 +176,6 @@ blender t =
         n =
             length mainColors
 
-        p : Float
-        p =
-            frac (t * toFloat n)
-
         c1 : Maybe ( Float, Float, Float )
         c1 =
             getAt (floor (t * toFloat n)) mainColors
@@ -206,6 +202,11 @@ blender t =
                     Color.rgb255 173 111 101
 
                 Just color1 ->
+                    let
+                        p : Float
+                        p =
+                            frac (t * toFloat n)
+                    in
                     -- blend both colors
                     blend p color1 color2
 
@@ -461,6 +462,7 @@ id =
 getPaths : String -> List String
 getPaths base =
     let
+        root : String
         root =
             "/" ++ base
     in
@@ -470,6 +472,7 @@ getPaths base =
 itemize : List String -> a -> List ( String, a )
 itemize multikeys entry =
     let
+        key : Maybe String
         key =
             List.head multikeys
     in
@@ -493,6 +496,7 @@ sitemap =
 loadUrl : Model -> List (Html Msg)
 loadUrl model =
     let
+        req : Maybe (Model -> List (Html Msg))
         req =
             Dict.get model.url.path sitemap
     in
@@ -1526,98 +1530,6 @@ view3DEntries entry model =
                                 else
                                     Scene3d.mesh textures (Mesh.texturedFacets mesh)
 
-            height : Float
-            height =
-                case entry of
-                    "A" ->
-                        10
-
-                    "B" ->
-                        7
-
-                    "C" ->
-                        5
-
-                    "E" ->
-                        1
-
-                    _ ->
-                        2
-
-            perspective : Angle.Angle
-            perspective =
-                let
-                    theta : Float
-                    theta =
-                        180 * frac (model.angle / 180)
-
-                    winding : Float
-                    winding =
-                        360 * frac (model.angle / 360)
-
-                    direction : Float
-                    direction =
-                        abs (180 - winding) / (180 - winding)
-
-                    interp : Float -> Float -> Angle.Angle
-                    interp a b =
-                        Angle.degrees
-                            (if direction > 0 then
-                                a + (b - a) * theta / 180
-
-                             else
-                                b + (a - b) * theta / 180
-                            )
-                in
-                case entry of
-                    "J" ->
-                        interp -45 30
-
-                    "E" ->
-                        interp 30 110
-
-                    "F" ->
-                        interp 140 230
-
-                    "G" ->
-                        interp 230 290
-
-                    "H" ->
-                        interp 290 315
-
-                    _ ->
-                        Angle.degrees model.angle
-
-            orbit : Float
-            orbit =
-                case entry of
-                    "A" ->
-                        4
-
-                    "B" ->
-                        6
-
-                    "C" ->
-                        6
-
-                    "D" ->
-                        10
-
-                    "F" ->
-                        12
-
-                    "G" ->
-                        10
-
-                    "J" ->
-                        12
-
-                    "H" ->
-                        11
-
-                    _ ->
-                        7
-
             camera : Camera3d.Camera3d Length.Meters coordinates
             camera =
                 Camera3d.perspective
@@ -1626,6 +1538,98 @@ view3DEntries entry model =
                             { focalPoint = Point3d.origin
                             , eyePoint =
                                 let
+                                    orbit : Float
+                                    orbit =
+                                        case entry of
+                                            "A" ->
+                                                4
+
+                                            "B" ->
+                                                6
+
+                                            "C" ->
+                                                6
+
+                                            "D" ->
+                                                10
+
+                                            "F" ->
+                                                12
+
+                                            "G" ->
+                                                10
+
+                                            "J" ->
+                                                12
+
+                                            "H" ->
+                                                11
+
+                                            _ ->
+                                                7
+
+                                    perspective : Angle.Angle
+                                    perspective =
+                                        let
+                                            phi : Float
+                                            phi =
+                                                180 * frac (model.angle / 180)
+
+                                            winding : Float
+                                            winding =
+                                                360 * frac (model.angle / 360)
+
+                                            direction : Float
+                                            direction =
+                                                abs (180 - winding) / (180 - winding)
+
+                                            interp : Float -> Float -> Angle.Angle
+                                            interp a b =
+                                                Angle.degrees
+                                                    (if direction > 0 then
+                                                        a + (b - a) * phi / 180
+
+                                                     else
+                                                        b + (a - b) * phi / 180
+                                                    )
+                                        in
+                                        case entry of
+                                            "J" ->
+                                                interp -45 30
+
+                                            "E" ->
+                                                interp 30 110
+
+                                            "F" ->
+                                                interp 140 230
+
+                                            "G" ->
+                                                interp 230 290
+
+                                            "H" ->
+                                                interp 290 315
+
+                                            _ ->
+                                                Angle.degrees model.angle
+
+                                    height : Float
+                                    height =
+                                        case entry of
+                                            "A" ->
+                                                10
+
+                                            "B" ->
+                                                7
+
+                                            "C" ->
+                                                5
+
+                                            "E" ->
+                                                1
+
+                                            _ ->
+                                                2
+
                                     theta : Angle.Angle
                                     theta =
                                         perspective