满意答案
xue7888779
2017.04.20
采纳率:44% 等级:9
已帮助:314人
clc,clear; %一个三维随机运动的小球 r=0.5;%球的半径 %运动的范围 x1=0;x2=30; y1=0;y2=30; z1=0;z2=30; %初始位置 随机生成 x0=rand(1)*(x2-x1-2*r)+x1; y0=rand(1)*(y2-y1-2*r)+y1; z0=rand(1)*(z2-z1-2*r)+z1; pos=[x0;y0;z0]; figure(1) [x,y,z] = ellipsoid(pos(1),pos(2),pos(3),r,r,r); surf(x,y,z,ones(size(x))) %画出来球 n=200;%随机运动的次数 p=1; %p可以用来控制每次运动距离的大小 for i=1:n %产生运动的方向与运动距离,用一个随机向量表示 s=0; while(s==0) direct=rand(3,1)-0.5; dd=direct/norm(direct,2); dd=dd*p; post=pos+dd; if (post(1)>=x1+r&&post(1)<=x2-r)&&(post(2)>=y1+r&&post(2)<=y2-r)&&(post(3)>=z1+r&&post(3)<=z2-r) s=1; end end pos=pos+dd; [x,y,z] = ellipsoid(pos(1),pos(2),pos(3),r,r,r); surf(x,y,z,ones(size(x))) %画出来球 axis([x1 x2 y1 y2 z1 z2]) pause(0.1); %设置暂停时间 end
因为是随机运动 如果每次运动的距离设置的不大,小球基本上是在初始位置的范围内运动
05分享举报