Divide a 3D shape into equal-volume subregions?
6 次查看(过去 30 天)
显示 更早的评论
I have a 3D shape that can be approximated with Delauny triangularization or a convex hull. I would like to divide the shape into a certain number of equal-volume subregions; ideally each subregion would have nearly the same surface area. Here are a couple places I looked but did not find a solution,
- Object functions that you can use on a Delauny triangularization object, a polyshape object, or an alphashape object
- File exchange polygon2voxel
Below is an example conical 3D shape. How can I divide the volume enclosed by the shape into 100 equal-volume subregions? The subregions can all be entirely enclosed by the hull, leaving some of the shape's volume unenclosed by subregions, as if you were to fill a conical container with ice cubes.
Is the best way just to grid the region in xyz and adjust the grid spacing until I get 100 cubes?
load('seamount.mat', 'x', 'y', 'z'); % Generic data that comes with Matlab; contains 3D points
DT = delaunayTriangulation(x,y,z); % 3D triangulization of points
[C, volHull] = convexHull(DT); % Compute convex hull, which is cone-shaped
figure('Name', 'Convex Hull');
hPatch = trisurf(C,DT.Points(:,1),DT.Points(:,2),DT.Points(:,3), ...
'FaceAlpha', 0.1);
% Now how to find 100 subregions of equal volume within this shape
7 个评论
John D'Errico
2020-2-25
I sincerely doubt it will be easy to do for a completely general shape, especially not if you may have a shape that need not even be convex or one that lacks some simple regularity.
That said, it is trivial to do, IF you will allow the shape to be sliced into very flat sections. But you seem to want to force the pieces to be themselves nicely regular, that will now tile the domain. Shiver.
I can only offer luck in your quest. I would strongly suggest that you formulate the problem more carefully and completely. For example, you are not very clear about the necessary shape of the pieces. But vagueness is bad when you are dealing with mathematics.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Bounding Regions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!