matlab画随机球

matlab画随机球,第1张

m=randi(50,10,3);
[x,y,z]=sphere(20);
figure
for i=1:10
X=m(i,1)+10x;
Y=m(i,2)+10y;
Z=m(i,3)+10z;
surf(X,Y,Z)
hold on
end

参考代码:

(a)同心圆

R = 25;   % 球半径
C = 10;   % 同心圆数
N = 40;   % 每个圆上点数
h = linspace(0, 2R, C+2)';
t = linspace(0, 2pi, N);
r = sqrt( R^2 - (h-R)^2 );
x = R + r  cos(t);
y = R + r  sin(t);
h = repmat(h, 1, N);
plot3(x',y',h','k-')
axis equal
grid on

(b)螺旋线:

R = 25;   % 球半径
C = 10;   % 螺旋圈数
N = 200;  % 点数
h = linspace(0,2R, N);
t = h / (2R)  C  pi;
r = sqrt( R^2 - (h-R)^2 );
x = R + r  cos(t);
y = R + r  sin(t);
plot3(x,y,h,'-')
axis equal
grid on

[xx,yy,zz] = sphere;
产生一个半径为1,圆心在[0,0,0]的球,直接surf(xx,yy,zz)即可;
要画半径为r,圆心在[x,y,z]的球,直接surf(xxr+x,yyr+y,zzr+z)
不知您问的是否是这个意思

代码如下:

clc
clear
[x1,y1,z1] = ellipsoid(0,0,0,1,1,1);
[x2,y2,z2] = meshgrid(-1:001:1,-1:001:1,05); 
[x3,y3,z3] = meshgrid(-1:001:1,-1:001:1,-05);
figure(1)
hold on
view(-375,15);
surf(x1,y1,z1);
surf(x2,y2,z2); 
surf(x3,y3,z3);
axis equal
grid on

sphere函数加mesh或surf

改变圆心的坐标即可

clc

[x y z]=sphere(50);

mesh(3x,3y,3z+9);
hold on

mesh(3x+5,3y+5,3z+14);
mesh(3x+10,3y+10,3z+19);

axis equal


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10431564.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-08
下一篇2023-05-08

发表评论

登录后才能评论

评论列表(0条)

    保存