寻找代表性意味着非凸多边形的INTERIOR点

时间:2012-12-13 10:57:12

标签: c++ algorithm visual-c++ graphics

我试图解决c ++中的旅行商问题,但我必须遍历一组poylgons而不是一组点之间的最短距离。为此,我试图通过代表性的“平均”内部点来表示每个多边形,以便我可以在这些平均内部点上执行TSP。

我很容易在凸多边形中找到一个平均内点,因为它只是算术平均点(并且总是位于凸多边形的内部),但这种方法不适用于凹多边形,因为它不一定是多边形的内部。

帮忙吗? 谢谢。 : - )

2 个答案:

答案 0 :(得分:3)

怎么样:

  1. 三角形多边形(订单N log(N))
  2. 选择面积最大的三角形(比方说)(订单N)
  3. 在那个三角形的重心处选择你的观点。 (常数)
  4. 由于整个非凸多边形的真实重心(可能)在多边形之外,我认为没有另一个“代表”点的定义对我来说比这更有意义。

答案 1 :(得分:1)

一个想法是构造每个多边形的凸包,然后使用凸包的中心。要理解这个想法就像用橡皮筋包裹任何多边形一样,这会给你一个可以用来找到兴趣点的信封。我相信你应该能够使用CGAL来计算它。但是,如果你为每个多边形执行此操作,它将不会超快。如果您构建三角剖分,那么您可以有效地找到原始多边形的最近内部点到其凸包的中心点作为附加步骤。

btw我认为找到凸多边形点中心的正确方法是找到切比雪夫中心,这对应于求解线性系统,你也可以使用CGAL。找到凸多边形的切比雪夫中心的线性规划问题在Boyd book中有明确定义。