2015年3月26日 星期四

Week05_洪振瑋_02160234

今天目標:

1.自製3D模型
2.利用Mouse旋轉
3.回家作業


(1)
  今天接續上禮拜的程式,剛開始還只有讓甜甜圈轉,
  最後目標是能用滑鼠控制 讓它選轉 自由視角


(2)
    畫出一個正方形
    glutIdleFunc(display);
    讓它沿著Y軸重複執行
(3)
    複製另一個 畫出實心正方形
    
      ↓↓↓  畫出兩個正方形
     void display()
    {
    glClear(GL_COLOR_BUFFER_BIT);

    glPushMatrix();

        glRotatef(angle,0,1,0);
        glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2,0.8);
            glVertex3f( 0.2,-0.2,0.8);
            glVertex3f(-0.2,-0.2,0.8);
            glVertex3f(-0.2, 0.2,0.8);
        glEnd();
    glPopMatrix();

    glPushMatrix();

        glRotatef(angle,0,1,0);
        glBegin(GL_POLYGON);
            glVertex3f( 0.2, 0.2,-0.8);
            glVertex3f( 0.2,-0.2,-0.8);
            glVertex3f(-0.2,-0.2,-0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();
    glPopMatrix();

    glFlush();

    angle +=0.05;
    }
    畫完可以產生兩個正方體無限轉的感覺
--------------------------------------------------------------------------------------------------------------------------

(1)
    畫出黃色長方體 
    

 (2)
   加上畫黑線程式碼
   看起來比較有立體感

  ///這區是畫黃色部分
        glBegin(GL_POLYGON);
            glVertex3f( 0.2, 0.2,0.8);
            glVertex3f( 0.2,-0.2,0.8);
            glVertex3f(-0.2,-0.2,0.8);
            glVertex3f(-0.2, 0.2,0.8);
        glEnd();

        glBegin(GL_POLYGON);
            glVertex3f( 0.2, 0.2,-0.8);
            glVertex3f( 0.2,-0.2,-0.8);
            glVertex3f(-0.2,-0.2,-0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();

        glBegin(GL_QUAD_STRIP);
            glVertex3f( 0.2, 0.2,0.8);
            glVertex3f( 0.2, 0.2,-0.8);

            glVertex3f( 0.2,-0.2,0.8);
            glVertex3f( 0.2,-0.2,-0.8);

            glVertex3f(-0.2,-0.2,0.8);
            glVertex3f(-0.2,-0.2,-0.8);

            glVertex3f(-0.2, 0.2,0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();

       
 

  接著畫出黑線
  ///  下面部分是畫出黑線
         glColor3f(0,0,0);
         glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2,-0.8);
            glVertex3f( 0.2,-0.2,-0.8);
            glVertex3f(-0.2,-0.2,-0.8);
            glVertex3f(-0.2, 0.2,-0.8);
         glEnd();

          glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2,0.8);
            glVertex3f( 0.2,-0.2,0.8);
            glVertex3f(-0.2,-0.2,0.8);
            glVertex3f(-0.2, 0.2,0.8);
          glEnd();

          glBegin(GL_LINES);
            glVertex3f( 0.2, 0.2,0.8);
            glVertex3f( 0.2, 0.2,-0.8);

            glVertex3f( 0.2,-0.2,0.8);
            glVertex3f( 0.2,-0.2,-0.8);

            glVertex3f(-0.2,-0.2,0.8);
            glVertex3f(-0.2,-0.2,-0.8);

            glVertex3f(-0.2, 0.2,0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();


(3)
    新增讓滑鼠可以移動物件

      void motion (int x, int y)
          {
              printf("%d %d\n",x,y);
              angle =x;
              angle2 =y;
           }


      main裡面新增
         glutMotionFunc(motion);
   


(4)
      讓物件看起來有立體感
     
      在Main裡面新增
      glutInitDisplayMode(GLUT_DEPTH);  
      ///讓顯示的WINODE有3D深度的功能
   
      在display函式中新增
      glEnable(GL_DEPTH_TEST);
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

沒有留言:

張貼留言