Sto guardando questo simpatico tutorial di raycasting su http://lodev.org/cgtutor/raycasting.html e ho una domanda matematica probabilmente molto semplice.
Nell'algoritmo DDA non riesco a capire il calcolo delle variabili deltaDistX e deltaDistY, che sono le distanze che il raggio deve percorrere da 1 lato x al lato x successivo o da 1 lato y al successivo lato y, nella griglia quadrata che costituisce la mappa del mondo (vedi screenshot sotto).
Nel tutorial sono calcolati come segue, ma senza molte spiegazioni:
//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 sono la direzione di un raggio che è stato lanciato.
Come si ottengono queste formule? Sembra che il teorema di Pitagora ne faccia parte, ma in qualche modo c'è divisione coinvolta qui. Qualcuno può darmi un'idea di quale conoscenza matematica mi manca qui, o "provare" la formula mostrando come è derivata?