2014-06-24 118 views
1

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

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

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

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

这里是类似的问题http://stackoverflow.com/q/22159897/2521214 – Spektre

回答

2

对于少量顶点,可能值得检查每个顶点与其他顶点之间的距离。 (p1,p2),dist(p1,p3),dist(p1,p4),dist(p2,p3),dist(p2,p4)和dist(p3,p4)的方形例子。这些值将存在于每个多边形中。将会有一个与p1设置相同距离的点,并将其设置为p2,依此类推。

一旦你在一个多边形顶点,其中所有连接到它的距离是相同的那些在第二多边形然后就可以使用这些线中的一个,以确定旋转角度。

希望有道理。

+0

这是个好主意。顶点数将是3-8。任何想法的角度呢? – Pwdr

+0

这很有道理,谢谢! – Pwdr

+0

不用担心。祝你好运。 – Dave

相关问题