_______________________________________________________________________________
Inhalt....: Abbildungen der Ebene
Kategorie.: Unterrichtsmaterial
Mathematik: Geometrie R^2, Lineare Algebra
MuPAD.....: 4.0.2
Datum.....: 2007-12-11
Autoren...: Holger Böttcher <hboettcherebw@aol.com>
Funktionen: PACKAGEPATH, package
_______________________________________________________________________________
Hinweis: Dieses Arbeitsblatt verwendet das Package agla (Analytische Geometrie und Lineare Algebra) von Holger Böttcher (hboettcherebw@aol.com). agla ist ein interaktives Hilfsmittel für MuPAD Pro 4, um Aufgaben der Analytischen Geometrie im R^3 mit Abiturniveau zu lösen. Das package steht inklusive Installationsanleitung und Dokumentation auf dem SciFace Software WebServer unter www.sciface.com/download/packages.php kostenfrei zur Verfügung.
Demonstration der Anwendung von agla
Version 2
demo5
Abbildungen der Ebene
Vorbereitung
Um die Berechnungen auf dem Anwendungscomputer nachzuvollziehen, ist PACKAGEPATH auf den Ordner mit dem package agla einzustellen
PACKAGEPATH := PACKAGEPATH, "D:\\mupad4\\packages\\":
package("agla"): export(agla): prolog():
Verwenden von O als Bezeichner für den Nullvektor/Koordinatenursprung, Verfügbarmachen von D und E als Bezeichner
bezDEO():
MuPAD-Bezeichner O wurde umdefiniert, D und E sind frei benutzbar
Abbildungen der Ebene
Die in agla vorgenommene Erweiterung auf die Ebene und die neu verfügbaren Objekte Matrix, Abbildung und Figur bzw. Koerper erlauben es, Abbildungen des Raumes und der Ebene auf einfache Art zu erzeugen und zu visualisieren
Hier sollen einige Möglichkeiten für Abbildungen der Ebene anhand der Manipulation von Texten demonstriert werden
Weitere Einzelheiten können der Dokumentation zum Paket entnommen werden
Ein Vektor in der Ebene wird in der Form v(1,2) erzeugt, Punkte werden mit ihren Ortsvektoren identifiziert
Eine Matrix setzt sich aus solchen (Spalten-)Vektoren zusammen, sie kann entweder mittels der Erzeugerfunktion Matrix oder durch Verkettung mit dem " . "-Operator gebildet werden
Matrix( v(1,2), v(3,4), v(5,6) )
![]()
v(1,2) . v(3,4) . v(5,6)
![]()
Eine Figur besteht aus einer Menge von Punkten, die durch gerade Linien verbunden sind. Zu ihrer Erzeugung ist eine Matrix anzugeben, die so erhalten wird: Bei einem Punkt beginnend wird die gesamte Linienmenge der Figur in einem Zug durchlaufen, wobei jeder angetroffene Punkt eingetragen wird, eventuell mehrfach. Besteht die Figur aus separaten Teilmengen, so ist vor der Fortsetzung der Kodierung mit dem nächsten Teil ein Trennpunkt der Form v(x,x) einzutragen
Auf diese Art werden zunächst die Originale einiger Buchstaben erzeugt, wobei ein einheitliches Punkteraster verwendet wird
T_or := Figur( v(1.5,0) . v(1.5,5) . v(-0.25,5) . v(3.25,5) ):
e_or := Figur( v(0,1.5) . v(2.5,1.5) . v(2.5,2.5 ). v(2,3) . v(0.5,3) . v(0,2.5) . v(0,0.5) .
v(0.5,0) . v(2,0) . v(2.5,0.5) ):
x_or := Figur( v(0,0) . v(2.5,3) . v(x,x) . v(0,3) . v(2.5,0) ):
t_or := Figur( v(0.5,4.5) . v(0.5,0.5) . v(1,0) . v(1.5,0) . v(2,0.5) . v(x,x) . v(-0.25,3) .
v(1.25,3) ):
Der vorletzte Buchstabe kann auch ohne Trennpunkt über den Schnittpunkt der beiden Strecken erzeugt werden (der letzte ebenfalls)
x_or := Figur( v(0,0) . v(2.5,3) . v(1.25,1.5) . v(0,3) . v(2.5,0) ):
sichtBox(-8..8):
Grafik( T_or, [e_or, gruen], [x_or, blau], [t_or, rot] )

Aus den Buchstaben soll jetzt das Wort "Text" gebildet werden. Dazu werden sie mittels einer Verschiebung parallel zur x-Achse bewegt, wozu die entsprechende Funktion unter Angabe eines Verschiebungsvektors aufgerufen wird. Bei der Verwendung der Funktion entsteht eine Abbildung, z.B.
verschiebung( v(2.5,0) )

Die Bilder der entstehenden Figuren können mittels der ensprechenden Methode erhalten werden (sie sind ebenfalls Figuren)
T := T_or::bild( verschiebung( v(-6.5,0) )):
e := e_or::bild( verschiebung( v(-3,0) )):
iks := x_or::bild( verschiebung( v(1,0) )): // der Bezeichner x ist geschützt und kann nicht belegt werden
t := t_or::bild( verschiebung( v(5.2,0) )):
Grafik( T, e, iks, t )

Die Punkte-Matrizen der einzelnen Figuren (auf diese kann mit der Eigenschaft punkte zugegriffen werden), werden nun verkettet, wobei jeweils ein Trennpunkt dazwischen gesetzt wird. Die entstehende Matrix bildet die Grundlage zur Erzeugung einer neuen (zusammengesetzten) Figur
m := T::punkte . v(x,x) . e::punkte . v(x,x) . iks::punkte . v(x,x) . t::punkte

wort := Figur( m ):
Grafik( [wort, 1], Achsen )

Im weiteren wird außerdem die Verknüpfung von Abbildungen mit dem Operator " ° " angewendet. Als Beispiel werden die folgenden beiden Drehungen um den Koordinatenusprung betrachtet (er ist mit O2 vordefiniert; das 2. Argument ist jeweils der Drehwinkel in Grad)
dr1 := drehung( O2, 30); dr2 := drehung( O2, 60)


Die Verknüpfung der beiden Abbildungen
dr := dr2 ° dr1
![]()
ergibt eine neue Abbildung, die darin besteht, dass auf ein Objekt zunächst die rechte Abbildung, auf das entstandene Bild dann die linke Abbildung angewendet wird. Die Matrix der Verknüpfung ist das Produkt der beteiligten Abbildungsmatrizen
dr::matrix = dr2::matrix * dr1::matrix
![]()
Da im vorliegenden Fall bei der Verknüpfung eine Drehung um 90° entsteht, gilt
dr::matrix = ( drehung(O2, 90) )::matrix
![]()
Auf die oben gebildete Figur werden nun verschiedene Abbildungen angewendet, die mit entsprechenden Funktionen und Verknüpfungen erzeugt werden können
Größe verändern, kursiv schreiben
Eine Veränderung der Größe einer Figur ist mit einer (zentrischen) Streckung möglich (es sind Streckzentrum und -faktor anzugeben). Für die Kursivstellung ist die Scherung (mit einem in Grad anzugebenden Scherungswinkel) geeignet
sichtBox(-15..15):
Grafik( wort,
[wort::bild( verschiebung(v(0,7)) ° streckung(O2, 1.5) ), blau, 1.5],
[wort::bild( verschiebung(v(-5,-7)) ° streckung(O2, 0.2) ° scherung(14)), 0.4],
[wort::bild( verschiebung(v(5,-8)) ° scherung(14) ), rot, 2],
Achsen )

Spiegeln
Der Text wird zunächst kursiv gestellt, danach etwas über die x-Achse verschoben und an ihr gespiegelt, womit er in Spiegelschrift erscheint (die x-Achse ist unter dem Bezeichner xAchse2 vordefiniert)
kursivText := wort::bild( verschiebung(v(0,1)) ° scherung(12) ):
spiegelText := wort::bild( spiegelung(xAchse2) ° verschiebung(v(0,1)) ° scherung(12) ):
Grafik( [kursivText, 1], [spiegelText, 1], [xAchse2, gruen], Achsen )

Drehen
Im Beispiel wird zusätzlich die Animationsfähigkeit von Abbildungen benutzt. Dazu erhält die drehung - Funktion einen variablen Drehwinkel w als Argument, für den in der Grafik-Spezifikation ein Bereich (in Grad) anzugeben ist (als Drehzentrum dient der Koordinatenursprung)
Grafik( [wort, grau],
[wort::bild(drehung(O2, 60)), schwarz],
[wort::bild(drehung(O2, w)), rot, 1.5, 0..240],
Achsen)

Schattenbildung
Die Figur wird zunächst geschert, danach erfolgt eine Spiegelung an der x-Achse
sichtBox(-15..15):
Grafik( [wort::bild( scherung(-45) ), gruen.[0.4], 2],
[wort::bild( spiegelung(xAchse2) ° scherung(-45) ), grau, 2],
[wort, blau, 2], Achsen )

Zum Erzeugen einer Animation wird eine Streckung/Stauchung in y-Richtung mit einem variablen Faktor vorgenommen. Das geschieht mittels einer parametrisierten Abbildung, die auf die Figur angewendet wird, bevor diese geschert und gespiegelt wird (die Abbildung wird hier explizit über die entsprechende Matrix erzeugt)
streckeny := Abbildung( v(1,0) . v(0,a) )
![]()
Grafik( [wort::bild( spiegelung(xAchse2) ° scherung(-45) ° streckeny ), grau, 2, 2..-3],
[wort, blau, 2], Achsen )

Laufschrift
Für eine horizontale Schrift wird eine parametrisierte Verschiebung entlang der x-Achse benutzt
Grafik( [wort::bild( versch(v(a,0)) ° scherung(12) ), 3, rot, -24..22], Achsen )

Die Bewegung kann auch entlang einer Kurve erfolgen, wenn eine Parametergleichung vorliegt, wie etwa beim Kreis oder der Ellipse
k := Kreis(O2, 20)
![]()
P := k::pkt() // der allgemeine Kreispunkt

delete t: // t wurde oben mit einem Wert belegt
sichtBox(-30..30):
Grafik( [k, 0.5, grau],
[wort::bild(verschiebung(P)), gruen, 1, 0..360],
Achsen)

Q := v( 1.2*P::x, 0.8*P::y ) // der allgemeine Punkt einer Ellipse

Da Ellipsen nicht zu den agla-Objekten gehören, wird zu ihrer grafischen Darstellung ein MuPAD-plot-Objekt benutzt. Außerdem wird die Schriftgröße verringert
Grafik( plot::Curve2d([Q::x, Q::y], t = 0..360, LineWidth = 0.5, Color = grau),
[wort::bild( verschiebung(Q) ° streckung(O2, 0.7) ), gruen, 1, 90..450],
Achsen)
