Hi,
dann wendest Du die Klasse falsch an.
Es geht nur um die Klasse, nicht Norberts restlichen Code. Dort baut er nämlich Fehler ein, die ich in einem Folgeposting seziert habe - leider ohne eine Antwort zu bekommen :-(
Ich habe die Klasse folgendermaßen nach Perl übersetzt:
sub luftlinie{
my ($lat1,$long1,$lat2,$long2) = @_;
$lat1=torad($lat1);
$long1=torad($long1);
$lat2=torad($lat2);
$long2=torad($long2);
my $phi1 = ellipsoid($lat1);
my $phi2 = ellipsoid($lat2);
my $zw1 = sin($phi1) * sin($phi2);
my $zw2 = cos($phi1) * cos($phi2);
my $zw3 = cos($long2 - $long1);
return 6371 * acos($zw1 + $zw2 * $zw3);
}
sub torad{
return $_[0]*(3.14159265 / 180);
}
sub tan{return (sin($_[0])/cos($_[0]))}
sub acos{return atan2(sqrt(1-$_[0]*$_[0]), $_[0]);}
sub ellipsoid{
return 298.2 * tan($_[0] / 297.2);
}
Ich kann da keinen sinngemäßen Unterschied zum Original erkennen. Wo liegt mein Denkfehler? Für die Umwandlung ins Bogenmaß habe ich meine eigene Funktion verwendet, da ich nicht verstehe, warum er ein seiner Funktion
function get_BogMss($sc)
{return ((doubleval($sc) / 3600) * M_PI / 180);
}
den Wert durch 3600 teilt. Verwende ich diese Funktion, kommt noch größerer Blödsinn raus.
Margin-Auto