From a868219f6492278a95e825c299909f8b6cfed36b Mon Sep 17 00:00:00 2001 From: arne Date: Thu, 1 Apr 2021 20:32:08 +0200 Subject: [PATCH] I wish the worm would stop staring at me but it never stops staring it just gets distracted sometimes --- src/aphorisms/seventeen.clj | 67 +++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/aphorisms/seventeen.clj diff --git a/src/aphorisms/seventeen.clj b/src/aphorisms/seventeen.clj new file mode 100644 index 0000000..287a227 --- /dev/null +++ b/src/aphorisms/seventeen.clj @@ -0,0 +1,67 @@ +(ns aphorisms.seventeen + (:require [quil.core :as q] + [quil.middleware :as qm] + [thi.ng.geom.circle :as circle] + [thi.ng.geom.core :as g] + [thi.ng.math.core :as m] + [thi.ng.math.noise :as n] + [thi.ng.geom.circle :as c] + [thi.ng.geom.vector :as v])) + +(def circ + (c/circle 100)) + +(n/noise1 0.1) + +(defn setup [] + (q/frame-rate 30) + (q/rect-mode :center) + (q/ellipse-mode :center) + (q/color-mode :hsb 360 100 100) + (q/background 180 10 90) + {:pointer (v/vec2 250 250)}) + +(defn update-state [state] + state) + +(defn circle [seed radius] + (let [c-off-x (n/noise1 (* 0.0001 seed)) + c-off-y (n/noise1 (* -0.0004 seed))] + (c/circle (* c-off-x (/ radius 3)) (* c-off-y (/ radius 3)) radius))) + +(defn mix-hsb [hsb-a hsb-b x] + (mapv + (map (partial * (- 1 x)) hsb-a) (map (partial * x) hsb-b))) + +(defn draw-state [state] + (let [fg-color [20 120 90] + bg-color [180 5 90]] + (q/background 180 5 90) + (q/with-translation [250 250] + (doseq [[idx radius] (map-indexed vector (range 20 150 10))] + (q/no-fill) + (q/no-stroke) + (let [paint (if (zero? idx) q/fill q/stroke) + {[x y] :p r :r} (as-> (circle (+ (q/millis) (* idx 100)) radius) shape + (g/translate shape (m/*! (m/-! shape))))] + (apply paint (mix-hsb fg-color bg-color (/ (inc idx) 10))) + (q/ellipse x y r r)))))) + +(let [center (v/vec2 250 250) + mouse (v/vec2 100 100)] + (g/translate center (m/*! (m/- mouse center) 0.1))) + +(defn mouse-moved [state ev] + (assoc state (v/vec2 ev))) + +#_:clj-kondo/ignore +(q/defsketch seventeen + :title "Seventeen" + :size [500 500] + :settings #(q/pixel-density (q/display-density)) + :setup setup + :update update-state + :draw draw-state + :mouse-moved mouse-moved + ;; :renderer :p2d + :features [:keep-on-top :no-bind-output] + :middleware [qm/pause-on-error qm/fun-mode])