
/g,">").replace(/"/g,""").replace(/'/g,"'")}let s={},c=[];function p(n,e,t){s={...s,dynamic:n,core:e,leinProject:t}}function d(){c=["wh","with-style"]}window.onload=()=>{let{dynamic:e,core:t,leinProject:r}=s;if(e&&(document.getElementById("code-dynamic").innerHTML=o(e)),t&&(document.getElementById("code-core").innerHTML=o(t)),r&&(document.getElementById("code-lein-project").innerHTML=o(r)),c){let n={wh:';; Copyright (c) 2016 Tyler Hobbs\n;; MIT License\n;; https://github.com/thobbs/genartlib/\n(defn h\n "Returns a given percentage of the height Quil-specific."\n ([] (h 1.0))\n ([percentage] (* (height) percentage)))\n\n;; Copyright (c) 2016 Tyler Hobbs\n;; MIT License\n;; https://github.com/thobbs/genartlib/\n(defn w\n "Returns a given percentage of the width. Quil-specific."\n ([] (w 1.0))\n ([percentage] (* (width) percentage)))\n',"with-style":"(defmacro with-style [& body]\n `(do\n (q/push-style)\n (try\n ~@body\n (finally (q/pop-style)))))\n"},e=c.map(e=>n[e]).join("\n");document.getElementById("code-helpers").innerHTML=o(e)}n(a).addPlugin((0,l.number)()),n(a).highlightAll()}}),l("2tEiH",function(n,t){e(n.exports,"number",()=>r);let r=n=>({"after:highlightElement":({el:n,result:e,text:t})=>{let r=e.value.split("\n");r.pop();let a=r.length.toString().length,i=r.map((n,e)=>{let t=(e+1).toString().padStart(a);return`${n}`}).join("\n");n.innerHTML=i}})}),i("d3dEA"),i("7Y8VX");var o=i("gUHNU");(0,o.make)("(ns sketch.dynamic\n (:require ; [clojure.java.shell :refer [sh]]\n ; [genartlib.algebra :refer :all]\n ; [genartlib.curves :refer :all]\n ; [genartlib.geometry :refer :all]\n ; [genartlib.random :refer :all]\n ; [kdtree :as kd]\n [artlib.geometry.jts :refer [offset]]\n [artlib.quil.global :refer :all]\n [genartlib.util :refer [w h]]\n [quil.core :as q]))\n\n(defn make-noise-line [num-points strength octaves f]\n (loop [line (->> (/ 1 (dec num-points))\n (range 0 1.001)\n #_(map #(* Math/TAU %))\n (map (fn [x] [x 0])))\n octave 1]\n (let [strength (/ strength octave)\n new-line (map (fn [[x y]]\n (let [n (q/noise \n (+ 1.327 (Math/cos (* x 3 Math/TAU)))\n (+ 2.817 (Math/cos (* x 1 Math/TAU)))\n (+ 3.229 (* 0.1 f)))\n n (- (* 2 n) 1)\n n (* n strength)]\n [x (+ y n)]))\n line)]\n (if (< octave octaves)\n (recur (concat \n (->> new-line\n (partition 2 1)\n (mapcat (fn [[[x1 y1] [x2 y2]]]\n (let [mx (/ (+ x1 x2) 2)\n my (/ (+ y1 y2) 2)]\n [[x1 y1] [mx my]]))))\n [(last new-line)])\n (inc octave))\n new-line))))\n\n(defn distort [poly strength f]\n (->> poly\n (map (fn [[x y]]\n (let [n (q/noise \n (+ 3.17 (* x 3.1))\n (+ 9.22 (* y 3.1))\n (+ 2.21 (* (rand) 0.1)))\n n (* n Math/TAU 2)]\n [(gauss (+ x (* strength (Math/cos n))) 0.005)\n (gauss (+ y (* strength (Math/sin n))) 0.005)])))))\n\n(defn subdiv [poly]\n (concat \n (->> poly\n (partition 2 1)\n (mapcat (fn [[[x1 y1] [x2 y2]]]\n (let [mx (/ (+ x1 x2) 2)\n my (/ (+ y1 y2) 2)]\n [[x1 y1] [mx my]]))))\n [(last poly)]))\n\n(defn drawp [poly]\n (q/begin-shape)\n (doseq [[x y] poly]\n (q/vertex (w x) (h y)))\n (q/end-shape))\n\n(defn draw [state]\n (q/background 0 0 10)\n (let [frame (:frame state)\n f (/ frame 300)\n poly (make-noise-line 10 0.01 6 f)\n\n poly (map (fn [[x y]]\n [(+ 0.5 (* (+ 0.25 y) (Math/cos (* Math/TAU x))))\n (+ 0.5 (* (+ 0.25 y) (Math/sin (* Math/TAU x))))])\n poly)]\n (with-style\n (q/no-fill)\n (q/stroke 0 0 100 0.09)\n\n (loop [poly poly \n n 40]\n (drawp poly)\n (when (> n 0)\n (recur (distort (offset poly 0.001) 0.0001 f) (dec n)))))))\n",'(ns sketch.core\n (:require [artlib.quil.middleware :refer [animation-mode]]\n [clojure.core.matrix :refer [set-current-implementation]]\n [quil.middleware :as qm]\n [sketch.dynamic :as dynamic]\n [quil.core :as q]))\n\n(set-current-implementation :vectorz)\n(println)\n\n(q/defsketch example\n :title "genuary-2025-02"\n :setup (fn [] {})\n :draw dynamic/draw\n :update identity\n :size [1080 1080]\n :animation {:render? true :dirname "4"}\n :middleware [qm/fun-mode animation-mode])\n\n','(defproject genuary-2025-01-02 "0.1.0-SNAPSHOT"\n :description "FIXME: write description"\n :url "https://example.com/FIXME"\n :license {:name "Apache License, Version 2.0"\n :url "https://www.apache.org/licenses/LICENSE-2.0.html"}\n :dependencies [[org.clojure/clojure "1.11.1"]\n [com.dedovic/artlib-core "0.0.10"]\n [com.dedovic/easings-clj "0.1.0"]\n [genartlib/genartlib "1.0.0"]] ; utility functions\n :jvm-opts ["-Xms4000m" "-Xmx4000M" ; 4GB heap size\n "-server"\n "-Dsun.java2d.uiScale=1.0"] ; adjust scaling for high DPI displays\n :source-paths ["src/clj"]\n :java-source-paths ["src/java"]\n :resource-paths ["resources"])\n'),(0,o.withDefaultHelpers)();
dynamic.clj
core.clj
helpers
project.clj