从两个变换后的 3D 向量推导出 3D 旋转矩阵

Deducing a 3D rotation matrix from two transformed 3D vectors

我目前正在尝试根据两对 3D 向量 (V1, V1t)(V2, V2t) 这样

使用了两对向量,因为一对向量(V1 及其变换向量,V1t)没有提供足够的信息来构造旋转矩阵 R。A很好的例子来说明,例如 V1 位于 R 的旋转轴上。

思路是构建两个偏旋转矩阵R1和R2,从而得到最终的矩阵R。

实施使用 GLM,R1 和 R2 计算如下

R1 = math::mat3_cast(math::rotation(V1, V1t));
R2 = math::mat3_cast(math::rotation(V2, V2t));

我的猜测是,在计算 R 之前,沿轴 V1 的旋转应该与 R2 隔离,从而给出 R2'。

R 将是 R1 * R2'。

我的问题是

你走在正确的轨道上,但我会稍微改变一下。

也许试试这个方法:

  • 从 (V1, V1t) 计算 R1
  • 用R1旋转V2,结果为V2R
  • 从 (V2R, V2t) 计算 R2
  • 连接 R1 和 R2 以获得最终的旋转

它应该比尝试隔离沿某个轴的旋转更容易。