- 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 column4||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(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(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
%此时P1位于窗口的左边或右边
您可能关注的文档
- 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
- 2024年05月山东交通职业学院招考聘用博士研究生50人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月安徽芜湖市弋江区老年学校(大学)工作人员特设岗位公开招聘2人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东东营河口区教育类事业单位招考聘用22人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东交通职业学院招考聘用100人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东威海职业学院招考聘用高层次人才2人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月安徽石台县事业单位工作人员33人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东滨州市博兴县事业单位公开招聘考察笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月安徽蚌埠固镇县湖沟镇选聘村级后备干部7人笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东省安丘市教育和体育局所属事业单位学校公开2024年招考232名工作人员笔试历年典型题及考点剖析附带答案含详解.docx
- 2024年05月山东临沂临港经济开发区工作人员(5人)笔试历年典型题及考点剖析附带答案含详解.docx
文档评论(0)