volume calculation from the DelaunayTri(x,y,z) function
7 次查看(过去 30 天)
显示 更早的评论
I have the data in X,Y,Z format.
Then I entered a function into script:
rng default;
DT=DelaunayTri(x,y,z)
tetramesh(DT,'FaceAlpha',0.3)
The question is, how do I calculate the volume from this Delaunay Triangulation?
Thank you for the answer.
0 个评论
采纳的回答
John D'Errico
2024-4-21
编辑:John D'Errico
2024-4-21
Its not THAT hard. You compute the volume of each simplex in the tessellation. Sum the absolute values up. (Since those simplexes may have random signs.)
As an example, I'll create a set of simplexes that lie in a rectangular box, of edge lengths [1 2 4]. So the volume would be just a little less than 8.
xyz = rand(10000,3).*[1 2 4];
Tess = delaunayTriangulation(xyz)
Now, to write a little code, probably something I should have posted online before. I've attached the DTvolume code to this response.
V = DTvolume(Tess)
The code I wrote does a little extra, to avoid numerical problems to whatever extent possible. And of course, it is fully vectorized, and even works for 2-d triangulations.
0 个评论
更多回答(1 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!