Je vérifie ce joli tutoriel de raycasting sur http://lodev.org/cgtutor/raycasting.html et j'ai une question mathématique probablement très simple.
Dans l'algorithme DDA, j'ai du mal à comprendre le calcul des variables deltaDistX et deltaDistY, qui sont les distances que le rayon doit parcourir de 1 côté x au côté x suivant, ou de 1 côté y au suivant côté y, dans la grille carrée qui compose la carte du monde (voir capture d'écran ci-dessous).
Dans le tutoriel, ils sont calculés comme suit, mais sans trop d'explications:
//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 et rayDirX sont la direction d'un rayon qui a été lancé.
Comment obtenez-vous ces formules? Il semble que le théorème de Pythagore en fasse partie, mais d'une manière ou d'une autre, la division est impliquée ici. Quelqu'un peut-il me donner des informations sur les connaissances mathématiques qui me manquent ici, ou «prouver» la formule en montrant comment elle est dérivée?