3.4.4  Objeto Barrido Esférico (Sphere Sweep)

Un objeto sphere_sweep es el espacio que ocupa una esfera durante su movimiento a lo largo de una spline. Necesitaremos determinar qué tipo de spline queremos y listar los puntos de control que la definan. Para ayudar a POV-Ray, le diremos cuántos puntos de control usaremos y, además, definiremos el radio de la esfera a su paso por cada uno de estos puntos de control.

La sintaxis de la sphere_sweep es:

  sphere_sweep {
    linear_spline | b_spline | cubic_spline
    NUM_DE_ESFERAS,

    CENTRO, RADIO,
    CENTRO, RADIO,
    ...
    CENTRO, RADIO
    [tolerance DEPTH_TOLERANCE]
    [MODIFICADORES_DEL_OBJETO]
  }

Un ejemplo para un Barrido Esférico sería :

  sphere_sweep {
    linear_spline
    4,
    <-5, -5, 0>, 1
    <-5,  5, 0>, 1
    < 5, -5, 0>, 1
    < 5,  5, 0>, 1
  }

Este objeto es descrito mediante cuatro esferas. Se pueden utilizar tantas esferas como se desee para describir el objeto, pero se requieren al menos dos esferas para un Barrido Esférico lineal y cuatro esferas para generar uno usando curvas splines cúbicas (cubic_spline) o bezier (b_spline).

El ejemplo anterior produciría un objeto parecido a la letra "N". El Barrido Esférico recorre todos los puntos conectándolos con cilindros.

Cambiar la clase de interpolación a una spline cúbica produce un objeto levemente curvado y absolutamente diferente. Ahora el recorrido arrancará desde la segunda esfera y termina en el penúltimo. Ya que los puntos primero y último se usan para controlar la spline, necesitaremos dos puntos adicionales para obtener una figura que se pueda comparar al barrido lineal. Los añadiremos en el siguiente ejemplo:

  sphere_sweep {
    cubic_spline
    6,
    <-4, -5, 0>, 1
    <-5, -5, 0>, 1
    <-5,  5, 0>, 0.5
    < 5, -5, 0>, 0.5
    < 5,  5, 0>, 1
    < 4,  5, 0>, 1
    tolerance 0.1
 }

Usar splines cúbicas crea un barrido liso de la esfera que atraviesa todos los puntos (excepto el primero y el último). En este ejemplo se ha cambiado el radio de las esferas segunda y tercera. También se ha añadido la palabra clave "tolerance", para aumentar la precisión de cálculo y eliminar los puntos oscuros que aparecieron en la superficie al usar el valor por defecto (0.000001).

Si sustituimos cubic_spline por b_spline (curvas Bezier), tendremos un objeto similar al barrido mediante splines cúbicas, pero que no atraviesa los puntos de control, si no que "pasa" entre ellos.