【3D數學基礎:圖形與游戲開發】筆記 第4~5章 向量
參考資料&原文鏈接
參考書籍:【3D數學基礎:圖形與游戲開發】 ISBN7-302-10946XTP.7262
(美) etcher Dun著、(美) an Arberry 清華大學出版社
向量有關基礎概念
向量
既有大小又有方向的量。
標量
只有大小沒有方向的量。例如1,23,-1,0。
行向量
橫着寫的向量。例如:a = [2,10,7,4]。
列向量
豎着寫的向量。例如:
向量的維度
即向量有的成員的個數。例如 a = [1,4,13],則a的維度是3。
向量的幾何意義
從幾何意義上說,向量是有大小和方向的有向線段。注意:向量我們一般只關心它的大小和方向,不關心起點和終點的位置。例如:有兩個向量指向的方向一致、大小相同,則我們認為它們是同一個向量,因為起點和終點之間的相對位置沒有改變。它看起來就像一支箭,對嗎?這是用圖形描述向量的標准形式,因為向量定義的兩個要素—大小和向都被包含在其中。有時候需要引用向量的頭和尾,如圖4.2所示,箭頭是向量的末端(向量“結束”於,箭尾是向量的“開始”。
向量的表達
向量中的數表達了向量在每個維度上的有向位移。例如,圖4.3中的2D向量列出的是沿x坐標方向和y坐標方向的位移:
向量與點
“點”有位置,但沒有實際的大小或厚度。上一節中學習了向量有大小和方向,但沒有位置。所以使用“點”和“向量”的目的完余不同。“點”描述位置,而“向量”描述位移。圖4.6比較了兩幅圖。一幅在第一章中用於展示點的位置,另一幅是本章前一節中展示向量的,它看上去顯示出點和向量間有某種很強的聯系。
零向量
任何集合,都存在加性單位元x,對集合中任意元素y,滿足y+x=y。(這里使用的字體並不意味着只是標量集合,而是對任意集合。)
n維向量集合的加性單位元就是n維“零向量”它的每一維都是零。我們用黑粗體的零表示任意維零向量,如:
零向量的幾何意義
零向量非常特殊,因為它是值為零的向量。對於其他任意數m,存在無數多個大小(模)為m的向量。它們構成了一個圓。如圖5.1所示。零向量也是唯一個沒有方向的向量。雖然在圖中表示零向量用的是一個點,但是認為零向量就是一個點並不准確,因為零向量沒有定義某個位置。應該認為零向量表示的是“沒有位移”,就像標量零表示的是“沒有數量”一樣。
負向量
對於任意集合,元素x的加性逆元為x,其與x相加等於加性單位元。簡單的說就是x+(-x)=0,(再次提醒,盡管變量的字體表示標量,但我們討論的是一般集合)從另一方面來說,集合中的元素能求負。負運算符也能應用到向量上。每個向量v都有一個加性逆元-v,它的維數和v的一樣,滿足v+(-v)=0。要得到任意維向量的負向量,只需要簡單地將向量地每個分量都變負即可。數學表達式為:
將此法則運用到2D、3D、4D特例,有:
負向量的幾何意義
向量變負,將得到個和原向量大小相等,方向相反的向量。如圖5.2所示:
向量的有關計算
數學中專門研究向量的分支稱作線性代數。曾經提到過,向量在線性代數中只是一個數組。這個軸象念使我們制決許數學問願如線性代數中,可以用單向和如解有n個未如的城性方程組。線性代數是一個非常有趣並且應用廣泛的研究領域,但它與3D數學關注的領域並不相同。
向量大小(長度或模)
前面討論過,向量有大小和方向。您可能已經注意到了,大小和方向都沒有在向量中明確地表示出來。如2D向量{3,4}的大小既不是3,也不是4,而是因為向量的大小沒有明確表示,所以需要計算。向量大小也常被稱作向量的長度或模。
運算法則
幾何意義
我們對公式5.4作更深入的研究。對2D中的任意向量v。能構造一個以v為斜邊的直角三角形如圖5.3所示。注意直角邊的長度分別為分的絕對值。向量的分量可以為負,因為它們是有符號位移,但長度總是正的。由勾股定理可知,對於任意直角三角形,斜邊長度的平方等於兩直角邊長度的平方和。應用到圖5.3中就是:
向量與標量的乘除
雖然標量與向量不能相加,但它們能相乘。結果將得到一個向量,與原向量平行,但長度不同或方向相反。量與向量的乘法非常自接,將向量的每個分量都與標量相乘即可。標量與向量乘的順序並不重要但經常把標量寫在左邊,數學表述為:
向量也能除以非零標量,效果等同於乘以標量的倒數:
示例:
注意
-
標量與向量相乘時,不需要寫乘號。將兩個量挨着寫即表示相乘(常將標量寫在左邊)。
-
標量與向量的乘法和除法優先級高於加法和減法。例如,3a+b是(3a)+b,而不是3(a+b)。
-
標量不能除以向量,並且向量不能除以另一個向量。
-
負向量能被認為是乘法的特殊情況,乘以標量-1。
幾何意義
幾何意義上,向量乘以標量k的效果是以因子k縮放向量的長度。例如,為了使向量的長度加倍,應使向量乘以2。如果k<0,則向量的方向被倒轉。圖5。4展示了向量被多個不同因子k乘的效果:
當k>=1時,向量長度按原方向長度加倍。
當0<k<1時,向量長度按原方向縮小。
當0=k時,向量變為0。
當0>k時,向量的方向將倒轉,與乘以負向量相同。
標准化(歸一化)向量:法線
對於許多向量,我們只關心它的方向而不關心其大小。如:“我面向的是什么方向?",在這樣的情況使用單位向量將非常方便。單位向量就是大小為1的向量,單位向量終常也被稱作標准化向量或更簡單地稱為“法線”。
運算法則
幾何解釋
2D環境中,如果以原點為尾面一個單位向量,那么向量的頭將接觸到四心在原點的單位圓(單位圓的半徑為1),3D環境中,單位向量將觸到單位球。圖5.5中,用灰色箭頭表示了若干2D向量,黑色箭頭表示這些向量的標准化向量。
單位向量非常有用,在計算向量點乘的時候分母就為1了,這將大大簡化我們的計算。特別是到了后面章節的幾何圖元和幾何檢測的時候,會及其頻繁的使用單位向量。
向量的加法和減法
如果兩個向量的維數相同,那么它們能相加,或相減。結果向量的維數與原向量相同。向量加減法的記法和標量加減法的記法相同。
運算法則
示例:
注意
- 向量不能與標量或維數不同的向量相加減。
- 和標量加法一樣,向量加法滿足交換律,但向量減法不滿足交換律。永遠有a+b=b+a,但a-b=(-a),僅當a-b時,a-b=b-a。
幾何意義
向量a和b相加的幾何解釋為:平移向量,使向量a的頭連接向量b的尾,接着從a的尾向b的頭畫個向量。這就是向量加法的“三角形法則”。有的也使用“平行四邊形法則”,是一樣的。
向量的減法與之類似,如圖所示。圖證明了向量加法滿足交換律,也證明減法不滿足交換律。注意,向量a+b和向量b+a相等,但向量d-c和c-d的方向相反,因為d-c=-(c-d)。
三角形法則能擴展到多個向量的情形中,如圖所示:
一個點到另一個點的向量
計算一個點到另一個點的位移是種非常普遍的需求,可以使用三角形法則和向量減法來解決這個題。圖展示了怎樣用b-a計算a到b的位移向量:
如上圖所示,為了計算a到b的向量,將點和點b解釋為從原點開始的向量,接着使用三角形法則事實上,在有些書中,向量確實被定義為兩個點的減法。
注意,減法b-a代表了從a到b的向量。簡單的求“兩點之間”的向量是沒有意義的,因為沒有指明方向。求一個點到另一個點的向量才有實際意義。
向量的距離
首先,定義距離為兩點間線段的長度。因為向量是有向線段,所以從兒何意義上說間的距離等於從一個點到另一個點的向量的長度。現在,讓我們導出3D中的距離公式,先計算從在583節中我們已經學過如何進行這樣的計算了。在3D情況中:
例子:
向量點乘(內積)
記法ab中的點號。與標量與向量的乘法一樣,向量點乘的優先級高於加法和減法標量乘法和標量的乘法經常可以省略乘號,但在向量點乘中不能省略。點乘號量點乘就是對應分量乘積的和,其結果是個標量:
例子:
注意:點乘滿足交換律:b · a = a · b。
幾何意義
般來說,點乘結果描述了兩個向量的“相似”程度,點乘結果越大,兩向量越相近。幾何解釋更加直觀:
點乘結果解釋
結果解釋:
- cos0° = 1,結果->1(即>0)時,說明兩向量較接近。例如a和b。
- cos90° = 0,結果->0(即=0)時,說明兩向量垂直。例如a和d。
- cos180° = -1,結果->-1(即<0)時,說明兩向量方向大致相反。例如a和e。
注意:
- 向量大小並不影響點乘結果的符號,所以上表是和a、b大小無關的。
- 如果a、b中任意一個為零,那么ab的結果也等於零。因此,點乘對零向量的解釋是,零向量和任意其他向量都垂直。
向量投影
向量叉乘(叉積/法線/法向量)
和點乘一樣,術語“又乘”來自記法a×b中的叉號。這里要把叉乘號寫出來,不能像標量乘法那樣省略它。叉乘公式為:
注意:
- 叉乘的運算優先級和點乘一樣,乘法在加減法之前計算。當點乘和叉乘在一起時,叉乘優先計算a(bxc),因為點乘返個標量,同時標量和向量間不能叉乘,所以(a·b)xc沒有定義。運算a·(bxc)稱作三重積。下節將給出此類運算的一些特殊性前面提到。
- 向量叉乘不滿足交換律。事實上,它滿足反交換律:axb=-(bxa)。
- 又乘也不滿足結合律。般而言,(axb)×c≠ax(bxc)。有關叉乘的更多代數法則將在下節給出。
幾何意義
叉乘的方向
a×b垂直於a是垂直於a、b有兩個方向。axb指向哪個方向呢?通過將a的頭與b的尾相接,並檢査從a到b是順時針還是逆時針,能夠確定a×b的方向。在左手坐標系中,如果和b呈順時針,那么a×b指向您。如果a和b呈逆時針,a×b遠離您。在右於坐標系中,恰好相反。如果和b呈順時針,a×b遠離您,如果a和b呈逆時針,a×b指向您。
線性代數公式
本文標簽
游戲開發
、3D數學基礎:圖形與游戲開發
、Unreal Engine
、游戲開發基礎
、數學
、游戲開發數學基礎
、書籍筆記
、筆記
。