计算机图形学-设计算法绘制直线与圆

else { } x++;

putpixel(x+p,y+q,c); putpixel(-x+p,y+q,c);

dt+=b*b*(2*x+3)+a*a*(-2*y+2); y--;

putpixel(x+p,-y+q,c);

}

putpixel(-x+p,-y+q,c);

double db=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;

while( y > 0 ) {

if( db < 0) { } else { } y--;

putpixel(x+p,y+q,c); putpixel(-x+p,y+q,c);

db+=a*a*(-2*y+3);

db+=b*b*(2*x+2)+a*a*(-2*y+3); x++;

putpixel(x+p,-y+q,c);

}

putpixel(-x+p,-y+q,c);

- 24 -

}

void main() { }

int a = 0; int b = 0; int c = 0; int x = 0; int y = 0; char m[20]={0};

int gdriver=DETECT,gmode;

printf(\请输入长轴长和短轴长度:\\n\printf(\长轴 x = \scanf(\printf(\短轴 y = \scanf(\

printf(\请输入椭圆的圆心坐标:\\n\scanf(\printf(\请输入椭圆的颜色:\scanf(\

initgraph(&gdriver,&gmode,\ Bresenham_Ciecle(a,b,x,y,c); sprintf(m,\outtextxy(x,y,m);

getch(); closegraph();

3.5运行结果图

- 25 -

图3.5.1 Bresenham画椭圆算法运行结果截图

图3.5.2 Bresenham画椭圆算法运行结果截图

图3.5.3 Bresenham画椭圆算法运行结果截图

- 26 -

图3.5.4 Bresenham画椭圆算法运行结果截图

?参考文献

[1] 王汝传,黄海平,林巧民.计算机图形学教程(第二版).北京:人民邮电出版社,2009.

[2]谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2005.

?本次实验总结或体会

通过本次试验我看到了在计算机图形学这门课中有意义的一面,增加了我学习这门课的兴趣;但同时我也认识到了自身在语言掌握中的不足和有待加强的地方;在以后的学习中要更加努力、要多动手、多学习。

?教师评分

- 27 -

- 28 -

联系客服:779662525#qq.com(#替换为@)