Skip to content

Commit

Permalink
mess with perturbing the alignment between expected grid
Browse files Browse the repository at this point in the history
  • Loading branch information
dgtized committed Jan 21, 2024
1 parent 1f0d2b3 commit de456c5
Showing 1 changed file with 41 additions and 23 deletions.
64 changes: 41 additions & 23 deletions src/shimmers/sketches/alignment_perturbations.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,41 @@
[quil.core :as q :include-macros true]
[quil.middleware :as m]
[shimmers.common.framerate :as framerate]
[shimmers.common.quil :as cq]
[shimmers.common.quil-draws-geom :as qdg]
[shimmers.common.ui.controls :as ctrl]
[shimmers.math.vector :as v]
[shimmers.sketch :as sketch :include-macros true]
[thi.ng.geom.core :as g]
[thi.ng.geom.rect :as rect]
[thi.ng.geom.triangle :as gt]
[thi.ng.geom.vector :as gv]
[shimmers.common.quil :as cq]
[shimmers.common.quil-draws-geom :as qdg]
[thi.ng.geom.core :as g]
[thi.ng.geom.rect :as rect]))
[thi.ng.math.core :as tm]))

(def ^:constant SQRT3_2 (/ (Math/sqrt 3) 2))

(defn triangle [[i j k] side]
(defn triangle
[[i j k] side
[[bias-i-a bias-i-b bias-i-c]
[bias2-a bias2-b bias2-c]]]
(let [hside (* side (/ (Math/sqrt 3) 2))
x (+ i (* 0.5 j))]
(if (zero? k)
(gt/triangle2 (gv/vec2 (* (+ x 0.0) side) (* j hside))
(gv/vec2 (* (+ x 1.0) side) (* j hside))
(gv/vec2 (* (+ x 0.5) side) (* (inc j) hside)))
(gt/triangle2 (gv/vec2 (* (inc x) side) (* j hside))
(gv/vec2 (* (+ (inc x) 0.5) side) (* (inc j) hside))
(gv/vec2 (* (- (inc x) 0.5) side) (* (inc j) hside))))))
(gt/triangle2 (gv/vec2 (* (+ x 0.0 bias-i-a) side) (* j hside))
(gv/vec2 (* (+ x 1.0 bias-i-b) side) (* j hside))
(gv/vec2 (* (+ x 0.5 bias-i-c) side)
(* (+ (inc j) ) hside)))
(gt/triangle2 (gv/vec2 (* (+ (inc x) 0.0 bias2-a) side) (* j hside))
(gv/vec2 (* (+ (inc x) 0.5 bias2-b) side) (* (inc j) hside))
(gv/vec2 (* (+ (inc x) -0.5 bias2-c) side) (* (inc j) hside))))))

(defn grid [{p :p [width height] :size} side]
(defn grid [{p :p [width height] :size} side bias]
(let [wn (Math/ceil (/ width side))
hn (Math/ceil (/ height (* SQRT3_2 side)))]
(for [i (range wn)
j (range hn)
k (range 2)]
(-> (triangle [(- i (Math/ceil (* j 0.5))) j k] side)
(-> (triangle [(- i (Math/ceil (* j 0.5))) j k] side bias)
(g/translate p)))))

(defn setup []
Expand All @@ -43,24 +49,36 @@

(defn draw [_]
(q/background 1.0)
(let [side (/ (q/width) 20)
(let [t (/ (q/millis) 1000.0)
side (/ (q/width) 20)
bounds (rect/rect 20 (* 20 SQRT3_2)
(Math/floor (* 19 side))
(Math/floor (* 16 side SQRT3_2)))]
(Math/floor (* 16 side SQRT3_2)))
bias [[(Math/sin (+ 0.8 (* t 0.5) (Math/sin (+ 0.5 (* 0.5 t)))))
(Math/sin (+ 0.9 (* t 0.3) (Math/sin (+ 0.1 (* 0.4 t)))))
(Math/sin (+ 0.1 (* t 0.4) (Math/sin (+ 0.1 (* 0.2 t)))))]
[(Math/sin (+ 0.3 (* t 0.6) (Math/sin (+ 0.5 (* 0.5 t)))))
(Math/sin (+ 0.3 (* t 0.2) (Math/sin (+ 0.1 (* 0.4 t)))))
(Math/sin (+ 0.1 (* t 0.7) (Math/sin (+ 0.1 (* 0.2 t)))))]]
d-point (tm/+ (cq/rel-vec 0.5 0.5) (v/polar (tm/mag (cq/rel-vec 0.2 0.2)) (* 0.7 t)))]
(q/no-fill)
(qdg/draw bounds)
(q/fill 0.0 0.5 0.6 0.1)
(doseq [t (grid bounds side)]
(qdg/draw t))))
(q/fill 0.6 0.5 0.5 0.1)
(doseq [triangle (grid bounds side bias)]
(let [c (g/centroid triangle)
d (tm/+ (tm/* (gv/vec2 1.0 1.0)
(* 0.1 (g/dist c d-point)))
(gv/vec2 (* -1.5 side) (* -1 side)))]
(qdg/draw (g/translate triangle d))))))

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

(sketch/definition alignment-perturbations
{:created-at "2024-01-21"
Expand Down

0 comments on commit de456c5

Please sign in to comment.