gpt4 book ai didi

algorithm - 缩放任意多边形

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:39:51 25 4
gpt4 key购买 nike

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

这种方法不适用于许多(或可能是所有)凹多边形,因为质心通常落在多边形之外,因此缩放操作也会导致平移,我需要能够“就地”缩放多边形而无需最终翻译结果。

有人知道缩放凹多边形的方法吗?或者找到一种可以用作缩放操作引用框架的“视觉中心”的方法?

澄清一下,我在 2D 空间中工作,我想使用“视觉中心”作为参照系来缩放多边形。因此,问这个问题的另一种方式可能是,如何找到凹多边形和/或自相交多边形的视觉中心?

谢谢!

最佳答案

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

您在仿射空间中工作,并且正在寻找仿射变换来缩放多边形?

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

然后用矩阵变换你的多边形

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

希望对你有帮助


编辑

如果你想保持相同的“中心”,你可以用中心 G = 多边形的重心做参数 lambda 的同位素:

它验证:
enter image description here

G 不会移动,因为它是同位素的中心。

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

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

它应该做你需要的

关于algorithm - 缩放任意多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com