线段裁剪算法.doc

线段裁剪算法.doc

ID:59135641

大小:54.00 KB

页数:5页

时间:2020-09-12

线段裁剪算法.doc_第1页
线段裁剪算法.doc_第2页
线段裁剪算法.doc_第3页
线段裁剪算法.doc_第4页
线段裁剪算法.doc_第5页
资源描述:

《线段裁剪算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机图形学实验报告实验(四)实验题目:线段裁剪算法指导老师:吴颖斌专业:数字媒体技术班级:1306班姓名:xx(xx)2014年11月19日一、实验类型验证性。二、实验目的和要求目的:编写线段裁剪算法程序,验证算法的正确性。要求:编写Cohen-Sutherland直线剪裁算法程序,编译、调试,查看运行结果。三、实验中用到的硬件设备及软件环境MicrosoftVisualC++6.0和PC机四、实验主要程序代码Cohen-Sutherland直线剪裁算法(1)主要步骤和代码:步骤1:创建Code_Clip工程文件;步骤2:在主

2、程序的程序头部定义符号常量(鼠标双击“CCode_ClipView”,添加至“classCCode_ClipView:public…………”之前)#defineLEFT1#defineRIGHT2#defineBOTTOM4#defineTOP8步骤3:定义成员变量和成员函数(鼠标双击“CCode_ClipView”,添加至“classCCode_ClipView:public…………”之内))intWT;intWB;intWR;intWL;步骤4:在构造函数中为窗口边界变量赋初值CCode_ClipView::CCode_Cl

3、ipView(){//TODO:addconstructioncodehereWL=100;WR=400;WB=100;WT=300;}步骤5:编写成员函数程序(在“CCode_ClipView”单击鼠标右键-->Addmemberfunction……)voidCCode_ClipView::encode(intx,inty,int*code){intc=0;if(x

4、LEFT;elseif(x>WR)c=c

5、RIGHT;if(y

6、BOTTOM;elseif(y>WT)c=c

7、TOP;*code=c;

8、}intCCode_ClipView::C_S_Line(CDC*pDC,intx1,inty1,intx2,inty2){//CDC*pDC=GetDC();intcode1,code2,code,x,y;encode(x1,y1,&code1);//(x1,y1)处的编码encode(x2,y2,&code2);//(x2,y2)处的编码while(code1!=0

9、

10、code2!=0)//当code1不等于0或code2不等于0{if((code1&code2)!=0)return0;//当code1与code2不等于0,

11、在同侧;code=code1;if(code1==0)code=code2;if((LEFT&code)!=0)//求交点{x=WL;y=y1+(y2-y1)*(WL-x1)/(x2-x1);}elseif((RIGHT&code)!=0){x=WR;y=y1+(y2-y1)*(WR-x1)/(x2-x1);}elseif((BOTTOM&code)!=0){y=WB;x=x1+(x2-x1)*(WB-y1)/(y2-y1);}elseif((TOP&code)!=0){y=WT;x=x1+(x2-x1)*(WT-y1)/(y2

12、-y1);}if(code==code1){x1=x;y1=y;encode(x,y,&code1);}else{x2=x;y2=y;encode(x,y,&code2);}}//endwhile,表示code1,code2都为0,其中的线段为可视部分pDC->MoveTo(x1,y1);pDC->LineTo(x2,y2);}步骤6:编写OnDraw()程序voidCCode_ClipView::OnDraw(CDC*pDC){CCode_ClipDoc*pDoc=GetDocument();ASSERT_VALID(pDoc

13、);//TODO:adddrawcodefornativedatahere//定义三条直线的坐标intx11,y11,x21,y21,x12,y12,x22,y22,x13,y13,x23,y23;x11=50;y11=150;x21=450;y21=250;x12=150;y12=150;x22=350;y22=240;x13=50;y13=400;x23=500;y23=350;//定义画笔CPenPenRed(PS_SOLID,1,RGB(255,0,0));//定义红色笔CPenPenBlue(PS_SOLID,1,RG

14、B(0,0,255));//定义蓝色笔//先画出窗口,用蓝色pDC->SelectObject(&PenBlue);pDC->Rectangle(WL,WB,WR,WT);//先画出三条直线,用红线pDC->TextOut(x11,y11,"line1:");p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。