2017年3月13日 星期一

Week03 20170313 芷萱的課堂筆記

複習:利用Week02的GLUT專案10行做出茶壺
       

先測試滑鼠事件
     程式碼:
         #include <math.h>
         #include <GL/glut.h>
         #include <stdio.h>///printf()
         void mouse(int button,int state,int x,int y)
         {///This is mouse function
              printf("%d %d %d %d\n",button,state,x,y);
         }
         void display(void)
         {
              glutSolidTeapot(0.3);
              glutSwapBuffers();
         }
         int main(int argc, char *argv[])
         {
             glutInit(&argc, argv);
             glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
     
             glutCreateWindow("04160391");
             glutDisplayFunc(display);
             glutMouseFunc(mouse);///test the mouse func
             ///glutMotionFunc(motion);
             glutMainLoop();
         }
       


   利用滑鼠點按改變顏色
     部分新增程式碼:
         void mouse(int button,int state,int x,int y)
         {///This is mouse function
              printf("%d %d %d %d\n",button,state,x,y);
              glColor3f(1,x/300.0,y/300.0);
              glutPostOverlayRedisplay();///display()
         }
         void display(void)
         {
              glutSolidTeapot(0.3);
              glutSwapBuffers();
         }
         int main(int argc, char *argv[])
         {
         glutInit(&argc, argv);
         glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
     
         glutCreateWindow("04160391");
         glutDisplayFunc(display);
         glutMouseFunc(mouse);///test the mouse func
         ///glutMotionFunc(motion);
         glutMainLoop();
         }
       


  同時利用滑鼠拖曳改變顏色
    部分新增程式碼:
      void mouse(int button,int state,int x,int y)
     {///This is mouse function
         printf("%d %d %d %d\n",button,state,x,y);
     }
     void motion(int x,int y)
     {///Now motion
         printf("%d %d\n",x,y);
         glColor3f(1,x/500.0,y/500.0);
         glutPostOverlayRedisplay();///display()
     }
     int main(int argc, char *argv[])
     {
         glutInit(&argc, argv);
         glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
         glutInitWindowSize(500,500);
         glutCreateWindow("04160391");
         glutDisplayFunc(display);
         glutMouseFunc(mouse);///test the mouse func
         glutMotionFunc(motion);///Now drag
         glutMainLoop();
    }
    

畫出圓
   程式碼:
     #include <GL/glut.h>
     #include <math.h>
     #include <stdio.h>///printf()
     void mouse(int button,int state,int x,int y)
     {///This is mouse function
         if(state==GLUT_DOWN) printf("glvertex2f(%.2f,%.2f);\n",(x-250)/250.0,-(y-250.0));
          ///改成這行程式可用滑鼠寫程式
     }
     void motion(int x,int y)
     {///Now motion
         printf("%d %d\n",x,y);
         glColor3f(1,x/500.0,y/500.0);
         glutPostOverlayRedisplay();///display()
     }
     void display(void)
     {
         glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
         glBegin(GL_POLYGON);///POLYGON可以改成別的型態LINE等等
         for(float angle=0;angle<3.14159*2;angle+=0.001)
         {
             glVertex2f(cos(angle),sin(angle));
         }
         glEnd();
         glutSwapBuffers();
     }
     int main(int argc, char *argv[])
     {
         glutInit(&argc, argv);
         glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
         glutInitWindowSize(500,500);
         glutCreateWindow("04160391");
         glutDisplayFunc(display);
         glutMouseFunc(mouse);///test the mouse func
         glutMotionFunc(motion);///Now drag
         glutMainLoop();
     }
     

沒有留言:

張貼留言