区域内随机布点的方法

本文研究如何在区域内随机均匀布点, 来源于 <算法可视化 Visualizing Algorithms>, 这在CAE, 图形学中都有重要意义. 
http://www.bilibili.com/video/av2182749/

比如在 3*1 的区域内随机布点 500 个, 如果每个点都是坐标都是随机给的, 结果可能并不均匀.
如 randomPoints.m 所演示的.

 1 function randomPoints()
 2 xmax = 3;
 3 ymax = 1;
 4 N = 500;
 5 x = xmax*rand(N,1);
 6 y = ymax*rand(N,1);
 7 figure(1);
 8 plot(x,y,'.','markerSize',5,'markerEdgeColor','r'); hold on;
 9 title('Random Sampling');
10 axis equal;
11 axis([0,xmax,0,ymax]);
12 set(gca,'xTick',[],'yTick',[]);
13 end
randomPoints.m

 

 

接下来介绍一种方法称为 Best-Candidate Sampling, 基本思路是, 没加一个点需要在若干 (numCandidates) 点 (比如 10)中寻找和已知点最近距离最大的那个点.

每加一个点的伪代码如下:

bestCandidate= 0;
bestDistance = 0;
loop i=1:numCandidates{
  c = [rand(),rand()]; % 随机点 c 的坐标
  d = distance( findClosest(samples,c), c ); % 获取 c 和已知点中最近的距离
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值