2015-07-10 145 views
-2

我有COORDS X = 0.568Ÿ要點= 0.132查找最近點

而且我有一個像點的陣列:

0.545, 0.1488 
0.74878, 0.487 
0.4845, 0.5485 

,我需要找到最近的點由PHP要點 我該怎麼辦?

點0,0它的平均右上角

點1,1肉左下角

+1

請給出更多信息。你需要什麼?你爲什麼需要這個。這是絕對的(x:0到1)? – Maurize

+0

你必須實現Dijkstra算法(http://codereview.stackexchange.com/questions/75641/dijkstras-algorithm-in-php) –

+0

點0,0意味着右上角 點1,左上角 –

回答

0

如果你的主要觀點是(X,Y)和另一點是(X1, y1),那麼兩點之間距離的平方爲(x - x1)*(x - x1)+(y - y1)*(y - y1)(應用畢達哥拉斯)。

最近的點是使這個值最小化的點。

0

此代碼將回顯最接近的和絃的關鍵。希望這會有所幫助:)

<?php 

$main_coord=array('x'=>0.568,'y'=>0.132); 

$main_coord_total=$main_coord['x']+$main_coord['y']; 

$coords=array(
array('x'=>0.545,'y'=>0.1488), 
array('x'=>0.74878,'y'=>0.487), 
array('x'=>0.4845,'y'=>0.5485) 
); 

$dif_array=array(); 

foreach($coords as $key=>$coord){ 

$difference=($coord['x']+$coord['y'])-$main_coord_total; 

if(strchr($difference,'-')){ 
    $difference=substr($difference,1); 
} 

$dif_array[$key]=$difference; 
} 

$min_value=min($dif_array); 

echo 'The closest coords key is:'.array_search($min_value, $dif_array); 
+0

如果這種座標(-11.6168610,37.6021070)爲$ main_coord,那麼我應該使用相同的上述實現嗎? –