如何定期用点填充多边形?

时间:2012-10-05 09:06:51

标签: computational-geometry

填充矩形很简单:只需制作一些网格。但如果多边形是无条件的,那么任务变得不那么微不足道。
可能会“规则地”表示为每个其他点之间的距离为:R±alpha。但我不确定这一点。
也许有一些已知的算法来实现这一点。
补充:
我需要生成网,没有大洞,也没有大点聚集。

2 个答案:

答案 0 :(得分:3)

你有没有使用强制导向的点布局?

在多边形的边界框上随机散布多个点,然后重复应用两个简单的规则来调整它们的位置:

  1. 如果一个点位于多边形之外,请将其移动到最小可能距离,使其位于多边形边缘的最近点,即:到多边形边缘的最近点。
  2. 点之间的反向力与它们之间的距离成反比,即:对于每个点,考虑每个其他点并计算将两个点直接分开的排斥矢量。对于近点,矢量应该很大,对于远点,矢量应该很小。对向量求和并添加到点的位置。
  3. 经过多次迭代后,点应稳定在稳定状态,在多边形区域上均匀分布。实现这种状态的速度取决于多边形的几何形状以及如何缩放这些点之间的排斥力。

答案 1 :(得分:3)

您可以计算多边形的约束Delaunay三角剖分并使用Delaunay细化算法(使用此关键字搜索)。

我最近实施了改进 在Fade2D库中,http://www.geom.at/fade2d/html/。需要一个 没有自交错的任意多边形以及每个结果三角形的外接圆半径的上限。此功能尚未包含在当前版本1.02中,但如果您想尝试,我可以编译Linux或Win64的当前开发版本。

Uniform refinement of a polygon with holes