2017年4月10日 星期一

Week 06 一權的上課筆記

(1)期中模擬考
☆程式碼+註解
    glPushMatrix();/備份矩陣
        glTranslatef(x ,y ,z );//移動           ---
        glTotatef(angle ,x ,y ,z );//旋轉          | --->尾巴是" f  "
        glScalef(x ,y ,z );//縮放                 ---
        glBegin();//開始畫                
           glColor3f(r ,g ,b );//顏色
           glNormal3f(nx ,ny ,nz );打光法向量  ☆ 
           glTexCoord2f(tx ,ty )//頂點  
           glVertex3f(x ,y ,z );//結束 
           gPMatrix();//還原矩陣
(2)T-R-T
1.旋轉茶壺
STEP:
    1.加入程式碼在 main 函式
          glutIdleFunc(display);






    2.宣告 float angle=0;
    3.加入程式碼
---->移動
---->旋轉




(3)打光
STEP:
1.刪除多餘的程式碼留下要用的部分

      static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
    glutSolidTeapot(0.3);

    glPopMatrix();

    glutSwapBuffers();
}
2.留下光源的部分(作用:宣告光源及調整光的方向)

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, -5.0f, 0.0f, 0.0f };

const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };

3.成果如下

 










-----------------------------------------------------我是分隔線-------------------------------------------------------
 1.由上往下打光
   2.由下往上打光

(4)機器人
(形狀測試)
1.正立方體

  glutSolidCube(0.5);









2.球體

glutSolidSphere(0.5,50,50);












(5)回家作業

沒有留言:

張貼留言