How t generate cone using scattered random point cloud?

Using the below code, i have geneated sphere. could anyone please guide me how to geneate cone using random scattered point cloud.
I will be very thankful. Thanks in advance to all community members for their cooperation and guidance. Regards
r = randn (10000,3);
r = round(bsxfun(@rdivide,r,sqrt(sum(r.^2,2)))*130);
x = r(:,1);
y = r(:,2);
z = r(:,3);
scatter3(x,y,z)

3 Kommentare

Dear KSSV, thanks for your kind reply. This code provides cone also but not random scattered point cloud. Regards
They are using grid that means its uniform spaced points? Could you guide me how to generate cone using scattered random point cloud.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Bruno Luong
Bruno Luong am 20 Okt. 2020
Bearbeitet: Bruno Luong am 20 Okt. 2020
This code provides the uniform distribution on the surface of the cone
h = 3; % height
r = 1; % base radius
n = 1e4; % number of points
topcapflag = true; % include the top cap or not
rho = sqrt(rand(1,n));
z = h*rho;
if topcapflag
z(rand(1,n)<r/(h+r))=h;
end
theta = (2*pi)*rand(1,n);
rho = r*rho;
x = cos(theta).*rho;
y = sin(theta).*rho;
% graphic check
figure
plot3(x,y,z,'.')
axis equal

1 Kommentar

Thanks Dearest Bruno for your professional supprot. Regards!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Ameer Hamza
Ameer Hamza am 20 Okt. 2020
This is one way. The distribution is non-uniform
h = 2; % height of cone
r = 1; % maximum radius of cross section of the cone
n = 10000;
z = rand(1, n)*h;
t = rand(1, n)*2*pi;
r = interp1([0 h], [0 r], z);
[x, y] = pol2cart(t, r);
scatter3(x, y, z)

23 Kommentare

Thanks Dear Ameer Hamza. This code sounds very helpful. Could you please explain it please. This will provide the skin of the cone, right.
First, it generates z coordinates and then, based on z value, calculates x and y coordinates that line on the circle.
Thanks Ameer Hamza,
what is the role of interpolation function here? plz explain
r = interp1([0 h], [0 r], z);
rand() function is giving uniformly distributed numbers, right.
How is the distribution non-uniform? Pease guide, regards
interp1() is a 1D interpolation. This line map value in range 0 to h, to the range 0 to r.
How can we make text file of such point cloud?
How to combine x, y and z coordinates and save as text file.
could you please guide. i will be very thankful
Yes, rand gives uniformly distributed z coordinates. So you get an almost equal number of points for all values of z. But the circumference at the difference value of z is not the same. So at the bottom, the points are densely packed, but at the top, they have a lesser density.
Thanks Ameer Hamza. I got the idea. Regards!
You can use writematrix() to write to a .txt file.
writematrix(x(:), y(:), z(:), 'M.txt').
is it workable?
No, the correct syntax is
writematrix([x(:) y(:) z(:)], 'M.txt')
Thanks Ameer Hamza for all your kind guidance. i hope i can learn a lot from you in matlab.
I am glad to be of help!
Regards, i have sent you email by your Mathworks contact.
Ameer Hamza, what about the cap of the cone? is it be closed or open?
hello sir, can you please help me how to generate unformly distributed points inside a cone.
@anuradha verma This code generates uniform data inside the volume of the half cone with axis parallel to z axis
Rmax = 1; % cone base radius
Zmax = 2; % cone height
N = 1e4; % Number of point
z = rand(1,N).^(1/3);
r = Rmax*sqrt(rand(1,N)).*z;
theta = (2*pi)*rand(1,N);
x = r.*cos(theta);
y = r.*sin(theta);
z = Zmax*z;
scatter3(x,y,z);
axis equal
Thanks dear Bruno Luong for your kindness.With regard.
Sir can you help me with the algorithm for the generation of uniformly distributed points inside the volume of a frustrum. Thanks a lot for your help.
@anuradha verma You are off topic; since it is no longer a cone with your last question.
Please open new question and ideally stop hacking other people's question for cohesion.
Sir I am sorry if i have done anything wrong. I am new to matlab so i don't know much about it. Kindly forgive me.
Bruno Luong
Bruno Luong am 10 Nov. 2022
Bearbeitet: Bruno Luong am 10 Nov. 2022
@anuradha verma, it's not difficult, if you have new question, just click on Ask, or this link:https://mathworks.com/matlabcentral/answers/questions/new
then describe the problem accurately,.
This thread is opened by the author for his problem and it's has been answered.
You question merits a new thread
Thank you sir.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Random Number Generation finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by