一、如何讓物體繞自身中心旋轉和繞過原點的向量旋轉。
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),因此就不會繞物體中心旋轉了。