How to get the volume of a 3D concave shape?
12 次查看(过去 30 天)
显示 更早的评论
Hi smart guys,
I am wondering if anyone knows how to get the volume of a 3D concave shape? The Matlab build-in function can only calculate the volume of a convex shape. For example,
[K, V] = convhulln(shape.vertices);
V is the volume. Here the shape is defined by a mesh with vertices and faces.
Thanks very much.
Best, Aaronne.
0 个评论
采纳的回答
Sean de Wolski
2013-1-10
编辑:Sean de Wolski
2013-1-10
I would recommend voxelizing it and then just summing the resulting three dimensional volumetric image. There are a few utilities on the FEX that do this:
0 个评论
更多回答(2 个)
Image Analyst
2013-1-10
If you have a 3D image, one way is to just add up all the voxels in the 3D image. It gets more complicated if you don't want a stack of cubes (like a voxelized image) and you want a volume defined by triangulation. And I'm not sure the volume difference would be very significant. Exactly what is the form of the data you are starting with? Do you have a list of (x,y,z) locations for every quantized point in the volume? Or do you only have a few vertices that are scattered around?
0 个评论
José-Luis
2013-1-10
编辑:José-Luis
2013-1-10
Not automagically. You could try the file exchange. In 3D you could use the delaunay() function and sum up the volumes of all the tetrahedrons.
The volume of a tetrahedron is, in pseudo-code:
V = 1/6 *|det(V1,V2,V3)|
with
V1 := P2-P1
V2 := P3-P2
V3 := P4-P3
5 个评论
Sean de Wolski
2013-1-10
Judging by the shape.vertices, I was dangerously assuming there would also be a faces or connectivities matrix as well.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Triangulation Representation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!