Tratamiento de planos infinitos con Raytracing

Planos en cualquier dirección

Aunque sea muy útil, no siempre basta con planos perpendiculares a los ejes. Muchas veces necesitaremos poder orientar un plano en la dirección que nos plazca. Utilizando el método de los sistemas de ejes que explicamos en el anterior artículo, podemos considerar la ecuación de un plano en el SR global, que es lo mismo que decir que los ejes del SR del objeto coinciden con los ejes del SR global (los canónicos).

EjeX=(1,0,0)

EjeY=(0,1,0)

EjeZ=(0,0,1)

Los vectores (y los ejes son también vectores) se representan en negrita. La ecuación del plano se puede reescribir como:

d=Z=(X,Y,Z)·(0,0,1)=(X,Y,Z)·EjeZ

Donde U·V es el producto escalar entre los vectores U y V. Si consideramos un SR diferente al global, entonces los tres ejes del objeto pueden ser cualquiera, mientras cumplan que sean unitarios y perpendiculares entre sí. Entonces el EjeZ podría ser un vector arbitrario (a,b,c)=EjeZ, y la ecuación anterior se puede escribir como:

d=(X,Y,Z)·EjeZ=(X,Y,Z)·(a,b,c)=a*X+b*Y+c*Z

con lo que obtenemos la clásica ecuación del plano, que se suele escribir de la siguiente forma:

a*X+b*Y+c*Z+d=0

En este caso hemos dado una vuelta muy larga para llegar a una ecuación muy conocida, pero nos ha servido para demostrar que el truco es perfectamente válido. En este caso, el parámetro ‘d’ indica la distancia al origen de coordenadas (0,0,0) del plano en la dirección del vector normal. Para calcular el punto de intersección el proceso es el mismo de siempre: se introduce la ecuación del rayo y se resuelve el sistema de ecuaciones. Al final obtenemos que:

t=-(EjeZ·(Xo,Yo,Zo)+d)/(EjeZ·(Xi,Yi,Zi)

En este caso se tiene que ir con cuidado con la división, ya que si la dirección del rayo es paralela al plano, entonces no hay intersección y EjeZ·(Xi,Yi,Zi) vale cero. A partir de este momento, tomaremos el EjeZ del SR del objeto como indicador de su orientación. La normal del plano es, por la forma como lo hemos definido, el EjeZ.

El raytracing aplicado en el mundo de las demos ha evolucionado bastante entre el que presentaron Iguana en la demo Despair y el de Incognita en Platipus
Escena generada por raytracing (el mismo programa de ejemplo) en el que aparecen planos perpendiculares al eje X (en verde), Y (en rojo) y Z (en azul).
Anterior Siguiente