如何在MATLAB中的散射星上绘制球体?

时间:2015-04-20 22:30:32

标签: matlab plot

我想制作一个分散的星星并在其上绘制多个球体?我试过这样做:

x = rand(100,1); y = rand(100,1); z = rand(100,1);
scatter(x,y,z,'c*')

在此之后,我尝试绘制球体,但球体将星球推向一边。我该如何解决这个问题?

vec = [1;1;1]; rads = 1;
[x y z] = sphere;
x = rads*x+vec(1); y = rads*y+vec(2);
z = rads*z+vec(3);

surf(x, y, z, 'Edgecolor', 'none')

colormap colorcube

enter image description here

正如你所看到的,它将星星推向了一边

谢谢。

1 个答案:

答案 0 :(得分:1)

它将散点图推向一边,因为'星'的范围是[0 1],因为命令rand(...)生成0到1之间的值。另一方面,球体从0开始所有3个方向中的2个。

要解决此问题,您只需将用于生成散点图的数据乘以2即可,因此它们将位于[0 2]范围内。

这样做会导致以下结果:

enter image description here

代码。请注意,我使用scatter3代替scatter

clear
clc
close all

xs = 2*rand(100,1); ys = 2*rand(100,1); zs = 2*rand(100,1);
hScatter = scatter3(xs,ys,zs,'c*')

hold on

vec = [1;1;1]; rads = 1;
[x y z] = sphere;
x = rads*x+vec(1); y = rads*y+vec(2);
z = rads*z+vec(3);

surf(x, y, z, 'Edgecolor', 'none')

colormap colorcube

rotate3d on