什麼算法,我可以用它來獲得多邊形(紅點)
情況1的中心:我嘗試用maxX的,美星,其minX,MINY和我有錯點(黑點)
情況2:我嘗試獲取第二個最大和最小座標X和Y,但是我得到了點數小於5的多邊形的問題
案例3:我加了if point count < 5 then use case 1 else use case 2
,但是我得到了一些錯誤多邊形
你能告訴我正確的算法嗎?
注:
交代了4畫面
//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; i<aCoor.count(); i+=2)
{
//point is list of point
point.Add(aCoor[i],aCoor[i + 1]);
//this to get second max X
if(maX2 < aCoor[i])
{
maX2 = aCoor[i];
//this to get first max x
if(maX1 < maX2) {maX1 += maX2; maX2 = maX1 - maX2; maX1 -= maX2;}
}
//this to get second min X
if(miX2 > aCoor[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;
}
這個我有多遠做
第四個不是一個多邊形,它們是兩個 – Shaharyar
你應該提供你到目前爲止的相關代碼。 – Harrison
對不起,如果轉發,但我真的不明白他們在說什麼和解決方案,因爲它是複雜的。你能向我解釋一下嗎?我希望爲簡單的解決方案 – Zenithxm