點的變換和法向量的變換

2021-07-26 21:39:01 字數 1222 閱讀 4185

在三維空間裡,點的變換是通過仿射變換的,所以使用齊次座標的變換矩陣來變換。

不過,當乙個點作矩陣m變換時,這個點的法向量是否也可以使用矩陣m來變換呢?答案是不行,只是在特殊的情況是可以,比如沒有變形的變換。

如果有變形的變換,就需要使用特殊矩陣:m矩陣的逆的轉置矩陣。

之前看過一些文章,說道mesh頂點的空間變換,從本地座標系變換到世界座標系,位置資訊是乘以世界矩陣,而點的法向量要變換到世界空間下,是要乘以世界矩陣的逆矩陣的轉置矩陣。網上有關於這樣做的證明。只是之前在專案中,一開始我並不知道要這樣做,都是乘以世界矩陣,但是用於光照方程,或者說計算球形貼圖座標的時候,也並沒有出錯,最後的效果都是滿意的,疑惑了很久。

最近翻看《實時計算機圖形學》一說,才明白其中原因。因為專案中我用到的世界矩陣中,大部分都是只包括了平移資訊和旋轉資訊,沒有去做scale的變換,都是1:1的比例在繪製。問題就在這裡,因為法向量是乙個方向向量,不是向量,在變換的過程中,把法向量變為齊次座標的時候,w分量要設定為0,也就是忽略了平移變換。所以這個世界矩陣就可以看成是乙個3*3的旋轉舉證,而所有的旋轉矩陣都是正交矩陣。正交矩陣有乙個特性,就是正交舉證的逆矩陣等於他的轉置矩陣。所以正交矩陣的逆矩陣的轉置矩陣就是正交矩陣的轉置矩陣的轉置矩陣,也就是正交矩陣自己(上面一段話很繞口啊)!

所以,這時候的世界矩陣的逆矩陣的轉置矩陣就是世界矩陣,所以我得到了想要的結果。如果出現了scale資訊,且各個軸不是1:1的比例的話。這時候的世界矩陣就不能算是正交的,就會出現問題。

變換 向量和矩陣

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

矩陣的基變換及對應基變換下向量的座標變換

假設在世界座標系中有兩組基分別是e 1e 1 e1 和e 2e 2 e2 兩組基上分別有乙個向量x xx和y yy。那麼 對x xx向量進行一次a aa變換得到向量z zz,再對y yy向量進行一次b bb變換得到同樣得到向量zzz。根據以上描述便得到 x a z y b x cdot a z y ...

向量 矩陣 變換的理解

1.3d繪圖的核心是向量運算 矩陣變換 三角函式 2.矩陣主要是用來描述兩個座標系的關係,通過定義一種運算來將乙個座標系中的向量轉換到另乙個座標系中 3.大多數3d圖形不是真正3d的,我們使用3d的概念和術語來描述物體,然後這些3d資料被 壓扁 在2d的計算機螢幕上。這種將3d資料壓扁成2d資料的處...