ich versuche gerade einen Einstieg in die 3D-Programmierung zu bekommen und bin auf eine eher simple Sache gestoßen. Leider habe ich vergessen wie man folgendes rechnet :
Meiner Meinung nach ist das FALSCH!
Richtig ist allerdings (die Matirix nenne ich M):
[x,y,z,1] * M = [(x+tx),(y+ty),(z+tz),1]
Die Rechenregel für Matrizenmultiplikation lautet „Zeile mal Spalte“ also an einem 2x2 Beispiel:
| A B | * | E F | = | (A*E+B*G) (A*F+B*H)|
| C D | * | G H | | (C*E+D*G) (C*F+D*H)|
Wenn man statt der Matrix einen Vektor hat, fallen die betreffenden Dimensionen einfach weg (im Beispiel könnte man C=0 und D=0 wählen). Wählt man dagegen G=0 und H=0 ist das Ergebnis offensichtlich anders, da die Matrixmultiplikation NICHT kommutativ ist (also M*N N*M).
das zweite sollte jeweils ein Spaltenvektor sein, genauso wie das Ergebnis, dann ergibt sich eine Ergebniskomponente als Produkt der entsprechenden Matrixzeile mit dem Spaltenvektor. Erste Zahl mal erste Zahl plus zweite Zahl mal zweite Zahl, …
Du kannst das ganze aber auch so als Definition auffassen.
das zweite sollte jeweils ein Spaltenvektor sein, genauso wie
das Ergebnis, dann ergibt sich eine Ergebniskomponente als
Produkt der entsprechenden
Matrixzeile mit dem Spaltenvektor.
Zeile!
Du kannst das ganze aber auch so als Definition auffassen.
Sorry, ist wohl schon zu spaet. Ich hab’ schief geguckt.
In der mir gelaeufigen Form kommt der affine Teil (die 1) als erstes in die 0-te Koordinate und demzufolge der Verschiebungsvektor in die erste Spalte.
Andererseits kann das in der Computergraphik eine andere Logik haben, sowas hat mich bei Postscript-Transformationsmatrizen auch schon irritiert.
ich versuche gerade einen Einstieg in die 3D-Programmierung zu
bekommen und bin auf eine eher simple Sache gestoßen. Leider
habe ich vergessen wie man folgendes rechnet :