我想检查两个多边形(矢量数量不清楚)是否具有相同的形状。没有旋转这很容易,但是如何使用旋转多边形?我也需要知道旋转角度。
boolean polygonsHaveSameShape(PVector[] polygon1, PVector[] polygon2){
…
}
float getRotationAngle(PVector[] polygon1, PVector[] polygon2){
…
}
答案 0 :(得分:2)
使用少量顶点可能值得检查每个顶点与其他顶点之间的距离。
在你的方形示例中,dist(p1,p2),dist(p1,p3),dist(p1,p4),dist(p2,p3),dist(p2,p4)和dist(p3,p4)。每个多边形都将存在这些值。将有一个点与p1和p2具有相同的距离,依此类推。
在一个多边形中有一个顶点,其中与之连接的所有距离与第二个多边形中的距离相同,那么您可以使用其中一个线来确定旋转角度。
希望这是有道理的。