查找非凸多边形的代表性平均 INTERIOR 点

Finding a representative mean INTERIOR point for a non-convex polygon

本文关键字:INTERIOR 代表性 凸多边形 查找      更新时间:2023-10-16

我正在尝试用 c++ 解决一个旅行推销员问题,但我必须遍历一组 poylgons 之间的最短距离,而不是一组点。为此,我尝试用一个具有代表性的"平均"内部点来表示每个多边形,以便我可以对这些平均内部点进行 TSP。

我很容易在凸多边形中找到平均内部点,因为它

只是算术平均点(对于凸多边形,它将始终位于内部),但这种方法不适用于凹多边形,因为它不一定是多边形的内部。

帮忙吗?谢谢。:-)

怎么样:

  1. 三角多边形(N 阶对数(N))
  2. 选取面积最大的三角形(例如)(N 阶)
  3. 在该三角形的重心处选择您的点。(常量)

由于整个非凸多边形的真正重心(可能)在多边形之外,我认为没有另一个"代表性"点的定义比这更有意义。

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

顺便说一句,我认为找到凸多边形点中心的正确方法是找到切比雪夫中心,这对应于求解线性系统,您也可以使用 CGAL 进行求解。用于查找凸多边形的切比雪夫中心的线性规划问题在博伊德书中得到了很好的定义。