Arantium Maestum

プログラミング、囲碁、読書の話題

ClojureとQuilでSF円

SFやアニメのコンピュータスクリーンによく出てくる、円状のものがクルクルと違うスピードで回ってるやつ。

こちらが元ネタ:

labs.uechoco.com

Quil版:

Quil -L7vYVzO6uheSLTyNizI

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が関数である必然性はゼロだな・・・)

しかし正直ガタガタの対処にばかり時間がかかったのでどちらかというとストレスのたまるコーディングだった。