2020年3月18日 星期三

Week03 - 07161045

複習上週
  • 先用Zuvio複習上周課程(點、線、面、色彩)


Mouse函式
  • 先下載freeglut,並完成前兩週的步驟
  • 打開程式碼後,將程式碼全部刪除,打上茶壺的程式碼
  • 多打一個顯示座標的程式碼
#include <GL/glut.h>
#include <stdio.h>
void display()
{    
   glutSolidTeapot( 0.3 );  
   glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
   printf("%d %d %d %d\n", button, state, x, y);
}
int main(int argc, char**argv)
{    
   glutInit(&argc, argv);  
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);                   
   glutCreateWindow("Week03");   
   glutDisplayFunc(display);    
   glutMouseFunc(mouse);    
   glutMainLoop();
}



  • 寫一個利用滑鼠移動茶壺的程式碼
#include <GL/glut.h>#include <stdio.h>
float teapotX=0, teapotY=0;void display()
{    
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);   
   glPushMatrix();   
   glTranslatef(teapotX, teapotY, 0); 
   glutSolidTeapot( 0.3 ); 
   glPopMatrix();   
   glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{   
   teapotX = (x-150)/150.0;  
   teapotY=-(y-150)/150.0;
}
int main(int argc, char**argv)
{    
   glutInit(&argc, argv);   
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);  
   glutCreateWindow("Week03");  
   glutDisplayFunc(display);  
   glutMouseFunc(mouse); 
   glutMainLoop();
}


                                                        • 利用小畫家查看座標,將座標輸入程式碼裡(自己亂做了一個很醜的愛心)

                                                        #include <GL/glut.h>
                                                        #include <stdio.h>

                                                        void display()
                                                        {    
                                                           glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);       
                                                           glBegin(GL_POLYGON);   
                                                           glVertex2f( (168-150)/150.0, -(91-150)/150.0 );    
                                                           glVertex2f( (77-150)/150.0, -(154-150)/150.0 );   
                                                           glVertex2f( (68-150)/150.0, -(71-150)/150.0 );  
                                                           glVertex2f( (95-150)/150.0, -(175-150)/150.0 );   
                                                           glVertex2f( (71-150)/150.0, -(144-150)/150.0 );       
                                                           glVertex2f( (82-150)/150.0, -(160-150)/150.0 );  
                                                           glVertex2f( (116-150)/150.0, -(199-150)/150.0 );   
                                                           glVertex2f( (165-150)/150.0, -(231-150)/150.0 );   
                                                           glVertex2f( (237-150)/150.0, -(180-150)/150.0 );    
                                                           glVertex2f( (270-150)/150.0, -(92-150)/150.0 );  
                                                           glVertex2f( (235-150)/150.0, -(46-150)/150.0 ); 
                                                           glEnd();    
                                                           glutSwapBuffers();
                                                        }
                                                        void mouse(int button, int state, int x, int y)
                                                        {
                                                        }
                                                        int main(int argc, char**argv)
                                                        {    
                                                           glutInit(&argc, argv);   
                                                           glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);   
                                                           glutCreateWindow("Week03");  
                                                           glutDisplayFunc(display); 
                                                           glutMouseFunc(mouse);   
                                                           glutMainLoop();
                                                        }
                                                        • 做出圓形,並加上顏色
                                                        #include <GL/glut.h>
                                                        #include <stdio.h>
                                                        #include <math.h>
                                                        void display()
                                                        {    
                                                           glClearColor(152/255.0, 256/255.0, 84/255.0, 1); 
                                                           glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);       
                                                           glColor3f(244/255.0,152/255.0,94/255.0); 
                                                           glBegin(GL_POLYGON);  
                                                           for(float angle=0; angle<=3.1415926 * 2 ; angle +=0.01)     
                                                          {        
                                                              glVertex2f(0.3*cos(angle), 0.8*sin(angle));     
                                                          }    
                                                           glEnd(); 
                                                           glutSwapBuffers();
                                                        }
                                                        void mouse(int button, int state, int x, int y)
                                                        {
                                                        }
                                                        int main(int argc, char**argv)
                                                        {    
                                                           glutInit(&argc, argv); 
                                                           glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);    
                                                           glutCreateWindow("Week03"); 
                                                           glutDisplayFunc(display);  
                                                           glutMouseFunc(mouse);   
                                                           glutMainLoop();
                                                        }

                                                        沒有留言:

                                                        張貼留言