四元数
2015-08-01 23:33
232 查看
一.四元数定义
四元数的通用定义为 :
根据 Haniton 公式
且有如下关系
,
,
,
,
,
,形象的表示如下图所示:
四元数有序对表示法:
, 注意此处的V为向量,其中i,j,k 性质 已经没有上述四元数中 i,j,k 的性质
二. 四元数运算
1. 加法
假设
,
,则
,
即两部分分别相加
2.乘法
假设
, 则
三.四元数相关概念
单元四元数
四元数对
则
模运算
假设
,则
,另外,有关系式成立
逆运算 (Inverse)
四元数和自身的逆乘积为1
三. 四元数旋转
优点:
可以避免万向节锁现象;
只需要一个4维的四元数就可以执行绕任意过原点的向量的旋转,方便快捷,在某些实现下比旋转矩阵效率更高;
可以提供平滑插值;
缺点:
比欧拉旋转稍微复杂了一点点,因为多了一个维度;
理解更困难,不直观;
首先考虑一种简单的情况,如下图,p垂直于q, P绕q旋转45°
令
则
令
j角度为 45°,
,则
,此时模为
2,和原来是一样的
可是如果p 和 q 不垂直,如上图右所示, 如果还是直接计算 p' = qp ,得到的计算结果模就不再是 2,所以需要再乘以 q 的逆
p' = qpq-1 ,
四. 四元数插值
计算角度的差距
Reference:
http://www.3dgep.com/understanding-quaternions/ http://www.zhihu.com/question/23005815 http://blog.csdn.net/silangquan/article/details/39008903
四元数的通用定义为 :
根据 Haniton 公式
且有如下关系
,
,
,
,
,
,形象的表示如下图所示:
四元数有序对表示法:
, 注意此处的V为向量,其中i,j,k 性质 已经没有上述四元数中 i,j,k 的性质
二. 四元数运算
1. 加法
假设
,
,则
,
即两部分分别相加
2.乘法
假设
, 则
三.四元数相关概念
单元四元数
四元数对
则
模运算
假设
,则
,另外,有关系式成立
逆运算 (Inverse)
四元数和自身的逆乘积为1
三. 四元数旋转
优点:
可以避免万向节锁现象;
只需要一个4维的四元数就可以执行绕任意过原点的向量的旋转,方便快捷,在某些实现下比旋转矩阵效率更高;
可以提供平滑插值;
缺点:
比欧拉旋转稍微复杂了一点点,因为多了一个维度;
理解更困难,不直观;
首先考虑一种简单的情况,如下图,p垂直于q, P绕q旋转45°
令
则
令
j角度为 45°,
,则
,此时模为
2,和原来是一样的
可是如果p 和 q 不垂直,如上图右所示, 如果还是直接计算 p' = qp ,得到的计算结果模就不再是 2,所以需要再乘以 q 的逆
p' = qpq-1 ,
四. 四元数插值
计算角度的差距
Reference:
http://www.3dgep.com/understanding-quaternions/ http://www.zhihu.com/question/23005815 http://blog.csdn.net/silangquan/article/details/39008903
相关文章推荐
- category、protocol、delegate总结
- ViewDragHelper实现QQ5.0侧滑并处理与ViewPager的滑动冲突
- hdu5125 树状数组+dp
- 师大校赛D coloring Game 并查集
- MYSQL用户管理
- 信号槽
- (5) 中文处理专题
- Fence Repair
- system.exit(0)和system.exit(1)区别
- 莫队算法
- iptables WEB服务器配置示例
- 一个Netfilter nf_conntrack流表查找的优化-为conntrack增加一个per cpu cache
- chardet字符集检测模块
- !HDU 4334 集合各出一数和为0是否存在-思维、卡时间-(指针的妙用)
- hdu1999 可以筛法做
- 设计模式之工厂方法模式
- 算法学习之旅
- 6.1 守护进程课后题2015/8/1
- 最长回文子串
- Scala深入浅出实战经典-1