Discussion:
LEFTTRANSLATE
(zu alt für eine Antwort)
robert
2003-11-13 17:16:19 UTC
Permalink
macht das überhaupt sinn, dass wir diesen TransformationsModus
implementieren so wie man ihn implementieren sollte:

das T^-1 kann ich mir doch sparen, weil ja die Objekte zu beginn sowieso im
Ursprung liegen..

also reicht es ja eigentlich aus, die RotationsMatritzen von Rechts und die
TranslationsMatrix von links zu multiplizieren

lg, Robert
Michael Wimmer
2003-11-13 20:05:27 UTC
Permalink
Die Matrizenmultiplikation ist aber nicht kommutativ, und es macht sehr wohl
einen Unterschied, ob man R1 * R2 oder R2 * R1 bei den Rotationen hat.

Michael Wimmer

-- Dr. Michael Wimmer--------------------------------------------------------
Institut fuer Computergraphik und Algorithmen tel: +43 (1) 58801 18687
Technische Universitaet Wien fax: +43 (1) 58801 18698
Favoritenstr. 9-11/5/E186 http://www.cg.tuwien.ac.at
A-1040 Wien, Oesterreich mailto:***@cg.tuwien.ac.at
-----------------------------------------------------------------------------
Post by robert
macht das überhaupt sinn, dass wir diesen TransformationsModus
das T^-1 kann ich mir doch sparen, weil ja die Objekte zu beginn sowieso im
Ursprung liegen..
also reicht es ja eigentlich aus, die RotationsMatritzen von Rechts und die
TranslationsMatrix von links zu multiplizieren
lg, Robert
robert
2003-11-13 21:24:49 UTC
Permalink
im Buch steht doch:

translationen unter sich sind kommutativ
rotation -"-
scalierungen -"-
uniform scaling und rotation sind kommutativ

translation und rotation nicht, das ist klar... was stimmt also jetzt?

wenn ich also zb eine transformationsSequenz habe wie t1 , r2 , t3 , t4 , r5
, r6 , r7 , r8 , t9 , t9.....
und ich multipliziere die rotationen immer rechts und die translationen
immer links..

M * v
t1* M * v
(t1* M )* r1 * v
t3 * (t1* M * r1) * v
t4 * (t3 * t1 * M * r1) * v
(t4 * t3 * t1 * M * r1) * r5 * v
(t4 * t3 * t1 * M * r1 * r5) * r6 * v
(t4 * t3 * t1 * M * r1 * r5) * r6) * r7 * v

T T T M R R R R * v

wenn ich jetzt von rechts nach links lese, rotiere ich also im ursprung und
transliere anschliessend
wenn ich das ganze von links nach rechts lese, und es so interpretiere wie
im red book.. dann verschiebe ich, und rotiere das objekt lokal.

lg, robert
Post by Michael Wimmer
Die Matrizenmultiplikation ist aber nicht kommutativ, und es macht sehr wohl
einen Unterschied, ob man R1 * R2 oder R2 * R1 bei den Rotationen hat.
Michael Wimmer
-- Dr. Michael
Wimmer--------------------------------------------------------
Post by Michael Wimmer
Institut fuer Computergraphik und Algorithmen tel: +43 (1) 58801 18687
Technische Universitaet Wien fax: +43 (1) 58801 18698
Favoritenstr. 9-11/5/E186
http://www.cg.tuwien.ac.at
Post by Michael Wimmer
A-1040 Wien, Oesterreich
--------------------------------------------------------------------------
---
Post by Michael Wimmer
Post by robert
macht das überhaupt sinn, dass wir diesen TransformationsModus
das T^-1 kann ich mir doch sparen, weil ja die Objekte zu beginn sowieso im
Ursprung liegen..
also reicht es ja eigentlich aus, die RotationsMatritzen von Rechts und die
TranslationsMatrix von links zu multiplizieren
lg, Robert
Michael Wimmer
2003-11-14 16:41:39 UTC
Permalink
Also das ganze ist keine Interpretationssache, sondern links- und
Rechtsmultiplikation macht tatsaechlich einen Unterschied. Man kann also nicht
lefttranslate mit rechtsmultiplikationen implementieren.

Der Unterschied tritt ja schon unabhaengig von Translationen auf:

Beispiel: Mit dem UI werden zuerst R1 und dann R2 ausgefuehrt, und das Objekt
ist noch im Ursprung.

Effekt bei left und lefttranslate:

v_neu = R2 * R1 * v

Effekt bei right:

v_neu = R1 * R2 * v

Das ist aber was anderes. Wo steht das mit der Kommutativitaet im Buch? Das
muss sich wohl auf 2D beziehen. In 3D sind Rotationen untereinander nicht
kommutativ, wie man sich ja leicht selbst mit einem Wuerfel ueberzeugen kann
(nur Rotationen um dieselbe Achse natuerlich).

Es geht hier also nicht um eine Interpretationssache, sondern es soll
tatsaechlich was anderes rauskommen. Bei right sind es immer Rotationen im
lokalen Koordinatensystem des Objekts, bei left und lefttranslate sind es
Rotationen des Weltkoordinatensystem, nur mit Unterschiedlichen Pivot-Punkten.

Michael Wimmer

-- Dr. Michael Wimmer--------------------------------------------------------
Institut fuer Computergraphik und Algorithmen tel: +43 (1) 58801 18687
Technische Universitaet Wien fax: +43 (1) 58801 18698
Favoritenstr. 9-11/5/E186 http://www.cg.tuwien.ac.at
A-1040 Wien, Oesterreich mailto:***@cg.tuwien.ac.at
-----------------------------------------------------------------------------
Chris Chiu
2003-11-13 20:53:36 UTC
Permalink
Post by robert
macht das überhaupt sinn, dass wir diesen TransformationsModus
das T^-1 kann ich mir doch sparen, weil ja die Objekte zu beginn sowieso im
Ursprung liegen..
DIe Modelling Matrix akkumuliert ja auch die Transformationen.

Sagen wir, du hast eine Modelling Matrix M, die aus verschiedenen
Transformationen (inklusive Translation) zusammengekommen ist.

Nun tust du mit HIlfe der Rotationsmatrix R1 rotieren.

Im "left" Modus wär das:

R1 * M * v

Im "left translate" Modus wär das:

T * R1 * T^-1 * M * v

Da ist schon ein Unterschied. Selbst wenn du sagst, dass die Objekte (v) am
Anfang im Ursprung liegen... für Einzeltransformationen wie R1 muß man doch
die Translationskomponente von M rückgängig machen, denn mit M liegt das
Objekt dann nicht mehr unbedingt im Ursprung (M * v).

Ich finde hier immer hilfreich, die Einzeltransformationen als von rechts
nach links zu denken, und vom Objekt ausgehend (das ist glaub ich die erste
im Red Book beschriebene, ich persönlich finde die zweite beschriebene, mit
dem Koordinatensystem-verschieben, weniger "intuitiv"). Also, v wird zuerst
durch M, dann T^-1, dann R1, dann T, transformiert.

Du hast vermutlich so gedacht, dass das T^-1 direkt bei v steht (also T^-1 *
v). Das muß allerdings nicht sein, T^-1 und T umschließen einfach eine
Einzeltransformation, nicht die gesamte bisher akkumulierte.

Ich hoffe das war jetzt nicht zu verwirrend.

Ciao,
Christoph
Post by robert
also reicht es ja eigentlich aus, die RotationsMatritzen von Rechts und die
TranslationsMatrix von links zu multiplizieren
lg, Robert
Loading...