如何将一个矩形分成大小相等的部分,每个部分都连接到周边?

How to divide a rectangle into equally sized parts each connected to the perimeter?

我正在地图缩减设置中执行视域算法,并牢记一个非常可靠的算法 (http://www.geoinfo.info/proceedings_geoinfo2013.split/paper9.pdf),为了使其正常工作,我需要以下几行内容我现在将解释算法:

输入:所需区域的数量N,一个栅格(只是一个矩阵)R,以及[=42]中的一个点=] P

输出:N 个区域,每个区域是一个多边形(三角形或四角多边形),其中一个角位于 P , 其他角连接到 R.

的周界

让我给你举个例子:

输出可能是这样的,其中 P 位于中间:

显然 P 不需要在中心。

有人知道这方面的任何好的算法吗?

一般算法可以是这样的:

  • 求出N个多边形中每一个的面积(显然是R的面积除以N)
  • 创建从 P 到 R 左上角的垂直线段
  • 将此线段作为新多边形的第一条边沿 R 边界以给定的小步顺时针移动并计算新多边形的面积
  • 如果面积接近每个多边形的面积就创建它
  • 使用最后一条边作为新多边形的第一条边并重复。

如果您需要完美的精度,您还可以计算新点的确切位置,因为您拥有所有必要的数据。这些多边形中的每一个都是凸的,可以细分为多个三角形。

下图,希望对你有帮助: