練習期中考題
glPushMatrix(); //備份矩陣
glTranslatef(x,y,z); //移動
glRotatef(angle,x,y,z); //旋轉
glScalef(x,y,z); //縮放
glBegin(GL_POLYGON); //開始畫多邊形
glNormal3f(nx,ny,nz); //打光法向量
glTexCoord2f(tx,ty); //貼圖座標
glColor3f(r,g,b); //顏色
glVertex3f(x,y,z); //頂點
glEnd(); //結束畫
glPopMatrix(); // 還原矩陣
理解旋轉原理
glTranslatef(x,y,z); glRotatef(angle,x,y,z);
glRotatef(angle,x,y,z); glTranslatef(x,y,z);
glScalef(x,y,z); glScalef(x,y,z);
glBegin(....); glBegin(....);
begin的東西 begin的東西
先換大小 先換大小
在旋轉(自轉方式) 在移動
最後在移動 最後在旋轉(公轉方式)
畫出機械手臂(連關節動)
float mouseX;
void(display)
{
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(mouseX,0,0,1);
glColor3f(1,0,0);
glutSolidTeapot(0.3);
glPushMatrix();
glTranslatef(0.5,0.4,0);
glRotatef(mouseX,0,0,1);
glTranslatef(0.41,-0.5,0);
glColor3f(1,1,0);
glSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y);
{
mouseX=x;
glutPostRedisplay();
}
int main(int argc,char * argv[])
{
....
...
glutMotionFunc(motion);
}
沒有留言:
張貼留言