直线裁剪算法c语言,2019年计算机图形学实验五直线段裁剪.doc

计算机图形学实验报告

黔南民族师范学院信息与计算科学

撰写人姓名: __ 撰写时间:2010年5月5日 审查人姓名:

实验过程记录

实验名称

实验五:实现线段的任意一种裁剪算法

时 间

实验学时

地 点

数学系机房

姓 名

班级

学号

实验目的:

通过实验,进一步理解和掌握直线段的裁剪算法;

通直线段的裁剪。

二、 实验内容:

要求:

?1 、进一步理解并掌握线段的裁剪算法,并可以实践至少一种线段的裁剪算法;

?2、注意:本次作业要求学生不能直接使用系统提供的线段裁剪函数,但是可以调用相关的画点、画线函数。

三、实验设备及软件

软件需求:windows98以上操作系统、Turbo C 2.0 、Turbo C++ 3.0、Visual C++软件、Microsoft Word 97或2000。

硬件需求:建议Pentium IV CPU处理器、64MB以上内存、1GB以上硬盘空间的计算机、激光打印机

四、实验方法及步骤

1实验准备

上该实验课前将针对解决实验内容问题的C语言程序编制好,在实验课上,对编制完的程序进行调试、修改和分析,熟悉TurboC2.0的菜单,以及编译,运行程序和调试程序的方法,并编写程序。

2.调试程序;

程序一:

#define LEFT 1

#define RIGHT 2

#define BOTTOM 4

#define TOP 8

#define XL 150

#define XR 350

#define YB 150

#define YT 300

#include

#include"graphics.h"

main()

{ int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"c:\\tc");

setcolor(12);

line(XL,YT,XR,YT);

line(XL,YB,XR,YB);

line(XL,YT,XL,YB);

line(XR,YT,XR,YB);

setcolor(9);

draw_ett();

getch();

closegraph();

}

encode (x,y,code)

int x,y;

int *code;

{ int c;

c=0;

if (x

else if (x>XR) c=c|RIGHT;

if (y

else if (y>YT) c=c|TOP;

*code=c;

return;

}

draw_ett()

{ int x1,x2,y1,y2,x,y;

int code1,code2,code;

/* printf("XL=150,XR=350,YB=150,YT=300\n");

scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);*/

x1=50;

y1=210;

x2=300;

y2=100;

setcolor(2);

line(x1,y1,x2,y2);

encode(x1,y1,&code1);

encode(x2,y2,&code2);

while ((code1!=0)||(code2!=0))

{

if ((code1&code2)!=0) return;

code=code1;

if (code1==0) code=code2;

if ((LEFT&code)!=0)

{

x=XL;

y=y1+(y2-y1)*(XL-x1)/(x2-x1);

}

else if ((RIGHT&code)!=0)

{

x=XR;

y=y1+(y2-y1)*(XR-x1)/(x2-x1);

}

else if ((BOTTOM&code)!=0)

{

y=YB;

x=x1+(x2-x1)*(YB-y1)/(y2-y1);

}

else if ((TOP&code)!=0)

{

y=YT;

x=x1+(x2-x1)*(YT-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值