# 中点算法之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  }

• 0
点赞
• 0
收藏 更改收藏夹
• 0
评论
10-14

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。