Ik probeer in vba de afstand te berekenen tussen 2 steden.
Ik kom steeds de waarde nul uit.
Lig het dan aan de matrix die verkeerd gedeclareerd is?
Option Compare Database
Option Explicit
Function afstand(Lat1 As Double, Lon1 As Double, Lat2 As Double, Lon2 As Double) As Double
Dim dlat As Double
Dim dlon As Double
Dim A As Double
Dim Atan2(0 To 100, 0 To 100) As Double
Dim c As Double
Dim d As Double
Dim Sqr(0 To 100) As Integer
Lat1 = Lat1 * (3.14159265358979 / 180)
Lat2 = Lat2 * (3.14159265358979 / 180)
Lon1 = Lon1 * (3.14159265358979 / 180)
Lon2 = Lon2 * (3.14159265358979 / 180)
dlat = Lat2 - Lat1
dlon = Lon2 - Lon1
A = ((Sin(dlat / 2)) * (Sin(dlat / 2))) + Cos(Lat1) * Cos(Lat2) * ((Sin(dlon / 2)) * (Sin(dlon / 2)))
c = 2 * Atan2(Sqr(A), Sqr(1 - A))
d = 6372797 * c
afstand = d
End Function
De afgeleide broncode is van PHP
<?php
// afstands functie
function afstand($lat1, $lon1, $lat2, $lon2, $unit = "K") {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
switch($unit) {
case "M":
return $miles;
break;
case "N":
return ($miles * 0.8684);
break;
default:
return ($miles * 1.609344);
break;
}
}
// coördinaten Dwingeloo
$ax = 52.8338;
$ay = 6.37351;
// coördinaten Meppel
$bx = 52.6849;
$by = 6.18306;
print afstand($ax, $ay, $bx, $by) . " kilometer";
?>
Vriendelijke groeten,
Diezel