中点画圆
1 #include<gl/glut.h> 2 3 4 void MidPointCirle(int r) 5 { 6 int x,y; 7 float d; 8 x=0;y=r;d=1.25-r; 9 glColor3f(1.0f,1.0f,1.0f); 10 glVertex2i(x,y); 11 while(x<=y) 12 { 13 if(d<0) 14 d+=2*x+3; 15 else 16 { 17 d+=2*(x-y)+5; 18 y--; 19 } 20 x++; 21 glColor3f(1.0f,1.0f,1.0f); 22 glVertex2i(x+125,y+125); 23 glColor3f(1.0f,1.0f,1.0f); 24 glVertex2i(x+125,-y+125); 25 glColor3f(1.0f,1.0f,1.0f); 26 glVertex2i(-x+125,y+125); 27 glColor3f(1.0f,1.0f,1.0f); 28 glVertex2i(-x+125,-y+125); 29 glColor3f(1.0f,1.0f,1.0f); 30 glVertex2i(y+125,x+125); 31 glColor3f(1.0f,1.0f,1.0f); 32 glVertex2i(y+125,-x+125); 33 glColor3f(1.0f,1.0f,1.0f); 34 glVertex2i(-y+125,x+125); 35 glColor3f(1.0f,1.0f,1.0f); 36 glVertex2i(-y+125,-x+125); 37 } 38 glFlush(); 39 40 } 41 void ChangeSize(GLsizei w,GLsizei h) 42 { 43 if(h==0) 44 h=1; 45 glMatrixMode(GL_PROJECTION); 46 glLoadIdentity(); 47 if(w<=h) 48 glOrtho(0.0f,250.0f,0.0f,250.0f*h/w,1.0f,-1.0f); 49 else 50 glOrtho(0.0f,250.0f*w/h,0.0f,250.0f,1.0f,-1.0f); 51 glMatrixMode(GL_MODELVIEW); 52 glLoadIdentity(); 53 } 54 55 void myDisplay(void) 56 { 57 glClear(GL_COLOR_BUFFER_BIT); 58 glPointSize(3); 59 glBegin(GL_POINTS); 60 glVertex2i(125,125); 61 MidPointCirle(125); 62 glEnd(); 63 // glDrawpixels(width,height,GL_RGBA,GL_UNSIGNED_BYTE,pixels); 64 glFlush(); 65 } 66 int main(int argc,char *argv[]) 67 { 68 69 glutInit(&argc,argv); 70 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 71 glutInitWindowPosition(100,100); 72 glutInitWindowSize(500,500); 73 glutCreateWindow("圆"); 74 glutDisplayFunc(*myDisplay); 75 // glutDisplayFunc(MidPointCirle); 76 glutReshapeFunc(ChangeSize); 77 glutMainLoop(); 78 return 0; 79 }
多边形画圆
1 #include<gl/glut.h>
2 #include<math.h>
3 const GLfloat Pi=301415927; 4 const GLfloat R=0.5f; 5 const int n=1000; 6 7 void myDisplay(void) 8 { 9 int i; 10 glClear(GL_COLOR_BUFFER_BIT); 11 glColor3f(1.0f,1.0f,1.0f); 12 glBegin(GL_POINTS); 13 for(i=0;i<n;++i) 14 glVertex2f(R*cos(2*Pi/n*i),R*sin(2*Pi/n*i)); 15 glEnd(); 16 17 18 glFlush(); 19 } 20 void ChangeSize(GLsizei w,GLsizei h) 21 { 22 if(h==0) 23 h=1; 24 glMatrixMode(GL_PROJECTION); 25 glLoadIdentity(); 26 if(w<=h) 27 glOrtho(0.0f,250.0f,0.0f,250.0f*h/w,1.0f,-1.0f); 28 else 29 glOrtho(0.0f,250.0f*w/h,0.0f,250.0f,1.0f,-1.0f); 30 glMatrixMode(GL_MODELVIEW); 31 glLoadIdentity(); 32 } 33 34 35 int main(int argc,char *argv[]) 36 { 37 38 glutInit(&argc,argv); 39 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 40 glutInitWindowPosition(100,100); 41 glutInitWindowSize(500,500); 42 glutCreateWindow("圆"); 43 glutDisplayFunc(*myDisplay); 44 45 // glutReshapeFunc(ChangeSize); 46 glutMainLoop(); 47 return 0; 48 }