बाहर की जाँच के लिए इस लिंक , यह मेरे निम्नलिखित फ़ंक्शन का उपयोग रेखा खंड को दूरी की गणना करने के लिए किया।
PHP में:
function point_to_line_segment_distance($startX,$startY, $endX,$endY, $pointX,$pointY) {
// list($distanceSegment, $x, $y) = point_to_line_segment_distance($startX,$startY, $endX,$endY, $pointX,$pointY);
// Adapted from Philip Nicoletti's function, found here: http://www.codeguru.com/forum/printthread.php?t=194400
$r_numerator = ($pointX - $startX) * ($endX - $startX) + ($pointY - $startY) * ($endY - $startY);
$r_denominator = ($endX - $startX) * ($endX - $startX) + ($endY - $startY) * ($endY - $startY);
$r = $r_numerator / $r_denominator;
$px = $startX + $r * ($endX - $startX);
$py = $startY + $r * ($endY - $startY);
$s = (($startY-$pointY) * ($endX - $startX) - ($startX - $pointX) * ($endY - $startY) ) / $r_denominator;
$distanceLine = abs($s) * sqrt($r_denominator);
$closest_point_on_segment_X = $px;
$closest_point_on_segment_Y = $py;
if ( ($r >= 0) && ($r <= 1) ) {
$distanceSegment = $distanceLine;
}
else {
$dist1 = ($pointX - $startX) * ($pointX - $startX) + ($pointY - $startY) * ($pointY - $startY);
$dist2 = ($pointX - $endX) * ($pointX - $endX) + ($pointY - $endY) * ($pointY - $endY);
if ($dist1 < $dist2) {
$closest_point_on_segment_X = $startX;
$closest_point_on_segment_Y = $startY;
$distanceSegment = sqrt($dist1);
}
else {
$closest_point_on_segment_X = $endX;
$closest_point_on_segment_Y = $endY;
$distanceSegment = sqrt($dist2);
}
}
return array($distanceSegment, $closest_point_on_segment_X, $closest_point_on_segment_Y);
}
फिर आप दूरी की गणना करने के लिए प्रक्षेपण कार्यों का उपयोग कर सकते हैं, मैं उपरोक्त सूत्र का उपयोग उस समय की गणना करने के लिए कर रहा हूं जो एक औसत गति दी गई है और यह वास्तव में अच्छी तरह से काम करती है।
यदि आप PHP में निर्देशांक के बीच की दूरी की गणना करने के लिए एक अच्छी PHP लाइब्रेरी चाहते हैं, तो GeoCalc वर्ग की जाँच करें