我有3个纬度和logintude:街道和点之间的距离,如果纬度和logintude
X: 1.000000000 1.000000000
Y: 2.000000000 2.000000000
Z: 3.000000000 3.000000000
我需要计算Z和Z之间的最小距离d。通过X形成的线 - > Y,请帮助,解决我的问题到现在为止
PHP代码:
function calc ($a, $ay, $b, $by,$c, $cy) {
$a = array($a, $ay, 0);// i use 0 altitude always
$b = array($b, $by, 0);
$c = array($c, $cy, 0);
$ab = array(
(($a[1] * $b[2]) - ($b[1] * $a[2])),
(($a[2] * $b[0]) - ($b[2] * $a[0])),
(($a[0] * $b[1]) - ($b[0] * $a[1]))
);
$normal = pow(pow($ab[0],2)+pow($ab[1],2)+pow($ab[2],2),0.5);
$d = array(
($ab[0]/$normal),
($ab[1]/$normal),
($ab[2]/$normal)
);
$e_ = (($d[0] * $c[0]) + ($d[1] * $c[1]) + ($d[2] * $c[2]));
$e = acos($e_);
$res = pi()/2 - $e;
$res = $res * 6378.1;
return $res;
}
最小距离'0'因为这些点是共线的。 – abiessu 2014-09-04 21:10:24