Algorithm 有快射线吗;曲面求交算法?

Algorithm 有快射线吗;曲面求交算法?,algorithm,math,3d,language-agnostic,raytracing,Algorithm,Math,3d,Language Agnostic,Raytracing,三角形是具有非常简单的光线的曲面→三角形交集算法,只需少量操作即可完成。由于这个原因,它们通常被用作光线跟踪应用程序的基本体-例如,网格由一组三角形近似。问题是,近似值越详细,需要的三角形就越多,这意味着需要进行更多的测试。如果您的对象是一个完美的球体,那么使用三角形可能不是一个好主意,因为有一个O(1)算法可以直接测试光线→球体与少量操作相交 我的问题是:还有哪些曲面具有“光线更快”的特性→曲面“与三角化方法相交?是否有任何数学结构/对象允许我们近似任意3D对象的表面,并检查其在O(1)中的交

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


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

您对形状有什么知识? -纯闭式:有些有闭式解。 -如果它只是一个三角形汤,您需要一些数据结构来加速:例如网格、八叉树、边界框层次结构、BSP。。。 -如果可以表示一个势函数或距离函数(甚至是近似函数),例如隐式曲面,则可以使用二分法来获得交点(迭代非常快)


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

您可以使用样条线面片或其他东西平铺曲面。寻找光线与样条线面片的交点需要恒定的时间,但这不是一个简单的过程。我认为椭球体或三维长方体更容易,但不够精确。使用最适合网格形状的最简单对象可以使用任何可以用数学公式表示的几何图形。。。不知道形状(任意网格)是很难的。对象曲面拟合的过程非常缓慢,但可以预先计算一次,因此不会减慢运行时间…使用简单方程的连续平滑曲面。例如椭球体(和球体)、平面和圆柱面。不是像长方体那样的角形(它们是O(面数))@willywonka_dailyblah是正确的,具有简单方程的连续光滑曲面,例如圆锥截面。我将添加轴对齐的边界框:AABBs有一些快速求交算法,在运行时测试由三角形组成的任意长方体上的求交(大概每个面2处有12个)。