- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线段裁剪代码-MATLAB.doc
四、线段裁剪
%Sutherland_Test.m文件,主文件函数
clear all;
clc;
MainMenu();
%check_callback.m文件,查看图形函数
function check_callback()
%查看原始线段图形回调函数
%lines矩阵共四列,每一列的含义如下:
%端点A x坐标 端点A y坐标 端点B x坐标 端点B y坐标
%
lines=getappdata(0,'lines');
if isempty(lines)
errordlg('当前尚未生成线段,无法显示!');
return;
end
figure();
hold on;
for i=1:length(lines(:,1))
plot(lines(i,[1,3]),lines(i,[2,4]));
end
hold off;
end
%Cohen_Sutherland.m文件,编码裁剪算法
function Lines=Cohen_Sutherland(line,Rectangle)
%编码裁剪算法
%line为线段端点矩阵,共四列,其数据含义如下:
% 端点A x坐标 端点A y坐标 端点B x坐标 端点B y坐标
%Rectangle为窗口边界值,共四个元素,其含义分别为Xwl,Xwr,Ywb,Ywt。
%
%首先检测参数是否合法
[row column]=size(line);
if column<4||length(Rectangle)<4
Lines=[];
fprintf('参数不合法不合法');
return ;
end
%
%程序中主要变量说明
%code为线段端点的编码矩阵,两行四列,第一行为点P1的编码,第二行为点P2的编码
% 四列的含义为:D0,D1,D2,D3
%
%依次处理line的各个线段
k=0;
Lines=[];
for i=1:length(line(:,1))
%取出第i条线段
P1=line(i,[1,2]);
P2=line(i,[3,4]);
%计算斜率
PP=P1-P2;
if PP(1)==0
k=inf;
else
k=PP(2)/PP(1);
end
finished=false;
while(~finished)
%对点P1和P2进行编码
code=[
P1(1)<Rectangle(1),P1(1)>Rectangle(2),P1(2)<Rectangle(3),P1(2)>Rectangle(4);
P2(1)<Rectangle(1),P2(1)>Rectangle(2),P2(2)<Rectangle(3),P2(2)>Rectangle(4);
];
% P1,P2,k,code
%进行简取或简弃的判断
test=code(1,:)|code(2,:);
%判断是否简取
if isempty(find(test>0,1))
Lines=[Lines;[P1,P2]];
finished=true;
end
%若当前线段处理完成,则退出
if finished
break;
end
%判断是否简弃
test=code(1,:)&code(2,:);
if ~isempty(find(test>0, 1))
finished=true;
end
if finished
break;
end
%确保P1在窗口之外
if isempty(find(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 D<=2
您可能关注的文档
- matlab实验指导书.doc
- 3.数据规划与信息架构(CIO)20110513.ppt
- vc6.0与 matlab 接口(方法).ppt
- 接入网技术-体系架构02.ppt
- 第三章 内部存储器1.ppt
- 如何理解c和c++的复杂类型声明.doc
- 基于MATLAB的频谱分析仪设计.doc
- 学习matlab笔记4.doc
- 区域填充代码-MATLAB.doc
- C 学生复习资料.doc
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版初级练习卷有答案与.docx
- (附答案)川农12月《中药化学》作业考核-.docx
- (附答案)川农12月《园林植物保护学(本科)》作业考核-.docx
- (附答案)川农12月《有机化学(专科)》作业考核-.docx
- (附答案)川农12月《植物保护学(本科)》作业考核-.docx
- (附答案)东师《教育心理学》在线作业2-1(1).docx
- (附答案)川农12月《药剂学》作业考核-.docx
- (附答案)川农12月《配方饲料制造工艺与技术(专科)》作业考核-.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版基础知识题库带解析.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》基础知识模拟押题卷.docx
1亿VIP精品文档
相关文档
最近下载
- 超星尔雅学习通《形势与政策(2024春)》章节测试答案.docx VIP
- 建筑工人三级安全教育试卷(有答案).pdf
- 如何与同学友好相处38页PPT.ppt
- 理想 RISO 9050 7050 3050 7010 3010 闪彩印王中文技术维修手册 后面可以参考理想闪彩印王 EX7200 EX9050 EX9000 EX7250 系列中文维修手册 .pdf
- 横河 横河产品横河EJA110E差压变送器.pdf
- 导弹的总体设计(西工大课件).pdf
- 自由基共聚合教案.ppt
- JTG_C20-2011 公路工程地质勘察规范(高清-有效).pdf
- 六年级下册《浣溪沙》苏轼.课件.pptx VIP
- 书法教育培训行业分析.pptx
文档评论(0)