<?php
function destinationPoint($lat, $lng, $brng, $dist) {
$rad = 6371; // earths mean radius
$dist = $dist/$rad; // convert dist to angular distance in radians
$brng = deg2rad($brng); // conver to radians
$lat1 = deg2rad($lat);
$lon1 = deg2rad($lng);
$lat2 = asin(sin($lat1)*cos($dist) + cos($lat1)*sin($dist)*cos($brng) );
$lon2 = $lon1 + atan2(sin($brng)*sin($dist)*cos($lat1),cos($dist)-sin($lat1)*sin($lat2));
$lon2 = fmod($lon2 + 3*M_PI, 2*M_PI) - M_PI; // normalise to -180..+180ยบ
$lat2 = rad2deg($lat2);
$lon2 = rad2deg($lon2);
echo "lat = ".$lat2."\n";
echo "lon = ".$lon2."\n\n";
}
$lat = 0;
$lng = 0;
$dist = 1; // km
$n = 12;
$bearings = range(0, 360-(360/$n) , 360/$n); // create array of all bearings needed from $lat/$lng
foreach($bearings as $brng){
echo $brng ."\n";
destinationPoint($lat, $lng, $brng, $dist);
}
- Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- 0
lat = 0.0089932160591873
lon = 0
30
lat = 0.0077883535609834
lon = 0.0044966080572905
60
lat = 0.0044966080157459
lon = 0.0077883535850179
90
lat = 5.5067566078507E-19
lon = 0.008993216059214
120
lat = -0.0044966080157459
lon = 0.0077883535850179
150
lat = -0.0077883535609834
lon = 0.0044966080572905
180
lat = -0.0089932160591873
lon = 0
210
lat = -0.0077883535609834
lon = -0.0044966080572905
240
lat = -0.0044966080157459
lon = -0.0077883535850179
270
lat = -1.6520269823552E-18
lon = -0.008993216059214
300
lat = 0.0044966080157459
lon = -0.0077883535850179
330
lat = 0.0077883535609834
lon = -0.0044966080572905
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
0
lat = 0.0089932160591873
lon = 0
30
lat = 0.0077883535609834
lon = 0.0044966080572905
60
lat = 0.0044966080157459
lon = 0.0077883535850179
90
lat = 5.5067566078507E-19
lon = 0.008993216059214
120
lat = -0.0044966080157459
lon = 0.0077883535850179
150
lat = -0.0077883535609834
lon = 0.0044966080572905
180
lat = -0.0089932160591873
lon = 0
210
lat = -0.0077883535609834
lon = -0.0044966080572905
240
lat = -0.0044966080157459
lon = -0.0077883535850179
270
lat = -1.6520269823552E-18
lon = -0.008993216059214
300
lat = 0.0044966080157459
lon = -0.0077883535850179
330
lat = 0.0077883535609834
lon = -0.0044966080572905
preferences:
225.4 ms | 403 KiB | 300 Q