ClojureとQuilでSF円
SFやアニメのコンピュータスクリーンによく出てくる、円状のものがクルクルと違うスピードで回ってるやつ。
こちらが元ネタ:
Quil版:
q/arc
がほぼ使い物にならないレベルでガタガタだったので、表示しているのはq/ellipse
で部分的に隠すためだけに黒いq/arc
を使っている。
いまだに端がガタガタだが、q/arc
だけで書いていた時は円全体がガタガタ。これでもまだ相当マシになった。
コード的には:
(def x (->> (repeatedly #(q/random 20 70)) (reductions + 100) (take-while #(<= % 400)))) (defn avrg [x y] (/ (+ x y) 2)) (def radii (map avrg x (rest x))) (def weights (map - (rest x) x)) (defn make-arcs [] (vec (map make-arc radii weights)))
こことかClojureの好きな機能使えて嬉しくはある。こういう感じに高階関数使うのが私にとってのClojureの楽しみ。(でもこれ見直してみるとmake-arcs
が関数である必然性はゼロだな・・・)
しかし正直ガタガタの対処にばかり時間がかかったのでどちらかというとストレスのたまるコーディングだった。