一个矩阵乘一矩阵的问题

WJN92 2012-12-27 09:43:10
Matrix4x4 a,b

已知 角度 A = 30,45,45 ; B = 20,2,28

构造旋转矩阵 a和b。
再构造旋转矩阵c,c的旋转角度为a和b角度的和即 C = 50,47,73
那么 a * b =?c

但是测试后,它们是不等于的
那么如何快速的求出c的角度呢?它们有什么关系呢?
...全文
214 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJN92 2013-01-03
  • 打赏
  • 举报
回复
引用 5 楼 antimatterworld 的回复:
引用 楼主 WJN92 的回复:Matrix4x4 a,b 已知 角度 A = 30,45,45 ; B = 20,2,28 构造旋转矩阵 a和b。 再构造旋转矩阵c,c的旋转角度为a和b角度的和即 C = 50,47,73 那么 a * b =?c 但是测试后,它们是不等于的 那么如何快速的求出c的角度呢?它们有什么关系呢? ……
你说的“欧拉角算法”就是矩阵相乘吗?
antimatterworld 2013-01-03
  • 打赏
  • 举报
回复
引用 楼主 WJN92 的回复:
已知 角度 A = 30,45,45 ; B = 20,2,28
楼主给出的条件就有问题,同样的A = 30,45,45。 先绕X轴旋转30度,然后绕Y轴旋转45度,最后绕Z轴旋转45度。 先绕Y轴旋转45度,然后绕Z轴旋转45度,最后绕X轴旋转30度。 这2种不同的旋转顺序,导致最终的结果不一样。 所以,对于旋转,不管是使用矩阵,四元数还是欧拉角,必须使用1个轴和1个角度做1次旋转。 不管是在世界空间中旋转还是在局部空间中旋转,角度累加是没有意义的。
antimatterworld 2013-01-03
  • 打赏
  • 举报
回复
引用 7 楼 WJN92 的回复:
你说的“欧拉角算法”就是矩阵相乘吗?
不是,我说的“欧拉角算法”其实就是根据物体的局部坐标轴实时旋转变换。 由于万向锁的原因,任何情况下,旋转是不可以使用角度累加的。 并且提醒楼主,欧拉角指的是物体局部坐标轴上旋转的角度。 你无法只根据欧拉角计算出在世界空间中的旋转矩阵或者四元数,你还需要知道局部坐标轴的方向。
antimatterworld 2013-01-01
  • 打赏
  • 举报
回复
引用 楼主 WJN92 的回复:
Matrix4x4 a,b 已知 角度 A = 30,45,45 ; B = 20,2,28 构造旋转矩阵 a和b。 再构造旋转矩阵c,c的旋转角度为a和b角度的和即 C = 50,47,73 那么 a * b =?c 但是测试后,它们是不等于的 那么如何快速的求出c的角度呢?它们有什么关系呢? ……
欧拉角是每次相对于物体的局部坐标轴旋转的,所以该问题不是欧拉角的合成问题。 该问题的根本原理是:万向锁的问题。 也就是以世界空间坐标轴为基准,你不能简单的通过2次在各轴旋转的角度相加来合成最终的在各轴上的旋转角度。 不信你就先绕X轴旋转90度,然后绕Z轴旋转90度,看看物体的姿态。然后,先绕Z轴旋转90度,然后绕X轴旋转90度,看看物体的姿态。 所以在飞行模拟游戏中,不能简单的累加角度来构造飞机的姿态,必须使用欧拉角算法,或者根据飞机的局部坐标轴的方向,实时调整飞机的姿态。
antimatterworld 2013-01-01
  • 打赏
  • 举报
回复
该问题的根本原理是:万向锁的问题。 楼主应该把分给我。
WJN92 2012-12-31
  • 打赏
  • 举报
回复
引用 3 楼 liumingjin2008 的回复:
这个主要是为四元素使用的,你可以取看看欧拉角和四元素的关系你就明白了
看了看四元数的资料,感觉也快不到那里 首先要计算出角度A和角度B的四元数。还是要两个四元数相乘。 如果我要把向量变换的话,还要把响亮变成四元数。 这个貌似也比较慢,不知道有没有更快的方法
WJN92 2012-12-27
  • 打赏
  • 举报
回复
引用 1 楼 liumingjin2008 的回复:
你的角度A和B是欧拉角吧?如果是欧拉角的话你构造的矩阵a*b是据对不等于c的,他们之间没有任何的联系(简单层面上来说),如果要构造矩阵c,可以直接通过角度相加后的欧拉角来构造c矩阵。
这样构造出来的矩阵又有什么用呢?c都不等于a*b
liumingjin2008 2012-12-27
  • 打赏
  • 举报
回复
你的角度A和B是欧拉角吧?如果是欧拉角的话你构造的矩阵a*b是据对不等于c的,他们之间没有任何的联系(简单层面上来说),如果要构造矩阵c,可以直接通过角度相加后的欧拉角来构造c矩阵。
liumingjin2008 2012-12-27
  • 打赏
  • 举报
回复
这个主要是为四元素使用的,你可以取看看欧拉角和四元素的关系你就明白了

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧