2017-05-19 61 views
0

假設我有一個點(x,y)的列表,這些點對應於下圖中的黑點,這是一個矩形網格。這裏有四個彎曲的「行」和八個「列」。 enter image description here我如何將點組合在一起處於相同的曲線「行」?

我該如何將每一行點組合在一起?換句話說,在下面的圖片中,我如何將第一排用藍色圈起來的點(我們稱之爲第一組)組合在一起,並將第二排用藍色圈起來的點(我們稱之爲第二組)等等enter image description here

我最初的直覺說從左上角開始,然後用一個距離度量來搜索最近點,這個距離度量會懲罰兩點之間的y距離。但是,我遇到的問題是,當我到達第一行的最後一個點時,我如何知道該行是「完整的」,並且我不應該將第二行的最右側點添加到我的組中點數?

有沒有更好的方法來解決這類問題?

+0

你能第一場比賽左*射線*,然後去下一個,然後下一個?所以,不要只匹配整個射線。 – Yola

+0

這些點代表什麼?您可以通過在捕捉它們之前標記點來讓生活更輕鬆 - 例如使第一層紅色,或大,第二層綠色或三角形,第三層藍色和正方形? –

回答

1

這很大程度上取決於點的分佈方式。

對於這種特殊的情況下,一個簡單的解決辦法是:

排序點用x

分割點列表爲連續4個組(這是你的列)由y

排序列

挑選每列的第一個元素並放入第1行

挑選每列的第二個元素並將其放入i n要排2

...

相關問題