给定两个重叠的任意多边形,找到最佳旋转以最大化重叠

时间:2011-02-12 10:41:54

标签: algorithm computational-geometry

我有两个可能或可能不是相同形状的任意多边形,我正在寻找一个简单算法的建议,该算法将旋转其中一个多边形以最小化两者之间的差异。感谢。

1 个答案:

答案 0 :(得分:2)

如果您尝试使它们更相似,可以尝试最小化两个多边形之间差异的区域。也就是说,两者结合的区域,减去它们之间的交叉区域。

近似将是找到每个多边形中具有最大距离的两个点(让我们称之为'直径'),并对齐两个多边形的那些点。

例如:

  • 多边形A = [(13, 12); (9, 14); (1,4); (5, 2)](菱形)
    • 直径= [(13, 12); (1,4)](长度14.4
  • 多边形B = [(14, 11); (8, 17); (3,24); (9, 18)](另一个菱形)
    • 直径= [(14, 11); (3,24)](长度17.0

多边形B移动并旋转,使直径对齐:

[(14.08465297, 12.72310198); (7.439737081, 7.446257009);
 (-0.084652970, 3.276898021); (6.560262919, 8.553742991)]

Rhombuses