資源簡介
使用matlab實現三維建模源碼,效果非常好,可以用于三維點云數據的建模-Three-dimensional modeling using MATLAB

代碼片段和文件信息
%%?MyCrust
%
%Simple?surface?recostruction?program?based?on?Crust?algorithm?Given?a?set
%?of?3D?points?returns?a?triangulated?tight?surface.
%
%The?more?points?there?are?the?best?the?surface?will?be?fitted?although
%?you?will?have?to?wait?more.?For?very?large?models?an?help?memory?errors
%?may?occurs.?It?is?important?even?the?point?distribution?generally
%?uniformly?distributed?points?with?denser?zones?in?high?curvature?features
%?give?the?best?results.
%
%Remember??crust?algorithom?needs?a?cloud?representing?a?VOLUME?so?open
%?surface?may?give?inaccurate?results.??Surface?with?small?holes?are?not
%?considered?open?surface?and?generally?are?processed?well.?
%
%
%?If?any?problems?occurs?in?execution?or?if?you?found?a?bug?have?a
%?suggestion?or?question?just?contact?me?at:
%
%?giaccariluigi@msn.com
%
%
%
%
%Here?is?a?simple?example:
%
%load?Dino.mat%load?input?points?from?mat?file
%
%[t]=MyCrust(p);
%
%?figure(1)
%?????????hold?on?title(‘Output?Triangulation‘‘fontsize‘14)?axis?equal
%?????????trisurf(tp(:1)p(:2)p(:3)‘facecolor‘‘c‘‘edgecolor‘‘b‘)
%
%Input:
%??????????????p?is?a?Nx3?array?containing?the?3D?set?of?points
%Output:
%??????????????t?are?points?id?contained?in?triangles?nx3?array?.
%
%?See?also?qhull?voronoin?convhulln?delaunay?delaunay3?tetramesh.
%
%Author:Giaccari?Luigi
%Last?Update:?03/1/2008
%Created:?10/10/2008
function?[t]=MyCrust(p)
%error?check
if?nargin>1
????error(‘The?only?input?must?be?the?Nx3?array?of?points‘);
end
[n]=size(p2);
if?n?~=3
???????error(‘Input?3D?points?must?be?stored?in?a?Nx3?array‘);
end?
clear??n
%%???Main
starttime=clock;
%add?points?to?the?given?ones?this?is?usefull
%to?create?outside?tetraedroms
tic
[pnshield]=AddShield(p);
fprintf(‘Added?Shield:?%4.4f?s\n‘toc)
tic
tetr=delaunayn(p);%creating?tedraedron
tetr=int32(tetr);%use?integer?to?save?memory
fprintf(‘Delaunay?Triangulation?Time:?%4.4f?s\n‘toc)
%connectivity?data
%find?triangles?to?tetraedrom?and?tetraedrom?to?triangles?connectivity?data
tic
[t2tetrtetr2tt]=Connectivity(tetr);
fprintf(‘Connectivity?Time:?%4.4f?s\n‘toc)
tic
[ccr]=CC(ptetr);%Circumcenters?of?tetraedroms
fprintf(‘Circumcenters?Time:?%4.4f?s\n‘toc)
clear?n
tic
tbound=Marking(ptetrtetr2tt2tetrccrnshield);%Flagging?tetraedroms?as?inside?or?outside
fprintf(‘Walking?Time:?%4.4f?s\n‘toc)
%recostructed?raw?surface
t=t(tbound:);
time=etime(clockstarttime);
fprintf(‘Total?Time:?%4.4f?s\n‘time)
end
%%?Circumcenters
function?[ccr]=CC(ptetr)
%finds?circumcenters?from?a?set?of?tetraedroms
%points?of?tetraedrom
p1=(p(tetr(:1):));
p2=(p(tetr(:2):));
p3=(p(tetr(:3):));
p4=(p(tetr(:4):));
%vectors?of?tetraedrom?edges
v21=p(tetr(:1):)-p(tetr(:2):);
v31=p(tetr(:3):)-p(tetr(:1):);
v41=p(tetr(:4):)-p(tetr(:1):);
%preallocation
cc=zeros(size(tetr1)3);
%Solve?the?system?using?cramer?method
d1=s
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1100582??2008-11-20?18:13??sanjiaowangge?qumian?chongjian\Chair.mat
?????文件??????12438??2009-02-09?17:48??sanjiaowangge?qumian?chongjian\MyCrust.m
?????文件????????527??2017-03-18?14:35??sanjiaowangge?qumian?chongjian\TestMyCrust.m
?????目錄??????????0??2017-03-18?14:35??sanjiaowangge?qumian?chongjian
-----------?---------??----------?-----??----
??????????????1113547????????????????????4
- 上一篇:CVX工具箱-matlab
- 下一篇:matlab生成動態gif 可直接運行
評論
共有 條評論