※ 引述《cjcat2266 (CJ Cat)》之铭言:
: ※ 引述《yshihyu (yshihyu)》之铭言:
: : 1. 为什么一般顺序是 ZYX? 还不是 XYZ
: 顺序没有公共标准,一切就是看函式库怎么设计
: 通常就是看哪个顺序最多人习惯使用
: 飞航术语的pitch-roll-yaw是很常见的定义方式
: 在一些工具的座标系对应的轴向顺序就是ZYX
: : 2. 这顺序跟更换轴向存在什么关系嘛?
: : 例如 XYZ 变成 YXZ // 对换XY轴
: 更换轴向顺序并不是单纯的改变角度顺序
: 要先算出旋转矩阵,然后再用想要的轴向顺序逆推角度
: 推导方式可以参考这连结下面的best answer
: http://bit.ly/2cTVgKK
: : 3. 四元数在做一些物体呈现如果换轴或是某个轴转90度
: 不清楚你所谓的"换轴"是什么意思?
: 是说要物体沿着某个轴向选转90度吗?
: 如果是那样的话就把物体的四元数和代表该旋转的四元数相乘
: 四元数代表的是一个轴和一个角度
: 令: 单位四原数的分量各为(x, y, z, w)
: 旋转轴单位向量为N = (Nx, Ny, Nz)
: 旋转角度为A
: 则: x = Nx*sin(A/2)
: y = Ny*sin(A/2)
: z = Nz*sin(A/2)
: w = cos(A/2)
: 详情可以参考我之前写的这篇
: http://allenchou.net/2014/04/game-math-quaternion-basics/
_____________________________________________________________________
gyro and g-sensor 出来xyz raw data 经过 funsion algorithm
算出四元数 , 因为四元数不直观所以我转成尤拉角
那四元数跟尤拉角之间互相转换过程发现有xyz顺序问题 , 顺序必须一致转换才会正确
例如我下面完整程式码
https://gist.github.com/anonymous/e33f55de45fb42fa7b7d20e4ccd0056a
Euler e(-45, -45, -5);
Euler2quaternion(e, q, zyx); // 尤拉转四元数 order zyx
quaternion2Euler(q, res, zyx); // 四元数转尤拉必须也要是 order zyx 才会算出
-45, -45 , -5 值
1. 因为我看网络上资料大家只提到 euler angle 有 rotation order 问题 ,
可是测试过程中发现 quaternion 好像也是存在 rotation order 问题, 像上面这样程式
要相同 order 才能解出正确数值 , matlab quat2eul & eul2quat 两个函数也有带sequence 参数
所以是不是 quaternion 也有 rotation order 问题?
2. 上篇提到换轴是指经过 fusion algorithm 算出来四元数传到 unity 后跟 unity 轴向不一致
例如我对 x 轴(pitch) 翻转变成 y 轴 (roll) , 所以我想说能不能对四元数换XY轴,
让 x pitch 跟 y roll 对换轴 , 所以就如前面所说不能直接换, 必需要转成3x3 or 4x4 旋转矩阵
后转换在转回四元数 or 尤拉角?
谢谢