查找空区域的算法

时间:2011-09-07 20:18:41

标签: algorithm geometry

有人知道这个任务的好算法:

  • 多边形包含保留区域
  • 找到给定多边形的空位置,该位置最接近其原始位置但不与保留区域相交

我已经实现了一些非常基本的算法来完成这项工作但远非最佳。

谢谢!

修改

我的解决方案主要执行以下操作:

  • 在所有可能的方向上移动给定的多边形dx和dy
  • 检查新交叉点是否小于前一个交叉点
  • 如果是这样,请使用新位置并确保不要在同一位置来回移动多边形
  • 重复这些步骤最多N次

示例:用于放置不应相互重叠的文本。

2 个答案:

答案 0 :(得分:0)

立即浮现在我脑海中的一种方法是从原始位置到多边形的每个顶点拍摄光线(即测量线段)。对这些距离进行比较,然后根据这些比较,将其缩小到多边形的最小远距离线段。计算该线与原点的垂直交点,您将得到最小的远点。如果顶点比较不会引导您沿着正确的路径前进,只需沿着随机方向拍摄线条,并在对结果感到满意时停止。听起来你不需要最优。

答案 1 :(得分:0)

让我们看一下原始问题:确保一段文字不与另一段文字重叠。大概这是用于标记地图。我这样做是这样的:不可见地绘制文本,检查重叠(通过使用专门的图形上下文而不是绘制像素,检查像素是否已经存在)然后尝试沿着文本所在的行的另一个位置放置 - 通常是一条街。我首先尝试中间线,然后在中间进一步向左和向右连续位置。如果失败了,我再次使用浓缩(较窄)字体。