Hinführung
Anmerkungen
- Wir rechnen hier in 2D, das ganze läuft aber analog in 3D ab.
- Für das einfachere Rechnen ist die Sehrichtung entlang der positiven y-Achse (statt in 3D entlang der negativen z-Achse).
Homogene Koordinaten
Ausgangslage sind Punkte im Eyespace. Die Idee: Wie jede Transformation lässt sich Perspektivische Projektion auch durch eine Matrix ausdrücken. In homogener Schreibweise sieht eine Matrix so aus:
Wegfall der linearen und Translationsmatrix
Wir können uns erschließen:
- Wir sind im Eyespace schon passend skaliert / orientiert
- Wir sind auch passend positioniert
Damit ist der Effekt von
Dehomogenisiert wäre das dann:
Homogene Werte
Wir sehen, wir haben eine Division. Zur Erinnerung an unsere Mission:
Weiter können wir uns erschließen:
ist eine konstante Skalierung, unabhängig der Position. Das brauchen wir nicht.
bezieht sich auf den -Wert, dementsprechend würden Dinge kleiner werden, je weiter oben sie sind. So funktioniert die Realität nicht, dinge werden nicht kleiner, je weiter oben sie sind.
- Dementsprechend bleibt nur
übrig, was sich genau auf , also die Distanz zur Kamera bezieht. muss also definiert sein, wir nehmen der Einfachheit halber mal .
Übrig bleibt die Matrix:
Erhaltung der Tiefenwerte
Dehomogenisiert wäre der Effekt soweit dann:
Problem damit: Bei der Transformation geht die Tiefe (
Wenn man jetzt nämlich einen Punkt
Sieht man, dass
Es bleibt also die Transformationsmatrix:
Beispiel
Gegeben sind folgende Punkte im Eyespace:
Die transformierten Punkte sind dann:
3D
Die Projektion in 3D läuft analog ab, mit der Änderung dass wir jetzt in die negative
Dementsprechend verläuft die Transformation wie folgt:
Auch hier beziehen wir die Z-Achse wieder mit ein, sodass sie in Sichtrichtung (negatives z) monoton steigend ist.