Divide square faces into triangles

5 vues (au cours des 30 derniers jours)
bbah
bbah le 3 Jan 2020
Commenté : bbah le 6 Jan 2020
Hello,
i have a faces matrix and i want to divide it into triangles
e.g. faces is a 100x4 matrix
and i want the same faces as triangles e.g. 123x3 ?
i tried it with the delaunayTriangulation but it distorts my mesh.
thank you

Réponse acceptée

Matt J
Matt J le 3 Jan 2020
Modifié(e) : Matt J le 3 Jan 2020
If the vertices of the squares are all pre-ordered in counter-clockwise or clock-wise order, I think you could just do,
Triangulation=[ Faces(:,[1,2,3]) ; Faces(:,[3,4,1])] ;
If the vertices are not pre-ordered, it wouldn't be too difficult to loop through and sort them first.
  3 commentaires
bbah
bbah le 6 Jan 2020
the way you did it i got only Triangulation = [faces(:,1),faces(:,2),faces(:,3)];
i did it with this loop and it works
for i = 1:length(faces)
first = faces(i,1);
second = faces(i,2);
third = faces(i,3);
fourth = faces(i,4);
first_lines(i,:) = [first second third];
second_lines(i+1,:) = [first third fourth];
end
second_lines(1,:) = [];
Triangulation = zeros(2*length(first_lines),3);
Triangulation(1:2:end-1) = first_lines;
Triangulation(2:2:end) = second_lines;
bbah
bbah le 6 Jan 2020
OR
first_lines = [faces(:,[1,2,3])];
second_lines = [faces(:,[1,3,4])];
faces = zeros(2*length(first_lines),3);
faces(1:2:end-1) = first_lines;
faces(2:2:end) = second_lines;

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 3 Jan 2020
I think you would have to do the following steps in a loop over all the faces,
  1. FInd a 2D coordinate system for the plane passing through each face
  2. Convert the 3D coordinates of each of the faces vertice to 2D coordinates
  3. Do a 2D Delaunay tringulation

Catégories

En savoir plus sur Delaunay Triangulation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by