Формула Raycasting недопонимание - PullRequest
0 голосов
/ 10 марта 2019

Я делаю проект с использованием raycasting (просто переделываю старую добрую игру wolf3d). И меня возглавляет один учебник. Я застрял в понимании математики, которую он использует в этом. Я пытался проникнуть в это и потерял много часов, гугля, рисуя и решая это, но я не могу получить тот результат. Запрашиваемая здесь, потому что сообщества по математике и геймдеву выглядят гораздо менее населенными. А также у сообщества gamedev такой же вопрос, как и у меня, и он до сих пор остается без ответа. Так что, может, кто-то с хорошей математикой мог бы объяснить это.

Here is my ray Вот что говорит учебник:

При геометрическом выводе deltaDistX с Пифагором вы получаете формулу «sqrt (1 + (rayDirY * rayDirY) / (rayDirX * rayDirX))», но это можно упростить до abs (1 / rayDirX). Аналогично, deltaDistY - это «sqrt (1 + (rayDirX * rayDirX) / (rayDirY * rayDirY))», который можно упростить до abs (1 / rayDirY).

rayDirX и rayDirY - это координаты X и Y нашего луча. Каждая сторона сетки равна 1. Я полагаю, это связано с пересчетом теоремы Пифагора здесь она идет . Но как это упростить до этого?

abs (1 / rayDirX) и abs (1 / rayDirY)

Любая помощь и информация приветствуется.

...