4x4矩陣求逆

2021-07-11 01:22:14 字數 903 閱讀 5275

最近學習自定義光柵化渲染器,在學習矩陣變換的時候,求矩陣的逆矩陣的時候遇到的一些問題,特記錄在此。

typedef struct matrix3x3_type // 3×3矩陣;};

} matrix3x3, *matrix3x3_ptr;

typedef struct matrix4x4_type //4×4矩陣;};

} matrix4x4, *matrix4x4_ptr;

// 求 3x3 矩陣的逆矩陣

int _cppyin_math::matrixinverse(matrix3x3_ptr m, matrix3x3_ptr mi)

// 求4x4 矩陣的逆矩陣

// m 源矩陣 mi 源矩陣的逆矩陣

int _cppyin_math::matrixinverse(matrix4x4_ptr m, matrix4x4_ptr mi)

如上,是求3x3矩陣和4x4矩陣的逆矩陣,大家都知道矩陣的逆 a-1 = a*/|a|,不知道的可以去看下線代課本。

前面3*3矩陣求法是一般的求法,先求矩陣的行列式|a|,如果不等於0的話,則有逆矩陣。接著求a*(伴隨矩陣),這個求法是先求a的代數余子式,再轉置即可。

但是在求4x4矩陣的時候,前3行3列求解步驟和上面求3x3的逆是一樣的,第四列,我們賦值0,0,0,1。因為在我們這個渲染器中頂點是以行向量的形式存在的,所以,第四列直接賦值,0,0,0,1,第四行才代表的是平移矩陣。如果是列向量的話,則正好相反,第四列代表平移矩陣,第四行賦值0,0,0,1。

言歸正傳,第四行的前3個引數的求法是不是有點詭異。是的,我們要說的就是這3個數是怎麼求出來的。

4X4矩陣鍵盤掃瞄程式

4x4矩陣鍵盤掃瞄 1.4根行線的gio均設為output,根列線的gio均設為input 2.4根行線的gio分別置為0111 1011 1101 1110,讀逐一讀取列線gio的值,可確定是哪乙個按鍵 電路圖如下 注意 1.圖中用作輸入的gio,一定要有乙個上拉電阻。2.晶元中的每乙個引腳是否用...

Unity 中的4X4矩陣

1 為什麼模型的變換是4x4而不是3x3的矩陣變換?我們知道,在空間裡的點的座標是vector3型別的,即是三維的,那為什麼要用4維矩陣才能進行旋轉平移和縮放呢?要解決這個問題就要從變換的本質來談起。我們知道,在變換裡分為線性變換和非線性變換,比如 我們対模型進行縮放,那麼縮放後的點座標是 pn a...

4X4矩陣鍵盤掃瞄程式

4x4矩陣鍵盤掃瞄 1.4根行線的gio均設為output,根列線的gio均設為input 2.4根行線的gio分別置為0111 1011 1101 1110,讀逐一讀取列線gio的值,可確定是哪乙個按鍵。電路圖例如以下 注意 1.圖中用作輸入的gio,一定要有乙個上拉電阻。2.晶元中的每個引腳是否...