如何检测两个多边形是否具有相同的形状?

时间:2014-06-24 09:34:53

标签: math rotation geometry processing polygon

Rectangle example

我想检查两个多边形(矢量数量不清楚)是否具有相同的形状。没有旋转这很容易,但是如何使用旋转多边形?我也需要知道旋转角度。

boolean polygonsHaveSameShape(PVector[] polygon1, PVector[] polygon2){
  …
}

float getRotationAngle(PVector[] polygon1, PVector[] polygon2){
  …
}

1 个答案:

答案 0 :(得分:2)

使用少量顶点可能值得检查每个顶点与其他顶点之间的距离。

在你的方形示例中,dist(p1,p2),dist(p1,p3),dist(p1,p4),dist(p2,p3),dist(p2,p4)和dist(p3,p4)。每个多边形都将存在这些值。将有一个点与p1和p2具有相同的距离,依此类推。

在一个多边形中有一个顶点,其中与之连接的所有距离与第二个多边形中的距离相同,那么您可以使用其中一个线来确定旋转角度。

希望这是有道理的。