Quilでフラクタル Tree
「関数型オブジェクト指向AIプログラミング」のフラクタルをscalaからclojureに書き直す続き。
ツリー状の図形をフラクタルで描画してみる。
(defn tree [n length angle switch] (q/push-matrix) (if (= 1 n) (forward length angle) (let [l (/ length (/ 2 (Math/sqrt 2.0))) a (* Math/PI 0.15 switch)] (forward (* l 0.33) angle) (tree (dec n) (* l 0.8) (- angle a) 1) (forward (* l 0.33) angle) (tree (dec n) (* l 0.7) (+ angle (* a 1.8)) -1) (forward (* l 0.33) angle) (tree (dec n) (* l 0.6) angle 1))) (q/pop-matrix)) (defn draw [] (q/translate 105 250) (tree 8 200 (* Math/PI 1.5) 1))
フラクタルのコードとしてはあまり美しくない気がする。特に1.8とか0.6とか、あまり必然性なさそうなのに綺麗な図形にするための修正値みたいなものが嫌。