2016-10-02 140 views
0

我想分析我的4*4 ModelView Matrix的每個組件。瞭解ModelView矩陣

我開始知道ModelView Matrix的起始3*3存儲旋轉。 enter image description here

如果我想我的對象有一個no rotation with respect to camer所以我的模型視圖矩陣看起來像這樣

enter image description here

如何改變我的模型視圖矩陣,如果我想有NO Translation or Scaling?任何人都可以解釋這背後的數學。

回答

1

這個問題比你意識到的要難一些。 雖然我們可以確定矩陣的元素有助於X軸縮放,Y軸縮放,旋轉,平移等,但是隨着變換的迭代應用,這些變得混雜起來。爲了取回組件,你必須對矩陣進行QRT分解,這將會超出你的水平(並不是很多,但是當你對矩陣的基本理解仍然有點不穩定時,這並不是你期望理解的) 。

2

左上角的3×3定義了一個座標系的基向量。這不僅僅是旋轉,還包括縮放,剪切和類似的東西。想象一下你可以伸展三個橡膠腿,並可以朝任何方向傾斜。這是左上角的3×3。如果要旋轉座標系,則將標記爲X,Y,Z的樹腿分別旋轉到您希望由其他座標系中的該名稱標記表示的方向。如果你想擴展事物,你可以伸展每條腿。如果你讓它們不垂直的東西被剪斷。這就是它的全部。

但是,因爲所有內容(除了翻譯)都混合在左上方的3×3部分中,所以從中「提取」單個轉換並不是微不足道的。要遵循的粗略步驟如下:

  1. 主軸變換Principal axis theorem以查找可能已應用的任何各向異性縮放的主軸。
  2. 分解成剪切和旋轉部分。

翻譯恰好坐在最右邊一列。最下面的一行必須是[0 0 0 1],以便它上面的行中發生的事情以所需的方式工作。

+0

Actuall我試圖解決這個問題http://stackoverflow.com/questions/39814688/rotating-an-object-around-an-axis?noredirect=1#comment66921299_39814688 – user6250837

+0

你能指導我在這... – user6250837