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

cha*_*ian 6 c++ 3d rotation

我正在研究一种3D网格解析工具.目前,我正在尝试确定3D空间中两个全等三角形之间的旋转 - 我们称之为ABCDEF.

我能翻译点AD相同的位置,现在需要确定的旋转,将放置DEF在同一平面上,并在相同的方向ABC,但我不熟悉不够用数学来做到这一点.谁能告诉我如何解决这个问题?

我一直在想使用的交叉产品AB,并DE确定旋转轴,则点积求的角度,然后又做了四元数出其中; 但我不知道这是否总能正确对齐它们.

我是否误解了上述想法?它总是会对齐三角形吗?如果不能,找到轮换的另一种方法是什么?

Chr*_*ica 3

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

编辑:因此请按顺序执行以下步骤:

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

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