2015-07-10 144 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,那么我应该使用相同的上述实现吗? –