Wenn wir die Daten selbst darstellen wollen, lohnt es sich diese entsprechend aufzuarbeiten. Wir wollen einige Dinge über diese Daten erfahren – später werden wir auf diese Erkenntnisse zurückgreifen.
Bereiche der Daten
Die Kachel, welche wir darstellen wollen, deckt einen bestimmten Koordinatenbereich ab. Wir sollten diesen Bereich kennen um später entsprechend am richtigen Ort die Höhen einzutragen oder aber die Koordinaten zu verschieben, wenn wir mit Bildschirmkoordinaten arbeiten.
Zudem ist es sinnvoll, den tiefsten und höchsten Punkt der Kachel zu kennen. Das variiert ja sicher – ob wir nun im Mittelland sind oder im Gebirge.
Aufgabe: Minima und Maxima bestimmen
Gehe alle Koordinaten durch und merke dir für jede Koordinaten-Richtung x, y und z den kleinsten und den grössten Wert in einer Variablen.
Transformation der Daten
Wenn wir die Daten auf den Bildschirm zeichnen, dann müssen wir neue Koordinaten, nämlich Pixel-Koordinaten berechnen. Wir könnten dies bereits vorbereiten und den Bereich der Kachel verschieben und skalieren, so dass wir beim Punkt (0,0) beginnen und Einheit jeweils 1 ist – also alle Pixel gefüllt werden.
Wir müssten also das grüne Rechteck ins rote Rechteck verwandeln. Dazu müssen wir wissen, wie stark skaliert werden soll und um wieviel verschoben werden soll.
Skalieren
Aufgabe
Wie gross sind die Abstände zwischen den Höhenmess-Punkten im ursprünglichen Koordinaten-System (grün)?
Wie gross sollen die Abstände im Bildschirm-Koordinaten-System (rot) sein?
Welcher Faktor ergibt sich daraus?
Verschieben
Aufgabe
Um welchen Vektor wird die Ecke unten links des grünen Rechtecks verschoben?
Wie sieht es mit den anderen Punkten des grünen Rechtecks aus?
Indizes
Das neue Koordinatensystem lässt sich als zweidimensionale Liste darstellen:
Statt die Koordinaten als Zahlen zum Punkt zu speichern,
[[0,0,z1],[1,0,z2],[2,0,z3], ..., [0,1,z4],[1,1,z5],[2,1,z6], ...]
speichern wir nur noch den Höhenwert z, dafür aber an der richtigen Stelle in der zweidimensionalen Liste:
[[z1, z2, z3, ...],
[z4, z5, z6, ...],
...]
Aufgabe
Programmiere die oben beschriebene Transformation und wandle die Koordinaten in eine zweidimensionale Liste um.