Triangle Example Code
(...based on code by Steve May)
(define (midpoint p1 p2) (lerp p1 p2 0.5))
(define (frac-tri p0 p1 p2 depth maxdepth freq amp)
(if (= depth maxdepth)
(polygon 'P (list p0 p1 p2))
(let (
(n0 (midpoint p0 p2))
(n1 (midpoint p0 p1))
(n2 (midpoint p1 p2))
(tn y-axis)
)
(set! n0 (+ n0 (* (noise (* n0 freq)) amp tn)))
(set! n1 (+ n1 (* (noise (* n1 freq)) amp tn)))
(set! n2 (+ n2 (* (noise (* n2 freq)) amp tn)))
(frac-tri p0 n1 n0 (add1 depth) maxdepth (* freq 2) (/ amp 2))
(frac-tri n1 p1 n2 (add1 depth) maxdepth (* freq 2) (/ amp 2))
(frac-tri n0 n2 p2 (add1 depth) maxdepth (* freq 2) (/ amp 2))
(frac-tri n0 n1 n2 (add1 depth) maxdepth (* freq 2) (/ amp 2)))))
(define (triangle level)
(frac-tri #<-1 0 0> #<1 0 0> #<0 0 1> 1 level 5 0.3)
)
(world (frac-tri #<-1 0 0> #<1 0 0> #<0 0 1> 1 5 2.2 2))
Return to Triangle
mrl