3.3.6  Problemas de la CSG

Hay algunos problemas que pueden surgir usando objetos CSG y que debemos evitar.

3.3.6.1  Superficies coincidentes

POV-Ray utiliza pruebas interno/externo para determinar los puntos en que un rayo intersecta con un objeto CSG. El problema viene cuando las superficies de dos formas diferentes coinciden, ya que no hay modo (debido a la precisión en punto flotante de la computadora) de decidir si un punto en una superficie coincidente pertenece a un objeto primario u a otro.

Veamos el siguiente ejemplo en el que un cilindro es utilizado para recortar un agujero en una caja más grande.

  difference {
    box { -1, 1 pigment { Red } }
    cylinder { -z, z, 0.5 pigment { Green } }
  }

Observación: los vectores -1 y 1 en la definición de la caja se expanden a <-1,-1,-1> y <1,1,1> respectivamente.

Si generamos este objeto, vemos manchas rojas donde se supone que debería haber un agujero. Esto es debido a las superficies coincidentes de la caja y el cilindro. Algunos rayos impactan primero en la superficie del cilindro, y generan correctamente el agujero, y otros lo hacen en la superficie de la caja, y aparecen estos puntos rojos. Este problema puede ser evitado incrementando el tamaño del cilindro para evitar las superficies coincidentes. Se hace así:

  difference {
    box { -1, 1 pigment { Red } }
    cylinder { -1.001*z, 1.001*z, 0.5 pigment { Green } }
  }

En general, tenemos que conseguir que el objeto substraĆ­do sea un poco más grande en una diferencia CSG. Buscar superficies coincidentes y escalar apropiadamente el objeto substraĆ­do es la solución para evitar este tipo de errores.

El mismo problema ocurre en las intersecciones CSG y también es evitado escalando alguno de los objetos implicados.