Estoy revisando este bonito tutorial de Raycasting en http://lodev.org/cgtutor/raycasting.html y tengo una pregunta matemática probablemente muy simple.
En el algoritmo DDA, tengo problemas para comprender el cálculo de las variables deltaDistX y deltaDistY, que son las distancias que tiene que recorrer el rayo desde el lado x al siguiente lado x, o desde el lado y al siguiente lado y, en la cuadrícula cuadrada que forma el mapa mundial (ver la captura de pantalla a continuación).
En el tutorial se calculan de la siguiente manera, pero sin mucha explicación:
//length of ray from one x or y-side to next x or y-side
double deltaDistX = sqrt(1 + (rayDirY * rayDirY) / (rayDirX * rayDirX));
double deltaDistY = sqrt(1 + (rayDirX * rayDirX) / (rayDirY * rayDirY));
rayDirY y rayDirX son la dirección de un rayo que se ha emitido.
¿Cómo se obtienen estas fórmulas? Parece que el teorema de Pitágoras es parte de él, pero de alguna manera hay división involucrada aquí. ¿Alguien puede darme una idea de qué conocimiento matemático me estoy perdiendo aquí, o "probar" la fórmula mostrando cómo se deriva?