How to get the volume of a 3D concave shape?
11 ビュー (過去 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!