Quaterion小结
来源:互联网 发布:淘宝商品地址怎么复制 编辑:程序博客网 时间:2024/06/04 18:49
概述:
本文的先介绍了数学上的quaternion几本概念和运算规则, 然后进行推导特定的quaternion于3D空间变换的关系。quaternion真有趣啊,竟然能和3D空间变换搞在一起.....
【quaternion的记法】
【quaternion作为complex number(复数)的扩充】
复数由一个实部和虚部组成: a + bi,一个实数k用复数表示为[k, 0i].
复数的运算法则:
复数的共轭:
复数的模:
利用复数进行2D向量的旋转:
向量p=[x, yi], 旋转角度theta, 用复数[sin8, cos8i]表示.
下面对四元数进行扩展,提出3个虚部i, j, k.
【quaternion Negation(相反四元数)】
【Identity quaternion(单位四元数)】
q = [1, 0] or q = [-1, 0]
【quaternion magnitude(四元数的模)】
【quaternion Conjugate and inverse(四元数的共轭和逆)】
【Cross Product of Quaternion(叉乘)】
满足结合律,但不满足交换律:
四元数乘积的逆:
【Quaternion "Difference"】
qa = b
=> qaa-1 = ba-1
=> q = ba-1
【Dot Product of Quaternion(点积)】
【Quaternion Log(求四元数的对数)】
复习高中数学:
ab = N a为底数,b为指数, N为幂值.
logaN = b b为a的对数
【Quaternion Exp(四元数作为指数运算)】
【Quaternion Exponentiation(求幂, power)】
记住: (qt)s != q(ts)
【利用quaternion实现空间的变换】
我们用[0, (x, y, z)] 代表三维空间中的q点,[cos(θ/2), (sin(θ/2)nx, sin(θ/2)ny, sin(θ/2)nz) ] 代表四元素p, 进行以下运算后 q1 = pqp-1 你会发现得到的结果是q点绕n轴旋转了θ度。我们试着进行多次旋转,先进行a旋转再进行b旋转得到 q1 = b(aqa-1)b-1, 由于四元数叉乘满足结合率不满足交换率, = (ba)q(a-1b-1), 由于a-1b-1 = (ba)-1 =(ba) q (ba)-1 先执行a旋转再b旋转等于ba叉乘所代表的单一旋转。
【利用quaternion的插值实现空间的平滑变换】
球面插值:
四元数能作为底数,记作 qt (不要和指数运算混淆,指数运算只接受一个四元数作为参数,而四元数求幂有两个参数 ---- 四元数和指数)。四元数求幂的意义类似于实数求幂。回忆一下,a0 = 1, a1 = a,a为非零标量。当t从0变到1时,at从1到a。四元数求幂有类似的结论:当t从0变到1, qt从[1, 0 ]到 q 。从四元数的叉乘可以证明这一结果。
这对四元数求幂非常有用,因为它可以从角位移中抽取"一部分"。例如,四元数 q 代表一个角位移,现在想要得到代表1/3这个角位移的四元数,可以这样计算: q1/3。
指数超出[0, 1]范围外的几何行为和预期的一样(但有一个重要的注意事项)。例如, q2代表的角位移是 q 的两倍。假设 q 代表绕x轴顺时针旋转30度,那么 q2代表绕x轴顺时针旋转60度, q-1/3代表绕x轴逆时针旋转10度。
上面提到的注意事项是,四元数表达角位移时使用最短圆弧,不能"绕圈"。继续上面的例子, q4不是预期的绕x轴顺时针旋转240度,而是逆时针80度。显然,向一个方向旋转240度等价于向相反的方向旋转80度,都能得到正确的"最终结果"。但是,在此基础上的进一步运算,产生的就可能不是预期的结果了。例如,(q4)1/2不是 q 2,尽管我们感觉应该是这样。一般来说,凡是涉及到指数运算的代数公式,如(as)t = a(st),对四元数都不适用。
- Quaterion小结
- 四元数-Quaterion
- unity3d quaterion
- 四元数(Quaterion)
- 四元数-Quaterion
- Quaterion-Euler
- 关于四元数(Quaterion)
- Unity3d 四元数 Quaterion
- 小结!
- 小结
- 小结
- 小结
- 小结
- 小结
- 小结
- 小结
- 小结
- 小结
- 自定义winform分页控件
- DOS基础命令(一)
- sql查询原理和Select执行顺序
- 原创 函数依赖(FD) 收藏
- Oracle执行计划详解
- Quaterion小结
- winform 分页控件
- Item 6-7 重用标准库
- Ubuntu10.10中安装sun-java6-jdk
- Persist Security Info 参数的作用
- 【转】18条背下来没人敢和你忽悠CPU
- Item 8 异常安全的ctor和dtor
- oracle系统视图作用大全
- C 语言宏高级应用