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

时间:2019-05-22 17:15:05

标签: algorithm geometry computational-geometry

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

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

针对此问题是否有一些特殊的公式或定理?

2 个答案:

答案 0 :(得分:1)

我会这样解决。

  1. 找到必要的并行传输。
  2. 找到必要的缩放比例。
  3. 看看它们现在是否是相同的多边形。

因此,开始获取最左侧的顶点,如果有平局,则最向下的那个。找到两个多边形。使用并行传输将两个顶点都放在原点。

现在选择最右边的顶点,如果有平局,则最远的那个。找到两个多边形。如果不在同一斜率上,则它们是不同的。如果是这样,则将其缩放一倍以使点匹配。

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

答案 1 :(得分:0)

计算两个多边形的轴对齐边界框。

如果纵横比不匹配,则答案是否定的。否则,对应边的比例就是您的缩放比例。通过链接左上角获得翻译,并且变换方程为

.popupleftalign .popupcontrolbackground > span:first-of-type > div:first-of-type {
    position: absolute;
    border: 1px solid grey;
    padding: 5px;
    min-width: 250px;
    border-collapse: initial !important;
    border-radius: 6px;
    top: -2px;
    right: 0px;
    max-width: 600px;
    line-height: 22px;
    background-color: #FFFFFF !important;
    text-align: left !important;
    vertical-align: top !important;
    white-space: normal !important;
    z-index: 10000;
    color: black !important;
    word-break: keep-all;
    width: -moz-max-content;
    width: -webkit-max-content;
 }

其中X = s.(x - xtl) + Xtl Y = s.(y - ytl) + Ytl 是比例因子,s(xtl, ytl)是角点。

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

enter image description here


*我假设多边形没有重叠的顶点。如果它们可以具有任意的自重叠,我想您必须尝试匹配具有所有循环排列的所有顶点。