2D Koordinatensysteme

Bei der Programmierung von Computerspielen hat man es oft mit mehreren Koordinatensystemen zu tun, die sich in Größe, Lage und Achsenorientierung unterscheiden können. Im einfachsten Fall muss man sich nur mit dem Viewport- und Objektkoordinatensystem herumschlagen. Oft hat man aber eine Welt, größer als der Viewport im Teil eines Fensters auf einem Ausschnitt des Monitors. Zu allem Unglück mögen deren Größen, Lagen und Orientierungen sich dynamisch ändern.

Das Weltkoordinatensystem

Welt-, Objekt- und Fensterkoordinatensysteme
Welt-, Objekt- und Fensterkoordinatensysteme

Das Weltkoordinatensystem hat eine Orientierung, wie es in der Mathematik üblich ist. Die Größe des Weltkoordinatensystems hängt vom Anwendungszweck ab. Der Einfachheit wegen kann hier nur der erste Quadrant benutzt werden. D.h. X-Werte nehmen nach rechts zu, Y-Werte nach oben, negative Werte kommen nicht vor. Das Weltkoordinatensystem dient zur Positionierung der jeweiligen Objekte. Falls die Weltgröße gleich der Viewportgröße ist, kann auf ein Weltkoordinatensystem komplett verzichtet werden. Bei manchen Welten kann es zur Reduktion von Rundungsfehlern bei der Positionsberechnung sinnvoll sein, die Objektposition in Segment - Offset Form anzugeben. X und Y Achse sind dann in ganzzahlige Segmente günstiger Größe unterteilt (siehe Viewportkoordinatensystem).

Das Viewportkoordinatensystem

Für Fenster bzw. Viewports ist die Situation etwas komplizierter. Aus historischen Gründen liegt der Koordinatenursprung oben links. D.h. X-Werte nehmen zwar weiter nach rechts zu, jedoch nehmen die Y-Werte nach unten zu. Das führt bei einigen geometrischen Berechnungen zu seltsamen Ergebnissen und muss unbedingt berücksichtigt werden.

Koordinaten innerhalb des Viewports sollten auf Werte von -1.0 bis +1.0 normiert werden.
Da die gesamte Fließkommazahlenlänge unveränderlich ist, hätte man ansonsten für Werte nahe am Koordinatenursprung 'mehr effektive Nachkommastellen' als für Werte in größerer Entfernung. Woraus bei gleicher Berechnungen ein anderer, positionsabhängiger Rundungsfehler resultiert. Das kann zu unangenehmen Bildfehlern führen, deren Ursache nicht so ganz offensichtlich ist.
Durch die Normierung hat man an jeder Position im Viewport die gleiche Anzahl von Nachkommastellen zur Verfügung. Durch die Normierung auf den Bereich von -1 bis +1 verdoppelt man die Genaugkeit gegenüber einer Normierungvon 0 bis 1.

Das Objektkoordinatensystem

This is the page conent
Quelltext ein-/ausblenden

									

Kommentar(e)

Kommentarformular ein-/ausblenden