如何知道线段在3d空间中与三角形相交?

乔酷

我有一个在3d空间中由3个点定义的三角形。我也有在3d空间中由2个点定义的线段。我想知道它们是否相交。我真的不需要知道交叉点。

我不知道任何微积分,但我知道一些触发。我对矩阵有些了解,但我对向量非常了解(特别是3d向量)。请保持简单。

您能否引导我解决示例问题:

三角形:

a:-4、3、0

b:4、3、0

c:-3,-5、4

线段:

d:1,-2、0

e:-2、6、2

编辑:

我将在c ++物理引擎中使用它。

一个答案涉及从四个顶点计算四面体体积。请提供公式或在代码中显示。

更新:

正如meowgoesthedog指出的那样,我可以尝试使用Moller-Trumbore相交算法。请参阅下面的替代解决方案。

约瑟夫·奥罗克

这是解决问题的一种方法。计算四面体的体积Td =(a,b,c,d)和Te =(a,b,c,e)。如果Td或Te的体积为零,则段de的一个端点位于包含三角形(a,b,c)的平面上。如果Td和Te的体积具有相同的符号,则de严格位于一侧,并且不存在交集。如果Td和Te具有相反的符号,则de越过包含(a,b,c)的平面。

从那里有几种策略。一种是计算de越过该平面的点p。然后投影到2D,并解决2D中的三角形问题。

另一种方法是计算四面体(a,b,d,e),(b,c,d,e)和(c,a,d,e)的体积。只有三个符号都相同时,才使三角形(a,b,c)相交。

如何从四角体的角坐标计算四面体的体积遍及整个网络,以及C中的计算几何

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章