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

我有两个可能或可能不是相同形状的任意多边形,我正在寻找一个简单算法的建议,该算法将旋转其中一个多边形以最小化两者之间的差异.谢谢. 最佳答案 如果您试图使它们更相似,您可以尝试最小化两个多边形之间差异的区域.也就是说,两者结合的区域,减去它们之间的交叉区域.

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

例如:

>多边形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)]
点赞