什么算法,我可以用来获得多边形的中心(红点)
案例1:我尝试使用maxX,maxY,minX,minY,我得到了错误的点(黑点)
案例2:我试图得到第二个最大值min坐标X和Y,但是我遇到的问题是多边形有点小于5的
情况3:我添加if point count < 5 then use case 1 else use case 2
但是我得到一些多边形的一些错误
你能告诉我正确的算法吗?
注意 :
解释第四张照片
//ma mean max, mi mean min, X1 mean first, X2 mean second maX1 = maX2 = maY1 = maY2 = 0; miX1 = miX2 = miY1 = miY2 = 2000; //aCoor is array of coordinate, format = {x1,y1,x2,y2,x3,y3,x4,y4,...} for(int i=0; iaCoor[i]) { miX2 = aCoor[i]; //this to get first min x if(miX1 > miX2) {miX1 += miX2; miX2 = miX1 - miX2; miX1 -= miX2;} } //this to get second max Y if(maY2 < aCoor[i + 1]) { maY2 = aCoor[i + 1]; //this to get first max x if(maY1 < maY2) {maY1 += maY2; maY2 = maY1 - maY2; maY1 -= maY2;} } //this to get second min Y if(miY2 > aCoor[i + 1]) { miY2 = aCoor[i + 1]; //this to get first min x if(miY1 > miY2) {miY1 += miY2; miY2 = miY1 - miY2; miY1 -= miY2;} } } if(point.Count < 5) { Xcenter = (maX1 + miX1) / 2; Ycenter = (maY1 + miY1) / 2; } else { Xcenter = (maX2 + miX2) / 2; Ycenter = (maY2 + miY2) / 2; }
这到底有多远