When I run the following piece of code, I encountered an error:
ERROR: Wrong number of arguments to #<procedure lattice->cartesian (x)>
;;;; function definition
(define (eps-func p)
(let* ((p (lattice->cartesian))
(x (vector3-x p))
(y (vector3-y p))
(z (vector3-z p)))
(if (> sin(* 2 pi x y z) 0)
(make dielectric
(epsilon 12))
(make dielectric
(epsilon 1)))))
;;;; function call
(set! default-material (make material-function (material-func eps-func)))
I cannot figure out where it is wrong. The above code is only part of a control file.
Some background information is as following:
(lattice->cartesian x)
where x is a vector3
vector3 is a datatype defined somewhere
3-vector functions
(vector3 x [y z])
Create a new 3-vector with the given components. If the y or z value is omitted, it is set to zero.
(vector3-x v)
(vector3-y v)
(vector3-z v)
Return the corresponding component of the vector v.
material-func [function]
A function of one argument, the position vector3