Bresenham画椭圆算法

Bresenham画椭圆算法

ID:44811519

大小:70.50 KB

页数:4页

时间:2019-10-29

Bresenham画椭圆算法_第1页
Bresenham画椭圆算法_第2页
Bresenham画椭圆算法_第3页
Bresenham画椭圆算法_第4页
资源描述:

《Bresenham画椭圆算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步。算法步骤:(1)输入椭圆的长半轴a和短半轴b。(2)计算初始值d=b*b+a*a*(-b+0.25), x=0,y=b。(3)绘制点(x,y)及其在四分象限上的另外3个对称点。(4)判断d的符号。若d<=0,则先将d更新为d+b*b*(2*x+3),再将(x,y)更新为(x+1,y);否则先将d更新为d+b*b*(2*x+3)+a*a(-2*y+2),再将(x,y)更新为(

2、x+1,y-1)。(5)当b*b*(x+1)

3、2*yi+3),再将(x,y)更新为(x,y-1)。(9)当y>=0,重复步骤(7)和(8),否则结束。下面是算法: #includevoidinit(void){glClearColor(0.0f,0.0f,0.0f,1.0f);}voiddrawEllipse(inta,intb,intxLoc,intyLoc){glPushMatrix();intx,y;floatd1,d2,aa,bb;aa=a*a;bb=b*b;d1=bb+aa*(-b+0.25);glTra

4、nslatef((GLfloat)xLoc,(GLfloat)yLoc,0.0f);x=0;y=b;glBegin(GL_POINTS);glVertex2i(x,y);glVertex2i(-x,y);glVertex2i(-x,-y);glVertex2i(x,-y);while(bb*(x+1)

5、tex2i(x,y);glVertex2i(-x,y);glVertex2i(-x,-y);glVertex2i(x,-y);}d2=bb*(0.25*x)+aa*(1-(y<<1));while(y>0){if(d2<=-0.000001){++x;d2+=bb*((x+1)<<1)+aa*(3-(y<<1));}else{d2+=aa*(3-(y<<1));}--y;glVertex2i(x,y);glVertex2i(-x,-y);glVertex2i(-x,y);glVertex2i(x,-

6、y);}glEnd();glPopMatrix();}voiddisplay(void){glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();glColor3f(1.0f,0.0f,0.0f);//drawaellipsedrawEllipse(200,300,50,50);glutSwapBuffers();}voidreshape(intw,inth){glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(G

7、L_PROJECTION);glLoadIdentity();if(w<=h){gluOrtho2D(-600.0,600.0,-600.0*(GLfloat)h/(GLfloat)w,600.0*(GLfloat)h/(GLfloat)w);}else{gluOrtho2D(-600.0*(GLfloat)w/(GLfloat)h,600.0*(GLfloat)w/(GLfloat)h,-600.0,600.0);}glMatrixMode(GL_MODELVIEW);glLoadIdentity

8、();}voidkeyboard(unsignedcharkey,intx,inty){switch(key){case27://'VK_ESCAPE'exit(0);break;default:break;}}intmain(intargc,char**argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_DOUBLE

9、GLUT_RGB);glutInitWindowSize(600,600);glutCreateW

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。