我想制作一个分散的星星并在其上绘制多个球体?我试过这样做:
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
正如你所看到的,它将星星推向了一边
谢谢。
答案 0 :(得分:1)
它将散点图推向一边,因为'星'的范围是[0 1]
,因为命令rand(...)
生成0到1之间的值。另一方面,球体从0开始所有3个方向中的2个。
要解决此问题,您只需将用于生成散点图的数据乘以2即可,因此它们将位于[0 2]
范围内。
这样做会导致以下结果:
代码。请注意,我使用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