从两个变换后的 3D 向量推导出 3D 旋转矩阵
Deducing a 3D rotation matrix from two transformed 3D vectors
我目前正在尝试根据两对 3D 向量 (V1, V1t) 和 (V2, V2t) 这样
- V1t=R*V1
- V2t=R*V2
- 选择 V1 和 V2 彼此正交。
使用了两对向量,因为一对向量(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'。
我的问题是
- 首先,从两对变换后的 3D 向量中推导出旋转矩阵是否可行? (两个原始向量V1和V2被认为是相互正交的)
- 如何从旋转矩阵中提取沿任意轴的旋转?
你走在正确的轨道上,但我会稍微改变一下。
也许试试这个方法:
- 从 (V1, V1t) 计算 R1
- 用R1旋转V2,结果为V2R
- 从 (V2R, V2t) 计算 R2
- 连接 R1 和 R2 以获得最终的旋转
它应该比尝试隔离沿某个轴的旋转更容易。
我目前正在尝试根据两对 3D 向量 (V1, V1t) 和 (V2, V2t) 这样
- V1t=R*V1
- V2t=R*V2
- 选择 V1 和 V2 彼此正交。
使用了两对向量,因为一对向量(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'。
我的问题是
- 首先,从两对变换后的 3D 向量中推导出旋转矩阵是否可行? (两个原始向量V1和V2被认为是相互正交的)
- 如何从旋转矩阵中提取沿任意轴的旋转?
你走在正确的轨道上,但我会稍微改变一下。
也许试试这个方法:
- 从 (V1, V1t) 计算 R1
- 用R1旋转V2,结果为V2R
- 从 (V2R, V2t) 计算 R2
- 连接 R1 和 R2 以获得最终的旋转
它应该比尝试隔离沿某个轴的旋转更容易。