trying to model points inside a sphere

23 ビュー (過去 30 日間)
Devon Romine
Devon Romine 2018 年 5 月 3 日
コメント済み: David Goodmanson 2018 年 5 月 5 日
if true
clear
clear all
r=randn(0,1);
theta=randn(0,1)*(pi);
phi=randn(0,1)*(2*pi);
for N=1:20
hold on
x=r(N).*sin(theta(N)).*cos(phi(N));
y=r(N).*sin(theta(N)).*sin(phi(N));
z=r(N).*cos(theta(N));
end
hold off
drawnow
% code
end
I am trying to model a bunch of points inside a sphere, I put the spherical cooridinates into cartesian, but cannot get it to plot, any help would be appreciated.
  5 件のコメント
Devon Romine
Devon Romine 2018 年 5 月 4 日
I did not know about the view(3), that was what I needed thank you!
jonas
jonas 2018 年 5 月 4 日
Great! I will post an answer for future reference, if anyone else wants to model a sphere with random points

サインインしてコメントする。

回答 (1 件)

jonas
jonas 2018 年 5 月 4 日
This will generate a sphere with random points inside of it (code adapted from the original question):
if true
clear
clear all
n=20;
r=rand(n,1);
theta=rand(n,1)*pi;
phi=rand(n,1)*(2*pi);
x=r.*sin(theta).*cos(phi);
y=r.*sin(theta).*sin(phi);
z=r.*cos(theta);
sphere;
hold on
scatter3(x,y,z)
hold off
% code
end
ha=get(gca,'children')
set(ha(2),'FaceColor',[0 0 0],'FaceAlpha',0.1,'EdgeAlpha',0.2)
  1 件のコメント
David Goodmanson
David Goodmanson 2018 年 5 月 5 日
Hi Jonas / Devin,
This code is pretty good, except if you try it for something like n = 2000 you will see a cluster of points in the middle of the sphere and also along the z axis. It's more usual to be looking for a uniform density of points in the sphere, which would be
r = rand(n,1).^(1/3);
costheta = 2*rand(n,1)-1;
sintheta = sqrt(1-costheta.^2);
phi=rand(n,1)*(2*pi);
x=r.*sintheta.*cos(phi);
y=r.*sintheta.*sin(phi);
z=r.*costheta;

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSurface and Mesh Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by