155j Chaotic Grid 2
(meta linear-colour-space: 1)
(render-background)
(render-main)
(define
num-squares-to-render 15 ~ (gen/int min: 2 max: 20)
gap-size 30 ~ (gen/int min: 5 max: 50)
num-squares (+ 2 num-squares-to-render)
num-gaps (+ num-squares 1)
square-size (/ (- canvas/width (* gap-size num-gaps)) num-squares)
base-colour (col/rgb r: 1.0 ~ (gen/scalar)
g: 0.0 ~ (gen/scalar)
b: 0.3 ~ (gen/scalar)
alpha: 1.0)
colour-volatility 20 ~ (gen/int min: 2 max: 40)
focal-point (focal/build-point position: [500 ~ (gen/int max: canvas/width)
800 ~ (gen/int max: canvas/height)]
distance: 300 ~ (gen/int max: canvas/width))
focal-power 50 ~ (gen/scalar max: 200))
(fn (render-background colour: (col/rgb r: 1.0 g: 1.0 b: 0.9))
(rect position: [(/ canvas/width 2) (/ canvas/height 2)]
width: canvas/width
height: canvas/height
colour: colour))
(fn (map-to-position at: 0)
(+ (* (+ gap-size square-size) at) (/ square-size 2) gap-size))
(fn (render-main)
(loop (y from: 1 to: (- num-squares 1))
(loop (x from: 1 to: (- num-squares 1))
(define
p [(map-to-position at: x) (map-to-position at: y)]
volatility (* (focal/value from: focal-point position: p) focal-power))
(stroked-bezier-rect position: p
width: square-size
height: square-size
seed: (+ x (* y num-squares))
colour: base-colour
colour-volatility: colour-volatility
volatility: volatility
iterations: 39
tessellation: 1
overlap: 0
stroke-noise: 0))))
(fn (stroked-bezier-rect position: [100 100]
width: 80
height: 600
volatility: 30
overlap: 0
iterations: 10
seed: 0
tessellation: 15
stroke-tessellation: 10
stroke-noise: 25
colour: (col/rgb r: 0.0 g: 1.0 b: 0.0 alpha: 0.5)
colour-volatility: 0
brush: brush/flat
brush-subtype: 1)
(define
[x y] position
x-start (- x (/ width 2.0))
y-start (- y (/ height 2.0))
th-width (/ width 3.0)
th-height (/ height 3.0)
vol volatility
cc-lab(colour.col/convert format: LAB)
half-alpha-col (col/set-alpha from: cc-lab value: (* 0.5 (cc-lab.col/alpha)))
prng (prng/build seed min: -1 max: 1)
sum-thickness (+ height (* (- iterations 1.0) overlap))
stroke-thickness (/ sum-thickness iterations)
stroke-half-thickness (/ stroke-thickness 2.0)
stroke-offset-factor (/ (- height overlap) iterations)
v-sum-thickness (+ width (* (- iterations 1.0) overlap))
v-stroke-thickness (/ v-sum-thickness iterations)
v-stroke-half-thickness (/ v-stroke-thickness 2.0)
v-stroke-offset-factor (/ (- width overlap) iterations))
;; horizontal strokes
(loop (i to: iterations)
(define
h (+ y-start stroke-half-thickness (* i stroke-offset-factor))
coords [[(+ (* (prng.prng/value) vol) x-start (* 0 th-width))
(+ h (* (prng.prng/value) vol))]
[(+ (* (prng.prng/value) vol) x-start (* 1 th-width))
(+ h (* (prng.prng/value) vol))]
[(+ (* (prng.prng/value) vol) x-start (* 2 th-width))
(+ h (* (prng.prng/value) vol))]
[(+ (* (prng.prng/value) vol) x-start (* 3 th-width))
(+ h (* (prng.prng/value) vol))]])
(stroked-bezier tessellation
coords
stroke-tessellation
stroke-noise
stroke-line-width-start: stroke-thickness
stroke-line-width-end: stroke-thickness
colour: half-alpha-col
colour-volatility
seed: (prng.prng/value)
brush
brush-subtype))
;; vertical strokes
(loop (i to: iterations)
(define
v (+ x-start v-stroke-half-thickness (* i v-stroke-offset-factor))
coords [[(+ v (* (prng.prng/value) vol))
(+ (* (prng.prng/value) vol) y-start (* 0 th-height))]
[(+ v (* (prng.prng/value) vol))
(+ (* (prng.prng/value) vol) y-start (* 1 th-height))]
[(+ v (* (prng.prng/value) vol))
(+ (* (prng.prng/value) vol) y-start (* 2 th-height))]
[(+ v (* (prng.prng/value) vol))
(+ (* (prng.prng/value) vol) y-start (* 3 th-height))]])
(stroked-bezier tessellation
coords
stroke-tessellation
stroke-noise
stroke-line-width-start: stroke-thickness
stroke-line-width-end: stroke-thickness
colour: half-alpha-col
colour-volatility
seed: (prng.prng/value)
brush
brush-subtype)))