




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西北农林科技大学实习报告学 院名称:理 学 院 专业班级: 姓名: 学 号:课程:计算机图形学实验 报告日期:第十五周 实验四 二维图形的裁剪一、实验目的1)加深直线段的剪裁算法的理解。2)熟练掌握一种裁剪算法的编程方法。二、实验步骤1)分析直线段和矩形窗口的位置关系,选定比较合理算法流程。2)画出程序流程图。3)编写程序的源程序。4)编辑源程序并进行调试。5)进行特殊模式的运行测试,并结合情况进行调整。三、实验内容1)在编码算法、中点分割算法、Liang-Barsky算法三种中任选一种作为编程模型。2)编写直线段裁剪的源程序。 3)建议有能力的学生编写多边形裁剪程序。4)在计算机上编辑编译运
2、行,实现直线段的裁剪。原理1直线和窗口的关系:直线和窗口的关系可以分为如下3类:(1)整条直线在窗口内。此时,不需剪裁,显示整条直线。(2)整条直线在窗口外,此时,不需剪裁,不显示整条直线。(3)部分直线在窗口内,部分直线在窗口外。此时,需要求出直线与窗框的交点,并将窗口外的直线部分剪裁掉,显示窗口内的直线部分。直线剪裁算法有两个主要步骤。首先将不需剪裁的直线挑出,即删去在窗外的直线。然后,对其余直线,逐条与窗框求交点,并将窗口外的部分删去。2Cohen-Sutherland直线剪裁算法:(1)输入直线段的两端点坐标p1(x1,y1),p2(x2,y2),以及窗口的4条边界坐标,ywt,ywb
3、,ywl,ywr.(2)对p1,p2进行编码,点p1的编码为code1,点p2的编码为code2.(3)若code1| code2=0,对直线p1p2“简取”之,转(6);否则,若code1& code20,对直线段“简弃”之,转(7);当上述两条均不满足时,进行步骤(4)。(4)确保p1在窗口外部。若p1在窗口内,则交换p1和p2的坐标值和编码。(5)根据p1编码从低位开始寻找值为1的地方 ,从而确定p1在窗口外的哪一侧,然后求出直线段与相应窗口边界的交点S,并用交点S的坐标值替换p1的坐标值,即在交点S处把线段一分为二,因此可以去掉p1S。转(2)。(6)用直线扫描算法转换算法画出当前的直
4、线段p1p2。(7)算法结束。图形描述:在MATLAB中输入: W=3,7,2,5W = 3 7 2 5 P=0,0,16,16P = 0 0 16 16 r=CSCutLine(W,P)r = 1程序的源程序:M文件,命名为CSCutLine% 计算机图形学 直线裁剪 CS编码算法function r=CSCutLine(W,P) %result%W=窗口坐标 P=直线两端点坐标 y=x/2W=xwl,xwr,ywb,ywt W=3,7,2,6;P=x1,y1,x2,y2 P=0,0,16,8;% clear;clc;W=3,7,2,6;P=0,0,16,8;r=CSCutLine(W,P)
5、xwl=W(1); xwr=W(2); ywb=W(3); ywt=W(4);x1=P(1); y1=P(2); x2=P(3); y2=P(4);Rectangle=xwl,xwr,ywb,ywt;k=0;Lines=;%取出线段P1=x1,y1;P2=x2,y2;PP=P1-P2;%计算斜率if PP(1)=0 k=inf;else k=PP(2)/PP(1);endfinished=false;while (finished) %对点P1和P2进行编码 code=P1(1)Rectangle(2),P1(2)Rectangle(4); P2(1)Rectangle(2),P2(2)Rec
6、tangle(4); ; % P1,P2,k,code %进行简取或简弃的判断 test=code(1,:)|code(2,:); %判断是否简取 if isempty(find(test0,1) Lines=Lines;P1,P2; finished=true; end %若当前线段处理完成,则退出 if finished break; end %判断是否简弃 test=code(1,:)&code(2,:); if isempty(find(test0,1) finished=true; end if finished break; end %确保P1在窗口之外 if isempty(fi
7、nd(code(1,:)0,1) %交换P1,P2的坐标值和编码 PT=P1; P1=P2; P2=PT; PT=code(1,:); code(1,:)=code(2,:); code(2,:)=PT; end %从低位开始找编码值为1的地方 D=find(code(1,:)0,1); if D0,1); else %若线段是斜线,则计算y值,x值变为窗口的左边界或右边界 P1=Rectangle(D),P1(2)+k*(Rectangle(D)-P1(1); end else %此时P1位于窗口的上方或下方 if k=inf %若线段是竖直线,则x不变,y变为窗口的上边界或下边界 %且此时
8、k不会等于0,否则线段将处于简弃状态。 P1(2)=Rectangle(D); else %若线段是斜线,则计算x值,y值变为窗口的上边界或下边界。 P1=P1(1)+(Rectangle(D)-P1(2)/k,Rectangle(D); end end %对P1和P2重新编码,再次计算。 %P1,P2,k,code %pause(1); %scanf(D,%d); %inputdlg();end %对最终点进行取整运算%Lines=floor(Lines); %- %绘制原始图像和裁剪后图形 figureOriginalLines=x1,y1,x2,y2; %lines=P1,P2;plot
9、(OriginalLines(1,1,3),OriginalLines(1,2,4),b);title(原始图像)grid onfigurehold onR=Rectangle;RLines= R(1),R(3),R(2),R(3); R(2),R(3),R(2),R(4); R(2),R(4),R(1),R(4); R(1),R(4),R(1),R(3); ;for i=1:length(RLines(:,1) plot(RLines(i,1,3),RLines(i,2,4),-r);endSutherlandedLines=Lines;plot(SutherlandedLines(1,1,
10、3),SutherlandedLines(1,2,4),g);title(裁剪后图形)grid onhold off figurehold onplot(OriginalLines(1,1,3),OriginalLines(1,2,4),b);plot(SutherlandedLines(1,1,3),SutherlandedLines(1,2,4),g);for i=1:length(RLines(:,1) plot(RLines(i,1,3),RLines(i,2,4),-r);endlegend(原始图像,裁剪后图形,裁剪窗口,0)grid onhold offr=true; end四、实验总结通过本次实习,我复习了直线段的Cohen-Sutherland算法,中点分割算法,以及Liang-Barsky算法思想,最后选择了Cohen-Sutherland算法完成Matlab编程。 本次实习的内容有一定难度, 要综合运用前面实习中的直线绘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃省白银有色集团股份有限公司校园招聘225人笔试历年参考题库附带答案详解
- 2025春季首都机场集团校园招聘模拟试卷及答案详解(全优)
- 2025金华市天禾实业有限公司招聘2人考前自测高频考点模拟试题及答案详解一套
- 2025届春季东华公司校园招聘考前自测高频考点模拟试题及完整答案详解一套
- 2025年6月临沂高新控股集团有限公司三级子公司公开招聘管理人员笔试历年参考题库附带答案详解
- 2025年春季浙江省特种设备科学研究院招聘55人模拟试卷及答案详解(名师系列)
- 2025年春季中国邮政储蓄银行上海分行校园招聘模拟试卷及答案详解(网校专用)
- 2025贵州省自然资源厅直属事业单位第十三届贵州人才博览会引才8人模拟试卷附答案详解
- 2025年甘肃省平凉市泾川县丰台镇考聘大学生村文书考前自测高频考点模拟试题参考答案详解
- 2025黑龙江鸡西市博物馆现公益性岗位招聘2人考前自测高频考点模拟试题有答案详解
- 幼儿园大班数学《小熊种玉米》课件
- 公交车广告承包合同5篇
- 2025年秋新北师大版数学3年级上册全册同步教案
- 公共营养师考试题库(附答案)四级真题及答案
- 广东省深圳市福田区2024-2025学年八年级上学期语文期中考试试卷(含答案)
- SAP QM质量管理模块配置详解(S4系统)
- 机械制图选择题试题库及答案
- 医院安全警示教育
- 2025届名校名师模拟卷(九)语文试题(PDF版含答案)
- 技术部工作汇报与未来规划
- 学员游泳培训合同协议
评论
0/150
提交评论