天天看点

3D数学四元数

向量的叉乘(外积/叉积):

a(ax, ay, az)

b(bx, by, bz)

a x b = c (aybz – azby, axbz – azbx, axby - aybx)

两个向量叉乘的几何意义:

得到一个新的向量,c向量,c向量同时垂直于a向量和b向量。垂直于a向量和b向量所组成的平面,我们也把c向量叫做那个平面的法向量。

向量的叉乘不满足乘法交换律,但是有一定的规律:

a x b = - (b x a)  互为负向量。

c向量的模长 = |a||b|sin<a,b>

四元数:

复数(虚数):是一个复合型的数,是由实数部分(实部)和虚数部分(虚部)组成,当实部为0,这个复数就变成了纯虚数,当虚数部分为0,这个复数就变成了实数。

虚数:我们将一个数的平方等于-1,那么这个数就是虚数单位。

实数:有理数和无理数的集合。

有理数:一切有道理的数 — 有限数和无限循环小数

无理数:没有道理的数 — 无限不循环数。

四元数是一种超复数:x y z w  其中w是实部,剩下的x y z 都是虚部,我们就可以把四元数表示为:

Q = w + xi + yj + zk (其中ijk全是虚数单位)

四元数是数学家汉密尔顿最先推导,为了表示旋转,四元数中存储着的是一对儿 轴角对儿,含义是绕着某根轴,旋转…度角。

那么这轴角对是如何存储在四元数的四个分量中的呢?????

<n(x,y,z),θ>

在四元数中:

x = n.x * sin(θ/2)

y = n.y * sin(θ/2)

z = n.z * sin(θ/2)

w = cos(θ/2)

复数运算法则:

加法: (a + bi) + (c + di) = (a + c) + (b + d)i

减法:   (a + bi) - (c + di) = (a - c) + (b - d)i

乘法: (a + bi) * (c + di) = (ac - bd) + (ad + bc)i

q

四元数的模 = sqrt(x^2 + y^2 + z^2 + w^2),模长为1的四元数我们称之为标准四元数。

单位四元数:(0,0,0,1) 几何意义:无旋转。

共轭四元数:将原四元数的虚数部分取负。反向旋转。

四元数的逆 = 共轭四元数/四元数的模。q^-1 * q = 单位四元数

四元数的乘法:

Q1 = (v1, w1)

Q2 = (v2, w2)

Q1 * Q2 = (w1 * v2 + w2 * v1 + v1 x v2, w1 * w2 - v1·v2)

四元数和四元数相乘代表的几何意义是让旋转量进行叠加

四元数和Vector3进行相乘几何意义是

如果Vector3是一个坐标点,让坐标点绕着四元数中的轴角对进行旋转。

如果Vector3是一个向量,让向量绕着过向量起点的轴角对进行旋转。