了解光线投射方法
Understanding a raycast method
为了我的学校,我正在学习如何在 C 中进行光线投射。
根据这个教程我发现
http://permadi.com/1996/05/ray-casting-tutorial-7/,作者解释了他找到deltaX和deltaY的方法,以根据deltaX或deltaY检查某个位置是否有墙。
但是他通过角度 a 的正切得到 deltaX 和 deltaY,它不适用于 0、pi/2、pi 和 3pi/2。
如何使用这种解决方案?我错过了什么吗?
在 0 和 pi 处,没有必要搜索水平交点,因为射线是水平的。您需要明确检查这种情况。
在 pi/2 和 3pi/2 处,切线是无限的,所以 1/tan() 应该用浮点数学给你零。长得丑也能用
对于垂直交叉点,将角度移动 pi/2,同样的推理也适用。
为了我的学校,我正在学习如何在 C 中进行光线投射。
根据这个教程我发现 http://permadi.com/1996/05/ray-casting-tutorial-7/,作者解释了他找到deltaX和deltaY的方法,以根据deltaX或deltaY检查某个位置是否有墙。
但是他通过角度 a 的正切得到 deltaX 和 deltaY,它不适用于 0、pi/2、pi 和 3pi/2。
如何使用这种解决方案?我错过了什么吗?
在 0 和 pi 处,没有必要搜索水平交点,因为射线是水平的。您需要明确检查这种情况。
在 pi/2 和 3pi/2 处,切线是无限的,所以 1/tan() 应该用浮点数学给你零。长得丑也能用
对于垂直交叉点,将角度移动 pi/2,同样的推理也适用。