matlab 椭球 多取点,[MATLAB数学相关] 求助:椭球随机分布程序

icon1.gif 回复: 求助:椭球随机分布程序

现在可以生成随机点,可是应该怎么生成球体呢?

%%%%%%%%%%%%%%%%%%edited by wen in 16th, July, 2013%%%%%%%%%%%%%%%%%%%

clear all;clc

xyzr=[];

n=0;

while (n<10) %(1) while

n=n+1;

x=100*rand;

y=100*rand;

z=100*rand;

r=3+2*rand;

if ~isempty(xyzr) %(2.1)if

d1=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y).^2+(xyzr(:,3)-z).^2);

d2=xyzr(:,4)+r;

else %(2.1)else

d1=sqrt((x)^2+(y)^2+(z)^2);

d2=d1+r;

end %(2.1)end

if all(d1>=d2) %(2.2)if

if (x>=r && x<=100-r && y>=r && y<=100-r && z>=r && z<=100-r) %(3.1)if

xyzr=[xyzr;x y z r];

elseif (x=r && y<=100-r)%x

d1=sqrt((xyzr(:,1)-x-100).^2+(xyzr(:,2)-y).^2+(xyzr(:,3)-z).^2);

d2=xyzr(:,4)+r;

if (z>=r && z<=100-r) % %(4.1)if

if all(d1>=d2) %(5.1)if

xyzr=[xyzr;x y z r;x+100 y z r];

end %(5.1)end

elseif (z

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y).^2+(xyzr(:,2)-z-100).^2);

d4=xyzr(:,4)+r;

if all(d1>=d2) && all(d3>=d4) %(5.2)if

xyzr=[xyzr;x y z r;x+100 y z r;x y z r];

end %(5.2)end

else %(4.1)else

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y).^2+(xyzr(:,2)-z+100).^2);

d4=xyzr(:,4)+r;

if all(d1>=d2) && all(d3>=d4) %(5.3)if

xyzr=[xyzr;x y z r;x+100 y z r;x y z-100 r];

end %(5.3)end

end %(4.1)end

elseif (x

if (z>=r && z<=100-r) % %(4.2)if

if all(d1>=d2) %(5.4)if

xyzr=[xyzr;x y z r;x+100 y+100 z r];

end %(5.4)end

elseif z

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y-100).^2+(xyzr(:,2)-z-100).^2);

d4=xyzr(:,4)+r;

if all(d1>=d2) && all(d3>=d4) %(5.5)if

xyzr=[xyzr;x y z r;x+100 y+100 z r;x y z r];

end %(5.5)end

else %(4.2)else

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y+100).^2+(xyzr(:,2)-z+100).^2);

d4=xyzr(:,4)+r;

if (all(d1>=d2) && all(d3>=d4)) %(5.6)if

xyzr=[xyzr;x y z r;x+100 y z r;x y-100 z-100 r];

end %(5.6)end

end %(4.2)end

elseif (x>100-r) %x>100-r %(3.1)elseif

d1=sqrt((xyzr(:,1)-x+100).^2+(xyzr(:,2)-y).^2+(xyzr(:,2)-z).^2);

d2=xyzr(:,4)+r;

if ((y>=r)&& (y<=(100-r))) %(4.3)if

if ((z>=r)&&(z<=(100-r))) %(5.7)if

if all(d1>=d2) %(6.1)if

xzyr=[xyzr;x y z r;x-100 y z r];

end %(6.1)end

elseif (z

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y).^2+(xyzr(:,2)-z-100).^2);

d4=xyzr(:,4)+r;

if (all(d1>=d2) && all(d3>=d4)) %(6.2)if

xyzr=[xyzr;x y z r;x-100 y z r;x y z+100 r];

end %(6.2)end

else %(5.7)else

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y).^2+(xyzr(:,2)-z+100).^2);

d4=xyzr(:,4)+r;

if all(d1>=d2) && all(d3>=d4) %(6.3)if

xyzr=[xyzr;x y z r;x-100 y z r;x y z-100 r];

end %(6.3)end

end %(5.7)end

elseif (y

if ((z>=r)&&(z<=(100-r))) %(5.8)if

if all(d1>=d2) %(6.4)if

xzyr=[xyzr;x y z r;x-100 y-100 z r];

end %(6.5)end

elseif z

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y-100).^2+(xyzr(:,2)-z-100).^2);

d4=xyzr(:,4)+r;

if (all(d1>=d2))&&(all(d3>=d4)) %(6.6)if

xyzr=[xyzr;x y z r;x-100 y z r;x y+100 z+100 r];

end %(6.6)end

else %(5.8)else

d3=sqrt((xyzr(:,1)-x).^2+(xyzr(:,2)-y+100).^2+(xyzr(:,2)-z+100).^2);

d4=xyzr(:,4)+r;

if all(d1>=d2) && all(d3>=d4) %(6.7)if

xyzr=[xyzr;x y z r;x-100 y z r;x y-100 z-100 r];

end %(6.7)end

end %(5.8)end

end %(4.3)end

else %(3.1)else

n=n-1;

end %(3.1)end

else %(2.1)else

if (x

xyzr=[xyzr;x+100 y z r];

elseif (x>100-r)

xyzr=[xyzr;x-100 y z r];

elseif (y

xyzr=[xyzr;x y+100 z r];

elseif (y>100-r)

xyzr=[xyzr;x y-100 z r];

elseif (z

xyzr=[xyzr;x y z+100 r];

elseif (z>100-r)

xyzr=[xyzr;x y z-100 r];

else

xyzr=[x y z r];

end

end %(2.1)end

end

%(1)end

xyzr

figure(1)

theta=[0:0.1

tongue.gifi 0]';

phi=[0:0.1:2*pi 0]';

%%x=[ones(size(theta)) sin(theta)]*[ones(size(phi)) cos(phi)]*xyzr(:,:,[1 4])';

%%y=[ones(size(theta)) sin(theta)]*[ones(size(phi)) sin(phi)]*xyzr(:,:,[2 4])';

%%z=[ones(size(theta)) cos(theta)]*xyzr(:,:,[3 4])';

%%h=plot3(x,y,z);

%%hold on

plot3(xyzr(:,1),xyzr(:,2),xyzr(:,3),'.');

% set(h,'color','r');

axis equal

axis([0 100 0 100 0 100])

% hold off

上传的图像 ea96f0d426ac0fec609b0737046fe854.gif untitled.jpg (9.8 KB, 1 次查看)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值