首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >旋转矩阵之间的插值

旋转矩阵之间的插值
EN

Stack Overflow用户
提问于 2011-04-07 19:27:19
回答 2查看 8.4K关注 0票数 12

我有两个旋转矩阵(让我们称它们为A和B),其中:

代码语言:javascript
复制
A = 1  0  0
    0  0 -1
    0  1  0

代码语言:javascript
复制
B = -1  0  0
     0  0 -1
     0 -1  0

这基本上只是一次旋转,相机旋转到后面看自己。显然,我不能直接插值矩阵中的值,因为它看起来很奇怪。我尝试将矩阵转换为产生2组X,Y,Z角的欧拉角,并尝试根据X,Y,Z角的每个分量之间的最小距离来确定要使用的角度。这肯定会产生我想要的那种旋转,但我想不出一个合适的方法来确定在哪些角度之间进行插值,因为有时导致最小误差的角度集会导致围绕错误的轴旋转。我也尝试了四元数,但基本上得到了相同的结果。有谁能给我指个方向吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-07 19:44:12

使用四元数(SLERP)。旋转矩阵和欧拉角都不适合插值。

参见45:05 here (David Sachs, Google Tech Talk)

票数 25
EN

Stack Overflow用户

发布于 2012-03-08 22:04:44

我个人的观点是,使用四元数来处理这类事情更有意义。也就是说,你不需要使用四元数就可以做到这一点。

需要注意的是,“差”矩阵,也就是将“A”方向转化为“B”方向的矩阵可以由T = A.tranpose() * B计算(考虑到你是在右边乘法)。拥有旋转矩阵表示后,可以将其转换为轴角表示(例如,请参见http://en.wikipedia.org/wiki/Axis-angle_representation)。

最后,由于您知道将A带到B的旋转轴,因此可以线性插值从零到之前从T计算出的角度。

这相当于使用SLERP。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5580283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档