簡體   English   中英

二維矩陣到三維矩陣

[英]2D Matrix to 3D Matrix

我有2D轉換存儲在普通的'3x3矩陣中。 我怎樣才能將那個格式重新格式化為矩陣,我可以將其轉移到OpenGL上,以便轉換正交形狀,多邊形等。

我如何設置值以保持轉換?

(在一個不相關的說明中,是否有一種快速的方法來反轉3x3矩陣?)

關於變換矩陣的一些解釋:除了最后一列之外,所有列都描述了當前坐標系基礎中新坐標系的方向。 所以第一列是新坐標系的X向量,從當前看,第二列是新的Y向量,第三列是新的Z.到目前為止,這只涵蓋了旋轉。 最后一列用於相對偏移量。 最后一行和最右下一些值用於同質變換。 最好留下最后一行0,...,0,1

在你的情況下,你錯過了Z值,所以我們只是在那里插入一個身份變換,以便傳入的值保持不變。

說這是你的原始矩陣:

xx xy tx

yx yy ty

 0  0  1

該矩陣缺少Z變換。 插入標識意味着:保持Z原樣,不要與其余部分混合。 所以·z = z·= 0,除了zz = 1.這給出了以下矩陣

       ↓

xx xy  0 tx

yx yy  0 ty

 0  0  1  0  ←

 0  0  0  1

如果OpenGL版本低於3核心配置文件,您可以使用glMultMatrix將其應用於當前的OpenGL矩陣堆棧。 請注意,OpenGL按列主要順序對矩陣進行編號,即數組中的索引如下所示(十六進制數字)

0 4 8 c
1 5 9 d
2 6 a e
3 7 b f

這與通常的C表示法相反

0 1 2 3
4 5 6 7
8 9 a b
c d e f

使用OpenGL-3核心,無論如何你都要自己進行矩陣管理和操作。

編輯第二部分問題

如果通過反轉一個意味着找到給定矩陣M的矩陣M ^ -1,則M ^ 1 * M = M * M ^ 1 = 1 對於3×3矩陣,行列式反演方法比Gauss-Jordan選擇需要更少的操作,因此是最有效的方法。 對於4×4矩陣,行列式反演已經比其他方法慢。 http://www.sosmath.com/matrix/inverse/inverse.html

如果你知道你的矩陣是正交的,那么你可以只調換除了底行和最右列之外的左上部分,並否定最右邊列的符號,除了最右下的元素。 這利用了對於正交矩陣M ^ -1 = M ^ T的事實。

只需添加第四行和第二列。 舉個例子

2 3 3
3 2 4
0 0 1

創建以下內容

2 3 3 0
3 2 4 0
0 0 1 0
0 0 0 1

轉換仍然發生在xy平面上,即使它現在處於三維空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM