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