Estoy tratando de implementar el algoritmo se explica en este documento, que sirve para atravesar celdas de la rejilla con el fin siguiendo una línea recta, que es útil para el trazado de rayos:¿Cómo inicializo las variables t en "Algoritmo de recorrido rápido de Voxel para rastrear rayos"?
http://www.cse.yorku.ca/~amana/research/grid.pdf
el documento se describe el algoritmo como dos partes : inicialización y recorrido iterativo. Puedo entender la parte transversal iterativa, pero tengo problemas para entender cómo se calculan algunas de las variables en la parte de inicialización.
Necesito ayuda para inicializar tMaxX
, tMaxY
, tDeltaX
& tDeltaY
. Su procedimiento de inicialización se explica como sigue:
A continuación, se determina el valor de t en el que el rayo atraviesa la primera límite voxel vertical y la almacena en la variable Tmaxx. Realizamos un cálculo similar en y almacenamos el resultado en tMaxY. El mínimo de estos dos valores indicará cuánto podemos viajar a lo largo del rayo y permanecer en el vóxel actual.
Finalmente, calculamos tDeltaX y tDeltaY. TDeltaX indica qué tan lejos a lo largo del rayo debemos mover (en unidades de t) para el componente horizontal de tal movimiento para igualar el ancho de un vóxel. De manera similar, almacena en tDeltaY la cantidad de movimiento a lo largo del rayo que tiene un componente vertical igual a la altura de un vóxel.
No puedo deducir el código que necesito de la descripción en inglés dada anteriormente. ¿Alguien puede traducirlo a una expresión de matemáticas/pseudocódigo para mí?
¿Qué es x1 yx2? – subb
@subb Coordenadas de los puntos de inicio y fin – MBo
Cabe señalar que esta función Frac() debe devolver una fracción * positiva * para los números negativos en contraste con lo que se implementa en algunas bibliotecas estándar (que devuelve una fracción negativa para los números negativos) – josch