zoukankan      html  css  js  c++  java
  • MATLAB之画确定区域内不重合的随机圆

    MATLAB之画确定区域内不重合的随机圆

    程序要求:在确定区域内,画互不重合的圆。

    知识点:
    (1)A=p'; 转置运算
    (2)ones(a,b)产生a行b列全1数组
    (3)rand(a,b)产生a行b列个0~1之间的随机数
    (4)函数简介:输入参数:N为圆的个数,D为圆的半径,K为两圆之间的距离(D的倍数);输出为各圆心的坐标;并作图

    程序:

      function [xdata,ydata] = dataH(N,D,K)
    %N为圆的个数,D为圆的半径,K为两圆之间的距离(D的倍数)
    b=D*ones(1,N);                            %生成半径为D的数组,100个
    S=[150,100];                              %**区域大小**
    p=b(1)+(S-2*b(1)).*rand(1,2);             %产生一个随机点
    A=p';                                     %第一点坐标记录进矩阵A中,转置运算
    t=0:360;
    plot([0 400 400 0 0],[0 0 400 400 0]);     %画区域方框
    hold on                                  
    for ii=2:N
        p=b(ii)+(S-2*b(ii)).*rand(1,2);   %产生一个新随机点,rand(1,2)表示产生一行两列(0,1)之间的随机数
        while any((A(1,:)-p(1)).^2+(A(2,:)-p(2)).^2<K*K*D*D)   %距离判断
              p=b(ii)+(S-2*b(ii)).*rand(1,2);
        end
        A = [A,p'];                                            %保存新的点到矩阵A
        patch(p(1)+b(ii)*cosd(t),p(2)+b(ii)*sind(t),'r');      %填充一个圆
    end
    hold off
    axis equal
    axis([0 150 0 100]);
    A=[b;A];
    xdata = A(2,:);
    ydata =A(3,:); 
     end
    
    

    运行结果:

  • 相关阅读:
    搭建openstack系统初始化(2)
    Kvm虚拟化安装与虚拟机创建
    KVM-克隆和快照管理
    P4197 Peaks
    P4768 [NOI2018]归程
    #6145. 「2017 山东三轮集训 Day7」Easy 动态点分治
    P4178 Tree
    P4149 [IOI2011]Race
    P3806 【模板】点分治1
    P4724 【模板】三维凸包
  • 原文地址:https://www.cnblogs.com/HZL2017/p/6711187.html
Copyright © 2011-2022 走看看