How can I create a Delanay point in a cube?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Chenglin Li
il 30 Lug 2022
Commentato: Chenglin Li
il 3 Ago 2022
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 Commenti
Risposta accettata
Bruno Luong
il 30 Lug 2022
Modificato: Bruno Luong
il 30 Lug 2022
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 Commenti
Bruno Luong
il 3 Ago 2022
Modificato: Bruno Luong
il 3 Ago 2022
You always speak about "triangles" as if you want to mesh the surface and not the volume.
Più risposte (1)
Shivam
il 30 Lug 2022
To triangulate a 3D point cloud you need the BallPivoting algorithm:
https://vgc.poly.edu/~csilva/papers/tvcg99.pdf
Vedere anche
Categorie
Scopri di più su Geometry and Mesh in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!