如果我有一個表示二維旋轉,平移或縮放(或其組合)的3x3矩陣,有一種方法是將其與常量或其他矩陣相乘以計算部分變換矩陣。例如,如果我知道矩陣是一個平移矩陣,我可以簡單地乘以m[0][2]
和m[1][2]
某個常數(例如0.25)來創建1/4(m)平移矩陣。部分矩陣變換
是否有一個通用的方法,將工作,無論矩陣?如果不是,是否有單獨的方法可用於列出的每種類型(旋轉和縮放)。
如果我有一個表示二維旋轉,平移或縮放(或其組合)的3x3矩陣,有一種方法是將其與常量或其他矩陣相乘以計算部分變換矩陣。例如,如果我知道矩陣是一個平移矩陣,我可以簡單地乘以m[0][2]
和m[1][2]
某個常數(例如0.25)來創建1/4(m)平移矩陣。部分矩陣變換
是否有一個通用的方法,將工作,無論矩陣?如果不是,是否有單獨的方法可用於列出的每種類型(旋轉和縮放)。
這與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
Ť * 小號是複合變換該
現在,讓我們覺得什麼是相反的順序執行的轉換:小號 * 牛逼
注意到,現在的比例將縮放翻譯後的座標 - 與第一種情況不同。
現在您正在詢問轉換操作的操作,而不是矢量。我會嘗試用這樣的:獲得載體V3:
這將導致在矢量原尺度,翻譯成「縮尺翻譯」。這通常寫爲:
V3 = 小號-1 * Ť * 小號 * v
其中小號-1是逆矩陣(S -1 * S = I,單位矩陣)執行相反的操作。
小號-1 * 牛逼 * 小號是你正在尋找的轉變。這種方法非常普遍。
我不確定你是否看過這個問題,我知道如何執行轉換,我不知道如何獲取表示某個轉換的矩陣,並使其移動1/4或1/10的距離 –
可能不是...讓我們看看進一步的編輯! – Sigismondo
我認爲編輯解釋瞭如何縮小翻譯的範圍,但翻譯在任何情況下都很容易擴展,難度更大的是旋轉 –