13.11.2014 Aufrufe

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Aufgabe</strong> 3<br />

Stefan Hansch, Markus Wirsing, <strong>Matthias</strong> <strong>Springer</strong><br />

in einen Pixel-Wert auf der zu Grunde liegenden Landkarte konvertiert werden,<br />

wobei x pixel der x-Koordinate eines Punktes auf der Landkarte, Logitude[x]<br />

dem Längengrad (geographische Länge) des Punktes aus dem GPS-Daten<br />

und proportions[0] der Breite des Bildes in Pixel entsprechen.<br />

Die Bezeichnungen der Variablen entsprechen dabei so weit wie möglich den<br />

im Quelltext verwendeten Variablennamen und den bereits in <strong>Aufgabe</strong> 5 verwendeten<br />

Bezeichnungen. Analog wird bei der Berechnung der y-Koordinaten<br />

verfahren, jedoch ist hier zu beachten, dass die Breitengrade entgegengesetzt zu<br />

den y-Pixelwerten wachsen. Das heißt, dass die Pixel-Werte von oben nach unten<br />

zunehmen, die Breitengrade jedoch von unten nach oben (auf der Bilddatei). Die<br />

komplette Log-Datei wird im Arbeitsspeicher in drei Arrays gespeichert, wobei<br />

Zeit, Längengrad und Breitengrad (jeweils als Pixel) gespeichert werden. Zeitangaben<br />

werden in vorzeichenlose Ganzzahlen umgewandelt, die die seit 00:00:00<br />

Uhr vegangene Zeit in Sekunden angeben. Zu Problemen kommt es jedoch, wenn<br />

eine Log-Datei über mehrere Tage geht, d. h. wenn ein Sprung von 23:59:59 Uhr<br />

auf 00:00:00 Uhr stattfindet. Ein solcher Spezialfall wird nicht abgedeckt, da er<br />

in Dominics GPS-Logs nicht auftritt.<br />

1.3 Einzeichnen eines Weges auf der Karte<br />

Schreibe ein Programm, das einen Weg auf der Karte einzeichnet.<br />

Es sollen zunächst keine Anpassungen an den GPS-Daten vorgenommen werden.<br />

Es sollen alle Daten (ggf. mit Fehlern) auf die Karte gezeichnet werden.<br />

Dazu iteriert das Programm über alle Einträge in den Log-Daten und zeichnet<br />

entsprechende Linien auf der Landkarte ein, indem die betroffenen Pixel<br />

grün eingefärbt werden. Für diesen Vorgang sind lediglich die Koordinaten der<br />

GPS-Daten von Interesse, nicht jedoch die Zeitangaben. Zum Schluss wird das<br />

neue Bild wie in <strong>Aufgabe</strong> 5 auf der Festplatte gespeichert. Das Bild vom <strong>Aufgabe</strong>nblatt<br />

erhält man, indem man alle drei Log-Dateien auf eine Landkarte<br />

einzeichnet.<br />

Eine Strecke wird dazu als ein Vektor ⃗v mit Aufpunkt A aufgefasst. Die<br />

Länge einer Strecke ergibt sich durch den<br />

√<br />

Betrag des Vektors |⃗v| und wird mittels<br />

Pythagoras über die Beziehung |⃗v| = vx 2 + vy 2 berechnet. Nun wird aus den<br />

Pixelangaben (Start- und Zielpunkt der Strecke) der Einheitsvektor gebildet.<br />

Dieser Vektor hat die Länge 1 und dient lediglich dazu, die Richtung anzuzeigen.<br />

Er wird gebildet, indem der Vektor durch seine Länge (ein Skalar) dividiert<br />

wird. Nun iteriert das Programm ganzzahlig über das Intervall i ∈ [0; |⃗v|] und<br />

berechnet den Punkt, der vom Aufpunkt A genau i (Pixel-)Einheiten entfernt ist<br />

und die Richtung von ⃗v besitzt. Dazu wird der Einheitsvektor mit i multipliziert.<br />

Dieser Punkt wird eingefärbt. Zum Schluss ist also mit Sicherheit die ganze<br />

Strecke eingefärbt.<br />

1.4 Korrektur der Fehler<br />

In den GPS-Logs können Daten fehlen oder falsch sein. Erweitere<br />

Dein Programm so, dass es versucht, die Fehler zu korrigieren, um<br />

so den Weg möglichst realistisch einzeichnen zu können.<br />

2

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!