四元数与MD2模型:从理论到实践
四元数基础与转换
四元数旋转
四元数可用于旋转向量或其他四元数,旋转向量和四元数使用相同公式。旋转向量时,将向量视为标量分量为零的四元数,且忽略结果中的标量部分。
四元数转换
由于四元数较为复杂,直接指定四元数旋转并不总是可行,因此常需在四元数与其他形式(如矩阵、欧拉角、轴角)之间进行转换。
1. 矩阵与四元数的转换
- 四元数转矩阵 :图形API(如OpenGL和Direct3D)通常依赖矩阵进行变换,因此需将四元数转换为矩阵。生成3×3旋转矩阵的公式可参考相关资料。编写代码时,提前计算部分乘法可避免不必要的开销。
- 矩阵转四元数 :先计算矩阵的迹(tr = m11 + m22 + m33)。若迹大于零,可使用特定公式进行“即时计算”;若迹小于等于零,则需根据主对角线元素的大小选择不同公式。
2. 欧拉角与四元数的转换
- 欧拉角转四元数 :因难以直观想象四元数,输入欧拉角更为方便。将每个欧拉角转换为对应的四元数,再将这三个四元数相乘得到最终四元数。
- 四元数转欧拉角 :先将四元数转换为矩阵,计算矩阵的特定元素(m11、m21、m31、m32、m33),再使用相应公式提取欧拉角。
- 计算公式如下:
- (m_{11} = w^2 + x^2 – y^2 – z^2)
- (m_{21} = 2xy
超级会员免费看
订阅专栏 解锁全文
2430

被折叠的 条评论
为什么被折叠?



