我有COORDS X = 0.568Ÿ要点= 0.132查找最近点
而且我有一个像点的阵列:
0.545, 0.1488
0.74878, 0.487
0.4845, 0.5485
,我需要找到最近的点由PHP要点 我该怎么办?
点0,0它的平均右上角
点1,1肉左下角
我有COORDS X = 0.568Ÿ要点= 0.132查找最近点
而且我有一个像点的阵列:
0.545, 0.1488
0.74878, 0.487
0.4845, 0.5485
,我需要找到最近的点由PHP要点 我该怎么办?
点0,0它的平均右上角
点1,1肉左下角
如果你的主要观点是(X,Y)和另一点是(X1, y1),那么两点之间距离的平方为(x - x1)*(x - x1)+(y - y1)*(y - y1)(应用毕达哥拉斯)。
最近的点是使这个值最小化的点。
此代码将回显最接近的和弦的关键。希望这会有所帮助:)
<?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);
如果这种坐标(-11.6168610,37.6021070)为$ main_coord,那么我应该使用相同的上述实现吗? –
请给出更多信息。你需要什么?你为什么需要这个。这是绝对的(x:0到1)? – Maurize
你必须实现Dijkstra算法(http://codereview.stackexchange.com/questions/75641/dijkstras-algorithm-in-php) –
点0,0意味着右上角 点1,左上角 –