View Full Version : [FRAGE] - CG1Camera: egal ob multLeft/Right ?
- TeMET_noSCE -
28-10-2004, 17:11
ist es bei den methoden setDistance, RotateXY egal welche multiplikation ich anwende? (viewMatrixPoint.mult???(new CG1Matrix4x4().setTranslate...)
Matthias
28-10-2004, 18:13
ja, da du bei RotateX/Y ja zuerst auf den Ursprung verschiebst und dann rotierst, ist es egal ob left oder right. left ist halt "Standard", ich würde es einfach damit machen.
- TeMET_noSCE -
28-10-2004, 18:38
ok, vielen dank!
ChrisChiu
28-10-2004, 18:57
Also, Linksmultiplikation und Rechtsmultiplikation sind nicht äquivalent.
D.h. wenn du eine Verknüpfung hast:
matrix.multLeft(m1);
matrix.multLeft(m2);
matrix.multLeft(m3);
hast, d.h. m3 * m2 * m1 * matrix, dann ist das nicht dasselbe wie
matrix.multRight(m1);
matrix.multRight(m2);
matrix.multRight(m3);
das wär nämlich matrix * m1 * m2 * m3
Du kannst multRight schon verwenden, aber dann mußt du es anders angehen, z.b.:
m3.multRight(m2);
m3.multRight(m1);
m3.multRight(matrix);
denn das wär dann wieder m3 * m2 * m1 * matrix, was wieder dem Ursprünglichen entspricht.
Anstatt sich in multLeft() oder multRight() festzuboren, sollte man am besten gleich in Matrizen-Reihenfolge denken.
Am besten liest du dir die erwähnten Bemerkungen beim Beispiel 3 durch, speziell die wo es um die Transformationen geht.
Bemerkung: Als Ergänzung zum entsprechenden Kapitel in Hearn&Baker empfehlen wir den ausgezeicheten Teil "Thinking about Transformations" im Kapitel "Viewing" des "OpenGL Programming Guide" (das sogenannte Red Book). Dort werden vor allem die Unterschiede zwischen Links- und Rechtsmultiplikationen von Matrizen sehr gut erklärt. Das Red Book (2nd edition) gibt es an mehreren Stellen online, z.B. hier: http://fly.cc.fer.hr/~unreal/theredbook/chapter03.html
Bemerkung 2: Lesen Sie bitte auch die Tipps, die bei der Lösung des 3. Beispiels helfen können (http://www.cg.tuwien.ac.at/courses/CG/LU/Beispiel3_tipps.html)
- TeMET_noSCE -
28-10-2004, 19:46
danke für die ausführliche antwort! aber dass das distributivgesetz nicht gilt war mir eh klar, ich wollt nur wissen ob ich die methode auch wieder für jede multiplikationsart extra machen muss (was aber eigentlich ziemlich unnötig wäre...)
Tiniiiii
28-10-2004, 19:47
schon klar dass multLeft und multRight andere Ergebnisse bringen.
Im diesem Fall (also bei der Camera) ist's aber wurscht, weil Du nur nach X und Y rotierst und nach Z verschiebst. Da beiinflussen sich die relevanten Faktoren nicht, d.h. es kommt das selbe raus.
lg :ausheck:
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.