File Exchange

## Remove Unconnected Triangle

version 1.0.0.0 (3.93 KB) by David Gingras

### David Gingras (view profile)

This function takes a triangular mesh and remove the unconnected cells.

Updated 25 Nov 2009

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])

Audrey Cheong

### Audrey Cheong (view profile)

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

Nijohnphycco walstruzz

### Nijohnphycco walstruzz (view profile)

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.

Vincent Jaouen

### Vincent Jaouen (view profile)

Very useful, thank you.

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