将任意数量的多边形组合在一起

Jak*_*son 4 algorithm hex polygon hexagonal-tiles

我有随机排列的任意数量的多边形(在这种情况下为十六进制),但它们都接触另一个十六进制.

在此输入图像描述

每个单独的十六进制都有6 x,y顶点.所有的六边形都知道顶点.

任何人都可以指向一个算法的方向,将所有的六边形组合成一个多边形?本质上我只是在寻找一个函数来吐出一个顶点位置的数组,这些顶点位置的排序方式是当从一个绘制线到另一个时,它形成多边形.

到目前为止这是我的方法:

  1. 为所有六边形创建所有顶点的数组.
  2. 确定数组中顶点出现的次数
  3. 如果顶点在数组中的次数超过3次,则从数组中删除顶点.
  4. 如果顶点在数组中2次,则删除其中一个.

下一步是棘手的​​.我正在使用画布来绘制这些多边形,这主要涉及从一个顶点到下一个顶点绘制一条线.因此,最终数组中顶点的顺序很重要.它不能任意排序.

另外,我不是在寻找一种"凸包"算法,因为它不会正确地绘制多边形.

有什么功能可以做这样的事吗?我是在正确的轨道还是有更好的更有效的方式?

Nie*_*sol 5

我会做这样的事情:

  1. 列出所有方面.一侧由两对坐标定义.
  2. 如果任何一方出现多次删除该方的所有实例.
  3. 选择一个任意一面,并从那一侧选择其中一个点.
  4. 将该点放在数组中.
  5. 按照当前一侧并将另一个点放在数组中.
  6. 删除您刚刚关注的一面.
  7. 然后找到另一侧有一个与数组中最后一个点相同的点.只会有一个这样的一面.如果没有,你就完成了.
  8. 回到第5步.

您现在应该有一个点数组,按顺序组成您想要的形状.

请注意,这不会处理漏洞.形状必须由单个路径定义.