计算CUDA中两个三角形之间的角度
-
22-09-2019 - |
题
我想计算3D空间中两个三角形之间的角度。这两个三角形将始终分为两点。例如
三角形1:
Point1 (x1, y1, z1),
Point2 (x2, y2, z2),
Point3 (x3, y3, z3).
三角2:
Point1 (x1, y1, z1),
Point2 (x2, y2, z2),
Point4 (x4, y4, z4).
有没有办法在CUDA中有效地计算它们之间的角度?
解决方案
对于每个平面,您需要构造其正常向量(垂直于该平面中的所有线)。这样做的简单方法是采用三角形中两条非并行线的交叉产物。 (ex(P3-P1) X (P2-P1)和(P4-P1) X (P2-P1)。
使那些归一化。
这两个方向向量的点产物为您提供了角度的余弦。
棘手的一点是提防堕落的三角形!如果所有定义两个三角形的3点都是colinear(三角形只是一行),那么您的要求是不确定的,并且交叉产品将除以零。在这种情况下,您需要决定要做什么。
由于您想在GPU上执行此操作,因此,如果您担心效率,理想情况下,您希望在没有任何分支的情况下编写此功能。这意味着不是用一个 if
条款,您应该尝试使用三元 A ? B : C
其他提示
三角形之间的角度与每个三角形的三个点定义的平面之间的角度相同。
由于两个平面都位于两个平面上,因此找出从其中一个到第3点的方向余弦,然后弄清楚点4。相应的方向余弦。
不隶属于 StackOverflow