Computergrafik

Zusammengesetzte Transformationen

Homogene Koordinaten | | Homogene Matrizen

Die Hintereinanderschaltung von m affinen Transformationen wird durch die Multiplikation der entsprechenden affinen Matrizen $M_1, M_2, ..., M_m$ erreicht:

$v'=Mv, M=M_mM_{m-1}\cdots M_2M_1$

Matrixmultiplikation nicht kommutativ: $AB \ne BA$. Die erste “ausgeführte” Transformation steht rechtsseitig.


Effizient, da jede zusammengesetzte Transformation eines Punktes (vtx) durch die einmalige Multiplikation mit einer 4×4 Matrix erreicht wird!

Zur Einordnung des Rechenaufwands ein grobes Rechenbeispiel: Die Multiplikation einer 4×4 Matrix mit einem 4×1 Vektor beinhaltet insgesamt 12 Additionen und 16 Multiplikationen. Um von den homogenen Koordinaten (4D) zu den kartesischen Koordinaten (3D) zu transformieren kommt noch eine Division hinzu. Nachfolgend sind die ersten beiden Aspekte mathematisch formuliert:

$ \left( \begin{array}{c c c c} a & b & c & d \\ e & f & g & h \\ i & j & k & l \\ m & n & o & p \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \\ w \end{array} \right) = \left( \begin{array}{c c c c} a \cdot x + b \cdot y + c \cdot z + d \cdot w \\ e \cdot x + f \cdot y + g \cdot z + h \cdot w \\ i \cdot x + j \cdot y + k \cdot z + l \cdot w \\ m \cdot x + n \cdot y + o \cdot z + p \cdot w \end{array} \right) $

Pro Vertex also 12+, 16$\cdot$, 1/29 Rechenoperationen (Floating-point operations - FLOPS)

Unsere virtuelle Szene kann nun mehrere Millionen von Vertices enthalten, die alle mithilfe von 4×4 Matrizen transformiert werden sollen. Zusätzlich soll pro Sekunde mehr als ein Bild berechnet (gerendert) werden um einen flüssigen Bewegungseindruck zu erhalten. Der Rechenaufwand für diese einfache Transformation oben, kann somit leicht in den Bereich der GFLOPS steigen.

Eine intelligente Einsparung von Rechenoperationen kann sich also schon in diesem Stadium durchaus lohnen!


Homogene Koordinaten | | Homogene Matrizen

Options: