Estou consultando este bom tutorial sobre raycasting em http://lodev.org/cgtutor/raycasting.html e tenho uma pergunta matemática provavelmente muito simples.
No algoritmo DDA, estou tendo problemas para entender a calibração das variáveis deltaDistX e deltaDistY, que são as distâncias que o raio deve percorrer de 1 lado x para o próximo lado x, ou de 1 lado y para o próximo lado y, na grade quadrada que compõe o mapa do mundo (veja a captura de tela abaixo).
No tutorial, eles são calculados da seguinte forma, mas sem muita explicação:
//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 e rayDirX são a direção de um raio que foi lançado.
Como você obtém essas fórmulas? Parece que o teorema de Pitágoras faz parte dele, mas de alguma forma há divisão envolvida aqui. Alguém pode me informar sobre o conhecimento matemático que estou perdendo aqui ou "provar" a fórmula, mostrando como ela é derivada?