How to fix number of points of a cone using Matlab?

Illustration
Kathryn - 2020-09-30T10:13:58+00:00
Question: How to fix number of points of a cone using Matlab?

The code below is great which generates a cone of infinite points. Could anyone help me how to fix the number of points. For example, if i want only 10, 000 points or 20,000 point on the cone. How can i fix on the cone using matlab code below.  r1=input('enter radius'); r=r1:-0.5:0; h=input('enter ht'); % -------------------- xvec = floor(-r1):ceil(r1); yvec = xvec; hvec = 0:ceil(h); [X, Y, H] = ndgrid(xvec, yvec, 0:floor(h)); r_at_H = r1 * (1 - H/h); is_in_cone = abs(X) <= r1 & abs(Y) <= r1 & H <= h & sqrt(X.^2+Y.^2) <= r_at_H; Xc = X(is_in_cone); Yc = Y(is_in_cone); Hc = H(is_in_cone); pointsize = 20; figure(2) scatter3(Xc, Yc, Hc, pointsize, 'filled')

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

Grid pattern
The volume of the cone of base radius R and height h
 
 
Vcone = pi*R^2*h/3
Assuming you dsicretize by small volume (dx x dx x dx), you 'll get
N ~ Vcone/dx^3. So if you want an approximative of N with grid pattern:
 
% Cone parameters
R = 10;
h = 10;
N = 10000;

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; % Edit bug fix
Xc = X(is_in_cone);
Yc = Y(is_in_cone);
Zc = Z(is_in_cone);

figure(3)
pointsize = 3,
scatter3(Xc, Yc, Zc, pointsize, 'filled')
axis equal

numel(Xc) % should be close to N


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!