(save-name "ripples-0.0.2.scm") (clear-colour (vector (flxrnd) (flxrnd) (flxrnd))) (clear) (wire-colour (vector (flxrnd) (flxrnd) (flxrnd))) (line-width 1) (hint-wire) (hint-anti-alias) (define ripple-scale '()) (define ripple-coord '()) (define ripple-colour '()) (define (ripple-draw rs vs cs) (if (null? rs) '() (begin (push) (translate (car vs)) (scale (vector (car rs) (car rs) (car rs))) (opacity (min 1 (/ 1 (car rs)))) (colour (car cs)) (rotate (vadd (vmul (vector (car rs) (car rs) (car rs)) 22) (vmul (vector (time) (time) (time)) 22))) (draw-cube) ; (draw-sphere) (pop) (ripple-draw (cdr rs) (cdr vs) (cdr cs)) ) ) ) (define starttime 0) (define (ripple) (set! ripple-scale (map (lambda (x) (+ x (delta))) ripple-scale)) (ripple-draw ripple-scale ripple-coord ripple-colour) (if (< 0.0333 (- (time) starttime)) (begin (set! starttime (time)) (set! ripple-scale (reverse (cdr (reverse ripple-scale)))) (set! ripple-coord (reverse (cdr (reverse ripple-coord)))) (set! ripple-colour (reverse (cdr (reverse ripple-colour)))) (set! ripple-scale (cons (delta) ripple-scale)) (set! ripple-coord (cons (vector (* (- (flxrnd) 0.5) 8) (* (- (flxrnd) 0.5) 8) (* (- (flxrnd) 0.5) 8) ) ripple-coord)) (set! ripple-colour (cons (vector (flxrnd) (flxrnd) (flxrnd) ) ripple-colour)) )) ) (define (ripple-init n) (if (< n 1) 0 (begin (set! ripple-scale (cons (* 0.1 n) ripple-scale)) (set! ripple-coord (cons (vector (* (- (flxrnd) 0.5) 8) (* (- (flxrnd) 0.5) 8) (* (- (flxrnd) 0.5) 8) ) ripple-coord)) (set! ripple-colour (cons (vector (flxrnd) (flxrnd) (flxrnd) ) ripple-colour)) (ripple-init (- n 1)) ) ) ) (ripple-init 160) (every-frame (ripple))