中点算法之y=x^2/16

 1 /*************************************************************
 2      pb-图形学题3
 3      中点算法之y=x^2/16;
 4      
 5 *************************************************************/
 6 
 7 
 8 #include <GL/glut.h>
 9 #include<cstdio>
10 #include<cmath>
11 
12 
13 void init()
14 {
15     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);                 //什么单缓存的东西,现在不懂什么意思,就当通用条件
16     glutInitWindowPosition(0, 0);                                //图片出现的位置
17     glutInitWindowSize(400, 300);                                //图片的长和宽
18     glutCreateWindow("pb-图形学题1");                            //图片的名字
19 
20     glClearColor(0.0, 0.0, 0.0, 0.0);
21     glMatrixMode(GL_PROJECTION);
22     gluOrtho2D(-100, 100, -10, 200); 
23 
24     glRectf(-0.5f, -0.5f, 0.5f, 0.5f); 
25     glClear(GL_COLOR_BUFFER_BIT);
26     glColor3f(1.0, 0.0, 0.0);                                    //线的颜色
27 }
28 
29 
30 void setPixel (GLint x,GLint y,GLint nx,GLint ny)               //描点函数,表示从x,y到nx,ny的矩形全部涂色
31 {
32     glBegin(GL_LINES);
33        glVertex2i(x, y);
34        glVertex2i(nx,ny);
35     glEnd();
36 }
37 
38 void myDisplay()
39 {
40     int d=-7;
41     int x1=0,x2=0;
42     int y1=0,y2=0;
43     while (x1<=8)
44     {
45         x2=x1+1;
46         if (d<=0)
47         {
48             d+=2*x2+1;
49             y2=y1;
50         }
51         else
52         {
53             d+=2*x2-15;
54             y2=y1+1;
55         }
56         setPixel(x1,y1,x2,y2);
57         setPixel(-x1,y1,-x2,y2);
58         y1=y2;
59         x1=x2;
60     }
61     d=8;
62     while (y1<=100)
63     {
64         y2=y1+1;
65         if (d>0)
66         {
67             x2=x1+1;
68             d+=16-(x1*x1-(x1-1)*(x1-1)+1);
69         }
70         else
71         {
72             x2=x1;
73             d+=16;
74         }
75         setPixel(x1,y1,x2,y2);
76         setPixel(-x1,y1,-x2,y2);
77         y1=y2;
78         x1=x2;
79     }
80     glFlush();
81 }
82 
83  int main(int argc, char *argv[])
84  {
85      glutInit(&argc, argv);
86      init();                                                     //初始化数据
87      glutDisplayFunc(&myDisplay);                                //调用函数                    
88      glutMainLoop();                                             //开始程序
89      return 0; 
90  }
原文地址:https://www.cnblogs.com/pblr/p/5392474.html