有人知道这个任务的好算法:
我已经实现了一些非常基本的算法来完成这项工作但远非最佳。
谢谢!
修改
我的解决方案主要执行以下操作:
示例:用于放置不应相互重叠的文本。
答案 0 :(得分:0)
立即浮现在我脑海中的一种方法是从原始位置到多边形的每个顶点拍摄光线(即测量线段)。对这些距离进行比较,然后根据这些比较,将其缩小到多边形的最小远距离线段。计算该线与原点的垂直交点,您将得到最小的远点。如果顶点比较不会引导您沿着正确的路径前进,只需沿着随机方向拍摄线条,并在对结果感到满意时停止。听起来你不需要最优。
答案 1 :(得分:0)
让我们看一下原始问题:确保一段文字不与另一段文字重叠。大概这是用于标记地图。我这样做是这样的:不可见地绘制文本,检查重叠(通过使用专门的图形上下文而不是绘制像素,检查像素是否已经存在)然后尝试沿着文本所在的行的另一个位置放置 - 通常是一条街。我首先尝试中间线,然后在中间进一步向左和向右连续位置。如果失败了,我再次使用浓缩(较窄)字体。