2017年3月20日 星期一

Week04 20170320 芷萱的課堂筆記

作業一:

前往http://jsyeh.org/3dcg10
 1. data.zip按滑鼠右鍵另存新檔


 2. windows.zip按滑鼠右鍵另存新檔
  3. glut32.dll按滑鼠右鍵另存新檔














 4. 將windows.zip解壓縮到桌面→data.zip解壓縮到windows.zip資料夾
      →glut32.dll複製到windows.zip資料夾→將Transformation點兩下
      →利用Scale更改X,Y,Z質的改變
作業二:利用GLUT做出茶壺原程式碼       #include <GL/glut.h>
  void display()
   {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glPushMatrix();
           glTranslatef(0.5,0,0);
           glutSolidTeapot(0.3);
       glPopMatrix();
       glutSwapBuffers();
   }
   int main(int argc,char**argv)
  {
       glutInit(&argc,argv);
       glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
       glutCreateWindow("04160391 Translate Rotate Scale");

       glutDisplayFunc(display);
       ///glutMouseFunc(mouse);
       glutMotionFunc(motion);
       glutMainLoop();
   }

先了解滑鼠座標系統

增加程式碼→讓滑鼠可以移動茶壺 移動Translate
程式碼
   #include <GL/glut.h>

   float mouseX=0,mouseY=0;
   void display()
   {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glPushMatrix();
           glTranslatef(mouseX,mouseY,0);
           glutSolidTeapot(0.3);
       glPopMatrix();
       glutSwapBuffers();
   }
   void motion(int x,int y)
   {
       mouseX = (x-150)/150.0;
       mouseY = -(y-150)/150.0;
       glutPostRedisplay();
   }
   int main(int argc,char**argv)
  {
       glutInit(&argc,argv);
       glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
       glutCreateWindow("04160391 Translate Rotate Scale");

       glutDisplayFunc(display);
       ///glutMouseFunc(mouse);
       glutMotionFunc(motion);
       glutMainLoop();
   }

讓滑鼠可以縮放茶壺 縮放Scale
更改部分程式碼

glTranslatef(mouseX,mouseY,0);
改成glScalef(mouseX,mouseY,0);





沒有留言:

張貼留言