我有两个可能或可能不是相同形状的任意多边形,我正在寻找一个简单算法的建议,该算法将旋转其中一个多边形以最小化两者之间的差异.谢谢. 最佳答案 如果您试图使它们更相似,您可以尝试最小化两个多边形之间差异的区域.也就是说,两者结合的区域,减去它们之间的交叉区域.
一个近似值是找到每个多边形中具有最大距离的两个点(让我们称之为’直径’),并对齐两个多边形的那些点.
例如:
>多边形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)]