這只是基礎的一些數學知識,后面會為大家整理一些,unity中如何使用向量,向量在unity中的各種算法及其運算法則與mathf函數的使用。
向量是2D、3D數學研究的標準工具,在3D游戲中向量是基礎。
一、向量
1、向量的數學定義
向量就是一個數字列表,對于程序員來說一個向量就是一個數組。
向量的維度就是向量包含的“數”的數目,向量可以有任意正數維,標量可以被認為是一維向量。
書寫向量時,用方括號將一列數括起來,如[1,2,3] 水平書寫的向量叫行向量 垂直書寫的向量叫做列向量
2、向量的幾何意義
幾何意義上說,向量是有大小和方向的有向線段。向量的大小就是向量的長度(模)向量有非負的長度。
向量的方向描述了空間中向量的指向。
向量的形式:向量定義的兩大要素——大小和方向,有時候需要引用向量的頭和尾,下圖所示,箭頭是向量的末端,箭尾是向量的開始 ****
向量中的數表達了向量在每個維度上的有向位移,例如2D向量列出的是沿x坐標方向和y坐標方向的位移。
3、向量與點
“點”有位置,但沒有實際的大小或厚度,“向量”有大小和方向,但沒有位置。所以使用“點”和“向量”的目的完全不同?!秉c”描述位置,“向量”描述位移。
4、點和向量的關系:任意一點都能用 從原點開始的向量來表達。
二、向量運算
1、零向量
零向量非常特殊,因為它是唯一大小為零的向量。對于其他任意數m,存在無數多個大?。#閙的向量,他們構成一個圓。零向量也是唯一一個沒有方向的向量。
2、負向量
負運算符也能應用到向量上。每個向量v都有一個加性逆元-v,它的維數和v一樣,滿足v+(-v)=0。要得到任意維向量的負向量,只需要簡單地將向量的每個分量都變負即可。
幾何解釋:向量變負,將得到一個和向量大小相等,方向相反的向量。
3、向量大?。ㄩL度或模)
在線性代數中,向量的大小用向量兩邊加雙豎線表示,向量的大小就是向量各分量平方和的平方根 ||v||=√(x2+y2)** (2D向量v) ||v||=****√(x2+y2+z^2) (3D向量v)******
幾何解釋:在2D中的任意向量v,能構造一個以v為斜邊的直接三角形,由勾股定理可知,對于任意直角三角形,斜邊的長度平方等于兩直角邊長度的平方和。 **||v||^2 = x^2 + y^2 **
4、標量與向量的乘法
雖然標量與向量不能相加,但它們可以相乘。結果將得到一個向量。與原向量平行,但長度不同或者方向相反。
標量與向量的乘法非常直接,將向量的每個分量都與標量相乘即可。如:k[x,y,z] = [xk,yk,zk]
向量也能除以非零向量,效果等同于乘以標量的倒數。如:[x,y,z]/k = [x/k,y/k,z/k]
標量與向量相乘時,不需要些乘號,將兩個量挨著寫即表示相乘。
標量與向量的乘法和除法優先級高于加法和乘法
標量不能除以向量,并且向量不能除以另一個向量。
負向量能被認為是乘法的特殊情況,乘以標量-1。
幾何解釋:向量乘以標量k的效果是以因子|k|縮放向量的長度,例如:為了使向量的長度加倍,應使向量乘以2.如果k<0,則向量的方向被倒轉。
5、標準化向量
對于許多向量,我們只關心向量的方向不在乎向量的大小,如:“我面向的是什么方向?”,在這樣的情況下,使用單位向量非常方便,單位向量就是大小為1的向量,單位向量經常也被稱作為標準化向量或者法線。
對于任意非零向量v,都能計算出一個和v方向相同的單位向量k,這個過程被稱作向量的“標準化”,要標準化向量,將向量除以它的大?。#┘纯?。 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
計算一個點到另一個點的位移是一種非常普遍的需求,可以使用三角形法則和向量減法來解決這個問題,如: 上圖 **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、向量叉乘
向量叉乘得到一個向量,并且不滿足交換律。 它滿足反交換律 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**為兩邊的平時四邊形的面積。
叉乘最重要的應用就是創建垂直于平面、三角形、多邊形的向量。