Das hat mir mein Dozent in den Kursen gesagt:
Wir betrachten nur 4 * 4 Matrizen. Diese werden zum Drehen, Skalieren oder Übersetzen von Objekten (oder einer beliebigen Kombination dieser Vorgänge) verwendet. Matrizen werden auch später bei der Implementierung des virtuellen Kameramodells verwendet. Wenn Sie den Unterschied zwischen einer Vektortransformation und einer Punkttransformation nicht kennen, schlagen Sie nach.
Ich kann anscheinend keine Antwort finden und habe nur für diese Frage einen Account für diese Website erstellt.
Antworten:
Hier ist die einfache Antwort.
In 4D werden Vektoren als (x, y, z, 0) und Punkte als (x, y, z, 1) dargestellt, um sie mit einer 4 × 4-Matrix multiplizieren zu können.
Da die 4. Zeile einer 4x4-Matrix die Translation der Matrix darstellt, machen die obigen Darstellungen es so, dass Punkte von der Translation betroffen sind, Vektoren jedoch nicht.
Sowohl Vektoren als auch Punkte werden jedoch von der Drehung, Skalierung usw. beeinflusst.
Vorbehalt:
Es gibt eine tiefere Diskussion, wenn Sie erwarten, dass die Vektoren bestimmte Eigenschaften haben. Wenn Sie beispielsweise die Normalen eines Dreiecks mit derselben Matrix transformieren, mit der Sie die Eckpunkte des Dreiecks transformieren, ist dies wahrscheinlich nicht mehr der Normalenvektor dieses Dreiecks. Dies liegt daran, dass normale Vektoren eine Art umgekehrte Beziehung zu den Eckpunkten haben, aus denen sie berechnet werden.
quelle
Da ich auch Student bin, habe ich gelernt, dass Sie mit Matrizen arbeiten möchten, um Rotationen, Skalierungen und Übersetzungen auf die gleiche Weise zu behandeln, dh mit einer Matrix zu multiplizieren (dh eine 4 × 4- Matrix).4×4 4×4
Denken Sie daran, dass ohne diese Matrizen Übersetzungen durch Summieren mit einem Vektor dargestellt würden, während Rotationen und Skalierung durch Multiplikationen mit einem Vektor bzw. einem Skalarfaktor dargestellt werden.4×4
Die Frage ist nun: Wie gehen wir von einem 3D-Koordinatensystem zu einem 4D-Koordinatensystem über ? Die Antwort lautet " homogene Koordinaten ".
Also, was bedeutet das? Wir konstruieren Matrizen, um Rotationen, Skalierung und Translation darzustellen, so dass wir nur Matrixmultiplikationen verwenden, um Transformationen darzustellen (z. B. Rotationen, Skalierung usw.). Wie wir sie individuell konstruieren, ist spezifischer, aber Sie können es im Web ansehen.4×4
An diesem Punkt haben wir4×4 4×4 3D
Wie machen wir es?
Wir unterscheiden zwischen Richtungs- und Positionsvektoren . Richtungsvektoren haben, wie der Name schon sagt, eine Richtung, in die sie zeigen; Wir kümmern uns auch um ihre Länge, aber sie sind nicht von Übersetzungen betroffen, da wir uns nicht um ihre Position kümmern. Positionsvektoren (oder einfach "Punkte") können verschoben oder verschoben werden. Sie werden normalerweise in Bezug auf den Ursprung dargestellt, dh als Vektor vom Ursprung zum Punkt selbst.
quelle
Wenn Sie die Definition eines Vektors und eines Punkts nachschlagen würden, wäre ein Vektor:
Und ein Punkt ist:
Man könnte also sagen, dass ein Vektor eine Richtung mit Skalierung ist und ein Punkt ein Ort.
Wenn Sie also einen Vektor transformieren, drehen Sie ihn einfach und skalieren ihn. Mit einem Punkt übersetzen Sie ihn auch (die Drehung und Skalierung eines Punktes erfolgt um den Ursprung herum, da es sich nur um eine Stelle handelt, an der der Punkt selbst nicht gedreht werden kann).
Meistens werden ein Vektor und ein Punkt in denselben Container gestellt, einen Vektor mit 4 Komponenten. Der einzige Unterschied ist die w-Komponente. Wenn die w-Komponente 0 ist, ist es eine Richtung. Wenn es 1 ist, ist der Vektor ein Punkt.
Der Grund dafür liegt in der Matrix selbst. Es nutzt die Art und Weise, wie Sie einen Vektor mit 4 Komponenten mit einer 4x4-Matrix multiplizieren. Wenn Sie nicht wissen, wie das funktioniert, würde ich eine schnelle Google empfehlen.
Wie Sie sehen können, haben Sie, wenn die letzte Komponente 0 ist, eine Multiplikation mit 0 und daher ist das Ergebnis 0 und es gibt keine Übersetzung.
Dies erleichtert die Computergrafik mit polygonalen Objekten. Sie haben dieselbe Transformationsmatrix, um die Positionen, aber auch die Normalen zu transformieren. Da die w-Komponente der Normalen auf 0 gesetzt ist und die w-Komponente der Position 1 ist, werden die Normalen nur gedreht (und auch skaliert, was zu seltsamen Dingen führen kann, sodass die Normalität meistens danach normalisiert wird. Es wird nicht empfohlen, dieselbe Matrix für Positionen und Rotationen zu verwenden, da dies seltsam ist. Sehen Sie sich den Kommentar von @JarkkoL an.) Die Positionen werden übersetzt (und um den Ursprung gedreht und skaliert).
Hoffe ich habe keinen Fehler gemacht: P, und das hat dir geholfen!
quelle