• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB之画确定区域内互不接触的球

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MATLAB之画确定区域内互不接触的球

程序要求:在确定区域内,画互不接触的球
输入:球的个数N,半径D,两球之间的最小距离K倍(D的倍数)
输出:各圆心的三维坐标,并作图显示

程序:

  function [xdata,ydata,zdata] = dataBall2(N,D,K)
%N为球的个数,D为球的半径,K为两球之间的距离(D的倍数)
%返回球心的坐标   
%命令行测试: [xdata,ydata,zdata] = dataBall2(50,1.5,4);

S=[300,300,200];                        %区域大小
p = ones(1,3);
p(1)=(S(1)- D).*rand(1);                %产生一个随机点
p(2)=(S(2)- D).*rand(1);
p(3)=(S(3)- D).*rand(1);
A=p\';                                   %第一点坐标记录进矩阵A中,转置运算                                
for ii=2:N
    p(1)=(S(1)- D).*rand(1);            %产生一个随机点
    p(2)=(S(2)- D).*rand(1);
    p(3)=(S(3)- D).*rand(1);
    while any((A(1,:)-p(1)).^2+(A(2,:)-p(2)).^2+(A(3,:)-p(3)).^2 < K*K*D*D) %距离判断,不满足条件则继续生成新的点
        p(1)=(S(1)- D).*rand(1);         %产生新的随机点
        p(2)=(S(2)- D).*rand(1);
        p(3)=(S(3)- D).*rand(1);
    end
    A = [A,p\'];                          %保存满足条件的新点到矩阵A
end
xdata = A(1,:);
ydata = A(2,:); 
zdata = A(3,:); 

%已知圆心和半径作圆:半径D,圆心xdata,ydata,zdata
for i = 1:N
    [x,y,z]  = ellipsoid(xdata(i),ydata(i),zdata(i),D,D,D);     %利用椭圆函数画球
    surf(x,y,z) %画出来球
    hold on
end
axis equal %保证各个维度的长短一致    
   
 end

运行结果:

坐标:

总的球图:

部分区域放大后:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MATLAB报错:试图沿模糊的维度增数组 - ww_GRACE发布时间:2022-07-18
下一篇:
delphi用postMessage发送字符到记事本发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap