与方形网格的最佳线交叉

问题描述 投票:1回答:1

我有一个用于寻找阴影/光线的光线投射算法。

虽然光线在像素坐标中,但是地图本身是方形的,恒定大小的瓷砖网格。网格单元可通过或不可通过(方形墙)。典型的许多2-D游戏。

我有光线投射代码,可以向前照射光线,并在光线在墙内时标记。当发生这种情况时,光线通常位于单元内,而不是位于边缘。在那一点上,我有来自光源的起始x / y对,光线行进的角度,以及墙内的x / y对。

我想找到第一次与墙壁接触的点,所以从本质上讲,我需要“备份”这条线。使用光线来自的角度,我可能只需要测试正方形的一个段来找到交点。

如果我有一个固定的TILE_WIDTH和TILE_HEIGHT(在这种情况下,它们也相等);找到该线段交叉点的位置是否有更优化的特定方法?也就是说,它利用了这些关系,并且我已经拥有的信息比一般算法更简单和/或更快。

c++ casting geometry intersection raytracing
1个回答
2
投票

Fast Voxel Traversal的Woo和Amanatides算法。它计算光线与矩形网格边缘的交点。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.