3D数学在游戏开发中是一个基本功,这里的数学主要指的是向量,矩阵,欧拉角,四元素等等这些,将来还要讲讲光照这些。
在讲四元数之前,本文假定读者已经了解复数的相关知识,如果没有,麻烦你先去看一下复数的相关知识,然后来看这篇文章。
首先,四元数是什么?它是用来干啥的?
四元数就是一个超复数,那啥又是超复数呢?我们一般的复数都是一个实部+一个虚部,例如:z=x+yi。但是超复数它是一个实部加上三个虚部,例如:q=q0+q1*i+q2*j+q*k.
在这里,q1,q2,q3即使向量又是变量。i,j,k他们是虚数基,可以将他们视作虚坐标中,三个相互垂直的单位向量,而且:i*j*k=-1.
纯向量表示的四元数:q=<q0,q1,q2,q3>
四元数的操作:
1.四元数的加减法和复数的加减法是相同的。
2.加法逆元素和加法恒等元:
加法逆元素是指:与q相加,而且结果为0,它就是-q。
q=q0+qv,加法逆元素:-q=-q0-qv,其中qv=q1*i+q2*j+q*k。
加法恒等元就是0.
3.乘法:
q=q0+qv, p=p0+pv
则:q*p=(q0*p0-(pv*qv))+(p0*qv+q0*pv+pvXqv),注意,这个里面有向量的点成也有叉乘。
而且,乘法恒等元就是q=<1,0,0,0>
4.共轭四元数:
对于一个四元数q=q0+qv,它的共轭四元数就是将虚部的符号取反:q*=q0-qv=q0-q1*i-q2*j-q*k.
而且,四元数和它共轭的乘积就是各个元素的平方相加。
5.四元数范数:q=q0+qv,则,|q|=各元素的平方和开根号。(打平方有点费事,就直接用语言来描述了)
6。倒数(q-1)
q*q-1=1=q-1*q,两边同时乘以q*(共轭),则:(q*q-1)*q*=(q-1*q)*q*=q*,so:q-1*(q*q*)=q*,又因为:q*q*=|q|2,则:q-1=q*|q|2.
如果,q是一个单位四元数,并且|q|=1,则:q-1=q*.
好了,今天我们先是回答了开篇我们提出的第一个问题,什么是四元数。下一篇我们回答四元数是用来干啥的!