i am using this code (Mr. David), How to measure volume of whole cone. MATLAB CODE Coords= load('Bruno_Cone_20000_points.txt') x = Coords(:,1); y = Coords(:,2); z = Coords(:,3); % move to origin x = x-mean(x); y = y-mean(y); z = z-mean(z); % convert to spherical system [t,p,r] = cart2sph(x,y,z); tri = delaunay(t,p); trisurf(tri,x,y,z) % indices of triangle i1 = tri(:,1); i2 = tri(:,2); i3 = tri(:,3); % vectors of triangle base v1 = [x(i1)-x(i2) y(i1)-y(i2) z(i1)-z(i2)]; v2 = [x(i1)-x(i3) y(i1)-y(i3) z(i1)-z(i3)]; A = 1/2*cross(v1,v2,2); % surface of a triangle V = 1/3*dot(A,[x(i1) y(i1) z(i1)],2); % volume of a triangle format long V = sum(abs(V))
Neeta Dsouza answered .
2025-11-20
However I guess what you want is approximate the volume of the (cone) object from the point cloud.
% Cone parameters R = 10; h = 20; N = 10000; % Generate points in cone dx = (pi*R^2*h/3/N)^(1/3); rvec = linspace(-R,R,ceil(2*R/dx)); hvec = linspace(0,h,ceil(h/dx)); [X,Y,Z] = ndgrid(rvec,rvec,hvec); is_in_cone = (X.^2+Y.^2) <= (R/h*(h-Z)).^2; x = X(is_in_cone); y = Y(is_in_cone); z = Z(is_in_cone); % Method1: Estimate the volume of the 3D object assuming the object is convex tri = delaunay(x,y,z); trisurf(tri,x,y,z) % indices of triangle i1 = tri(:,1); i2 = tri(:,2); i3 = tri(:,3); i4 = tri(:,4); % Method1: Volume by summing tetrahedron v1 = [x(i1)-x(i2) y(i1)-y(i2) z(i1)-z(i2)]; v2 = [x(i1)-x(i3) y(i1)-y(i3) z(i1)-z(i3)]; v3 = [x(i1)-x(i4) y(i1)-y(i4) z(i1)-z(i4)]; A = 1/2*cross(v1,v2,2); % surface of a triangle V = 1/3*dot(A,v3,2); % volume of a tetrahedron format long V = sum(abs(V)) % Method2: use CONVHULL [~,V]=convhull(x,y,z) % Method3: theoretical volume of a cone computed directly from base radius and heigh V = pi*R^2*h/3