收藏 分享(赏)

直线的裁剪运算程序.doc

上传人:hskm5268 文档编号:7923577 上传时间:2019-05-30 格式:DOC 页数:5 大小:37.50KB
下载 相关 举报
直线的裁剪运算程序.doc_第1页
第1页 / 共5页
直线的裁剪运算程序.doc_第2页
第2页 / 共5页
直线的裁剪运算程序.doc_第3页
第3页 / 共5页
直线的裁剪运算程序.doc_第4页
第4页 / 共5页
直线的裁剪运算程序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、#include#include#includeclip_a_line(int x1,int y1,int x2,int y2,int xw_min,int xw_max,int yw_min,int yw_max);int encode(int x,int y,int code,int xw_min,int xw_max,int yw_min,int yw_max);int accept(int code1,int code2);int reject(int code1,int code2);int swap_if_needed(int code1,int code2);void main(

2、)int x1=100,x2=600,y1=80,y2=550,xw_min=200,xw_max=500,yw_min=200,yw_max=500;initgraph(640,640);setcolor(GREEN);line(xw_min,yw_min,xw_max,yw_min);line(xw_min,yw_max,xw_max,yw_max);line(xw_min,yw_min,xw_min,yw_max);line(xw_max,yw_min,xw_max,yw_max);outtextxy(200,20,“按回车键继续“);getch();cleardevice();clos

3、egraph();initgraph(640,640);line(x1,y1,x2,y2);setcolor(GREEN);line(xw_min,yw_min,xw_max,yw_min);line(xw_min,yw_max,xw_max,yw_max);line(xw_min,yw_min,xw_min,yw_max);line(xw_max,yw_min,xw_max,yw_max);outtextxy(200,20,“按回车键继续“);getch();cleardevice();closegraph();/*开始剪裁*/initgraph(640,640);setcolor(GREE

4、N);line(xw_min,yw_min,xw_max,yw_min);line(xw_min,yw_max,xw_max,yw_max);line(xw_min,yw_min,xw_min,yw_max);line(xw_max,yw_min,xw_max,yw_max);setcolor(RED);clip_a_line(x1,y1,x2,y2,xw_min,xw_max,yw_min,yw_max);outtextxy(50,50,“Cohen-SutherLand!“);getch();closegraph();clip_a_line(int x1,int y1,int x2,int

5、 y2,int xw_min,int xw_max,int yw_min,int yw_max)int i,code14,code24,done,display;float m;int x11,x22,y11,y22,mark;done=0;display=0;while(done=0)x11=x1;x22=x2;y11=y1;y22=y2;encode(x1,y1,code1,xw_min,xw_max,yw_min,yw_max);encode(x2,y2,code2,xw_min,xw_max,yw_min,yw_max);if(accept(code1,code2)done=1;dis

6、play=1;break;else if(reject(code1,code2)done=1;break;mark=swap_if_needed(code1,code2);if(mark=1)x1=x22;x2=x11;y1=y22;y2=y11;if(x2=x1)m=-1;elsem=(float)(y2-y1)/(float)(x2-x1);if(code12)x1+=(yw_min-y1)/m;y1=yw_min;else if(code13)x1-=(y1-yw_max)/m;y1=yw_max;else if(code10)y1-=(x1-xw_min)*m;x1=xw_min;el

7、se if(code11)y1+=(xw_max-x1)*m;x1=xw_max;if(display=1)line(x1,y1,x2,y2);int encode(int x,int y,int code,int xw_min,int xw_max,int yw_min,int yw_max)int i;for(i=0;ixw_max)code1=1;if(yyw_max)code3=1;else if(yyw_min)code2=1;return(0);int accept(int code1,int code2)int i,flag;flag=1;for(i=0;i4;i+)if(cod

8、e1i=1) | (code2i=1)flag=0;break;return(flag);int reject(int code1,int code2)int i,flag;flag=0;for(i=0;i4;i+)if(code1i=1) break;return(flag);int swap_if_needed(int code1,int code2)int i,flag1,flag2,tmp;flag1=1;for(i=0;i4;i+)if(code1i=1)flag1=0;break;flag2=1;for(i=0;i4;i+)if(code2i=1)flag2=0;break;if(flag1=0) if(flag1=1) i4;i+)tmp=code1i;code1i=code2i;code2i=tmp;return(1);return(0);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报