私は2つのポイント(緯度1、経度1)と(緯度2、経度2)を持っています。ポイント1からポイント2まで受講する必要があるコースをPHPで判断するにはどうすればよいですか?
コースは、おそらく度から変換される北、南、東、または西になりますか?
ありがとう!
// Function: latlon_bearing_great_circle
// Desc: This function calculates the initial bearing you need to travel
// from Point A to Point B, along a great arc. Repeated calls to this
// could calculate the bearing at each step of the way.
function latlon_bearing_great_circle($lat_a, $lon_a, $lat_b, $lon_b) {
// Convert our degrees to radians:
list($lat1, $lon1, $lat2, $lon2) =
_deg2rad_multi($lat_a, $lon_a, $lat_b, $lon_b);
// Run the formula and store the answer (in radians)
$rads = atan2(
sin($lon2 - $lon1) * cos($lat2),
(cos($lat1) * sin($lat2)) -
(sin($lat1) * cos($lat2) * cos($lon2 - $lon1)) );
// Convert this back to degrees to use with a compass
$degrees = rad2deg($rads);
// If negative subtract it from 360 to get the bearing we are used to.
$degrees = ($degrees < 0) ? 360 + $degrees : $degrees;
return $degrees;
}
// Function: _deg2rad_multi
// Desc: A quick helper function. Many of these functions have to convert
// a value from degrees to radians in order to perform math on them.
function _deg2rad_multi() {
// Grab all the arguments as an array & apply deg2rad to each element
$arguments = func_get_args();
return array_map('deg2rad', $arguments);
}
http://fil.ya1.ru/PHP_5_in_Practice/index.htm#page=0768667437/ch02lev1sec6.html