Affine Abbildungen
Prof. Dr. Dörte Haftendorn: Mathematik mit MuPAD 4.0, ( MuPAD 3 im Okt. 05) Update 8.06.07
Web: https://mathe.web.leuphana.de www.mathematik-verstehen.de ######################################################
Dieses Notebook eignet sich für viele Beispiele. "Grün" muss angepasst werden. ######################################################
Beliebige Abbildungsmatrix hier eintragen
A := matrix([[3/2, 1/2], [1/2, 3/4]]);
Die Spalten sind Bilder von
--------------------------------------------
Definition eines Urbildes , hier eintragen
myUr:=[[2,0],[2,1],[1,1],[1,3],[0,3],[0,0],[2,0],[1,1/2]]:
myUrM:=linalg::transpose(matrix(myUr))
Transponieren, damit die Spalten die Urbild-Punkte sind:
npk:=nops(myUr): //Anzahl der Punkte
urbild:=plot::Polygon2d(myUr,
LineWidth=1, LineColor=RGB::Green, Scaling=Constrained):
e1s:=plot::Arrow2d([0,0],[A[1,1],A[2,1]]):
e2s:=plot::Arrow2d([0,0],[A[1,2],A[2,2]],LineColor=RGB::Black):
plot(urbild,e1s,e2s,GridVisible=TRUE, ViewingBox=[0..7,0..5])
Dastellung der affinen Verformung
Eh:=matrix([[1,0],[0,1]])
As:=(1-s)*Eh+s*A
myBMs:=As*myUrM
myBs:=[[myBMs[1,j],myBMs[2,j]] $ j=1..npk]:
bilds:=plot::Polygon2d(myBs,s=0..1,
LineWidth=1, LineColor=RGB::Red,
AnimationStyle=BackAndForth):
plot(urbild,bilds,e1s,e2s,GridVisible=TRUE,
ViewingBox=[0..4,0..3.5])
Nochmal ansehen, das ist die Urbildfigur
myUrM
Translationsvektor hier eintragen
trans:=matrix([3,2]);
transl:=plot::Arrow2d([0,0],trans,LineColor=RGB::Magenta):
plot(urbild,e1s,e2s,transl,GridVisible=TRUE, ViewingBox=[0..7,0..5])
t:=linalg::transpose(matrix([[trans[1],trans[2]] $ npk]))
Hier muss man den Translationsvektor "aufblähen" damit die Urbildfigur in einem Rutsch
abgebildet werden kann.
myBM:=A*myUrM +t //die Bildpunkte
myB:=[[myBM[1,j],myBM[2,j]] $ j=1..npk]:
bild:=plot::Polygon2d(myB,
LineWidth=1, LineColor=RGB::Red):
plot(urbild,bild,e1s,e2s,transl,GridVisible=TRUE,
ViewingBox=[0..7,0..5])
#######################################################
Ein Schmankerl, dieses Bild als Animation:
tr:=r*linalg::transpose(matrix([[trans[1],trans[2]] $ npk]))
myBMr:=A*myUrM +tr //die Bildpunkte
Hier wird dafür gesorgt, dass die Bildfigur an einer von r abhängigen Stelle gezeichnet
werden kann.
translat:=plot::Arrow2d([0,0],r*trans,r=0..1,LineColor=RGB::Magenta):
myBr:=[[myBMr[1,j],myBMr[2,j]] $ j=1..npk]:
bildr:=plot::Polygon2d(myBr,r=0..1,
LineWidth=1, LineColor=RGB::Red,
AnimationStyle=BackAndForth):
plot(urbild,bildr,e1s,e2s,translat,GridVisible=TRUE,
ViewingBox=[0..7,0..5])