计算机图形剪裁程序说明,计算机图形学实验报告实验2裁剪算法实验

裁剪算法实验

一、 实验目的:

直线段的裁剪:编码裁剪算法,中点分割裁剪算法。

二、实验内容:

//BasicGraph.cpp

//请将下列裁剪程序补充完整,并用注释说明是何种裁剪算法

void Encode (int x,int y,int *code,int XL,int XR,int YB,int YT) {

//请将此程序补充完整

int c=0;

if(x

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

if(y

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

(*code)=c;

}

//编码裁剪算法:

void C_S_Line(POINT &p1,POINT &p2,int XL,int XR,int YB,int YT) {

//请将此程序补充完整

int x1,x2,y1,y2,x,y,code1,code2,code;

x1=p1.x; x2=p2.x; y1=p1.y; y2=p2.y;

Encode(x1,y1,&code1,XL,XR,YB,YT);

Encode(x2,y2,&code2,XL,XR,YB,YT);

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);}

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-y1)/(y2-y1);}

if(code==code1)

{x1=x;y1=y;Encode(x,y,&code1,XL,XR,YB,YT);}

else

{x2=x;y2=y;Encode(x,y,&code2,XL,XR,YB,YT);}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值