2016-02-09 121 views
0

如果我有一個表示二維旋轉,平移或縮放(或其組合)的3x3矩陣,有一種方法是將其與常量或其他矩陣相乘以計算部分變換矩陣。例如,如果我知道矩陣是一個平移矩陣,我可以簡單地乘以m[0][2]m[1][2]某個常數(例如0.25)來創建1/4(m)平移矩陣。部分矩陣變換

是否有一個通用的方法,將工作,無論矩陣?如果不是,是否有單獨的方法可用於列出的每種類型(旋轉和縮放)。

回答

1

這與OpenGL 3D transformations只是同源的。所以是的,只需省略行/列,您就可以用3x3矩陣產品表示2D平移,旋轉和縮放。

例如:

翻譯:

|1 0 Tx| |x| | x+Tx | 
|0 1 Ty|*|y| = | y+Ty | 
|0 0 1 | |1| | 1 | 

轉速:

|cos(w) -sin(w) 0| |x| | x*cos(w)-y*sin(w) | 
|sin(w) cos(w) 0|*|y| = | x*sin(w)+y*cos(w) | 
| 0  0  1| |1| |   1   | 

規模:

|Sx 0 0| |x| | Sx*x | 
|0 Sy 0|*|y| = | Sy*y | 
|0 0 1| |1| | 1 | 

如果要合併更多的變換它的possibl e申請更多。假設你有一個比例操作,S和一個翻譯,T

現在給出一個向量V0你可以擴展它:V1 = 小號 * V0

比你可以把它翻譯:

V2 = 牛逼 * v1

t帽子是:

V2 = Ť * 小號 * V0

Ť * 小號是複合變換該

  1. 分的矢量
  2. 翻譯它

現在,讓我們覺得什麼是相反的順序執行的轉換:小號 * 牛逼

  1. 轉化載體
  2. 規模是

注意到,現在的比例將縮放翻譯後的座標 - 與第一種情況不同。

現在您正在詢問轉換操作的操作,而不是矢量。我會嘗試用這樣的:獲得載體V3

  1. 進行倒規模經營
  2. 翻譯倒縮放矢量
  3. 規模是

這將導致在矢量原尺度,翻譯成「縮尺翻譯」。這通常寫爲:

V3 = 小號-1 * Ť * 小號 * v

其中小號-1逆矩陣S -1 * S = I,單位矩陣)執行相反的操作。

小號-1 * 牛逼 * 小號是你正在尋找的轉變。這種方法非常普遍。

+0

我不確定你是否看過這個問題,我知道如何執行轉換,我不知道如何獲取表示某個轉換的矩陣,並使其移動1/4或1/10的距離 –

+0

可能不是...讓我們看看進一步的編輯! – Sigismondo

+0

我認爲編輯解釋瞭如何縮小翻譯的範圍,但翻譯在任何情況下都很容易擴展,難度更大的是旋轉 –