缩放任意多边形

Cra*_*aig 6 algorithm polygon concave

我已经在互联网上搜索了好几天,但一直无法找到一个好的答案(或至少一个对我有意义的答案)似乎应该是一个常见的问题.如何缩放任意多边形?特别是凹多边形.我需要一种能够处理凹(绝对)和自相交(如果可能)多边形的算法.我用来处理简单凸多边形的明显而简单的算法是计算多边形的质心,将该质心平移到原点,缩放所有顶点,并将多边形平移回原始位置.

这种方法不适用于许多(或者全部)凹面多边形,因为质心经常落在多边形之外,因此缩放操作也会导致平移,我需要能够"就地"缩放多边形而不需要最终结果被翻译.

有人知道缩放凹多边形的方法吗?或者也许找到"视觉中心"的方法,它可以用作缩放操作的参考框架?

为了澄清,我在2D空间工作,我想使用"视觉中心"作为参考框架来缩放我的多边形.所以也许另一种提问的方法是,如何找到凹面和/或自相交多边形的视觉中心?

谢谢!

Ric*_*bby 5

我不确定你的问题是什么.

你在仿射空间工作,你正在寻找一个仿射变换来扩展你的多边形?

如果我是对的,只需编写转换矩阵:

并使用矩阵转换多边形

您可以查找仿射变换矩阵.

希望能帮助到你


编辑

如果你想保持相同的"中心",你可以做一个参数lambda的中心G =多边形的重心:

它验证:
在此输入图像描述

G不会移动,因为它是homotethy的中心.

它仍然会验证下面的关系,所以它仍然是重心.(你只需将关系乘以lambda)

在你的情况下,G很容易确定:G(x,y):(点的x值的平均值,点的y值的平均值)

它应该做你需要的


tsk*_*zzy 1

您找不到好的答案的原因是您的要求不准确。首先明确定义“就地”的含义。什么是保持不变?

一旦你弄清楚了这一点,然后将常数点平移到原点,像往常一样缩放多边形,然后平移回来。