![]() |
|
| |
|||
| Die Skalierung etwas konkreter | Im letzten Abschnitt hast Du gesehen, wie einfach die Skalierung auf einen oder mehrere, durch eine Linie verbundene, Punkte angewendet werden kann. Dein Wissen darüber soll jetzt noch durch die zugehörige Formelschreibweise vertieft werden. Dadurch bekommst Du die Möglichkeit, die Skalierung auch mathematisch anzuwenden. Du hast gesehen, daß Du die Dehnung oder Stauchung einer Linie einfach erreichst, in dem Du zu den x- und y-Werten der beiden zugehörigen Punkte einfach einen Faktor hinzumultiplizierst. In einfacher Formelschreibweise sieht das so aus:
Du betrachtest dabei die x- und y-Werte des Punktes separat und multiplizierst zu jedem den entsprechenden Faktor der Dehnung oder Stauchung (je nachdem welches Vorzeichen Du wählst). Zur Vereinfachung (und nicht nur in der Schreibweise) kannst Du den Punkt auch als Vektor ausdrücken, so wie daß schon bei der Translation eingeführt wurde.
![]() Die Punkte P und Pī sollten Dir in dieser Darstellung eigentlich klar sein. Neu ist die Darstellung der Skalierungsfaktoren in einer Matrix. Ein Spaltenvektor reicht hier nicht mehr aus, da wir eine Multiplikation auf die Punkte ausführen. Diese Matrix wird auch Skalierungsfunktion genannt. Die Parameter sind die beiden Skalierungsfaktoren und der Punktvektor. Wenn Du die einzelnen Vektoren jetzt nach folgender Formel zusammenstellst,
bekommst Du praktisch die gleiche Darstellung wie in den beiden Gleichungen weiter oben. Zur Verdeutlichung solltest Du den neuen Punkt einfach mal ausrechnen. Da Du die Matrix mit einem Spaltenvektor multiplizierst, muß auch wieder ein Spaltenvektor herauskommen. |
| |
|||
| Wie gehts jetzt weiter? | Wie Du im Abschnitt über die Komposition von Transformationen noch nachlesen kannst, wird es bei der jetzigen Darstellung der Skalierung zu Problemen kommen. Die Translation und Rotation führen in der Darstellung mit homogenen Koordinaten eine Multiplikation auf einer 3×3-Matrix aus, während die Skalierung mit einer 2×2-Matrix auskommt. Wenn wir die drei Transformationen miteinander kombinieren wollen, ist eine einheitliche Darstellung hilfreich und später auch einfacher auszuführen. |
| |
|||
| Benutzung von homogenen Koordinaten bei der Skalierung | Du solltest Dich vor dem Weiterlesen kurz mit homogenen Koordinaten beschäftigen. Es ist für das erste Anwenden nicht unbedingt erforderlich, aber sehr wichtig, daß Du dieses Prinzip verstanden hast. Das Ziel dieses Abschnittes ist die Skalierung auf eine Matrizenmultiplikation mit einer 3×3-Matrix zurückzuführen. Bisher haben wir immer nur zweielementige Spaltenvektoren und die 2×2-Skalierungsmatrix betrachtet. Um die Skalierung als Multiplikation mit einer 3×3-Matrix auszudrücken geht man wie folgt vor: Der Originalpunkt als Spaltenvektor wird nach den Regeln der homogenen Koordinaten um einen Parameter erweitert. Dieser Parameter behält stets den Wert eins. Du kannst den neuen Vektor jetzt mit der Matrix multiplizieren und wirst feststellen, daß der neue Punkt nicht mehr den dritten Parameter gleich eins hat. Der Vorgang muß noch fortgesetzt werden und die Skalierungsmatrix geschickt zu einer 3×3-Matrix erweitert werden, die weiterhin noch die Skalierungsfaktoren sx und sy enthält, aber zusätzlich noch redundante Informationen. Wenn Du Dir die Regeln der Matrizenmultiplikation ansiehst stellst Du leicht fest, an welcher Stelle noch eine zusätzliche eins eingesetzt werden muß. An die restlichen Stellen kann eine null gesetzt werden, ohne das Ergebnis zu beeinflussen. Das Resultat sollte dann folgende Funktion sein:
![]() Diese Matrix bezeichnet man als Skalierungssfunktion. Zum Verständnis kannst Du ja mal versuchen, ob es noch andere Möglichkeiten gibt aus einem dreielementigen Spaltenvektor multipliziert mit einer beliebigen Matrix wieder einen Spaltenvektor zu bekommen, der den Regeln der homogenen Koordinaten entspricht. Mit Hilfe der Skalierungssfunktion können wir jetzt die Skalierung durch eine Multiplikation mit einer 3×3-Matrix ausdrücken.
![]() Damit haben wir unser Ziel schon erreicht. Wenn Du das Ergebnis mit den Matrizen der Translation und Rotation vergleichst und Dir noch den Abschnitt über die Komposition von Transformationen ansieht, stellst Du fest welche Vorteile diese Darstellungsart hat. Der Aufwand zur Berechnung eines einzelnen Punktes macht so natürlich wenig Sinn und man würde die einfache Multiplikation vorziehen, aber im Gesamtkonzept bei Anwendung von mehreren Transformationen bringt sie Geschwindigkeitsvorteile in der Berechnung. |
| |
|||
| Ausblick | Auf der nächsten Seite kannst Du die Skalierung an einem Applet ausprobieren. Wenn Du Dir die Translation und Rotation schon angeschaut hast, wird Dir der Aufbau bekannt sein. Die wichtigsten Formeln und die Skalierungsfunktion werden jeweils ausgegeben, so daß Du Dir die Mathematik jetzt nicht sofort merken und nicht immer auf diese Seite zurückspringen mußt. |
![]() |