Skip to Content.
Sympa Menu

cacert-de - Re: Performance - Re: AW: nur noch wenige aktive Assurer

Subject: Deutschsprachige CAcert Support Liste

List archive

Re: Performance - Re: AW: nur noch wenige aktive Assurer


Chronological Thread 
  • From: Thomas Bremer <thomas.bremer AT cacert.org>
  • To: cacert-de AT lists.cacert.org
  • Subject: Re: Performance - Re: AW: nur noch wenige aktive Assurer
  • Date: Thu, 17 Sep 2009 22:48:02 +0200
  • Authentication-results: lists.cacert.org; dkim=pass (1024-bit key) header.i= AT cacert.org; dkim-asp=none

Hallo Uli,
und wie wuerde die fertige Formel dann aussehen ?!?
die gibt's jetzt hier in Pseudocode:

const deg_dist = 40000 / 360; // Distanz über ein Winkelgrad auf Großkreis in km.

struct Pos {
 double lat; // Geographische Breite
 double lon; // Geographische Länge
};

double[] square_distances(Pos searcher, Pos[] assurers) {
 coslat = cos(searcher.lat / 180.0 * PI);
 square_coslat = coslat * coslat;
 double[] result;
 for (int i = 0; i < assurers.length; i++) {
   Pos assurer = assurers[i];
   latdist = (assurer.lat - searcher.lat) * deg_dist;
   londist = (assurer.lon - searcher.lon) * deg_dist;
   result[i] = latdist * latdist + square_coslat * londist * londist;
 }
 return result;
}

Diese Funktion erhält als Argumente die Assuree-Koordinaten und ein Array mit allen Assurer-Koordinaten. Sie liefert ein Array mit den Quadraten der Näherungen der Abstände. Wenn man Assurer sucht, die höchstens n Kilometer weg sind, dann vergleicht man mit n*n .

Noch eine kurze Abschätzung der Präzision. Wenn wir uns genau auf einem Meridian oder einem Breitenkreis bewegen, dann sind wir exakt. Fehler treten nur bei "diagonalen" Richtungen auf, also bei solchen, bei denen sowohl Länge als auch Breite unterschiedlich sind. Das liegt daran, dass wir abschätzen, indem wir statt des korrekten Wertes für den Abstand in Längenrichtung mit dem Faktor cos(lat) annehmen.

Der Fehler wird größer, je größer der Betrag der Breite ist, weil dann die Ableitung des cos steigt. Begeben wir uns nach "ganz oben in Deutschland" auf etwa 55°:

cos(55°) = .574

Eine Entfernung von 100 km nach Norden / Süden bringt uns auf etwa 55.9° / 54.1°:

cos(55.9°) = .561
cos(54.1°) = .586

Eine Entfernung von 1000 km nach Norden / Süden bringt uns auf etwy 64° / 46°:

cos(64°) = .438
cos(46°) = .695

Das heißt, ausgehend von List bekommen wir bei Entfernungen von 100 km nach Norden einen Fehler von kleiner 0,23%, nach Süden kleiner 0,21%. Bei einer Entfernung von 1000 km nach Norden einen Fehler von höchstens 31%, nach Süden höchstens 21%. Der Fehler ist in polare Richtungen positiv, in äquatoriale Richtungen negativ. Weiterhin sind die worst-case-Winkel nur zu erreichen, wenn die Entfernungen deutlich größer sind als die Breitenkomponente. Und die Fehler sind nur in bestimmte Richtungen so groß.

Meine Bewertung ist, dass ein Fehler kleiner als 0,23% bei einer Entfernung von 100 km vernachlässigbar ist. Fehler in der Größenordnung von 30% bei Entfernungen von 1000 km halte ich für vertretbar. Wer mit einem Landfahrzeug unterwegs ist muss wahrscheinlich längere Umwege fahren, wer SEPL (Single Engine Propeller Land) fliegt wird mehr an Höhenwinden korrigieren müssen.

So weit erstmal dazu.

regards, Thomas



Archive powered by MHonArc 2.6.16.

Top of Page