52 lines
1.3 KiB
Common Lisp
Executable File
52 lines
1.3 KiB
Common Lisp
Executable File
#!/usr/bin/sbcl --script
|
|
|
|
(load "src/load")
|
|
|
|
(setf *print-pretty* t)
|
|
(setf *random-state* (make-random-state t))
|
|
|
|
|
|
(defun main (size fn)
|
|
|
|
(let ((mid (.5* size))
|
|
(repeat 15)
|
|
(grains 4)
|
|
(itt 1000)
|
|
(sand (sandpaint*
|
|
size
|
|
:active (list 0.0 0.0 0.0 0.01)
|
|
:bg (list 1.0 1.0 1.0 1.0))))
|
|
|
|
(loop for i in (linspace 100 900 repeat)
|
|
for j from 1 to repeat do
|
|
(print j)
|
|
(let ((snk (snek*))
|
|
(va (list 0 0))
|
|
(vb (list 0 0))
|
|
(p1 (list 100 i))
|
|
(p2 (list 900 i)))
|
|
|
|
(loop for k from 1 to itt do
|
|
(let ((v1 (insert-vert (l-on-line k itt p1 p2) into snk))
|
|
(v2 (insert-vert (ladd va (l-on-line k itt p1 p2)) into snk)))
|
|
|
|
(setf va (ladd va (l-rand-in-circle (* 0.7 j))))
|
|
(setf vb (ladd vb (l-rand-in-circle (* 0.001 j))))
|
|
|
|
(with-snek (snk)
|
|
(with-all-verts (snk v)
|
|
(move-vert v (ladd (l-rand-in-circle 0.1) vb)))
|
|
(join-verts v1 v2))
|
|
|
|
(sandpaint-edges sand snk grains)
|
|
(sandpaint-verts sand snk)))))
|
|
|
|
|
|
(format t "~%writing to ~a" fn)
|
|
;(sandpaint-chromatic-aberration sand (list mid mid) 100.0)
|
|
(sandpaint-save sand fn)))
|
|
|
|
|
|
(time (main 1000 (second (cmd-args))))
|
|
|