我正在使用C++的OpenGL ES應用程序。我使用幾個包裝Obj-c類在iOS上運行代碼,使我能夠使用手勢(如平移,捏合,旋轉)。應用多個轉換來查看
我使用正射投影。該代碼現在只繪製了一個簡單的四邊形,我希望能夠使用用戶手勢對其應用任何轉換。這意味着移動它,放大和縮小,旋轉(一些其他派生的手勢,如使用雙擊等縮放)。
我認爲這將是好的,如果我只是存儲起源,規模和角度浮動和構造矩陣使用其中的每一個,然後乘。這適用於簡單的翻譯和縮放,但是,我無法圍繞任何一點旋轉。現在我無法弄清楚我需要什麼才能圍繞某個點旋轉,翻譯,圍繞不同點旋轉更多。
下面是例子,我如何初始化我的矩陣
Mat4 Mat4::translation(float tx, float ty)
{
float a[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1 };
return Mat4(a);
}
Mat4 Mat4::rotation(float angle)
{
float a[16] = { cosf(angle), sinf(angle), 0, 0, -sinf(angle), cosf(angle), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
return Mat4(a);
}
如何申請任意數量轉換爲2D視圖在OpenGL(ES),使用矩陣?這些轉換是由手勢(平移,捏,旋轉)引起的。對於捏和旋轉,我知道屏幕座標中的數量和中心點。
感謝您的回答。我已經知道這一點,但如果我以後需要再做這件事,該怎麼辦?我應該把這個操作的結果保存在一個矩陣中,然後再乘以另一個旋轉?我不知道這是否會起作用。 – davidv