求两个全等三角形之间的旋转

Finding rotation between two congruent triangles

本文关键字:三角形 之间 旋转 两个      更新时间:2023-10-16

我正在开发一个3D网格解析工具。目前,我正在尝试确定3D空间中两个全等三角形之间的旋转—我们将它们称为CCD_ 1和CCD_。

我能够将点AD平移到同一位置,现在需要确定一个旋转,将DEF放置在与ABC相同的平面上,方向相同,但我对数学不够熟悉。有人能告诉我如何解决这个问题吗?

我一直在考虑用ABDE的叉积来确定旋转轴,然后用点积来求一个角度,然后用它们做一个四元数;但我不知道这是否总能使它们正确对齐。

我是不是搞错了上面的想法?它会一直对齐三角形吗?如果不会,还有什么替代方法可以找到轮换?

你的右手,你的第一个部分将AB旋转到DE上(或其他方式)。但这只对齐一条边。要对齐其他两个,仍然需要将C旋转到F上(在第一次旋转之后)。必要的角度和轴可以通过使用您提出的方法将三角形的两个面法线相互旋转来计算(根据您的问题,我想您知道如何计算三角形的面法线)。

编辑:所以按顺序执行以下步骤:

  1. 将A转换为D
  2. 将AB旋转到DE
  3. 通过将三角形的面法线彼此旋转,将C旋转到F上

您必须获取已经部分变换的三角形的面法线(在步骤2之后),但它们可能与原始三角形相同(不确定)。然后,您可以将这些转换连接为一个。

  1. 平移ABC,使ABC在A处的曲面法线与基准处的点D重合
  2. 旋转ABC,使位于A的曲面法线与位于D的曲面法线重合。这是唯一棘手的部分。幸运的是,这是一件非常常见的事情。它与旋转3D相机的方向相同。谷歌找到了这个参考
  3. 现在以A为原点旋转三角形ABC,使B和C与D和E重合。这是一个标准的2D旋转矩阵