哈尔滨工业大学-软件学院-计算机图形学作业-1093710219-XX计算机图形学作业学生:XX学号:1093710219日期:2012/3/221哈尔滨工业大学-软件学院-计算机图形学作业-1093710219-XX作业1画1/8圆弧的算法描述(C语言实现)1.设置半径R202.初始化误差项d=1-R,X=0,Y=R;3.绘制点到八分之一圆弧4.D<0d=d+2X+3,X=X+1,Y=YD>0d=d+2(X-Y)+5,X=X+1,Y=Y-1;5.开始loop循环,条件X0.000001f){pt.x=(flaX+pt.x);pt.y=(flaY+pt.y);2哈尔滨工业大学-软件学院-计算机图形学作业-1093710219-XX//pt.x=flaDownUnit(pt.x,WIDTH/2);//pt.y=flaDownUnit(pt.y,HEIGHT/2);DrawPoint(pt);if(flaDis<0.001f)//误差项小于0的情况{flaDis=flaDis+2*flaX+3;}else{//误差项大于0的情况flaDis=flaDis+2*(flaX-flaY)+5;flaY=flaY-1;}flaX=flaX+1;printf("X:%10.2f,Y:%10.2f\n",flaX,flaY);betXY=flaY-flaX;}}递推过程中的X,Y坐标(如图1-1)图1-1效果图(图1-2)注:由于点阵的数太少,进行了放大效果。半径50的效果图如下:3哈尔滨工业大学-软件学院-计算机图形学作业-1093710219-XX图1-2作业2图中算法,从左到右分别是DDA、中点画法和Bresenham算法。算法精度比较从实现的效果分析,可知DDA的效果略微好于中点画法,而Bresenham算法误差较大。图2-14哈尔滨工业大学-软件学院-计算机图形学作业-1093710219-XX算法对时间的消耗比较从图2-2的两组数据可以看出,DDA的耗时较长(可能由于DDA进行了大量的浮点运算),中点算法在两组数据中都表现良好,并且耗时稳定(时间单位为微秒级)。Bresenham算法在我的实现中,两次数据差距较大,总体效果好于DDA,略逊于中点算法(所以个人觉得可能硬件实现应该会好得多)。图2-2总结在软实现上,中点算法要好于Bresenham和DDA算法,DDA由于算法的设计,误差小较小,可是导致了许多的浮点运算,所以比较耗时。5