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

  • 0
    点赞
  • 0
    收藏 更改收藏夹
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值