从两个变换的 3D 向量推导出 3D 旋转矩阵
Posted
技术标签:
【中文标题】从两个变换的 3D 向量推导出 3D 旋转矩阵【英文标题】:Deducing a 3D rotation matrix from two transformed 3D vectors 【发布时间】:2017-02-03 17:06:42 【问题描述】:我目前正在尝试根据两对 3D 向量 (V1, V1t) 和 R 推导出一个完整的旋转矩阵 R强>(V2, V2t) 这样
V1t=R*V1 V2t=R*V2 V1 和 V2 相互正交。使用了两对向量,因为一对向量(V1 和它的变换向量,V1t)没有带来足够的信息来构造旋转矩阵 R。一个很好的例子来说明例如 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 被视为彼此正交) 如何从旋转矩阵中提取沿任意轴的旋转?【问题讨论】:
【参考方案1】:你在正确的轨道上,但我会稍微改变一下。
不妨试试这个方法:
从 (V1, V1t) 计算 R1 用 R1 旋转 V2,结果是 V2R 从(V2R,V2t)计算 R2 连接 R1 和 R2 以获得最终旋转这应该比试图隔离沿某个轴的旋转更容易。
【讨论】:
以上是关于从两个变换的 3D 向量推导出 3D 旋转矩阵的主要内容,如果未能解决你的问题,请参考以下文章