Skip to content

Commit

Permalink
first pass at sunflower distribution visualization
Browse files Browse the repository at this point in the history
  • Loading branch information
dgtized committed Apr 8, 2024
1 parent d14b29e commit a804ea2
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/shimmers/sketches.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@
shimmers.sketches.string-lights
shimmers.sketches.subliminal
shimmers.sketches.substrate
shimmers.sketches.sunflower
shimmers.sketches.superposition
shimmers.sketches.superposition-mirrored
shimmers.sketches.terrain-grid
Expand Down
49 changes: 49 additions & 0 deletions src/shimmers/sketches/sunflower.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
(ns shimmers.sketches.sunflower
(:require
[quil.core :as q :include-macros true]
[quil.middleware :as m]
[shimmers.common.framerate :as framerate]
[shimmers.common.ui.controls :as ctrl]
[shimmers.sketch :as sketch :include-macros true]
[shimmers.common.quil :as cq]
[thi.ng.math.core :as tm]
[shimmers.math.vector :as v]
[clojure.math :as math]))

;; https://stackoverflow.com/questions/28567166/uniformly-distribute-x-points-inside-a-circle
(defn setup []
(q/color-mode :hsl 1.0)
(q/frame-rate 24)
{:alpha 0.0
:points 512})

(defn update-state [state]
(update state :alpha (fn [a] (mod (+ a 1.0) 10.0))))

(defn draw [{:keys [points alpha]}]
(q/background 1.0)
(let [center (cq/rel-vec 0.5 0.5)
radius (* 0.45 (min (q/height) (q/width)))
exterior (min (int (tm/roundto (* alpha (math/sqrt points)) 0.1)) points)
interior (- points exterior)
k-theta (* math/PI (- 3 (math/sqrt 5)))]
(doseq [[r theta] (mapv (fn [i] [(if (< i interior) (/ (float i) (inc interior)) 1.0)
(* i k-theta)])
(range points))]
(cq/circle (v/+polar center (* r radius) theta)
2.0))))

(defn page []
[:div
(sketch/component
:size [800 600]
:setup setup
:update update-state
:draw draw
:middleware [m/fun-mode framerate/mode])])

(sketch/definition sunflower
{:created-at "2024-04-08"
:tags #{}
:type :quil}
(ctrl/mount page))

0 comments on commit a804ea2

Please sign in to comment.