putpixel(-y+100,x+100,color);
putpixel(-y+100,-x+100,color); }
void MidBresenhamCircle(int r,int color) { } main( ) {
int x,y,d; x=0;y=r;d=1-r; while(x<=y){ }
CirclePoint(x,y,color); if(d<0) d+=2*x+3; else{ } x++;
d+=2*(x-y)+5; y--;
int gdriver ,gmode ; gdriver = DETECT;
initgraph(&gdriver , &gmode ,\ MidBresenhamCircle(50,6);
}
getch ( ); closegraph ( );
实验截图:
椭圆:
#include \
void MidBresenhamEllipse(int a,int b,int color) {
int x,y; float d1,d2;
x=0;y=b;
d1=b*b+a*a*(-b+0.5);
putpixel(x+100,y+100,color); putpixel(-x+100,-y+100,color); putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color); while(b*b*(x+1) if(d1<=0){ d1+=b*b*(2*x+3); x++; } else{ d1+=b*b*(2*x+3)+a*a*(-2*y+2); x++;y--; } putpixel(x+100,y+100,color); putpixel(-x+100,-y+100,color); putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color); } d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b; while(y>0){ if(d2<=0){ } else{ } d2+=a*a*(-2*y+3); y--; d2+=b*b*(2*x+2)+a*a*(-2*y+3); x++; y--; putpixel(x+100,y+100,color); putpixel(-x+100,-y+100,color); putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color); } main( ) } { } 实验截图: int gdriver ,gmode ; gdriver = DETECT; initgraph(&gdriver , &gmode ,\ MidBresenhamEllipse(8,6,2); getch ( ); closegraph ( ); 实验3 图形填充 实验目的 4、 通过实验,进一步理解和掌握图形填充常用算法; 5、 掌握以上算法进行填充图形的基本过程; 6、 通过编程,会在TC环境下完成图形填充。 实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 任意画一个多边形,并用边填充算法进行填充。(多边形的顶点坐标存放在数组中,坐标值由键盘输入) 实验步骤 1、 算法、原理清晰,有详细的设计步骤; 2、 依据算法、步骤或程序流程图,用C语言编写源程序; 3、 编辑源程序并进行调试; 4、 进行运行测试,并结合情况进行调整; 5、 对运行结果进行保存与分析; 6、 打印源程序或把源程序以文件的形式提交; 7、 按格式书写实验报告。 实验代码: #include void edge_mark(int arr[][2],int value,int polydeflen) { int by,x,y,ax,ay; int i,j;