【问题标题】:Algorithm for finding empty areas寻找空白区域的算法
【发布时间】:2012-12-25 04:15:24
【问题描述】:

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

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

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

谢谢!

编辑:

我的解决方案基本上如下:

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

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

【问题讨论】:

  • 如果您有算法,请向我们展示您的尝试。
  • 更新了我最初的帖子。

标签: algorithm geometry


【解决方案1】:

我立即想到的一种方法是从原始位置向多边形的每个顶点发射一条射线(即测量一条线段)。对这些距离进行比较,然后根据这些比较,将其缩小到多边形的最小距离线段。计算该线与原点的垂直交点,您将得到最小远点。如果顶点比较没有引导您走上正确的道路,只需沿随机方向拍摄线,然后在您对结果满意时停止。听起来您不需要最优性。

【讨论】:

    【解决方案2】:

    让我们看看最初的问题:确保一段文本不会与另一段重叠。大概这是为了标记地图。我这样做的方法是:不可见地绘制文本,检查重叠(通过使用专门的图形上下文而不是绘制像素,检查像素是否已经存在)然后沿着文本所在的行尝试另一个位置放置 - 通常是一条街道。我先尝试线的中间,然后在中间的左右越来越远的位置。如果失败了,我会再次尝试使用压缩(更窄)的字体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多