Frage

Ich möchte eine 2D-Zeichnung machen und somit einige Matrixtransformationen umsetzen. Mit meinem leichten Mathematik-Hintergrund versuche ich zu verstehen, wie es in C # geht (jede andere Oop-Sprache würde es offensichtlich tun).

Alles, was ich gelesen habe, erklärt, dass wir mit 3x3-Matrizen zusammenarbeiten müssen, um mit den Übersetzungen umgehen zu können. Weil Sie nicht mit Multiplikationen übersetzen können. Dies ist jedoch mit Multiplikationen der Matrizen, die wir unsere Transformationen erstellen. Also arbeiten wir mit so etwas:

generasacodicetagpre.

Ich verstehe den Mittelwert der dritten Spalte, aber warum brauchen wir die dritte Reihe? In einer Identitätsmatrix sowie in einer Rotation, Skala oder Rotation ist die letzte Zeile gleich. Gibt es Vorgänge, die ich noch nicht erreicht habe, was es brauchen wird? Ist es, weil einige Sprachen (Java) mit "quadratischen Abmessungen" -Arys besser funktionieren? Wenn ja, kann ich 3 Spalten und 2 Zeilen in C # verwenden (da gezackte Arrays auch oder besser funktioniert).

Zum Beispiel für eine Rotation + Übersetzung habe ich eine Matrix so

generasacodicetagpre.

Keine Notwendigkeit der letzten Zeile.

War es hilfreich?

Lösung

Dies ist mit Multiplikationen der Matrizen, die wir unsere Transformationen erstellen,

Dies ist der Grund, warum wir quadratische Matrizen wollen.

Angenommen, wir haben das getan, was Sie vorschlagen, und benutzte 2x3-Matrizen für unsere Transformationen.

Dann wäre eine Rotation

generasacodicetagpre.

und eine Übersetzung wäre

generasacodicetagpre.

und wir könnten entweder Rotationen oder Übersetzungen durchführen, indem wir unsere Matrix mit einem Spaltenvektor multiplizieren, der den Punkt darstellt:

generasacodicetagpre.

um richtige Antworten zu erhalten.

Jedoch - Wie würden wir Transformationen komponieren? In der Tat, für Ihre "für eine Rotation + Übersetzung Ich habe eine Matrix wie dieses" Beispiel, wie haben Sie auf diese Matrix gelangen? Sicher, in diesem Fall können Sie es einfach schreiben, aber im Allgemeinen? Nun, Sie kennen die Antwort:

Dies ist mit Multiplikationen der Matrizen, die wir unsere Transformationen erstellen,

Es muss also möglich sein, zwei Transformationsmatrizen zu multiplizieren, um eine andere Transformationsmatrix zu ergeben. Und die Regeln der Matrix-Multiplikation zeigen, dass dies:

generasacodicetagpre.

ist keine gültige Matrix-Multiplikation. Wir brauchen Matrizen, die multipliziert werden können, damit unsere Transformationen komponierbar sind. Also haben wir diese zusätzliche Reihe.


Nun, so wie ich es hier drückt, ist in der Tat von der standardmäßigen mathematischen Präsentation ganz nach hinten, in der die bekannten Transformationen von Rotation und Übersetzung nur besondere Fälle von der vollen Kraft der homogenen Koordinatentransformationen auf der Projektivebene sind - Aber ich denke, es wird es tun, um Ihnen zu zeigen, warum wir diese zusätzliche Zeile benötigen, um den Matrix-Platz herzustellen und somit mit ähnlichen Matrizen multipliziert zu werden.

Andere Tipps

Die Antwort ist homogene Koordinaten.Um Rotation und Übersetzung in einem Betrieb zu kombinieren, ist eine zusätzliche Dimension erforderlich, als das Modell erfordert.Für planare Dinge handelt es sich um 3 Komponenten und für räumliche Dinge handelt es sich um 4 Komponenten.Die Bediener nehmen 3 Komponenten und geben 3 Komponenten zurück, die 3x3-Matrizen erfordern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top