android开发之OpenGL(三)
注意:
// 重置当前的模型观察矩阵,让坐标原点恢复到(0,0,0);
gl.glLoadIdentity();
// 这句话执行完后,坐标原点发生变化,坐标原点左移 2.0 单位,并移入屏幕 6.0,直到下一句gl.glLoadIdentity();然后恢复到屏幕中心
gl.glTranslatef(-2.0f, 0.0f, -6.0f);
1. 由上面的解释后,就不难理解设置旋转的中心轴的的坐标了。
2. 举例说明。
1 private float trianvertices[] = { 0.0f, 2.0f, 0.0f, // 上顶点 2 -2.0f, -2.0f, 0.0f, // 坐下点 3 2.0f, -2.0f, 0.0f, // 右下点 4 }; 5 6 ... ... 7 8 // 左移 2.0 单位,并移入屏幕 6.0,相当于原点向左移了2个单位 9 gl.glTranslatef(-2.0f, 0.0f, -6.0f); 10 11 ... ... 12 //所以这时候垂直方向的旋转中心轴的两点坐标如下 13 private float linetrianvertices[] = {0.0f, 3.0f, 0.0f, 14 0.0f, -3.0f, 0.0f}; 15 //这块的点不固定,只要x,z轴不变就OK 16 17 18 //设置旋转 19 gl.glRotatef(rotateTri, 0.0f, 1.0f, 0.0f);
其中:gl.glRotatef (Angle, Xvector, Yvector, Zvector)
Angle 通常是个变量代表对象转过的角度。 Xvector,Yvector和 Zvector三个参数则共同决定旋转轴的方向。
比如 (1,0,0)所描述的矢量经过 X 坐标轴的1个单位处并且方向向右。 (−1,0,0)所描述的矢量经过X坐标轴的1个单位处,但方向向左。
我要青春像陈孝正一样,不能有一毫米的误差!
我要青春像合伙人一样,为了自尊而战!