(define (circle n radius s) (define (loop i angle) (turtle-move radius) (turtle-turn (vector 0 angle 0)) (let ((tx (vmul (vtransform (vector s (/ i n) 0) (mrotate (vector 0 0 (sin (time))))) 3))) (pdata-set "t" (turtle-position) tx)) (let ((tx (vmul (vector s (/ i n) 0) (sin (* (time) 0.1))))) (pdata-set "t2" (turtle-position) tx)) (turtle-vert) (turtle-skip 1) (if (zero? (- i 1)) 0 (loop (- i 1) angle))) (turtle-push) (loop n (/ 360 n)) (turtle-pop)) (define (shape c n) (circle c (* 0.5 (+ 2 (sin (+ (gh 2) n)))) n) (turtle-skip (- (- (* c 2) 1))) (turtle-turn (vector 0 0 90)) (turtle-turn (vector (* (sin (gh n)) 5) 0 (* (cos (gh (+ n 4))) 5))) (turtle-move 1) (turtle-turn (vector 5 0 0)) (turtle-turn (vector 0 0 -90)) (circle c (* 0.5 (+ 2 (sin (+ (gh 2) (- n 1))))) (+ n 1)) (turtle-skip -1) (if (zero? n) 0 (shape c (- n 1)))) (clear) ;(clear-frame 0) (backfacecull 0) (clear-colour (vector 0.5 0.5 0.5)) (shinyness 100) (specular (vector 1 1 1)) (texture (load-texture "hole.png")) (multitexture 2 (load-texture "hole.png")) (line-width 2) (hint-multitex) (define o (build-polygons 864 0)) (turtle-attach o) (turtle-reset) (grab o) (pdata-copy "t" "t2") (ungrab) (define (update) (grab o) (turtle-reset) (shape 12 35) (recalc-normals 1) (ungrab)) (every-frame (update))