Wie verwende ich die lineare Interpolation, um die aktuelle Position zwischen zwei Geo-Koordinaten zu schätzen?

8

Ich habe Folgendes zur Verfügung:

  • zuletzt berichtet lat, lon w / timestamp
  • Ziel lat, lon
  • geschätzte Zeit bis zum Ziel
  • Überschrift

Wie kann ich eine geschätzte Position über die Zeit interpolieren?

Ich weiß, dass das ausreicht, um die erforderliche Durchschnittsgeschwindigkeit für den Rest der Reise zu berechnen. Bei einer geradlinigen Distanz ist das ziemlich trivial. Ich weiß, dass es mit Vektoren zu tun hat, aber ich bin ein bisschen eingerostet und dachte, es wäre besser, einige Experten zu konsultieren.

Der Grund, warum ich diese Aktualisierungsrate benötige, ist begrenzt. Um glatte Animationen zu zeigen, muss ich die aktuelle Position zwischen den Aktualisierungen erraten.

Die Zielplattform ist eine Google Maps-Anwendung, so dass ich einige grundlegende Funktionen wie eine Geo-Correct-Funktion für die Entfernung zwischen zwei Koordinaten zur Verfügung habe. Sprache ist unwichtig, da ich viele kenne und bei Bedarf beliebige Beispiele portieren oder anpassen kann. Allgemeine Lösungen wären jedoch bevorzugt.

Sind das einfach zwei unabhängige Vektorberechnungen?

%Vor%     
Mark Renouf 15.11.2009, 22:07
quelle

2 Antworten

8
%Vor%

Wenn die Abstände relativ klein sind, ist es wahrscheinlich ok, eine lineare Progression für diese drei Dimensionen zu akzeptieren (*). Sie müssen dann eine Anzahl von Zwischenpositionen auswählen, z. B. 10, und jeden Zwischenpunkt entsprechend berechnen

%Vor%

Am kompliziertesten ist es, die Einheiten in Ordnung zu halten.

(*) Ein paar Überlegungen, ob es in Ordnung ist, eine lineare Progression anzunehmen ...
Offensichtlich können die Besonderheiten der Realität der physikalischen Elemente (Meeresströmungen, Wind, Sichtweite ...) in dieser Sache mehr von Bedeutung sein als die geo-räumliche Mathematik.
Angenommen, das Fahrzeug fährt mit einem konstante Geschwindigkeit, in einer direkten Linie ist es < allgemein ] ok, Linearität in der Latitude Dimension anzunehmen [gut, dass die Erde nicht genau eine Sphäre ist, ist dies nicht völlig richtig aber verdammt nah]. Bei längeren Distanzen, die eine relativ große Breitenänderung beinhalten, ist die Winkelprogression entlang der Längengraddimension jedoch nicht linear. Der Grund dafür ist, dass, wenn wir uns vom Äquator entfernen, ein Längengrad, ausgedrückt in linearen Meilen (oder Kilometern ...), abnimmt. Die folgende Tabelle soll eine grobe Vorstellung von diesem Effekt für Standorte in verschiedenen Breiten geben:

%Vor%

Sehen Sie sich diesen handlichen Online-Rechner an, um dies für einen bestimmten Breitengrad zu berechnen.
Ein anderer Weg, um eine Idee dafür zu bekommen, ist zu sehen, dass Reisen nach Osten (oder Westen) in der Nähe von Jacksonville, Florida, oder San Diego, Kalifornien, dauert 52 Meilen, um einen Längengrad abzudecken; auf der geographischen Breite von Montreal oder Seattle sind es nur 40 Meilen.

    
mjv 15.11.2009, 22:20
quelle
14

Sie möchten eine Slerp oder sphärische lineare Interpolation verwenden.

Konvertieren Sie Ihren Breiten- und Längengrad in einen Einheits-3-Vektor:

%Vor%

Dann gibt "Slerp" eine Interpolation mit konstanter Geschwindigkeit entlang der Oberfläche der Einheitskugel:

%Vor%

Beachten Sie, dass, wenn Theta sehr nahe bei 0 oder 180 Grad liegt, diese Formel numerisch instabil sein kann. Im Kleinwinkelfall kann auf lineare Interpolation zurückgegriffen werden; im 180-Grad-Fall ist dein Weg wirklich mehrdeutig.

    
comingstorm 16.11.2009 10:45
quelle