我正在尝试发现一种更快的算法,用于测试一个轴对齐的圆锥曲面是否与一个轴对齐的包围盒的体积相交。
我开发的当前算法如下:
- x = 0
- 对于AABB的任何4个平行边:
- 将其线段与圆锥相交。
- 如果相交点在AABB内:
- 返回true。
- 如果相交点在AABB的特定一侧:
- x += 1
- 如果x == 0 或 x == 4(所有的相交都在AABB的一侧):
- 返回false。
- 返回true。
有人能想出更有效率的算法吗?这个似乎通过计算每条线段的相交来做了很多额外的工作。
编辑:
上述算法是错误的,例如:
锥体只能以一种方式与盒子的一条边相交,使得所有轴线交点都在一侧,因此除非测试所有边缘或智能选择要测试的边缘(也许是最靠近锥体的边缘),否则上述算法不起作用。编辑:请参见下面我自己的答案,其中包含我后来发现的解决方案,这似乎对我来说几乎是最优的。