单个三位形体的消隐代码-MATLAB.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单个三位形体的消隐代码-MATLAB

六、单个三维形体的消隐 %c9_Test.m文件,这是主文件 clear all; clc; MainMenu(); %DrawForm.m文件,绘制三维形体的指定表面 function DrawForm(MF,MS,View) %绘制在给定的视线矢量下多面体MF的所有可见面 %MF为函数GetMultiForm的返回值 %MS(i).MOIS为在视线矢量View(i,:)下的所有可见面索引集合 %检测参数是否合法 if isempty(MF) msgbox(多面体对象为空!); return; end if isempty(MF.PS) msgbox(多面体的顶点集为空!); return; end if isempty(MF.FOS) msgbox(多面体的面对象集为空!); return; end if isempty(MS) msgbox(可见面索引集合为空!); return ; end Len=length(MS); N1=round(sqrt(Len)); N2=ceil(sqrt(Len)); PS=MF.PS; % Len; N2; PS; % figure(); %grid on; % axis square; %hold on; for i=1:Len subplot(N1,N2,i); %figure(); hold on; %获取即将绘制的可见面索引集合 MIS=MS(i).MOIS; % %MIS; % grid on; %axis square; for k=1:length(MIS) %绘制第k个可见面 %获取第k个可见面的顶点序列 PI=MF.FOS(MIS(k)).PIS; %开始绘制面线 for j=1:length(PI)-1 PLine=[PS(PI(j),:);PS(PI(j+1),:)]; % %PLine; % plot3(PLine(:,1),PLine(:,2),PLine(:,3),-r,LineWidth,3); %plot3(PX,PY,PZ,-r,LineWidth,2); end PLine=[PS(PI(length(PI)),:);PS(PI(1),:)]; plot3(PLine(:,1),PLine(:,2),PLine(:,3),-r,LineWidth,3); end hold off; view(View(i,:)); title(strcat(视线矢量为S=(,num2str(View(i,1)),,,num2str(View(i,2)),,,num2str(View(i,3)),))); end %hold off; end %GetInSightForm.m文件,计算三维形体的朝前面 function [MIS]=GetInSightForm(MF,View) %MF多面体数据对象,该参数必须是GetMultiForm函数的返回值,View是视线矢量,MOIS是朝前面的索引集合 %本函数计算在指定视线矢量下的所有朝前面的面索引 % %检测参数是否合法 MIS.MOIS=[]; if isempty(MF) msgbox(多面体对象为空!); return; end if isempty(MF.PS) msgbox(多面体的顶点集为空!); return; end if isempty(MF.FOS) msgbox(多面体的面对象集为空!); return; end if length(View(1,:))3 msgbox(视线矢量值残缺!); return; end %开始计算 View=View(:,[1:3]); %读取多面体对象的面顶点序列集合与顶点集合 FS=MF.FOS; PS=MF.PS; for w=1:length(View(:,1)) %将View矢量转化为列向量 S=View(w,:); MOIS=[]; for k=1:length(FS) %获取当前面顶点序列集合 PI=FS(k).PIS; %计算当

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档