Unity基礎-向量

向量是2D、3D數(shù)學研究的標準工具,在3D游戲中向量是基礎。

一、向量

1、向量的數(shù)學定義

  • 向量就是一個數(shù)字列表,對于程序員來說一個向量就是一個數(shù)組。
  • 向量的維度就是向量包含的“數(shù)”的數(shù)目,向量可以有任意正數(shù)維,標量可以被認為是一維向量。

2、向量的幾何意義

  • 幾何意義上說,向量是有大小和方向的有向線段。向量的大小就是向量的長度(模)向量的長度為非負。

  • 向量的方向描述了空間中向量的指向。

  • 向量的形式:向量定義的兩大要素——大小和方向,有時候需要引用向量的頭和尾,下圖所示,箭頭是向量的末端

    向量.png

  • 屬性

[x]//向量的X組件。
[y]//向量的Y組件。
[z]//向量的Z組件。
[this [int index]]//使用[0], [1], [2]分別訪問組件x, y, z組件。簡單來說就是用索引號代替x, y, z組件。
[normalized]//返回向量的長度為1(只讀)。
[magnitude]// 返回向量的長度(只讀)。
[sqrMagnitude]//返回這個向量的長度的平方(只讀)。

  • 方法
[Lerp]兩個向量之間的線性插值。
[Slerp]球形插值在兩個向量之間。
[OrthoNormalize]使向量規(guī)范化并且彼此相互垂直。
[MoveTowards]當前的地點移向目標。
[RotateTowards]當前的向量轉向目標。
[SmoothDamp]隨著時間的推移,逐漸改變一個向量朝向預期的目標。
[Scale]兩個矢量組件對應相乘。
[Cross]兩個向量的交叉乘積。返回lhs x rhs
[Reflect]沿著法線反射向量。
[Dot]兩個向量的點乘積。
[Project]投影一個向量到另一個向量。
[Angle]由from和to兩者返回一個角度。
[Distance]返回a和b之間的距離。
[ClampMagnitude]返回向量的長度,最大不超過maxLength所指示的長度。
[Min]返回一個由兩個向量的最小組件組成的向量。
[Max]返回一個由兩個向量的最大組件組成的向量。

  • 1、零向量Vector3.zero
    零向量非常特殊,因為它是唯一大小為零的向量。零向量也是唯一一個沒有方向的向量。

  • 2、負向量-Vector3
    向量變負,將得到一個和向量大小相等,方向相反的向量。

  • 3、向量大?。ㄩL度或模)Vector3.magnitude
    在線性代數(shù)中,向量的大小用向量兩邊加雙豎線表示,向量的大小就是向量各分量平方和的平方根
    (2D向量v) |v|=√(x^2 + y^2)
    (3D向量v) |v|=√(x^2 + y^2 + z^2)

  • 4、向量的數(shù)乘Vector3*num
    雖然標量與向量不能相加,但它們可以相乘。結果將得到一個向量。與原向量平行,但長度不同或者方向相反。

  • 標量與向量的乘法非常直接,將向量的每個分量都與標量相乘即可。
    如:k[x,y,z] = [xk,yk,zk]

  • 5、標準化向量Vector3.Normalize()
    對于許多向量,我們只關心向量的方向不在乎向量的大小,如:“我面向的是什么方向?”,在這樣的情況下,使用單位向量非常方便,單位向量就是大小為1的向量,單位向量經(jīng)常也被稱作為標準化向量或者法線。
    對于任意非零向量v,都能計算出一個和v方向相同的單位向量k,這個過程被稱作向量的“標準化”,要標準化向量,將向量除以它的大小(模)即可。 k=v/||v||,v!=0;

  • 6、向量的加法和減法+、-
    兩個向量的維數(shù)相同,那么它們能相加,或者相減。結果向量的維數(shù)與原向量相同。向量加減法的記發(fā)和標量加減法的記法相同。例如:[x,y,z] + [a,b,c] = [x+a,y+b,z+c]

  • 7、距離公式Vector3.Distance()
    距離公式用來計算兩點之間的距離。通過向量減法可以得知,既然得到了兩點間的位移向量,那么求出位移向量的模,就能計算出兩點間的位移。

  • 8、向量點乘Vector3.Dot()
    向量除了可以數(shù)乘,向量和向量也可以相乘。有兩種不同類型的乘法,點乘、叉乘

  • 點乘的記法來至a·b中的點。與標量和向量的乘法一樣,向量點乘的優(yōu)先級高于加法和減法。標量乘法和標量與向量的乘法可以省略乘號,但在向量點乘中不能省略點乘號。向量點乘就是對應分量乘積的和。其結果是一個標量. [x,y,z] · [a,b,c] = ax+by+cz;

  • 幾何解釋:一般來說,點乘結果描述了兩個向量的“相似”程度,點乘結果越大,兩個向量越相近,點乘和向量間的夾角相關 ,計算兩向量間的夾角 θ = arccos(a·b)

  • 9、向量叉乘Vector3.Cross()
    向量叉乘得到一個向量,并且不滿足交換律。 它滿足反交換律 a × b = -(b × a)
    叉乘公式:[x,y,z] × [a,b,c] = [yc-zb , za-xc , xb-ya]
    當點乘和叉乘在一起時,叉乘優(yōu)先計算, a · b × c = a·(b×c) 因為點乘返回一個標量,同時標量和向量間不能叉乘。
    幾何解釋:叉乘得到的向量垂直于原來的兩個向量。
    a × b 的長度等于向量的大小與向量夾角sin值的積,|a × b| = |a| |b| sinθ
    |a × b|也等于以ab**為兩邊的平時四邊形的面積。
    叉乘最重要的應用就是創(chuàng)建垂直于平面、三角形、多邊形的向量。

  • 9、向量投影Vector3.Project()
    給定兩個向量v和n,能夠將v分解成兩個分量, 它們分別垂直和平行于向量n,并且滿足 兩向量相加等于向量v,一般稱平行分量為v在向量n上的投影。
    平行分量公式:平行分量 = n(v·n)/|n|^2
    垂直分量公式:垂直分量 = |v| – n(v·n)/|n|^2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容