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