頂點法向量的矩陣變換

2021-07-15 01:10:20 字數 1199 閱讀 4542

本文參考 introduction to 3d game programming with directx 11
在計算機圖形學中法向量的變化跟一般頂點的變化有一定的區別,假設我們有乙個切向量u=v

1−v0

u=v_1-v_0

u=v1​−

v0​,u

uu與法向量n

nn垂直。如果我們使用乙個矩陣a

aa來進行非均勻縮放,我們可以在下圖中看到由圖(a)到圖(b),變換後的切向量ua=

v1a−

v0aua=v_1a-v_0a

ua=v1​

a−v0

​a與變換後的法向量nana

na並不垂直。

所以我們的問題就是,給乙個變換矩陣a,這個矩陣用來變換頂點和法向量,我們將找到乙個變換矩陣b,使得用b變換後的法向量能夠與變換後的切向量垂直,(ua

⋅nb=

0)(ua\cdot nb=0)

(ua⋅nb

=0)。我們將使用下面的方法推導出轉換公式:

這裡b=(a

−1)t

b=(a^)^t

b=(a−1

)t(a

aa的逆反矩陣)能夠讓法向量垂直於變換後的切向量uaua

ua。而a

aa的逆矩陣a−1

=1de

t(a)

a∗a^=\fraca^*

a−1=de

t(a)

1​a∗

使用directx實現**如下:

頂點法向量的計算

在opengl程式設計中,三維模型頂點法向量的計算很重要,它直接影響著顯示的效果 本人接觸opengl時間不長,很長一段時間一直困惑於法向量計算的問題,後經仔細研究並找了些資料才基本實現了法向量的計算演算法,現總結如下,希望對初學者能有些幫助。大家知道,在opengl中頂點 三角形模型對光照的反射取...

計算三角網格的頂點法向量

原文 前段時間基本上完成了場景編輯器的大部分工作,現在已經可以用它生成自己需要的網格模型了。目前,在編輯器中對生成的網格是指定面的法向量,這對於用場景生成bsp等相關操作已經足夠了。不過為了測試bsp的健壯性,準備實現一下基於bsp的光線跟蹤演算法來看看效果,於是只是指定面的法向量就顯得不太夠用,因...

變換 向量和矩陣

主要使用了 示例程式繪製了乙個在螢幕中間旋轉的線框花托。modelviewprojection.cpp opengl superbible demonstrates opengl the modelviewprojection matrix program by richard s.wright j...