Add missing sketches
This commit is contained in:
parent
cece06ba7f
commit
208bc9d906
3 changed files with 138 additions and 4 deletions
86
src/aphorisms/twenty-one.clj
Normal file
86
src/aphorisms/twenty-one.clj
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
(ns aphorisms.twenty-one
|
||||||
|
(:require [quil.core :as q]
|
||||||
|
[quil.middleware :as qm]
|
||||||
|
[thi.ng.geom.rect :as r]
|
||||||
|
[clojure.string :as str]))
|
||||||
|
|
||||||
|
;; https://10print.org/
|
||||||
|
|
||||||
|
(def bounds (r/rect 540 960))
|
||||||
|
|
||||||
|
(defn setup []
|
||||||
|
(q/frame-rate 30)
|
||||||
|
(q/rect-mode :center)
|
||||||
|
(q/ellipse-mode :center)
|
||||||
|
(q/color-mode :hsb 100 100 100)
|
||||||
|
{:x-off 0.022
|
||||||
|
:y-off 0.033})
|
||||||
|
|
||||||
|
(defn update-state [state]
|
||||||
|
state)
|
||||||
|
|
||||||
|
(def tile-size 30)
|
||||||
|
|
||||||
|
(defn draw-tile [[x y] tile-type]
|
||||||
|
(let [start (case tile-type
|
||||||
|
:a 0
|
||||||
|
:b q/HALF-PI)]
|
||||||
|
(q/arc x y tile-size tile-size start (+ start q/PI))))
|
||||||
|
|
||||||
|
(defn pick-at [xs rand-val]
|
||||||
|
(nth xs (Math/round (* rand-val (dec (count xs))))))
|
||||||
|
|
||||||
|
(defn draw-state [state]
|
||||||
|
(let [margin (* 2 tile-size)
|
||||||
|
grey-tone (/ 100 16)]
|
||||||
|
(q/no-fill)
|
||||||
|
(q/background (* 2 grey-tone))
|
||||||
|
(q/stroke 0 0 (* 14 grey-tone))
|
||||||
|
(q/stroke-weight 3)
|
||||||
|
(q/stroke-cap :round)
|
||||||
|
(doseq [y (range margin (- (-> bounds :size :y) margin -1) tile-size)
|
||||||
|
x (range margin (- (-> bounds :size :x) margin -1) tile-size)
|
||||||
|
:let [n (q/noise (* (:x-off state) x #_(q/millis))
|
||||||
|
(* (:y-off state) y #_(q/millis)))]]
|
||||||
|
(draw-tile [x y] (pick-at [:a :b] n)))))
|
||||||
|
|
||||||
|
;; sketch export logic
|
||||||
|
|
||||||
|
(defn current-time []
|
||||||
|
(->
|
||||||
|
(.format java.time.format.DateTimeFormatter/ISO_LOCAL_DATE_TIME (java.time.LocalDateTime/now))
|
||||||
|
(str/replace #"\.\d+$" "")
|
||||||
|
(str/replace #":" "-")))
|
||||||
|
|
||||||
|
(defn export [{:keys [x-prog y-prog]}]
|
||||||
|
(let [filename (format "%s-x%s-y%s-%s.png" *ns* x-prog y-prog (current-time))]
|
||||||
|
(q/save filename)
|
||||||
|
(println "Saved current sketch to " filename)))
|
||||||
|
|
||||||
|
(defn key-pressed [state {k :raw-key}]
|
||||||
|
(cond
|
||||||
|
(#{\e \s} k)
|
||||||
|
(do
|
||||||
|
(export state)
|
||||||
|
state)
|
||||||
|
|
||||||
|
(= k \r)
|
||||||
|
(let [x-off (* (rand-int 1000) 0.0001)
|
||||||
|
y-off (* (rand-int 1000) 0.0001)]
|
||||||
|
(println "New offsets: " x-off ", " y-off)
|
||||||
|
(-> (assoc state :x-off x-off)
|
||||||
|
(assoc :y-off y-off)))
|
||||||
|
|
||||||
|
:else state))
|
||||||
|
|
||||||
|
#_:clj-kondo/ignore
|
||||||
|
(q/defsketch twenty-one
|
||||||
|
:title "Twenty-One"
|
||||||
|
:size (:size bounds)
|
||||||
|
:settings #(q/pixel-density (q/display-density))
|
||||||
|
:setup setup
|
||||||
|
:update update-state
|
||||||
|
:draw draw-state
|
||||||
|
:key-pressed key-pressed
|
||||||
|
:middleware [qm/pause-on-error qm/fun-mode]
|
||||||
|
:features [:keep-on-top])
|
||||||
52
src/aphorisms/twenty_five.clj
Normal file
52
src/aphorisms/twenty_five.clj
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
(ns aphorisms.twenty-five
|
||||||
|
(:require [quil.core :as q]
|
||||||
|
[quil.middleware :as qm]
|
||||||
|
[thi.ng.geom.rect :as r]
|
||||||
|
[thi.ng.geom.core :as g]))
|
||||||
|
|
||||||
|
(def bounds (r/rect 200 200))
|
||||||
|
|
||||||
|
(defn setup []
|
||||||
|
(q/frame-rate 30)
|
||||||
|
(q/ellipse-mode :center)
|
||||||
|
(q/color-mode :hsb 100)
|
||||||
|
{})
|
||||||
|
|
||||||
|
(defn update-state [_]
|
||||||
|
_)
|
||||||
|
|
||||||
|
(defn divisors [n]
|
||||||
|
(->>
|
||||||
|
(range 1 (inc (int (/ n 2))))
|
||||||
|
(filter #(zero? (rem n %)))))
|
||||||
|
|
||||||
|
(divisors 800)
|
||||||
|
;; => (1 2 4 5 8 10 16 20 25 32 40 50 80 100 160 200 400)
|
||||||
|
(divisors 230)
|
||||||
|
;; => (1 2 5 10 23 46 115)
|
||||||
|
|
||||||
|
(def x-noise-scale 0.006)
|
||||||
|
(def y-noise-scale 0.005)
|
||||||
|
|
||||||
|
(defn draw-state [_]
|
||||||
|
(q/background 100)
|
||||||
|
(q/stroke-weight 1)
|
||||||
|
(doseq [y (range 0 (inc (- (g/height bounds) 10)) 10)
|
||||||
|
x (range 0 (inc (- (g/width bounds) 10)) 10)
|
||||||
|
:let [noise-x (* x x-noise-scale)
|
||||||
|
noise-y (* y y-noise-scale)]]
|
||||||
|
(q/with-translation [(+ x 5) (+ y 5)]
|
||||||
|
(q/with-rotation [(* q/TWO-PI (q/noise noise-x noise-y))]
|
||||||
|
(q/stroke (q/map-range (* noise-x noise-y) -1 1 90 70) 60 80)
|
||||||
|
(q/line [-3 0] [3 0]))))
|
||||||
|
(q/save-frame "exports/twenty-five--business-card.png"))
|
||||||
|
|
||||||
|
#_:clj-kondo/ignore
|
||||||
|
(q/defsketch twenty-five
|
||||||
|
:title "Twenty-Five"
|
||||||
|
:size (:size bounds)
|
||||||
|
:settings #(q/pixel-density (q/display-density))
|
||||||
|
:setup setup
|
||||||
|
:update update-state
|
||||||
|
:draw draw-state
|
||||||
|
:middleware [qm/pause-on-error qm/fun-mode])
|
||||||
|
|
@ -5,10 +5,6 @@
|
||||||
[thi.ng.geom.core :as g]
|
[thi.ng.geom.core :as g]
|
||||||
[thi.ng.math.core :as m]))
|
[thi.ng.math.core :as m]))
|
||||||
|
|
||||||
;; I'm in bed. It is 9th of October, the temperatures are mild, the sund is
|
|
||||||
;; shining and my girlfriend is reading me texts about the physical appearance
|
|
||||||
;; of angels.
|
|
||||||
|
|
||||||
(def bounds (r/rect 540 960))
|
(def bounds (r/rect 540 960))
|
||||||
|
|
||||||
(defn setup []
|
(defn setup []
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue