algorithm - 有没有快速的射线→曲面相交算法?

标签 algorithm math 3d language-agnostic raytracing

三角形是具有非常简单的射线→三角形相交算法的表面,可以通过一些操作来完成。由于这个原因,它们经常被用作光线追踪应用程序的基元 - 例如,网格由三角形的集合近似。问题是,近似越详细,需要的三角形就越多,这意味着需要更多的测试。如果您的对象是完美的球体,那么使用三角形可能不是一个好主意,因为有一个 O(1) 算法可以直接测试射线→球体相交,只需很少的操作。

我的问题是:还有哪些表面具有比三角化方法“更快的光线→表面”相交的属性?是否有任何数学结构/对象可以让我们近似任意 3D 对象的表面并在 O(1) 中检查其交集?

最佳答案

你对自己的体型了解多少? - 纯封闭形式:有些有封闭的解决方案。 - 如果它只是一个三角形汤,你需要一些数据结构来加速:例如网格、八叉树、边界框层次结构、BSP... - 如果您可以表达势函数或距离函数 - 甚至是近似函数 - 例如隐式曲面,您可以使用二分法来获得交集(迭代速度相当快)。

(或者您可以加入 SparseVoxels 社区,但这是另一个故事了;-))。

关于algorithm - 有没有快速的射线→曲面相交算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603307/

相关文章:

algorithm - 计数紊乱

python - 迭代性能

c++ - C++中2个64位数字的乘法

python - PyMEL 中矩阵和四元数以及 EulerRotation 之间转换的最简单方法

algorithm - 如何使用 MATLAB 快速检查数组是否互质

algorithm - 将帧转换为 NTSC 丢帧时间码

algorithm - 生成现实的股票价格

math - Perp 点积和 2 个向量之间的交点

c++ - opencv中2D到3D的变换矩阵

c++ - 使用 glm 时翻转 Z 坐标