首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CUDA中计算两个三角形之间的角度

在CUDA中计算两个三角形之间的角度
EN

Stack Overflow用户
提问于 2010-01-27 04:52:57
回答 2查看 3K关注 0票数 0

我想要计算三维空间中两个三角形之间的角度。这两个三角形始终恰好共享两个点。例如:

三角形1:

代码语言:javascript
复制
Point1 (x1, y1, z1),  
Point2 (x2, y2, z2),   
Point3 (x3, y3, z3).  

三角形2:

代码语言:javascript
复制
Point1 (x1, y1, z1),  
Point2 (x2, y2, z2),  
Point4 (x4, y4, z4).

在CUDA中有没有一种方法可以有效地计算它们之间的夹角?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-28 01:57:20

对于每个平面,您需要构造它的法向量(垂直于该平面中的所有直线)。要做到这一点,简单的方法是取三角形中两条非平行线的叉积。(ex (P3-P1) X (P2-P1)和(P4-P1) X (P2-P1) )。

对这些进行规范化。

这两个方向向量的点积给出了角度的余弦。

棘手的一点是要注意退化的三角形!如果定义任何一个三角形的三个点都是共线的(那个三角形只是一条线),那么你所要求的就是未定义的,并且叉积将被零除。你需要决定在这种情况下你要做什么。

由于您正尝试在GPU上执行此操作,如果您关心效率,那么理想情况下,您将希望编写此函数时不使用任何分支。这意味着,您应该尝试使用三元A ? B : C来测试退化的三角形,而不是使用if子句

票数 4
EN

Stack Overflow用户

发布于 2010-01-27 05:17:22

三角形之间的角度与由每个三角形的三个点定义的平面之间的角度相同。

因为点1或点2都在两个平面上,所以计算出其中一个点到点3,然后点4的方向余弦。然后,这两条线之间的夹角的余弦就是相应方向余弦的乘积之和。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2142552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档