找到射线和多边形之间的交点的最快方法是什么?

Chr*_*oyd 5 algorithm raytracing polygon

正如问题所问的那样。最好用伪代码回答并引用。正确答案应该重视速度而不是简单。

Eug*_*ota 5

请参阅3D 中射线、线段、平面和三角形的交点。您可以找到对多边形进行三角剖分的方法。

如果您确实需要光线/多边形相交,则可以使用实时渲染的 16.9 (第二版为 13.8)。

我们首先计算射线和 [多边形平面] 之间的交点,这可以通过替换射线pie_p轻松完成。x

 n_p DOT (o + td) + d_p = 0 <=> t = (-d_p - n_p DOT o) / (n_p DOT d)
Run Code Online (Sandbox Code Playgroud)

如果分母|n_p DOT d| < epsilon, 其中epsilon是非常小的数,则认为射线平行于多边形平面并且不会发生相交。p否则,计算射线和多边形平面的交点: p = o + td。此后,判断是否在多边形内部的问题p从三维减少到二维......

请参阅本书了解更多详细信息。