Divide square faces into triangles

2 Ansichten (letzte 30 Tage)
bbah
bbah am 3 Jan. 2020
Kommentiert: bbah am 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

Akzeptierte Antwort

Matt J
Matt J am 3 Jan. 2020
Bearbeitet: Matt J am 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 Kommentare
bbah
bbah am 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 am 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;

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 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

Kategorien

Mehr zu Delaunay Triangulation finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by