How can I create a Delanay point in a cube?
1 次查看(过去 30 天)
显示 更早的评论
I want to generate Mesh for a cube,but the points inside the cube can only be regularly distributed so far, and I want the surface and volume meshes to be regular triangles and regular tetrahedra.Matlab only. What do I need to do?
I would appreciate some help :)
0 个评论
采纳的回答
Bruno Luong
2022-7-30
编辑:Bruno Luong
2022-7-30
A cube can be devided in 6 tetrahedra
nx=4;
ny=3;
nz=2;
grid = arrayfun(@(n)linspace(0,n,n+1),[nx,ny,nz], 'unif', 0);
[grid{:}] = ndgrid(grid{:});
grid = cat(4,grid{:});
grid = reshape(grid,[],3);
Tcube = [...
5, 1, 3, 2;
7, 5, 3, 2;
7, 6, 5, 2;
7, 4, 6, 2;
7, 3, 4, 2;
7, 8, 6, 4];
[Tx, Ty, Tz]=ind2sub([2 2 2],Tcube);
Tx = Tx-1;
Ty = Ty-1;
Tz = Tz-1;
C = zeros([nx,ny,nz,size(Tcube)]);
for k=1:nz
for j=1:ny
for i=1:nx
Cijk = sub2ind([nx,ny,nz]+1,i+Tx,j+Ty,k+Tz);
C(i,j,k,:,:) = reshape(Cijk,[1,1,1,size(Tcube)]);
end
end
end
C = reshape(C, [], 4);
TR = triangulation(C,grid);
% Graphical plot
patch('Faces', TR.ConnectivityList, 'Vertices', TR.Points,'FaceColor', 'g', 'FaceAlpha', 0.5);
view(3);
axis equal
7 个评论
Bruno Luong
2022-8-3
编辑:Bruno Luong
2022-8-3
You always speak about "triangles" as if you want to mesh the surface and not the volume.
更多回答(1 个)
Shivam
2022-7-30
To triangulate a 3D point cloud you need the BallPivoting algorithm:
https://vgc.poly.edu/~csilva/papers/tvcg99.pdf
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Geometry and Mesh 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!