How to get the volume of a 3D concave shape?

11 ビュー (過去 30 日間)
Aaronne
Aaronne 2013 年 1 月 10 日
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.

採用された回答

Sean de Wolski
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:

その他の回答 (2 件)

Image Analyst
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?

José-Luis
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
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.
José-Luis
José-Luis 2013 年 1 月 10 日
@Sean: thanks!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeTriangulation Representation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by