Not completely working -- tree drawing is still borked -- but much better.
This commit is contained in:
parent
357d4c5853
commit
252ddaf5a6
25
index.html
25
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)))
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue