为了我的学校,我正在学习如何用C语言进行光线投射。
基于这个教程,我找到了 http://permadi.com/1996/05/ray-casting-tutorial-7/,作者解释了他找到deltaX和deltaY的方法,以便在基于deltaX或deltaY的位置存在墙时进行检查。
然而,他通过角度α的正切获得deltaX和deltaY,并且它不能用于0,pi / 2,pi和3pi / 2。
如何使用此类解决方案?我错过了什么吗?
答案 0 :(得分:1)
在0和pi处,由于光线是水平的,所以没有必要搜索水平交点。您需要明确检查该案例。
在pi / 2和3pi / 2时,切线是无穷大的,所以1 / tan()应该给你带浮点数学的零。它即使看起来很丑也会奏效。
对于垂直交叉点,将角度移动pi / 2并应用相同的推理。