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)))
|
:else (not-a-number! n)))
|
||||||
|
|
||||||
(defn sanitise-angle
|
(defn sanitise-angle
|
||||||
|
"Take this `angle`, and return a number between 0 and 360 that represents
|
||||||
|
it as an angular measurement."
|
||||||
[angle]
|
[angle]
|
||||||
(let [v (cond (.isNaN js/Number angle) 0
|
(let [a (abs angle)
|
||||||
(< (abs angle) 0.5) 0
|
p (pos? angle)
|
||||||
(< (abs angle) 360) angle
|
v (cond (.isNaN js/Number a) 0
|
||||||
:else (rem 360 angle))]
|
(< a 0.5) 0
|
||||||
(.log js/console (str "(sanitise-angle " angle ") -> " v))
|
(<= a 360) angle
|
||||||
v))
|
;; 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!
|
(defn turn!
|
||||||
"Turn the turtle clockwise by this `angle`, expressed in degrees with
|
"Turn the turtle clockwise by this `angle`, expressed in degrees with
|
||||||
|
@ -54,7 +62,7 @@
|
||||||
(if (number? angle)
|
(if (number? angle)
|
||||||
(swap! turtle assoc :theta
|
(swap! turtle assoc :theta
|
||||||
(sanitise-angle
|
(sanitise-angle
|
||||||
(rem 360 (+ (:theta @turtle) angle))))
|
(+ (:theta @turtle) angle)))
|
||||||
(not-a-number! angle))
|
(not-a-number! angle))
|
||||||
(.info js/console (str "(turn! " angle
|
(.info js/console (str "(turn! " angle
|
||||||
") :: :theta now " (:theta @turtle)))
|
") :: :theta now " (:theta @turtle)))
|
||||||
|
@ -215,8 +223,7 @@
|
||||||
(log-turtle!)
|
(log-turtle!)
|
||||||
(turn-to! 180)
|
(turn-to! 180)
|
||||||
;; (draw-tree! 100 70 60 5 0.25 0.7 3)
|
;; (draw-tree! 100 70 60 5 0.25 0.7 3)
|
||||||
;; (map #(draw-polygon! % 100) (range 3 20))
|
(doall (map #(draw-polygon! % 100) (range 3 20)))
|
||||||
(draw-polygon! 3 100)
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Reference in a new issue