计算机图形学实验 下载本文

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 #include #include #include #define MP 100 #include #define false 0

void edge_mark(int arr[][2],int value,int polydeflen) {

int by,x,y,ax,ay; int i,j;