线段裁剪代码-MATLAB.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档