4.5
4.5 | 3 ratings Rate this file 10 Downloads (last 30 days) File Size: 7.25 KB File ID: #28277 Version: 1.3
image thumbnail

subtri(F,V,n,uniqueOpt)

by

Kevin Moerman (view profile)

 

23 Jul 2010 (Updated )

Sub-triangulates patch format data. Can be used to increase the density of triangulated data

| Watch this File

File Information
Description

[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);

MATLAB release MATLAB 8.5 (R2015a)
MATLAB Search Path
/
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (5)
22 May 2014 Lomas

Lomas (view profile)

 
22 May 2014 Lomas

Lomas (view profile)

 
28 Sep 2010 M P

M P (view profile)

 
29 Jul 2010 Kevin Moerman

Kevin Moerman (view profile)

Updated 28/07/2010

Comment only
28 Jul 2010 Kevin Moerman

Kevin Moerman (view profile)

Will be updated shortly. Currently requires missing function and filtering of double points using "unique" is not reliable.

Comment only
Updates
28 Jul 2010 1.1

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

30 Sep 2010 1.2

Fixed normal direction and reference to missing function

28 Apr 2015 1.3

Updated with splitting method (faster)

Contact us