淮安工学院计算机系,淮阴工学院计算机科学系.doc

淮阴工学院计算机科学系.doc

淮阴工学院计算机科学系

实验报告书

课程名: 《图形学与数字图像处理》

题 目: 实验3 区域填充和图形的裁剪

班 级:

学 号:

姓 名:

1、实验目的

通过实验,进一步理解和掌握扫描线填充算法;

掌握用扫描线填充算法进行区域填充的基本过程;

通过编程,会在TC环境下用扫描线填充算法编程实现一个饼型图的绘制;

通过实验,进一步理解和掌握Sutherland 裁剪算法;

掌握用Sutherland 裁剪算法裁减多边形的基本过程;

通过编程,会在TC环境下用Sutherland 算法编程实现用矩形窗口对多边形的裁剪。

2、实验环境

计算机、Turbo C或其他C语言程序设计环境

3、实验内容

用扫描线填充算法编程实现一个彩色饼型图的绘制;

用Sutherland 算法编程实现用矩形窗口对多边形的裁剪。

4、实验步骤与源程序

⑴ 实验步骤

算法、原理清晰,有详细的设计步骤;

依据算法、步骤或程序流程图,用C语言编写源程序;

编辑源程序并进行调试;

进行运行测试,并结合情况进行调整;

对运行结果进行保存与分析;

打印源程序或把源程序以文件的形式提交;

按格式书写实验报告。

⑵ 源代码

区域填充代码:

#include

#include

main()

{int y,x,x1,y1;

int graphdriver=DETECT;

int graphmode;

printf("RADIUS:");

scanf("%d",&y1);

initgraph(&graphdriver,&graphmode,"");

for(y=y1;y>=(int)(y1*sqrt(2)/2);y--)

{ x1=(int)sqrt(y1*y1-y*y);

for(x=-x1;x<0;x++)

{ putpixel(300+x,200+y,2);

putpixel(300+x,200+(-y),7);

}

for(x=0;x<=x1;x++)

{ putpixel(300+x,200+y,3);

putpixel(300+x,200+(-y),6);

}

}

for(y=(int)(y1*sqrt(2)/2-1);y>=0;y--)

{ x1=(int)sqrt(y1*y1-y*y);

for(x=-x1;x

{putpixel(300+x,200+y,1);

putpixel(300+x,200+(-y),8);

}

for(x=-y;x<0;x++)

{putpixel(300+x,200+y,2);

putpixel(300+x,200+(-y),7);

}

for(x=0;x

{putpixel(300+x,200+y,3);

putpixel(300+x,200+(-y),6);

}

for(x=y;x

{putpixel(300+x,200+y,4);

putpixel(300+x,200+(-y),5);

}

}

gets();

}

多边形裁剪代码:

#include

#include

#include

#include

typedef struct

{

float x,y;

}Point;

void initgraphics(void);

void Code(Point FrameLT,Point FrameRB,Point P,unsigned char *Flag);

void Clipping(Point FrameLT,Point FrameRB,Point LineSP,Point LineEP);

void main(void)

{

Point FrameLT,FrameRB;

Point P[3];

initgraphics();

setcolor(RED);

FrameLT.x=200;FrameLT.y=100;

FrameRB.x=460;FrameRB.y=360;

rectangle((int)FrameLT.x,(in

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值