物體旋轉的問題gl.glTranslatef,gl.glRotatef如何饒物體的中心軸旋轉


一、如何讓物體繞自身中心旋轉和繞過原點的向量旋轉。

opengl的gl.glTranslatef確定繪圖原點,旋轉函數是以經過繪圖原點的那條向量軸旋轉的,當我們的正方形的坐標如下:

private FloatBuffer quaterBuffer1 = BufferUtil.floatToBuffer(new float[]{
 
-one,-one,0,
one,-one,0,
one,one,0,
-one,one,0,
});
在繪圖的時候加上:
             gl.glLoadIdentity();
//右移 1.5 單位,並移入屏幕 4.0
gl.glTranslatef(0f, 0f, -4f);
//旋轉矩陣
gl.glRotatef(rotateTri, 0.0f, 3.0f,0f);
會發現繪制的正方形繞它自己中心旋轉,因為此時將遠點移到了物體的中心。如果正方形如下:
private FloatBuffer quaterBuffer2 = BufferUtil.floatToBuffer(new float[]{
 
-one,-one, one,
one,-one, one,
one,one, one,
-one,one, one,
 
});
旋轉時候如上面的一樣:
             gl.glLoadIdentity();
//右移 1.5 單位,並移入屏幕 4.0
gl.glTranslatef(0f, 0f, -4f);
//旋轉矩陣
gl.glRotatef(rotateTri, 0.0f, 3.0f,0f);
就會發信正方形會繞着經過(0,0,4)的向量(0,3,0)旋轉,即不是繞物體中心旋轉的,因為原點移到了(0,0,4)而此時物體的z坐標都為1因此物體中心在(0,0,3),因此就不會繞物體中心旋轉了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM