3d "Greedy" Bresenham 直线算法

3d "Greedy" Bresenham's Line Algorithm

是否有快速(即非增量步骤)算法来查找 所有 线在 3d space 中相交的体素?

我比较了 Bresenham 的线算法,但我希望它是“贪婪的”,这样它不仅形成一条线,而且提供每个交叉点。它还必须适用于 3d space.

目的是为了光线追踪,但我希望有一个 3d 网格,我不必做这样的方法,我一步一点,看看点所在的立方体,然后再向前走一小步位,直到我到达线路的另一端。

我想我有自己的想法,但我不确定它在实践中的效率如何。

从线开始的体素开始。通过线相交平面数学找到线退出立方体的点。使用此信息找到该线相交的下一个立方体。冲洗并重复。

如果有人有更好的算法,我不会接受我自己的答案。

是的,有关于 2D 和 3D 案例的 Amanatides 和 Woo 文章“A Fast Voxel Traversal Algorithm for Ray Tracing”。

总的来说和你的想法一样Find the point the line exits the cube via line-intersecting-plane math

Example of implementation

二维案例: