Я проверяю этот хороший учебник по лучевой трансляции по адресу http://lodev.org/cgtutor/raycasting.html и у меня, вероятно, очень простой математический вопрос.
В алгоритме DDA у меня возникают проблемы с пониманием вычисления переменных deltaDistX и deltaDistY, которые представляют собой расстояния, которые должен пройти луч от 1 стороны x до следующей стороны x, или от 1 стороны y до следующей у, в квадратной сетке, которая составляет карту мира (см. скриншот ниже).
В учебнике они рассчитываются следующим образом, но без особых пояснений:
//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 и rayDirX - это направление луча.
Как вы получаете эти формулы? Похоже, теорема Пифагора является ее частью, но каким-то образом здесь происходит деление. Может кто-нибудь подсказать мне, какие математические знания мне здесь не хватает, или «доказать» формулу, показав, как она получается?