Scheme isosurface
Nu kan man rendere isosurfaces defineret ved en Scheme-funktion. En isosurface er overfladen defineres ved en vilkårlig ℝ3 → ℝ: f(x,y,z) = c funktion. Nu kan denne funktion f skrives direkte i Scheme og C++-rendereren kalder så tilbage til denne.
Nedenstående er en rendering af en formel fra Mathworld.
Dette objekt skrives således i Scheme.
; Chair formula
(define (iso-chair k a b x y z)
(- (square (+ (square x)
(square y)
(square z)
(- (* a k k))))
(* b
(- (square (- z k))
(* 2 x x))
(- (square (+ z k))
(* 2 y y )))))
; Callback function
(define (iso-func x y z)
(iso-chair 5 0.95 0.8 x y z))
; Surface definition
(make-isosurface
iso-func ; function
'(-5 -5 -5) ; bound min
'(5 5 5) ; bound max
0.0 ; iso-value
500 ; steps
0.000001 ; accuracy
chrome)