简单写一个随机在一个三维区域生成球的matlab函数

(1条消息) 使用MATLAB在给定矩形区域随机绘制任意个不相交的圆_风一样的航哥的博客-CSDN博客

以上博客自从发表以来好几个同学都问我,三维的怎么实现,今天下班之后,就写一个。不知道是不是其他同学需要的。

先上代码:

function  plotNsphere_in_rect(X1,X2,Z1,Y1,Y2,Z2,N,R)
%plotNcircle_in_rect(X1,X2,Z1,Y1,Y2,Z2,N,R) 函数说明:
%  此函数用来会绘制 N 个矩形区域里面随机生成的半径为 R 的圆,三维区域为(X1,Y1,Z1)->(X2,Y2,Z2)
%  输出是一张plot绘制的图,
close all
X=zeros(1,N);
Y=zeros(1,N);
Z=zeros(1,N);
i=1;
while(i<=N)
    X(i)=X1+X2*rand;
    Y(i)=Y1+Y2*rand;
    Z(i)=Z1+Z2*rand;
    if(i>=2)
        for j=i:-1:1
            if(j==1)
                i=i+1;
                continue;
            else
                dis = sqrt((X(i)-X(j-1))^2 + (Y(i)-Y(j-1))^2+(Z(i)-Z(j-1))^2);
                if(dis<2*R)
                    i=i-1;
                    break;
                end
            end
        end
    else
        i=i+1;
    end
end
    figure
for i=1:1:N
    myplotsphere(X(i),Y(i),Z(i),R);
    hold on 
    axis equal
    grid on
end

此函数的参数需要自行确定为有效的三维空间,本来是要做参数检查的,一会儿要去车站接人就不写了。N表示N个球体,R表示球体的半径。myplotsphere函数如下,参数为球心坐标和半径。

function myplotsphere(X,Y,Z,R)
% myplotsphere使用三点和半径进行绘制一个球体
%   x,y,z;三维坐标;R:半径
[x,y,z]=sphere;
surf(R*x+X,R*y+Y,R*z+Z)
% mesh(R*x+X,R*y+Y,R*z+Z)
hold on
% axis equal
end

实际运行如下:plotNsphere_in_rect(0,0,0,100,100,100,50,4)

先这样吧,下班接对象去了,大家有什么疑问,请评论交流。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值