File Exchange

image thumbnail

Remove Unconnected Triangle

version 1.0.0.0 (3.93 KB) by David Gingras
This function takes a triangular mesh and remove the unconnected cells.

0 Downloads

Updated 25 Nov 2009

View License

This function takes a triangulation and remove the unconnected cells. The group of cells to keep can be specified with an index of triangle contained in this group. If no triangle index is specified, the filter will keep the group with the maximum number of cells.

Input :
"XYZ1" is nx3 matrix which are vertices coordinates
"TRI1" is mx3 matrix which are the standard indexes vertices "triID" is a triangle index of "TRI1" contained on the group of cells to keep. (optionnal)

Output :
"XYZ2" is px3 matrix which are vertices coordinates of output
"TRI2" is qx3 matrix which are the standard indexes of vertices

Simple example :

X=[2 1 3 2 5 5 8 6 7 5 8 9 10 12 10 12 13 15 1 0 2 1];
Y=[2 4 4 6 6 8 8 4 2 2 4 6 8 7 5 5 3 2 7 8 8 9];
Z=zeros(size(X));
TRI=[1 2 3;2 4 3;4 3 5;5 6 7;10 8 9;8 9 11;12 13 14;15 16 17;17 16 18;4 6 5;20 19 21;22 21 20];
[TRI2 XYZ2]=removeUnconnectedTri(TRI,[X' Y' Z']);

subplot(2,1,1)
trisurf(TRI,X,Y,Z), title('Before filter')
axis([min(X) max(X) min(Y) max(Y)]);
campos([7.5 6 10])
camtarget([7.5 6 0])
subplot(2,1,2)
trisurf(TRI2,XYZ2(:,1),XYZ2(:,2),XYZ2(:,3)), title('After filter')
axis([min(X) max(X) min(Y) max(Y)]);
campos([7.5 6 10])
camtarget([7.5 6 0])

Comments and Ratings (3)

Your function distorted my mesh. I haven't checked where it went wrong in your code.

Hello David, I download your code and run it on my Matlab 2017b. Thank you for providing the code, and now I have some questions.

My faces and triangles, the 'fv' struct as you know, are created by MATLAB function 'isosurface'. And I found that your code, line 170-176, remove duplicate nodes WHETHER z IS IDENTICAL OR NOT.
I use Standford Bunny Model to test your code, AND THE RESULT IS UNSATISFACTORY. I think one node is duplicated only when its XYZ is the same as the other one's.

Thank you for reading this message. If you have other considerations about this problem, or want to tell me 『HAHA, you are wrong』, reply me please. And I am glad to show my codes or result figure if you need.

Very useful, thank you.

MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux