Discussion:
transformation von normalvektoren
(zu alt für eine Antwort)
Martin Grödl
2003-11-13 16:31:46 UTC
Permalink
blicke noch nicht ganz durch bei der transformation der normalvektoren:

1) bei einer translation oder uniformen skalierung müssen die
normalvektoren nicht transformiert werden.

2) bei einer nicht uniformen skalierung müssen die normalvektoren mit
der inversen skalierung mulipliziert werden.

3) bei einer rotation werden die normalvektoren genau wie die vertices
rotiert.

aber bei fall 2) und 3) muss ja auch auf die gewählte
transformationsvariante geachtet werden, oder?
kann die Transformation bei TRANSFORMATION_LEFT/RIGHT auch einfach von
links/rechts mit der modelMatrixVector multipliziert werden? (nehme ich an)
und wie siehts bei TRANSFORMATION_LEFTTRANSLATE aus? genügt da eine
linksmultiplikation? eine translation macht ja bei vektoren keinen sinn.

mfg,
martin
Chris Chiu
2003-11-13 16:52:22 UTC
Permalink
Post by Martin Grödl
1) bei einer translation oder uniformen skalierung müssen die
normalvektoren nicht transformiert werden.
Korrekt. Denn da Vektoren nur eine Richtung angeben, verändern sich diese ja
bei einer Translation oder Uniformen Skalierung nicht (bzw. könnte man eine
Translation sowieso nicht beschreiben, da die modelMatrixVector eine 3x3
Matrix ist).
Post by Martin Grödl
2) bei einer nicht uniformen skalierung müssen die normalvektoren mit
der inversen skalierung mulipliziert werden.
Korrekt. Begründung siehe Angabe von Bsp 3.
Post by Martin Grödl
3) bei einer rotation werden die normalvektoren genau wie die vertices
rotiert.
Ja, nur ist die modelMatrixVector eine 3x3 Matrix, daher multiplizierst du
die mit einer 3x3 Rotationsmatrix statt 4x4 wie bei der Point Matrix. Und im
LEFTTRANSLATE Modus brauchst du nicht herum-translaten, es reicht für den
Vector die Rotation die man auch für die Point Matrix angewandt hat.
Post by Martin Grödl
aber bei fall 2) und 3) muss ja auch auf die gewählte
transformationsvariante geachtet werden, oder?
Ja, für Vektoren zumindest zwischen left und right Modus. LEFTTRANSLATE
Modus sollte für Vektoren genauso aussehen wie für den LEFT Modus.
Post by Martin Grödl
kann die Transformation bei TRANSFORMATION_LEFT/RIGHT auch einfach von
links/rechts mit der modelMatrixVector multipliziert werden? (nehme ich an)
und wie siehts bei TRANSFORMATION_LEFTTRANSLATE aus? genügt da eine
linksmultiplikation? eine translation macht ja bei vektoren keinen sinn.
Genau, da reicht eine linksmultiplikation.

Ciao,
Christoph
***@cg.tuwien.ac.at

Loading...