获取一组六边形的有序外点

时间:2016-06-03 21:27:26

标签: java grid mapping polygon

我有一张带有十六进制网格的地图。我试图构建"分组"六边形以创建子区域。我实际上已经构建了区域,但问题是“边缘多边形”的每个点的顺序。决心,决意,决定。我正在寻找的是一种算法,给定一组点,可以(希望)构造外六边形的正确形状。重要的是点的顺序,当我将其传递给Dynmap以构建多边形区域时,它按点顺序完成。

形状方面我认为它有点像凸包,我相信,但我不希望新的形状用较小的点构造。举个例子,下面是我得到的错误:

enter image description here

以下是所需的结果,可以这么说: enter image description here

谢谢你们!

1 个答案:

答案 0 :(得分:0)

这可能不是非常有效,但它首先浮现在脑海中。

首先,忘记边缘,然后为每个六边形绘制红色背景颜色。

现在您只想绘制外边缘。也就是说,边缘不与另一个六边形相邻。使用适当的equals / hashcode创建Edge类(这与点的排序无关)。对于每个六边形,生成其所有边缘并将它们收集到一个计算每个边缘的地图中。现在只绘制一次计算过的边。

[df.ix[day].nlargest(3, 'value') for day in df.index.unique()]

可能有一种更有效的方法,但这样做的好处是简单,而且对于你的用例来说它可能足够快。