diff --git a/index.html b/index.html
index b614a0f..b938f38 100644
--- a/index.html
+++ b/index.html
@@ -38,13 +38,21 @@
:else (not-a-number! n)))
(defn sanitise-angle
+ "Take this `angle`, and return a number between 0 and 360 that represents
+ it as an angular measurement."
[angle]
- (let [v (cond (.isNaN js/Number angle) 0
- (< (abs angle) 0.5) 0
- (< (abs angle) 360) angle
- :else (rem 360 angle))]
- (.log js/console (str "(sanitise-angle " angle ") -> " v))
- v))
+ (let [a (abs angle)
+ p (pos? angle)
+ v (cond (.isNaN js/Number a) 0
+ (< a 0.5) 0
+ (<= a 360) angle
+ ;; TODO: `rem` is possibly wrong when we get into negative numbers
+ :else (loop [r a]
+ (if (<= r 360) r
+ (recur (- r 360)))))
+ v' (if p v (- 360 v))]
+ (.log js/console (str "(sanitise-angle " angle ") -> " v'))
+ v'))
(defn turn!
"Turn the turtle clockwise by this `angle`, expressed in degrees with
@@ -54,7 +62,7 @@
(if (number? angle)
(swap! turtle assoc :theta
(sanitise-angle
- (rem 360 (+ (:theta @turtle) angle))))
+ (+ (:theta @turtle) angle)))
(not-a-number! angle))
(.info js/console (str "(turn! " angle
") :: :theta now " (:theta @turtle)))
@@ -215,8 +223,7 @@
(log-turtle!)
(turn-to! 180)
;; (draw-tree! 100 70 60 5 0.25 0.7 3)
- ;; (map #(draw-polygon! % 100) (range 3 20))
- (draw-polygon! 3 100)
+ (doall (map #(draw-polygon! % 100) (range 3 20)))