文档介绍:【Unity3d游戏开发】Unity3D中的3D数学基础
向量是2D、3D数学研究的标准工具,在3D游戏中向量是基础。因此掌握好向量的一些基本概念以及属性和常用运算方法就显得尤为重要。在本篇博客中,马三就来和大家一起回顾和学习
k=v/||v||,v!=0;
零向量不能被标准化,数学上这是不允许的,因为将导致除以零,几何上也没有意义,零向量没有方向。
几何解释:2D环境中,如果以原点为尾画一个单位向量,那么向量的头将接触到圆心在原点的单位圆。3D环境中单位向量将接触单位球。
6、向量的加法和减法
两个向量的维数相同,那么它们能相加,或者相减。结果向量的维数与原向量相同。向量加减法的记发和标量加减法的记法相同。例如:[x,y,z] + [a,b,c] = [x+a,y+b,z+c]
减法解释为加负向量,a-b=a+(-b) 例如: [x,y,z] – [a,b,c] = [x-a,y-b,c-z]
向量不能与标量或维数不同的向量相加减。
和标量加法一样,向量加法满足交换律,但向量减法不满足交换律,永远有a+b = b+a,但a-b=-(b-a),仅当a=b时,a-b = b-a
几何解释:向量a和向量b相加的几何解释为:平移向量,使向量a的头连接向量b的尾,接着从a的尾向b的头画一个向量。这就是向量加法的“三角形法则”。
计算一个点到另一个点的位移是一种非常普遍的需求,可以使用三角形法则和向量减法来解决这个问题,如: 上图 d-c 计算出 c 到 d 的位移向量。
7、距离公式
距离公式用来计算两点之间的距离。从上面可以得知两点间的位移向量通过向量减法可以得知,既然得到了两点间的位移向量,那么求出位移向量的模,就能计算出两点间的位移。8、向量点乘
两个向量相乘的结果是一个标量。此标量是等于两个向量长度相乘结果再乘上向量之间的夹角的余弦。当两个向量都为单位向量时,余弦的定义就表示为第一个向量在第二个向量上面的投影长度(或反之亦然 ,参数的顺序并不重要) 。
标量和向量可以相乘,向量和向量也可以相乘。有两种不同类型的乘法,点乘、叉乘
点乘的记法来至a·b中的点。与标量和向量的乘法一样,向量点乘的优先级高于加法和减法。标量乘法和标量与向量的乘法可以省略乘号,但在向量点乘中不能省略点乘号。向量点乘就是对应分量乘积的和。其结果是一个标量. [x,y,z] · [a,b,c] = ax+by+cz;
几何解释:一般来说,点乘结果描述了两个向量的“相似”程度,点乘结果越大,两个向量越相近,点乘和向量间的夹角相关 计算两向量间的夹角 θ = arccos(a·b)
下面图标中的一些主要的余弦值是会经常用到的:9、向量投影
给定两个向量v和n,能够将v分解成两个分量, 它们分别垂直和平行于向量n,并且满足 两向量相加等于向量v,一般称平行分量为v在向量n上的投影。
平行分量公式: 平行分量 = n(v·n)/||n||^2
垂直分量公式: 垂直分量 = ||v|| – n(v·n)/||n||^2
10、向量叉乘
叉乘只能用来计算3D向量,它需要输入两个向量返回结果是另一个向量。得到的结果垂直于输入的两个向量。"左手坐标系"可以用来表示输入和输出的向量的方向。如果第一个参数匹配手的拇指和食指匹配第二个参数,结果将是中指的方向。如果参数的顺序是相反的结果向量将指向正好相反的方向,但将有相同长度。向量叉乘的结果的大小等于输入向量的乘积,然后通过它们之间的角度的正弦值乘以该值的大小。
向量叉乘得到一个向量,并且不满足交换律。
它满足反交换律 a × b = -(b × a)
叉乘公式:[x,y,z] × [a,b,c] = [yc-zb , za-xc , xb-ya]
当点乘和叉乘在一起时,叉乘优先计算, a · b × c = a·(b×c) 因为点乘返回一个标量,同时标量和向量间不能叉乘。
几何解释:叉乘得到的向量垂直于原来的两个向量。
a × b 的长度等于向量的大小与向量夹角sin值的积,||a × b|| = ||a|| ||b|| sinθ ||a × b||也等于以a和b为两边的平时四边形的面积。
叉乘最重要的应用就是创建垂直于平面、三角形、多边形的向量。
11、标量乘法和除法
当我们讨论的向量,它常用他的标量作为一个普通的数字(例如,一个float值) 。这表示标量只有大小,而没有向量的大小