4
我已經有了一個3D三角剖分dt
(或者可能是四面體化)的3D點雲,我希望找到一個很好的方法從中提取三角形。請注意,我知道如何獲得四面體,其簡單的dt.ConnectivityList
,是否有一種從四面體中獲得三角形的有效方法?每個三角形只能在列表中出現一次。如何從3D Delaunay三角剖分中獲得三角形
目前我'做以下 - 這不過是痛苦的緩慢:
dt = delaunayTriangulation([X Y Z]);
tetrahedra = dt.ConnectivityList;
tris = cell(1, size(tetrahedra, 1)); % contains indices of tris in a tetra
for tt=1:size(tetrahedra, 1)
vertIds = tetrahedra(tt, :); % vertex indices
vmask = logical([0 1 1 1]);
tris{tt} = [vertIds(circshift(vmask, [0 0 0 0]));
vertIds(circshift(vmask, [1 1 1 1]));
vertIds(circshift(vmask, [2 2 2 2]));
vertIds(circshift(vmask, [3 3 3 3]))];
end
tris = unique(sort(cell2mat(tris'), 2), 'rows');
不,我看看你在那裏使用的任何函數,但是你是否嘗試將'tris'聲明爲一個數組而不是ac數組?我對大循環中的細胞有過「有趣」的體驗。 – McMa
@McMa是的,這是一個可能的優化,但是,我仍然需要對每一行進行排序,然後刪除模糊。 – brtk