17 views (last 30 days)

i am using this code (Mr. David), How to measure volume of whole cone. Please guide. Regards in advance.

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))

Bruno Luong
on 26 Aug 2020

Edited: Bruno Luong
on 26 Aug 2020

Your post is not clear (see our comments). 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

Opportunities for recent engineering grads.

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

Start Hunting!
## 3 Comments

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/584525-how-to-measure-the-volume-of-a-cone-using-surface-area-of-triangles-in-matlab#comment_986018

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/584525-how-to-measure-the-volume-of-a-cone-using-surface-area-of-triangles-in-matlab#comment_986018

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/584525-how-to-measure-the-volume-of-a-cone-using-surface-area-of-triangles-in-matlab#comment_986042

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/584525-how-to-measure-the-volume-of-a-cone-using-surface-area-of-triangles-in-matlab#comment_986042

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/584525-how-to-measure-the-volume-of-a-cone-using-surface-area-of-triangles-in-matlab#comment_986225

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/584525-how-to-measure-the-volume-of-a-cone-using-surface-area-of-triangles-in-matlab#comment_986225

Sign in to comment.