原文地址:https://geekplux.com/2018/03/16/how-to-picking-uniform-points-in-irregular-polygon

给定一个不规则的多边形(可能是凹多边形,可能是凸多边形),在其中要显示拓扑网络数据,要求节点不重合、不超出边界。

该问题出现的场景:

  • 在地图上撒点
  • 在未知画布上生成初始的拓扑布局

解决方案:

方法一 随机撒点

取凸多边形的外接矩形,在矩形中随机撒点,如果落在凸多边形外,再次随机撒点,直至落在凸多边形内。 这个方法比较暴力,可以通过计算期望来控制撒点次数,撒点次数应该符合泊松分布。

方法二 把不规则多边形切割成若干三角形

可以看作方法一的改进。切成多个三角形之后,问题转化为了如何在多个三角形内撒点。

参考:https://beta.observablehq.com/@scarysize/finding-random-points-in-a-polygon 切割库:https://github.com/mapbox/earcut

earcut 切割效果

三角形是凸多边形,如何在三角形内均匀撒点可参考:[http://mathw...

Continue to read