Definition der Projektionen in CanvasGI
Empfehlungen zur Definition von Projektionen
Die volle Allgemeinheit, mit der auf den Seiten
Mathematik der Zentralprojektion bzw.
Mathematik der Parallelprojektion die
beiden wichtigsten Projektionsvarianten beschrieben wurden, sollte nicht
dazu verführen, beliebige Kombinationen der jeweils vier Vektoren, die
eine Projektion definieren, zu verwenden. Folgende Empfehlungen können
allgemein gegeben werden:
- Bei der Zentralprojektion wird der Fußpunkt
des Lotes vom "Eye point" auf die Projektionsebene als "Hauptpunkt" bezeichnet.
Es ist empfehlenswert, den Referenzpunkt der Projektionsebene
(Vektor r0) mit dem Hauptpunkt
zusammenfallen zu lassen. Da der Referenzpunkt der Ursprung des ebenen
Koordinatensystems der Bildebene ist, steht die Projektionsebene dann
senkrecht zum Sehstrahl auf den Nullpunkt
des u-v-Koordinatensystems.
- Bei der Parallelprojektion sollte die
Projektionsebene senkrecht zum "Vektor der Blickrichtung" gelegt werden.
Dann ist der Normalenvektor, der die Projektionsebene definiert, parallel
zum "Vektor der Blickrichtung".
- Im Allgemeinen ist ein "Up vector", der parallel zur z-Achse
des dreidimensionalen Koordinatensystems liegt, eine gute Wahl (vermittelt den
Eindruck, als würde der Beobachter auf einer zur
x-y-Ebene parallelen Ebene
aufrecht stehen). Ein solcher "Up vector" ist allerdings nicht möglich, wenn
der "Eye point" der Zentralprojektion selbst auf der z-Achse
liegt oder der "Vektor der Blickrichtung" der Parallelprojektion parallel
zu z-Achse ist.
- Die in technischen Zeichnungen üblichen Darstellungen (Vorderansicht,
Seitenansicht, Draufsicht) sind als Sonderfälle der Parallelprojektion zu realisieren.
Definition der Projektionen in CanvasGI-3D
Die allgemeinen Definitionen mit jeweils 4 Vektoren, mit denen auf den Seiten
Mathematik der Zentralprojektion bzw.
Mathematik der Parallelprojektion die
Projektionsvarianten beschrieben werden, sind im 3D-Bereich von CanvasGI
zwar komplett realisiert (und können bei Bedarf für spezielle Untersuchungen
aktiviert werden), wenn aber nicht wirklich gute Gründe gegen die nachfolgend
beschriebenen vereinfachten Definitionen sprechen, die eine Projektion mit
nur zwei Vektoren eindeutig beschreiben, dann sollten diese benutzt werden.
Die Funktionen, die nachfolgend beschrieben werden, arbeiten mit diesen
sinnvollen Einschränkungen.
Definition einer Zentralprojektion in CanvasGI:
- Es werden nur der "Eye point" (Projektionszentrum) und ein Punkt
der Projektionsebene ("Referenzpunkt") im raumfesten
x-y-z-Koordinatensystem
("World coordinates") definiert.
- Die Projektionsebene wird von den CanvasGI-Funktionen automatisch so gelegt,
dass sie senkrecht zur Verbindungslinie vom "Eye point" zum Referenzpunkt
liegt (der Normalenvektor hat also die Richtung dieser Verbindungslinie,
der Referenzpunkt ist gleichzeitig der sogenannte "Hauptpunkt" der Projektion).
- Als "Up vector" wird in der Regel automatisch die z-Achse
gewählt (dies vermittelt den Eindruck, als würde der Beobachter auf einer zur
x-y-Ebene parallelen Ebene aufrecht
stehen). Wenn der "Eye point" selbst auf der z-Achse
liegt, wird entweder die positive y-Achse ("Eye point"
liegt auf der positiven z-Achse, "Draufsicht") oder
die negative y-Achse ("Eye point" liegt auf der
negativen z-Achse) zum "Up vector".
Diese Definition mit zwei Vektoren ist nicht nur eindeutig, sie erfüllt auch die oben
gegebenen Empfehlungen. Eine entsprechende Aussage gilt auch für die
folgende "Zwei-Vektor-Definition" der Parallelprojektion.
Definition einer Parallelprojektion in CanvasGI:
- Es werden nur der "Vektor der Blickrichtung" und ein Punkt
der Projektionsebene ("Referenzpunkt") im raumfesten
x-y-z-Koordinatensystem
("World coordinates") definiert.
- Die Projektionsebene wird von den CanvasGI-Funktionen automatisch so gelegt,
dass sie senkrecht zum Vektor der Blickrichtung
liegt (der Normalenvektor hat also die gleiche Richtung wie der Vektor der
Blickrichtung).
- Als "Up vector" wird in der Regel automatisch die z-Achse
gewählt (dies vermittelt den Eindruck, als würde der Beobachter auf einer zur
x-y-Ebene parallelen Ebene aufrecht
stehen). Wenn der "Vektor der Blickrichtung" parallel zur z-Achse
ist, wird entweder die positive y-Achse ("Vektor der Blickrichtung"
hat negative z-Komponente, "Draufsicht") oder
die negative y-Achse ("Vektor der Blickrichtung" hat
positive z-Komponente) zum "Up vector".
Arbeiten mit Projektionen
Es ist immer eine Projektion eingestellt, deren Parameter mit Funktionen
abgefragt werden können, deren Namen mit prget..
beginnen, und die mit
Funktionen modifiziert werden können, deren Namen mit prset..
beginnen.
Die Funktionen, mit denen 3D-Objekte gezeichnet werden, haben Namen,
die mit w... beginnen. Dieser Anfangsbuchstabe steht für "World coordinates"
(3D-Koordinaten, die sich auf ein kartesisches
x-y-z-Koordinatensystem
beziehen). Die Funktionen erwarten also Koordinaten-Tripel, die vor der
Zeichenaktion auf zweidimensionale "User coordinates" unter Verwendung der
gerade gültigen Projektion umgerechnet werden.
Es können auch Transformationen eingestellt werden, die auf die "World coordinates"
vor der Umrechnung auf 2D-Koordinaten nach der Projektionsvorschrift angewendet werden.
Weiterlesen
Auf folgenden Seiten werden die hier bschriebenen Projektionen an
Beispielen demonstriert:
Folgende Seiten werden als Einführung in die Benutzung der 3D-Grafik mit CanvasGI empfohlen: