6.5.5  Objeto Paramétrico

Donde las isosuperficies usan funciones implícitas del tipo F(x,y,z)=0, los objetos paramétricos usan un conjunto de ecuaciones  expresadas en forma de parámetro que localizan los puntos sobre la superficie, x(u,v), y(u,v), z(u,v). Cada par de valores para u y v dan un único punto <x,y,z> en el espacio tridimensional.

Los objetos paramétricos no son objetos sólidos, son huecos, como un delgado caparazón.

Su sintaxis es:

  parametric {
    function { FUNCTION_ITEMS },
    function { FUNCTION_ITEMS },
    function { FUNCTION_ITEMS }
    <u1,v1>, <u2,v2>
    [contained_by { SPHERE | BOX }]
    [max_gradient FLOAT_VALUE]
    [accuracy FLOAT_VALUE]
    [precompute DEPTH, VarList]
  }
Los valores paramétricos por defecto son:
accuracy     : 0.001
La primera función calcula el valor de la x de la superficie, la segunda el de la y y la tercera el valor de la z. Se permite cualquier función cuyo resultado sea un valor en coma flotante.

<u1,v1>,<u2,v2> son los límites del espacio(u,v), en el cual la superficie tiene que ser calculada.

contained_by { ... } El 'objeto' contained_by limita el área donde POV-Ray toma muestras para la superficie generada por la función. Este receptáculo puede ser una esfera o una caja, ambos usan la sintaxis estándar de POV-Ray. Si no se especifica ninguna de ellas, se usará por defecto box {<-1,-1,-1>, <1,1,1>}.

max_gradient, no es realmente la máxima pendiente. Es la máxima cuantía de todas las seis derivadas parciales en el rango especificado para u y v. Esto es, si tomamos dx/du, dx/dv, dy/du, dy/dv, dz/du, y dz/dv y las calculamos sobre el rango total, el max_gradient es el máximo de los valores absolutos de todos estos valores.

accuracy El valor por defecto es 0.001. Valores más pequeños producen superficies más exactas, pero toman más tiempo de trazado.

precompute puede aumentar la velocidad de trazado de las superficies paramétricas. Simplemente divide las superficies paramétricas en trozos más pequeños (2^depth) y precomputa el rango de las variables (x,y,z) que especificamos después de depth. El valor máximo de depth es 20. Valores altos de depth pueden producir matrices que usan una gran cantidad de memoria, tomando mucho tiempo para procesar y trazar la escena. Si declaramos una superficie paramétrica con la palabra clave precompute y la usamos dos veces, todas las matrices permanecen en memoria una única vez.

Ejemplo, una esfera de radio unidad:

  parametric {
    function { sin(u)*cos(v) }
    function { sin(u)*sin(v) }
    function { cos(u) }

    <0,0>, <2*pi,pi>
    contained_by { sphere{0, 1.1} }
    max_gradient ??
    accuracy 0.0001
    precompute 10 x,y,z
    pigment {rgb 1}
  }