+2 Daumen
1,7k Aufrufe

Aufgabe

Geben Sie eine Translationsmatrix an, die einen Punkt (4,5) in den Punkt (-2,5) verschiebt

Geben Sie eine Skalierungsmatrix an, die alle Punkte um den Ursprung des Koordinatensystems um den Faktor 2 „zoomt“, d.h. in x und y um den Faktor 2 vergrößert.

Beweisen oder widerlegen Sie die Aussage: Die Anwendung von Translation und Skalierung ist kommutativ, d.h. Translation und Skalierung dürfen bzgl. der Reihenfolge der Anwendung vertauscht werden

Ich brauche die Lösungen für die drei Fragen, bitte mit Erklärung

Danke im Vorauß

Avatar von

3 Antworten

0 Daumen
 
Beste Antwort

Aloha :)

Möchte man Translation, Skalierung, Spiegelung und Rotation in einer Transformationsmatrix zusammenfassen, kann man eine Dimension mehr spendieren, die man im Ergebnis einfach igonriert. In deinem ersten Fall soll ein Vektor \(x,y\) um \(v_x,v_y\) verschoben werden. Dazu betrachte:

$$\left(\begin{array}{c}1 & 0 & v_x\\0 & 1 & v_y \\ 0 & 0 & 1\end{array}\right)\cdot\left(\begin{array}{c}x\\y\\1\end{array}\right)=\left(\begin{array}{c}1\\0\\0\end{array}\right)\cdot x+\left(\begin{array}{c}0\\1\\0\end{array}\right)\cdot y+\left(\begin{array}{c}v_x\\v_y\\1\end{array}\right)\cdot 1=\left(\begin{array}{c}x+v_x\\y+v_y\\1\end{array}\right)$$Konkret ist bei dir \(v_x=-6\) und \(v_y=0\) anzusetzen.

Eine Skalierung um den Faktor \(\lambda\) sieht in dieser Darstellung allgemein so aus:

$$\left(\begin{array}{c}\lambda & 0 & 0\\0 & \lambda & 0\\ 0 & 0 & \lambda\end{array}\right)\cdot\left(\begin{array}{c}x\\y\\1\end{array}\right)=\left(\begin{array}{c}\lambda\\0\\0\end{array}\right)\cdot x+\left(\begin{array}{c}0\\\lambda\\0\end{array}\right)\cdot y+\left(\begin{array}{c}0\\0\\\lambda\end{array}\right)\cdot 1=\left(\begin{array}{c}\lambda x\\\lambda y\\\lambda\end{array}\right)$$Konkret ist bei dir \(\lambda=2\) anzusetzen.

Im letzen Teil sollst du schauen, ob man die Matrizen bei der Multiplikation (=Hinternanderausführung) vertauschen darf:

$$\left(\begin{array}{c}1 & 0 & v_x\\0 & 1 & v_y \\ 0 & 0 & 1\end{array}\right)\cdot\left(\begin{array}{c}\lambda & 0 & 0\\0 & \lambda & 0\\ 0 & 0 & \lambda\end{array}\right)=\lambda\left(\begin{array}{c}1 & 0 & v_x\\0 & 1 & v_y \\ 0 & 0 & 1\end{array}\right)\cdot\left(\begin{array}{c}1 & 0 & 0\\0 & 1 & 0\\ 0 & 0 & 1\end{array}\right)$$Da die Einheitsmatrix mit jeder Matrix vertauscht, gilt weiter:

$$=\lambda\left(\begin{array}{c}1 & 0 & 0\\0 & 1 & 0\\ 0 & 0 & 1\end{array}\right)\cdot\left(\begin{array}{c}1 & 0 & v_x\\0 & 1 & v_y \\ 0 & 0 & 1\end{array}\right)=\left(\begin{array}{c}\lambda & 0 & 0\\0 & \lambda & 0\\ 0 & 0 & \lambda\end{array}\right)\cdot\left(\begin{array}{c}1 & 0 & v_x\\0 & 1 & v_y \\ 0 & 0 & 1\end{array}\right)$$

Translation und Skalierung sind also vertauschbar.

Avatar von 152 k 🚀

Hallo Tschaka,

IMHO ist die Matrix, die Du für die Skalierung vorgesehen hast, falsch. Siehe meine Antwort.

Das kann man denke ich durchaus differenziert sehen.

Wenn man diese Zoom-Matrix z.B. als Einheitenwechsel von m zu cm versteht, dann macht es doch eigentlich auch Sinn die Verschiebung mit umzuwandeln.

Hier wird explizit davon gesprochen, dass es eine Skalierung und keine Vergrößerung oder Verkleinerung ist.

Wenn man diese Zoom-Matrix z.B. als Einheitenwechsel von m zu cm versteht, dann macht es doch eigentlich auch Sinn die Verschiebung mit umzuwandeln.

Ja absolut. Den Gedanken hatte ich auch. Nur macht das nach meinen Erfahrungen in der Praxis keinen Sinn. Die Überschrift ist 'Computergrafik und Visualisierung'.  Wenn vorher eine Translation um \(-6\text{cm}\) geschehen war, soll jetzt die gleiche(!) Translation um \(-6\text{m}\) durchgeführt werden?

Die Frage ist letztlich, wie die Translation definiert ist - respektive welche Bedeutung die 3.Koordinate in dem ganzen System hat.

Ich habe dazu in meiner Antwort das Beispiel mit dem zweiten Punkt \(B\) bebracht (s. dort).
Wie muss ich einen neuen Punkt \(B\) betrachten, nachdem ich \(A\) (oder mein Gesamtsystem!) mit dem Faktor 2 skaliert habe? Welchen Wert hat dann die 3. (homogene) Koordinate von \(B\)?

Ein Fußball liegt bei [0, 1] und wird in einer Zeiteinheit nach [0, 0] verschoben. Dazu ist der Verschiebungsvektor [0, -1] verantwortlich.

1 LE entspricht 11 m in der Wiklichkeit und die Verschiebung ist eigentlich ein Schuss vom 11 m-Punkt auf das Tor.

Soweit so gut.

Die Translation schreibt man also als

[1, 0, 0; 0, 1, -1; 0, 0, 1] * [0, 1, 1] = [0, 0, 1]

Soweit nichts neues. Jetzt schauen wir uns das ganze etwas detaillierter an und zoome vor der Verschiebung in das System herein, sodass 1 LE genau 1 m entspricht und nachher direkt wieder heraus.

[1/11, 0, 0; 0, 1/11, 0; 0, 0, 1/11] * [1, 0, 0; 0, 1, -1; 0, 0, 1] * [11, 0, 0; 0, 11, 0; 0, 0, 11] * [0, 1, 1] = ...

Wir erwarten natürlich das gleiche Ergebnis oder? Das der Fußball nach einer Zeiteinheit wieder auf der Torlinie liegt.

Und tatsächlich kommt oben auch [0, 0, 1] heraus.

Du musst mir nicht zeigen, dass \(\frac 1{11} \cdot 11=1\) ist. Das glaube ich auch so ;-)

Die Frage, die ich stellte war: welchen Wert hat die dritte (homogen) Koordinate eines neu hinzugefügten Punktes \(B\) nach der Skalierung von \(A\) um den Faktor 2? Hat sie den Wert 1, dann unterscheidet sie sich vom Wert der homogen Koordinate von \(A\) und beide Punkte werden unterschiedlich auf eine Multiplikation der Translationsmatrix regieren.

Oder hat sie den Wert 2, der dann für das 'Gesamtsystem' gilt. Weil nicht der Punkt, sondern das Gesamtsystem skaliert wurde?

Aloha :)

Ich bin gerade auf dem Weg in den Urlaub, daher nur ganz kurz.

Ich habe die Skalierung reflexartig so gewählt, weil ich das damals im Studium so gelernt hatte. Ich meine mich zu erinnern, dass man das gerade so macht, damit Translation und Skalierung vertauschbar sind. Es sollte ja egal sein, ob ich etwas zuerst aufpuste und dann verschiebe oder es zuerst verschiebe und dann aufpuste.

Ich schaue mir das nochmal in Ruhe an.

Du musst mir nicht zeigen, dass 1/11⋅11 = 1 ist. Das glaube ich auch so ;-)

Darum ging es überhaupt nicht.

Rechne

[1/11, 0, 0; 0, 1/11, 0; 0, 0, 1/11]·[1, 0, 0; 0, 1, -1; 0, 0, 1]·[11, 0, 0; 0, 11, 0; 0, 0, 11]·[0, 1, 1] = ...

sowie

[1/11, 0, 0; 0, 1/11, 0; 0, 0, 1]·[1, 0, 0; 0, 1, -1; 0, 0, 1]·[11, 0, 0; 0, 11, 0; 0, 0, 1]·[0, 1, 1] = ...

Kommt bei beiden Rechnungen das gleiche heraus und wenn nicht was ist die Rechnung die wir erwarten?

Die Frage, die ich stellte war: welchen Wert hat die dritte (homogen) Koordinate eines neu hinzugefügten Punktes B nach der Skalierung von A um den Faktor 2?

Damit es einheitlich ist würde man die 3. Koordinate von B gleich der dritten Koordinate von A setzen.

Es sollte ja egal sein, ob ich etwas zuerst aufpuste und dann verschiebe oder es zuerst verschiebe und dann aufpuste.

das ist eben die Frage WAS Du aufpustet. Das Gesamtsystem inklusive der Einheiten im System oder 'nur' die Menge aller Punkte im System. Im zweiten Fall sähe es doch so aus:

Untitled2.png

@Werner-Salomon

Es ist schon klar was du sagen willst. Das ist doch rein nachher dem Programmierer überlassen.

Für mich macht es Sinn das gesamte System inklusive aller Verschiebungsvektoren zu skalieren.

Wenn du es aus irgendeinem Grund anders handhaben willst, kannst du das gerne tun.

Mir ist zwar nicht klar warum man es anders vorziehen sollte aber vielleicht gibt es dafür auch eine gute Begründung.

Wie gesagt hatte ich die Verschiebung nur über die Addition eines Vektors und nicht über eine Matrix. Daher kann ich nichts dazu sagen wie es gelehrt wird. Ich kann nur sagen, was für mich Sinn macht und was nicht.

Wie gesagt hatte ich die Verschiebung nur über die Addition eines Vektors und nicht über eine Matrix. 

Dann wirst du dich wahrscheinlich (genau wie ich) darüber gewundert haben, dass eine Verschiebung überhaupt durch eine Matrix dargestellt werden soll, denn durch Matrizen werden ja im Allgemeinen lineare Abbildungen dargestellt, was die Addition eines Vektors nicht ist.

... denn durch Matrizen werden ja im Allgemeinen lineare Abbildungen dargestellt, was die Addition eines Vektors nicht ist.

genau! und deshalb habe sich schlaue Leute auch die sogenannten homogenen Koordinaten ausgedacht, damit daraus wieder eine lineare Abbildung wird. Der Link von Kai (s.o.) hilft beim Verständnis.

siehe homogene Koordinaten, scrolle bis 'Skalierung'.

Das ist doch rein nachher dem Programmierer überlassen.

Natürlich. Aber welchen Zweck verfolgt der Programmier? Ich habe mich seit den 80'er Jahren in Studium und Beruf immer wieder programmtechnisch mit Transformationen dieser Art beschäftigt. Und in dieser Zeit ist mir nie eine Transformation untergekommen, bei der die homogene Koordinate am Ende nicht wieder \(=1\) war.

Eine Skalierung wie \(S = \begin{pmatrix} \lambda & 0 & 0 \\ 0 & \lambda & 0 \\ 0& 0& \colorbox{#ffff00}{1} \end{pmatrix}\) ist dagegen gang und gäbe.

Wenn es heißt 'Geben Sie eine Skalierungsmatrix an, die alle Punkte um den Ursprung des Koordinatensystems um den Faktor 2 „zoomt“, d.h. in x und y um den Faktor 2 vergrößert.' dann impliziert das doch, dass die Punkte nach dem Zoomen das Koordiantensystem nicht verlassen haben. Und wir befinden uns in der Ebene, im 2-dimensionalen. Genau das tun diese Punkte aber, wenn unten rechts in \(S\) keine \(1\) steht. (siehe die Skizze in meiner Antwort)

+3 Daumen

Hallo Ben,

als ich die Frage gelesen hatte, hätte ich intuitiv geantwortet, dass Translation und Skalierung natürlich nicht kommutativ sind. Nun hat aber Tschakabumba 'bewiesen', dass das doch kommunativ ist. Allerdings enthält dieser Beweis IMHO einen Fehler. Die Skalierungsmatrix \(S\) ist meiner Meinung nach

$$S = \begin{pmatrix} \lambda & 0 & 0 \\ 0 & \lambda & 0 \\ 0& 0& \colorbox{#ffff00}{1} \end{pmatrix}$$

D.h. rechts unten steht eine \(1\) und nicht der Faktor \(\lambda\) der Skalierung. Eine einfache Matrizenmultiplikation zeigt dann sofort, dass man zwei verschiedene Ergebnisse erhält, wenn man Translation und Skalierung vertauscht. Also nicht kommutativ.

Zur Anschauung habe ich das mal als 3D-Szene dargestellt.

Skizze5.png

(klick bitte auf das Bild, dann öffnet sich eine 3D-Ansicht)

Dort siehst Du den Punkt \(A=(4|\,5|\,1)\), der in der grünen Ebene liegt. Diese Ebene liegt bei \(z=1\) und wenn das Thema Computergraphik ist, dann kann das die Ebene sein, die der Bildschirm der Computers anzeigt - der ist ja nur 2-dimensional. Nach einer Translation um \(-6\) in \(X\)-Richtung befindet sich das Bild des Punktes bei \(A_t = (-2|\,5|\,1)\). Nach einer Skalierung von \(A\) würde er sich bei \(A_s=(8|\,10|\,\colorbox{#ff8888}{2})\) befinden, wenn man die die Matrix von Tschakabumba anwendet

WIe bekommst Du \(A_s\) aber wieder in die grüne Ebene - d.h. auf den Bildschirm? Das (mir bekannte) klassische Vorgehen besteht darin, alle Koordinaten des Vektors durch die z-Koordinate zu dividieren, so dass die z-Koordinate wieder zu 1 wird. Das bringt uns aber nur wieder zurück zu \(A\) und \(A_s\) würde sich von von seinem skalierten Bild nicht unterscheiden - das kann es als nicht sein. Ok - vergessen wir einfach mal die z-Koordinate und zeichnen \(A_s\) bei \((8|\,10)\). Scheinbar alles gut, aber was passiert bei einer anschließenden Translation, die doch die gleiche sein soll wie die von \(A=(4|\, 5)\) nach \((-2|\, 5)\)?

Es soll doch nur um \(-6\) in X-Richtung verschoben werden, aber Du landest um ganze 12 Einheiten von ursprünglichen Punkt entfernt .. wolltest Du das?

Noch ein Anwendungsfall: Skaliere den Punkt \(A\) um den Faktor 2. Füge dann einen weiteren Punkt \(B=(8|6)\) hinzu (welchen Wert hat die z-Kooridnate von \(B\)?) und führe anschließend für beide Punkte die gleiche Translation durch, die Punkt \(A\) nach \(A_t=(-2|\,5)\) gebracht hätte. Zeichne dir das ganze einfach mal auf und rechne es nach.


Nachtrag:

man könnte das aber auch anders sehen. Gefragt ist doch 'Geben Sie eine Translationsmatrix an, die einen Punkt (4,5) in den Punkt (-2,5) verschiebt' ohne genau zu definieren was mit 'Translation' gemeint ist. Also könnte man doch eine Scherung annehmen mit $$T = \begin{pmatrix} 1& -\frac 65 \\ 0& 1 \end{pmatrix}$$ Und es gilt wie gefordert:$$\begin{pmatrix} -2 \\ 5 \end{pmatrix} = T \cdot \begin{pmatrix} 4 \\ 5 \end{pmatrix}$$ ganz ohne homogene Koordinaten und demnach ist \(S\) einfach$$S = \begin{pmatrix} \lambda& 0\\  0& \lambda \end{pmatrix} $$ Und es gilt allgemein $$T \cdot S = S \cdot T$$genau aus den Gründen, die Tschakabumba bereits dargelegt hat.

Gruß Werner

Avatar von 48 k
0 Daumen

Ich hatte bisher nie Translationsmatrizen. Die sind auch etwas komisch, denn sie fordern bei 2-dimensionalen Punkten einen 3-dimensionalen Vektor.

A * x = [1, 0, -6; 0, 1, 0; 0, 0, 1] * [4; 5; 1] = [-2; 5; 1]

Wenn ich jetzt Skalierungsmatrix

B = [2, 0, 0; 0, 2, 0; 0, 0, 2]

definiere, dann würde das Kommutativgesetz gelten, weil

A * B = B * A

Avatar von 489 k 🚀

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community