subtri(F,V,n,unique​Opt)

Sub-triangulates patch format data. Can be used to increase the density of triangulated data
959 Downloads
Aktualisiert 28 Apr 2015

Lizenz anzeigen

[Fs,Vs]=subtri(F,V,n,uniqueOpt);
Sub-triangulates the triangles defined by the patch format data F (faces) and V (vertices). Can be used to increase the density of triangulated data.

Sub-triangulates the triangles defined by the patch format data F (faces) and V (vertices). Creates n addition points on the edges of the initial triangles, thus it creates (n+1).^2 triangles per original triangle. Two methods are implemented one which iteratively splits edges and can thus only be used if log2(n+1) is a positive integer. This method guarantees that all points are unique. If log2(n+1) is not a positive integer points are seeded on all edges initially creating non-unique points. However if uniqueOpt is 1 (default if not provided) these points are suppressed using the unique command (based on rounding of coordinates to 5th decimal place after edge length based scaling).

%% EXAMPLE
[X,Y] = meshgrid(linspace(-10,10,15));
Z = sinc(sqrt((X/pi).^2+(Y/pi).^2));
F = delaunay(X,Y); V=[X(:) Y(:) Z(:)]; C=mean(Z(F),2);

n=2;
[Fs,Vs]=subtri(F,V,n);
Vs(:,3)=sinc(sqrt((Vs(:,1)/pi).^2+(Vs(:,2)/pi).^2)); Z=Vs(:,3);Cs=mean(Z(Fs),2);

figure('units','normalized','Position',[0 0 1 1],'Color','w'); colordef('white');
subplot(1,2,1);patch('Faces',F,'Vertices',V,'FaceColor','flat','CData',C,'FaceAlpha',0.5,'EdgeColor','k','LineWidth',2); hold on;
axis tight; axis square; grid on; hold on; view(3); axis off;
title('Original','FontSize',20);
subplot(1,2,2);patch('Faces',Fs,'Vertices',Vs,'FaceColor','flat','CData',Cs,'FaceAlpha',0.5,'EdgeColor','k','LineWidth',0.5); hold on;
axis tight; axis square; grid on; hold on; view(3); axis off;
title(['n=',num2str(n)],'FontSize',20);

Zitieren als

Kevin Moerman (2024). subtri(F,V,n,uniqueOpt) (https://www.mathworks.com/matlabcentral/fileexchange/28277-subtri-f-v-n-uniqueopt), MATLAB Central File Exchange. Abgerufen .

Kompatibilität der MATLAB-Version
Erstellt mit R2015a
Kompatibel mit allen Versionen
Plattform-Kompatibilität
Windows macOS Linux
Kategorien
Mehr zu Delaunay Triangulation finden Sie in Help Center und MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Veröffentlicht Versionshinweise
1.3.0.0

Updated with splitting method (faster)

1.2.0.0

Fixed normal direction and reference to missing function

1.1.0.0

Fixed instability due to "unique" function. Removed dependency on linspacen function which I did not upload.

1.0.0.0