Add unstaged sketch no. thirty-two

This commit is contained in:
arne 2022-11-04 00:34:01 +01:00
commit 5f6c31c09b

View file

@ -0,0 +1,97 @@
(ns aphorisms.thirty-two
(:require [quil.core :as q]
[quil.middleware :as qm]
[thi.ng.geom.rect :as r]
[thi.ng.geom.core :as g]
[thi.ng.geom.circle :as c]
[thi.ng.math.core :as m]))
(def bounds (r/rect 600 600))
(def canvas (g/scale bounds 0.92))
(defn update-state
([] {:t 0})
([_state] {:t (* 0.0002 (q/millis))}))
(defn setup []
(q/frame-rate 30)
(q/ellipse-mode :center)
(q/rect-mode :corners)
(q/color-mode :hsb 255)
(update-state))
(defn draw-state [{:keys [t]}]
(let [circles 10]
(q/background 232)
(q/no-fill)
(q/with-translation [(/ (g/width bounds) 2)
(/ (g/height bounds) 2)]
(q/stroke-weight 1)
(q/stroke 40 (* (* 0.5 (+ 1 (Math/sin (* 6 t)))) 255))
(q/ellipse 0 0 60 60)
(q/stroke 40)
(q/stroke-weight 1)
(doseq [i (range circles)
:let [off (* i (/ (* 2 Math/PI) circles))
radius 100
circ (* 2 Math/PI radius)]]
(q/ellipse (* radius (Math/cos (+ t off))) (* radius (Math/sin (+ t off)))
(/ circ circles 2) (/ circ circles 2)))
(q/stroke-weight 0.5)
(doseq [i (range (* 2 circles))
:let [n (* 2 circles)
radius 100
off (* i (/ (* 2 Math/PI) n))
circ (* 2 Math/PI radius)]]
(q/ellipse (* radius (Math/cos (+ t off))) (* radius (Math/sin (+ t off)))
(/ circ n 2) (/ circ n 2)))
(q/stroke-weight 2)
(doseq [i (range (* 3 circles))
:let [n (* 3 circles)
radius 140
off (* i (/ (* 2 Math/PI) n))]]
(q/ellipse (* radius (Math/sin (+ t off))) (* radius (Math/cos (+ t off))) 1 1))
(q/stroke-weight 2)
(doseq [i (range (* 3 circles))
:let [n (* 3 circles)
radius 144
off (* i (/ (* 2 Math/PI) n))]]
(q/ellipse (* radius (Math/cos (+ t off))) (* radius (Math/sin (+ t off))) 1 1))
(q/stroke-weight 2)
(doseq [i (range (* 3 circles))
:let [n (* 3 circles)
radius 148
off (* i (/ (* 2 Math/PI) n))]]
(q/ellipse (* radius (Math/sin (+ t off))) (* radius (Math/cos (+ t off))) 1 1))
(q/stroke-weight 2)
(doseq [i (range (* 3 circles))
:let [n (* 3 circles)
radius 152
off (* i (/ (* 2 Math/PI) n))]]
(q/ellipse (* radius (Math/cos (+ t off))) (* radius (Math/sin (+ t off))) 1 1))
(q/stroke-weight 0.1)
(doseq [i (range (* 3 circles))
:let [n (* 0.5 circles)
radius 202
off (* i (/ (* 2 Math/PI) n))
circ (* 2 Math/PI radius)]]
(q/ellipse (* radius (Math/sin (+ t off))) (* radius (Math/cos (+ t off)))
(/ circ n 6) (/ circ n 6))))))
#_:clj-kondo/ignore
(q/defsketch thirty-two
:title "Thirty-Two"
:size (:size bounds)
:settings #(q/pixel-density (q/display-density))
:features [:keep-on-top]
:setup setup
:update update-state
:draw draw-state
:middleware [qm/pause-on-error #_(screenshottable) qm/fun-mode])