您的位置:首页 > 其它

3D数学基础至四元数

2015-10-22 09:07 232 查看
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*.

好了,今天我们先是回答了开篇我们提出的第一个问题,什么是四元数。下一篇我们回答四元数是用来干啥的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息