【问题标题】:Split quadrilateral into sub-regions of a maximum area将四边形分割成最大面积的子区域
【发布时间】:2012-06-27 00:39:01
【问题描述】:

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

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

我可以使用特定的数据结构来简化此操作吗?
有没有我找不到的算法?

我可以使用四叉树来做到这一点吗?我不是非常精通树木,但我知道如何实现结构。

我在执行此操作时会考虑 GIS 工作,但我相当有信心这不会影响分割四边形的算法。

【问题讨论】:

  • 将一个区域分割成更小的区域并强制执行最大区域是什么意思?
  • 你的意思是将区域分割成子区域,使得每个子区域的面积不大于给定值?
  • 四边形是同一平面上4个点的集合吗?
  • @VaughnCato 是的,这正是我的意思。肖恩,所有四个点都在同一个平面上。
  • 虽然不完全是您想要做的,但请看一下这个听起来相似的 question 及其答案。

标签: python math geometry gis


【解决方案1】:

您可以递归地将四边形在长边上一分为二,直到得到的区域足够小。

【讨论】:

  • 你会如何处理维基百科图像右下角的形状? en.wikipedia.org/wiki/Quadrilateral
  • @jake:先把它分成两个三角形
  • @Jake:你有要求子区域也是四边形吗?
  • @VaughnCato 同样,首先将形状分成两个三角形会添加另一个任意边界。一个子区域将无法同时属于这两个三角形。
  • @Jake:如果将四边形拆分为两个三角形,然后将每个三角形沿公共边在同一点拆分,则可以将四个三角形重新连接成两个四边形。您可以重复此过程,直到获得所需区域的四边形。
【解决方案2】:

如果你的四边形是凸的,那么实际上你可以把它分成两个面积相等的部分,同时具有相等的周长!这称为公平分区,并在The Open Problems Project 中进行了描述(它对更多的部分开放,但解决了两个部分)。

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

一般问题(对于任意多边形)属于 “多边形的火腿三明治切片”。事实上,我写了一篇与这个标题完全相同的论文。

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2013-03-25
    • 2018-05-08
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多