2011-03-07 160 views
0

我在網格上有一個點(以下稱爲原點),例如,[3, 3]獲得距離點最近的座標

我也有一組點與原始點位於同一水平線和垂直線上,例如[[3,1],[3,2],[3,4],[7,3],[8,3]]

我想要一個返回最多四個點的函數:在每個方向(即左,右,上,下)最接近原點的點。通過上面的例子中,它會返回,

[[3,2],[3,4],[7,3]] 

因爲[3,2]是左邊的最近點,[3,4]是右邊的最近點,[7,3]是最接近點以上,並有以下不得分。 (方向順序並不重要)

有沒有一種優雅和合理簡潔的方式來做到這一點,使用Javascript/JQuery?

+0

不會[3,1]成爲最接近的點嗎? – Ronald 2011-03-07 03:37:30

+0

不,[3,2]比[3,1]更接近[3,3]。 – 2011-03-07 03:41:25

+0

輸入是否總是按照你的例子排序? – rahulmohan 2011-03-07 08:20:14

回答

2

我不知道JavaScript,但下面的算法會非常簡單,如果你可以用JavaScript來制定它。

(X0, Y0)爲原點。

迭代通過陣列,[(X1, Y1), ..., (XN, YN)],並保持帳戶的

R =僖最小值的 - X0> 0

L = X0 - 僖> 0

隨着你的進行。 在迭代結束時,這些值爲您提供最近的點,即X0 + RX0 - L

對點的垂直線做類似的迭代。