通过偏移将多边形缩小到特定区域

Posted

技术标签:

【中文标题】通过偏移将多边形缩小到特定区域【英文标题】:Shrink polygon to a specific area by offsetting 【发布时间】:2013-12-12 09:17:41 【问题描述】:

我有一个 2D 多边形,我想将其缩小特定的偏移量 (A) 以匹配原始多边形的某个面积比 (R)。 有没有针对此类问题的公式或算法?我对三角形/四边形的简单解决方案以及复杂多边形的解决方案感兴趣。

我附上了一张图片来解释。原始多边形偏移 A(每条边等距)。必须选择 A,以便新多边形具有特定区域。在这个例子中,它的面积应该是初始多边形的一半。

【问题讨论】:

【参考方案1】:

您的问题非常不具体,但是假设我了解您的要求,这是一种方法来做您正在寻找的事情。请注意,这可能会导致您必须以某种方式处理的位置偏移。不知道您要缩放多边形的哪个点,这些解决方案假设最简单的情况。

所有这些公式中平方根的原因是面积倾向于随着线性缩放的平方而变化,就像体积随着线性缩放的立方而变化一样。

对于一般多边形:

A = sqrt(R)
for each point in polygon:
    point.x := point.x * A
    point.y := point.y * A

对于圆圈:

A = sqrt(R)
circle.radius := circle.radius * A

对于矩形的宽度和高度:

A = sqrt(R)
rect.w := rect.w * A
rect.h := rect.h * A

【讨论】:

感谢您的回复。我附上了一张更具体的图片。 您在该图片中显示的问题有点难以解决,因为某些多边形最终可能会被分割成两个或多个单独的形状。让我考虑一下。

以上是关于通过偏移将多边形缩小到特定区域的主要内容,如果未能解决你的问题,请参考以下文章

Google Map API Javascript v3-如何在多边形/矩形区域内突出显示特定街道/街道段?

城市 Geojson 多边形数据库/库或 API

区域监控 - didEnterRegion

如何在特定区域为 H3 六边形生成 shapefile

如何在c#中用多边形裁剪图像

高德地图判断点的位置是否在浏览器可视区域内