我的矩陣數學有點生疏,所以我在計算適當的轉換過程時遇到了一些問題,我需要在這裏應用。正確的轉換設置,用於縮放然後旋轉
我有一個全屏幕四邊形,座標範圍從[-1, 1]
兩個方向。我使用非方形紋理紋理這個四邊形,然後縮放我的模型視圖矩陣以調整大小並保留寬高比。我也想旋轉調整大小的四邊形,但我得到拉伸/扭曲的結果。
下面是我經歷的過程:
_gl.viewport(0, 0, _gl.viewportWidth, _gl.viewportHeight); // full-screen viewport
mat4.rotate(_modelview_matrix, degToRad(-1.0 * _desired_rotation), [0, 0, 1]); // rotate around z
mat4.scale(_modelview_matrix, [_shape.width/_gl.viewportWidth, _shape.height/_gl.viewportHeight, 1]); // scale down
注意,這是在WebGL的實現,但是這個過程應該是普遍的。
爲了簡單起見,這一切都是在原點完成的。我很確定我錯過了縮放和旋轉之間的一些關係,但我不確定它是什麼。
如果我想四的大小爲_shape.width, _shape.height
和任意角度有一個旋轉,我缺少什麼?
謝謝!
謝謝!這正是我所需要的。我回去調整我的頂點的位置,以您的示例爲指導。這是我在縮放比例和長寬比保存之間所需的分離。 – Xenethyl 2011-04-03 22:20:23