2017年3月28日 星期二

第六周隨堂

練習期中考題
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);
}

沒有留言:

張貼留言