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*.
好了,今天我们先是回答了开篇我们提出的第一个问题,什么是四元数。下一篇我们回答四元数是用来干啥的!
在讲四元数之前,本文假定读者已经了解复数的相关知识,如果没有,麻烦你先去看一下复数的相关知识,然后来看这篇文章。
首先,四元数是什么?它是用来干啥的?
四元数就是一个超复数,那啥又是超复数呢?我们一般的复数都是一个实部+一个虚部,例如: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*.
好了,今天我们先是回答了开篇我们提出的第一个问题,什么是四元数。下一篇我们回答四元数是用来干啥的!
相关文章推荐
- 非常不错的脚本入侵基础知识总结第1/2页
- AS3 Flex基础知识100条
- Ruby基础知识之方法、代码段
- Lua教程(二):基础知识、类型与值介绍
- C#编程自学之开篇介绍
- javascript基础知识大集锦(一) 推荐收藏
- C++基础入门教程(一):基础知识大杂烩
- ECMAScript 基础知识
- JSP学习经验小结分享
- PHP基础知识介绍
- javascript中的107个基础知识收集整理 推荐
- javascript真的不难-回顾一下基础知识
- JavaScript 基础知识 被自己遗忘的
- javascript基础知识整理
- Ruby基础知识之数据类型
- ASP.NET预备知识学习笔记
- shell编程基础知识小结
- Mysql基础知识点汇总
- PHP程序员必须清楚的问题汇总
- asp知识整理笔记3(问答模式)