![]() |
Mathematisches Problem mit GPS
Hallo,
ich habe gerade ein mathematisches Problem. Genauer gesagt möchte ich mit folgenden Informationen: Latitude, Longitude des Betrachters + Azimut und Elevation eine Art Augmented Reality erstellen. Genauer gesagt wollte ich anhand der GPS Daten die mir mein Telefon liefert die Position des Sternenhimmels auf die Kamera zeichnen. Ich hab das ganze vor Jahren mal in 2D auf den Monitor gerendert, aber ehrlich gesagt wenn man die mathematischen Hintergründe seit Jahrzehnten nicht mehr gebraucht hat, fällt einem das ganz schön schwer.
Delphi-Quellcode:
Aus meinen alten Aufzeichnungen habe ich im Ansatz obigen Code zusammengestellt, aber wie gesagt ich komme damit nicht wirklich weiter :(
procedure findPosition(const Latitude, Longitude, Azimuth, Elevation: single; out x, y: single);
var lat2, lon2: single; distance: single; begin distance := CalulateDistance(Elevation); lat2 := arcsin(sin(Latitude) * cos(distance) + cos(Latitude) * sin(distance) * cos(azimuth)); if cos(Latitude) = 0 then lon2 := Longitude else lon2 := Longitude-(arcsin(sin(azimuth) * sin(distance) / cos(Latitude))); x := XFromLat(lat2); y := YFromLong(lon2); end; |
AW: Mathematisches Problem mit GPS
Zitat:
was verbirgt sich denn hinter folgenden variablen: Azimuth, Elevation: Genauso wie hier distance := CalulateDistance(Elevation); |
AW: Mathematisches Problem mit GPS
Azimut ist die Himmelsrichtung (180° ist der Süden), Elevation der Betrachtungswinkel zu dem Objekt und Distanz ist die Entfernung. Da es sich eh um Punkte handelt, kann man letzteres im Prinzip auch vernachlässigen. Wie gesagt ich habe den aktuellen Azimut und die Elevation und möchte nun aus dem Vektor im Verhältnis zu meiner Kameraposition den 3D Bildpunkt rendern.
Delphi-Quellcode:
Ich hab testweise x' = x/z und y' = y/z genommen, mit einem Faktor versehen und auf die Bildmitte gezeichnet. Im Prinzip habe ich vom Betrachter die Richtung in die er guckt und den Winkel in der das Telefon gehalten wird. Ich weiß das wäre Mathe Sekundarstufe 2, wenns bei mir nicht schon so lange zurück läge. Ist schon traurig wie viel man vergisst.
procedure rae2xyz(Range, Azimuth, Elevation: Single; out x, y, z: single);
begin //http://en.wikipedia.org/wiki/Spherical_coordinate_system#Cartesian_coordinates x := Range * sin(Elevation) * cos(Azimuth); y := Range * sin(Elevation) * sin(Azimuth); z := Range * cos(Elevation); end; |
AW: Mathematisches Problem mit GPS
|
AW: Mathematisches Problem mit GPS
Das ist im Grunde nicht schwer (Abiturniveau) aber viel (langweilige und fehleranfällige) Rechnerei. Und natürlich wird es immer krasser, je genauer du es willst ;-)
Du kannst dir mal ein paar Seiten anschauen, zum Beispiel das hier: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz