1、# include math.hvoid DDALine(int x0,int y0,int x1,int y1,int color) int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)abs(dy) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k=epsl;k+) putpixel(int)(x+0.5),(int)(
2、y+0.5),4); x+=xIncre; y+=yIncre; main() int gdriver ,gmode ; gdriver = DETECT; initgraph(&gdriver , &gmode ,C:TC20BGI); DDALine(0,0,35,26,4); getch ( ); closegraph ( );Bresenham:#includevoid BresenhamLine(int x0,int y0,int x1,int y1,int color) int x,y,dx,dy,e; e=-dx;x=x0;y=y0; while(x0) y+; e=e-2*dx
3、;main() initgraph(&c: BresenhamLine(0, 0 , 120, 200,5 ); getch ( ); closegraph ( );实验2 圆和椭圆的绘制1、通过实验,进一步理解和掌握中点算法;2、掌握以上算法生成椭圆或圆的基本过程;3、通过编程,会在TC环境下完成用中点算法实现椭圆或圆的绘制。用中点(Besenham)算法实现椭圆或圆的绘制。1.算法、原理清晰,有详细的设计步骤;2.依据算法、步骤或程序流程图,用C语言编写源程序;3.编辑源程序并进行调试;4.进行运行测试,并结合情况进行调整;5.对运行结果进行保存与分析;6.打印源程序或把源程序以文件的形式
4、提交;7.按格式书写实验报告。分析与思考1为何在程序运行时,有的椭圆或圆仅在屏幕左上角显示了一部分?2用中点算法生成的椭圆,为何在半径较大时,图形的失真严重?圆:void CirclePoint(int x,int y,int color) putpixel(x+100,y+100,color); putpixel(-x+100,y+100,color); putpixel(x+100,-y+100,color); putpixel(-x+100,-y+100,color); putpixel(y+100,x+100,color); putpixel(y+100,-x+100,color);
5、putpixel(-y+100,x+100,color); putpixel(-y+100,-x+100,color);void MidBresenhamCircle(int r,int color) int x,y,d; x=0;y=r;d=1-r;=y) CirclePoint(x,y,color); if(d0) d+=2*x+3; else d+=2*(x-y)+5; y-; x+; main( )tc20bgi ); MidBresenhamCircle(50,6);实验截图:椭圆:#include graphics.hvoid MidBresenhamEllipse(int a,i
6、nt b,int color) int x,y; float d1,d2;y=b; d1=b*b+a*a*(-b+0.5);putpixel(x+100,-y+100,color); while(b*b*(x+1)a*a*(y-0.5) if(d10) if(d2conio.h#define MP 100stdlib.h#define false 0void edge_mark(int arr2,int value,int polydeflen) int by,x,y,ax,ay; int i,j; float k; by=arrpolydeflen-11; for (i=0;i putpixel(x,y,value); getch(); if(ayay;j-) putpixel(x+(int)(y-j)*k),j,value); else for(j=y+1;jmax) max=ari1; if (ari1min) min=ari1; for (y=min;y=max;y+) for(x=0;x=640;x+) if (getpixel(x,y) = value)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1