零基礎學圖形學(13) 幾何知識——法向量變換

(1)什麼是法向量

我們在第一篇的時候簡單地提到了什麼是法向量。一個表面P點的法向量是一個垂直該P點平面的向量。我們進入到幾何基礎之後會學習到更多的關於法向量的計算。現在假設我們知道tangent T和bi-tangent B,那麼我們可以用下面的公司進行計算P點的法向量。

N = T x B

記住我們所說的叉乘操作,它是反結合率的,也就是說交換兩個參數的位置會得到相反的結果。換句話說T x B = N 和B x T = -N。實際上,它意味着我們計算法向量的時候要小心,讓它可以指向平面向外(當我們講到陰影的時候會詳細介紹)。

(2)法向量的變換

你可能會問爲什麼不直接將法向量當做向量來看待。爲什麼我們需要花費許多時間區別對待它。在之前的章節中,我們已經學習了使用矩陣乘法來進行點和向量的變換。現在的問題是對於法向量,我們傾向於和點和向量一樣的變換來對待它們。實際上,這個有時候是對的,比如,當想象進行對角的縮放時,也就是各軸的縮放稱比例的。但是現在讓我們考慮一種情況,對一個物體進行不正式的縮放,讓我們通過點A = (0, 1, 0)和B = (1, 0, 0)畫一條線段,如下圖所示。

如果你畫另外一條從原點到(1, 1, 0)的線段,那麼你可以看到這條線垂直於我們的平面。讓它變成我們的法向量(從技術上來說,我們應該將這個向量單位化,但是講這個問題的時候單位化並不對結果有什麼影響)。現在我們考慮使用一個非正式的縮放對這個平面。

這個矩陣使得x軸的座標放大兩倍,而其它軸的座標不會改變。應用到我們的例子中,我們可以得到A' = A * M,它使得A' = (0, 1, 0)和B' = B * M,B點座標爲(2, 0, 0).相似地,如果我們計算法向量 N' = (2, 1, 0).現在我們畫出經過變換的兩條線。從上圖中我們可以看到N'不再垂直於A'B'.實際上,法向量的變換,並不是簡單地程序變換點和向量的使用的矩陣。而是乘以矩陣的倒置的轉置。

在考慮數學證明之前,我們首先來解釋爲什麼這個答案對這個場景有效。第一,我們知道法向量代表的是方向,因此和向量一樣,它們不會因爲平移而改變。換句話說,我們可以忽略掉第四列的座標,和第四行的的座標。僅僅只是考慮右上[3 x 3]的矩陣,我們知道它們是用來旋轉和縮放的。我們也已經解釋了一個正交矩陣的轉置也是它的倒置。那個旋轉的矩陣也是正交的。換句話說,如果Q是正交的矩陣,我們可以寫成下面的樣式:

正交矩陣Q的倒置後轉置還是矩陣Q。換句話說,這沒有改變任何東西。

矩陣這章沒有翻譯好,如果想要學習好的話可以直接看數學工具書,直接翻譯感覺摸不着頭腦。

只要記住上面那個求法向量的公式就可以了。目前來說。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章