Vinzenz Mai: Entfernung zwischen zwei Punkten auf der Erdoberfläche

Beitrag lesen

Hallo

Ich kann da keinen sinngemäßen Unterschied zum Original erkennen.

  
 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);  

Wo liegt mein Denkfehler?

Du musst ellipsoid auf die Länge und nicht auf die Breite anwenden. Da liegt der Hase im Pfeffer.

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.  
  
Weil, wie es in der Dokumentation der Klasse steht, die Übergabewerte als Gradsekunden betrachtet werden, was man aus dem Namen des Funktionsparameters ablesen kann. Es gibt gewisse Dinge, die ich an Perl nicht mag, zum Beispiel solche subs wie Deine to\_rad. Ich mag benannte Parameter :-)  
  
Ich bin in Perl nicht so geübt, aber Du setzt die Funktion atan2 voraus und schreibst Dir Deine eigene Tangens und Arcuscosinus-Funktion. Ich kann mir nicht vorstellen, dass diese in Perl nicht eingebaut sein sollten.  
  
Wie wäre es mit [Math::Trig](http://perldoc.perl.org/Math/Trig.html)?  
  
  
Freundliche Grüße  
  
Vinzenz