glLoadIdentity():调用glLoadIdentity()之后,您实际上将当前点移到了屏幕中心,X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从里至外。OpenGL屏幕中心的坐标值是X和Y轴上的0.0f点。中心左面的坐标值是负值,右面是正值。移向屏幕顶端是正值,移向屏幕底端是负值。移入屏幕深处是负值,移出屏幕则是正值。
glTranslatef(x, y, z):
glTranslatef(x, y, z)沿着 X, Y 和 Z 轴移动。根据前面的次序,下面的代码沿着X轴左移1.5个单位,Y轴不动(0.0f),最后移入屏幕6.0f个单位。注意在glTranslatef(x, y, z)中当您移动的时候,您并不是相对屏幕中心移动,而是相对与当前所在的屏幕位置。glTranslatef(-1.5f,0.0f,-6.0f); // 左移 1.5 单位,并移入屏幕 6.0
void glPointSize(GLfloat size):
设置点的大小,默认为1个像素,但也可以通过该函数改变,size必须大于0.0f,默认值是1.0f,单位是像素。
glRotatef(float angle, float x, float y, float z):
angle是旋转角度,1.0相当于1度,x, y, z是轴向量,即以向量(x, y, z)为轴旋转angle度。
旋转方向用右手法则判断,大拇指指向向量方向,四指握拳的方向即为旋转方向。如果angle为负数,旋转方向相反。
void basic_pic::airplane(float x, float y, float z)
{
float r = 90;
glTranslatef(x, y, z);
// glRotatef(-r, 0, 1, 0);
glColor3f(1.0, 1.0, 1.0); // 白色
// 螺旋桨
auxSolidBox(1.6, 0.3, 0.05);
// 机头
glTranslatef(0, 0, -0.5);
auxSolidSphere(0.5); // 球(半径)
// 机身
//glRotatef(90, 1, 0, 0);
glTranslatef(0, 0, 0);
auxSolidCylinder(0.5, 2); // 圆柱(半径,高)
}
阅读(1848) | 评论(0) | 转发(1) |