将四边形分成最大区域的子区域

时间:2012-06-27 00:39:02

标签: python math geometry gis

将矩形/正方形分割成较小的区域并强制执行每个子区域的最大区域非常容易。您可以将区域划分为边长为sqrt(max_area)的区域,并小心处理剩余物。

用四边形但是我很难过。让我们假设我不知道任何角落的角度。我们还假设所有四个点都在同一平面上。此外,我不需要小区域的大小相同。我唯一的要求是每个区域的面积小于最大面积。

我是否可以使用特定的数据结构来简化这一过程? 有没有找到的算法?

我可以使用四叉树来做到这一点吗?我不熟悉树木,但我确实知道如何实施这个结构。

当我这样做时,我会考虑GIS工作,但我相信这对分割四边形的算法没有影响。

2 个答案:

答案 0 :(得分:1)

您可以在长边上递归地将四边形分成两半,直到结果区域足够小。

答案 1 :(得分:1)

如果你的四边形是凸的,那么事实上你可以将它分成两个相等的区域,同时具有相等的周长!这被称为公平分区,并在The Open Problems Project中进行了描述(它对于大量的部分是开放的,但是已经解决了两个部分)。

对于非凸四边形,不难找到将其划分为的线 两个相等的部分。
我相信这会奏效:通过一条线路 反射顶点,并围绕该顶点旋转,直到它平均分区。 如果您的唯一目标是将区域划分为多边形,则相同的方法适用于凸多边形 两个相等的一半。

通用问题(对于任意多边形)的名称是 “多边形的火腿三明治切片。”事实上,我写了一篇具有确切标题的论文。