How to calculate the volume enclosed by a set of XYZ points in 3D?

71 visualizzazioni (ultimi 30 giorni)
Hi,
I am trying to find the volume of a region (defined by X,Y and Z coordinates) enclosed below a (Z='constant') plane. The data has peaks (positive Z) and a valley (negative Z), and the mean surface is assigned z=0. I have tried with the following piece of code, but I doubt it gives me the total volume bound by the surface against z=0, including the peak volumes as well.
[X,Y,Z] = xyzread("data.xyz");
plot3(X,Y,Z)
[fitobject, gof, output] = fit([X,Y],Z, 'biharmonicinterp');
plot(fitobject)
a = min(X);
b = max(X);
c = min(Y);
d = max(Y);
volume_under_fit = quad2d(fitobject,a,b,c,d)

Risposta accettata

Bruno Luong
Bruno Luong il 23 Gen 2021
Modificato: Bruno Luong il 23 Gen 2021
V is the volume between the plane x-y (z==0) and the surface z(x,y) from your data.
If you want the volume of the data after substract the base plane surface, you need to estimated the equation by regression.
load('data.xyz')
x=data(:,1);
y=data(:,2);
z=data(:,3);
T=delaunay(x,y);
trisurf(T,x,y,z);
xy = [x,y];
a = xy(T(:,2),:)-xy(T(:,1),:);
b = xy(T(:,3),:)-xy(T(:,1),:);
V = ((a(:,1).*b(:,2)-a(:,2).*b(:,1))' * sum(z(T),2))/6
  5 Commenti
Lyhour Chhay
Lyhour Chhay il 16 Giu 2022
Dear Bruno Luong and Sourav Sahoo,
First of all, I really interest your approach to calculate the volme. I have a problem similar to a proposed problem. I have point cloud with x,y,z data. I want to find the volume between the plan x-y (z==5) and my point cloud data. I will show in the figure below. how can I solve this problem ? I tried to use the code in the comment, it show the negative value for my result. thank you very much.
Bruno Luong
Bruno Luong il 17 Giu 2022
If you want to adapt the above code plane z=5 and you data is bellow the plane then change to
x=data(:,1);
y=data(:,2);
z=5-data(:,3);
and do the rest similarly.

Accedi per commentare.

Più risposte (1)

Walter Roberson
Walter Roberson il 23 Gen 2021
Modificato: Walter Roberson il 23 Gen 2021

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by