2016-12-23 7 views
-2

Для моей школы, я учусь, как сделать raycast в С.Понимание метода raycast

На основе этого урока я нашел http://permadi.com/1996/05/ray-casting-tutorial-7/, автор объясняет свой метод, чтобы найти DeltaX и deltaY проверить всякий раз, когда есть стена в положении, основанном на deltaX или deltaY.

Однако он получает deltaX и deltaY через тангенс угла a, и он не будет работать с 0, pi/2, pi и 3pi/2.

Как он может работать с таким решением? Я что-то упускаю ?

+0

добро пожаловать в [так]! Боюсь, ваш вопрос скорее принадлежит http://math.stackexchange.com! Функция tanges равна 0 при 0 и pi, бесконечность при n/2 * pi! – jkalden

+0

Между прочим, есть [компьютерная графика] (http://computergraphics.stackexchange.com/). – Olivier

+0

... а также сайт [разработка игры] (https://gamedev.stackexchange.com/)! :) Множество вариантов. – cxw

ответ

1

В точке 0 и pi нет смысла искать горизонтальные пересечения, поскольку луч является горизонтальным. Вам нужно будет явно проверить этот случай.

При pi/2 и 3pi/2 тангенс бесконечен, поэтому 1/tan() должен давать вам ноль с математикой с плавающей запятой. Он будет работать, даже если он выглядит уродливым.

Для вертикальных пересечений сдвиньте углы на pi/2 и примените те же рассуждения.