可以仅使用平行平移和比例缩放将一个多边形转换为另一个多边形吗?

Can one polygon be transformed into another using only parallel translation and proportional scaling?

入口处给出了两个多边形(这些多边形的顶点坐标按照遍历的顺序排列,但是不同的多边形角度可以选择不同的遍历顺序)。仅使用平行平移和比例缩放可以将一个多边形转换为另一个多边形吗?

我有以下想法 所以,为两个多边形找到一些共同的峰值,并进行一个多边形的转移,使这些顶点位于一个点上,然后缩放,使相邻点与另一个多边形的对应点匹配,但我认为这是错误的,至少我可以'不要用代码写

这个问题有什么特殊的公式或定理吗?

我会这样解决

  1. 找到必要的平行运输。
  2. 找到必要的缩放比例。
  3. 看看现在是不是同一个多边形

所以开始取最左边的顶点,如果有平局,则取最下方的顶点。找到两个多边形。使用平行传输将该顶点置于两者的原点。

现在取最右边的顶点,如果有平局,则取最上面的顶点。找到两个多边形。如果不在同一个斜坡上,那么它们是不同的。如果是,则缩放一以使点匹配。

现在看看是否所有的点都匹配。如果不是,它们是不同的。否则答案是肯定的。

计算两个多边形的 axis-aligned 个边界框。

如果纵横比不匹配,答案是否定的。否则对应边的比例就是你的比例因子。翻译是通过连接左上角得到的,变换方程为

X = s.(x - xtl) + Xtl
Y = s.(y - ytl) + Ytl

其中 s 是比例因子,(xtl, ytl)(Xtl, Ytl) 是角点。

现在选择第一个多边形的顶点,预测另一个多边形的坐标并找到匹配的顶点。如果不能,答案是否定的。否则,您可以比较剩余的顶点*。


*我假设多边形没有重叠的顶点。如果他们可以有任意 self-overlaps,我想你必须尝试匹配所有顶点,所有循环排列。