Java:查找凸多边形的最外侧顶点

原帖:

我正在尝试找到凸多边形的最外侧顶点(与多边形外的点P有关).现在,我只关心矩形(但是,我想要一个适用于任何凸多边形的算法).

我的计划是从外部点P到中心点C构造一条线.从这条参考线,我将构建从点P到点1,2,3和4的线.因为点2和点4将具有最大(大多数)从参考线开始的角度和最小(最负)角度,它们将被识别为最外面的顶点.

这是这项工作的最佳算法吗?如何从参考角度(最好用Java)计算角度?

更新澄清:

我绘制了线条(参考线为红色).如您所见,从P到2的线在参考线的一侧创建最大角度,而从P到4的线创建另一侧的最大角度.因此,这些是最外面的顶点.

最佳答案
这几乎是convex hull的问题.您将在多边形周围寻找一组顶点(x1,x2).将应用的方法称为“快速船体”,类似于快速排序(因为我们每次单步时都会划分我们的点区域).也可以安全地假设P可以用作任意起点和平行终点之间的中点,因此你可以在P周围得到一个凸包.

需要一段时间来制作一些可靠的Java来捅(从我的偶然事件),但我认为维基百科条目将给你一个很好的起点.

转载注明原文:Java:查找凸多边形的最外侧顶点 - 代码日志