您的位置:首页 > 其它

中点算法之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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: