中点算法之y=x^2/16
2016-04-14 20:02
351 查看
/************************************************************* pb-图形学题3 中点算法之y=x^2/16; *************************************************************/ #include <GL/glut.h> #include<cstdio> #include<cmath> void init() { glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //什么单缓存的东西,现在不懂什么意思,就当通用条件 glutInitWindowPosition(0, 0); //图片出现的位置 glutInitWindowSize(400, 300); //图片的长和宽 glutCreateWindow("pb-图形学题1"); //图片的名字 glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(-100, 100, -10, 200); glRectf(-0.5f, -0.5f, 0.5f, 0.5f); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.0, 0.0); //线的颜色 } void setPixel (GLint x,GLint y,GLint nx,GLint ny) //描点函数,表示从x,y到nx,ny的矩形全部涂色 { glBegin(GL_LINES); glVertex2i(x, y); glVertex2i(nx,ny); glEnd(); } void myDisplay() { int d=-7; int x1=0,x2=0; int y1=0,y2=0; while (x1<=8) { x2=x1+1; if (d<=0) { d+=2*x2+1; y2=y1; } else { d+=2*x2-15; y2=y1+1; } setPixel(x1,y1,x2,y2); setPixel(-x1,y1,-x2,y2); y1=y2; x1=x2; } d=8; while (y1<=100) { y2=y1+1; if (d>0) { x2=x1+1; d+=16-(x1*x1-(x1-1)*(x1-1)+1); } else { x2=x1; d+=16; } setPixel(x1,y1,x2,y2); setPixel(-x1,y1,-x2,y2); y1=y2; x1=x2; } glFlush(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); init(); //初始化数据 glutDisplayFunc(&myDisplay); //调用函数 glutMainLoop(); //开始程序 return 0; }
相关文章推荐
- Hibernate Map集合映射属性,创建表失败或表不存在
- PHP正则表达式
- 增强学习笔记2
- 查找单链表的倒数第k个节点,要求只能遍历一次链表(C语言)
- Lampyridae Teleportae
- Android网络知识
- c++第3次作业
- 给js创建的一个input数组绑定click事件
- 用inline替换#define的好处
- 查找单链表的中间节点,要求只能遍历一次链表(C语言)
- unity脚本中内部类的使用
- HDU 5661/BC 79B Claris and XOR
- UITableView表格数据刷新
- 【Qt】QComboBox
- Python 爬虫学习1
- 为ActiveX窗口上的自定义控件添加ToolTip
- bzoj 4456: [Zjoi2016]旅行者
- 交换机开发(一)—— 交换机的工作原理
- 软件工程实验一 复利计算5.1——复利计算再升级
- Binary Tree Preorder Traversal