1.
用一個list物件(或是stl的map),把所有的自建點都放入,記得用double來存座標。
放入list的好處是你日後還可以增加排序的功能!
2.
用內建的功能來對 y 排序 (因為台灣比較長,所以用y來排可以鑑別比較大)
3.
排序完畢以後, 假設你的座標是 Point 物件,則比較i和i+1,先比y,如果不成立,就跳出,如果成立,再繼續比x,不成立再跳出。
4.
不要用x^2+y^2來做,平方的速度太慢。
也不要用絕對值,我不認為絕對值會比較快。
例如
for(int i=0;i<總個數-1;i++)
{
dOffestY=list[i+1].Point.Y-list[i].Point.Y;
//這麼一來,程式的運行通常在下面這行就成立而跳離判斷,繼續i+1的判斷。
if ( dOffestY >=0.0000001) continue;//因為經過y排序計算,所以不需再判斷負值
dOffestX=list[i].Point.X-list[i+1].Point.X;
if (dOffestX>=0.0000001 || dOffestX<=-0.0000001 ) continue;
//如果執行到這裡,代表就是x y都小於0.0000001
//你在想辦法把找到的保存,以便下次列表
}
內文搜尋

X