How to get the volume of a 3D concave shape?
    5 次查看(过去 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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



