Raycasting tutorial / vector math question
Posted
by
mattboy
on Game Development
See other posts from Game Development
or by mattboy
Published on 2012-12-05T19:03:20Z
Indexed on
2012/12/05
23:21 UTC
Read the original article
Hit count: 513
I'm checking out this nice raycasting tutorial at http://lodev.org/cgtutor/raycasting.html and have a probably very simple math question.
In the DDA algorithm I'm having trouble understanding the calcuation of the deltaDistX and deltaDistY variables, which are the distances that the ray has to travel from 1 x-side to the next x-side, or from 1 y-side to the next y-side, in the square grid that makes up the world map (see below screenshot).
In the tutorial they are calculated as follows, but without much explanation:
//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 and rayDirX are the direction of a ray that has been cast.
How do you get these formulas? It looks like pythagorean theorem is part of it, but somehow there's division involved here. Can anyone clue me in as to what mathematical knowledge I'm missing here, or "prove" the formula by showing how it's derived?
© Game Development or respective owner