Geometrie im Raum

normalen.mws, 20.1.99, H. Paulo

>

> restart:with(plots):with(linalg):

Warning, new definition for norm

Warning, new definition for trace

>

Formwechsel bei Ebenen

Gegeben: Eine Ebene E durch 3 Punkt A,B und C oder die Parameterform mit P, u und v.

> A:=[1,2,0]:B:=[-2,3,1]:C:=[2,-1,-4]:

> P:=A;u:=B-A;v:=C-A;

[Maple Math]

[Maple Math]

[Maple Math]

> EP:=P+r*u+s*v; #Die Parameterform von E

[Maple Math]

> EE:=evalm(EP);

>

[Maple Math]

> Efunkt:=unapply(EP,r,s); #Ebene als Funktion von r und s

[Maple Math]

> Efunkt(3,2);#Ein Punkt der Ebene

[Maple Math]

Formwechsel in Normalenform:

> n:=crossprod(u,v);x:=[x1,x2,x3];

[Maple Math]

[Maple Math]

> EN:=dotprod(n,x-P)=0;

[Maple Math]

grafische Darstellung mit Hilfe der Achsenschnittpunkte:

> A1:=[0,0,solve(subs(x1=0,x2=0,EN))];

[Maple Math]

> A2:=[0,solve(subs(x1=0,x3=0,EN)),0];

[Maple Math]

> A3:=[solve(subs(x3=0,x2=0,EN)),0,0];

[Maple Math]

> plt1:=polygonplot3d([A1,A2,A3],style=patch):#Darstellung mit den drei Achsenschnittpunkten
display(plt1);

[Maple Plot]

Wählt man geschickt weiter außen liegende Punkte, so kann man die Ebene besser sehen:

> A1:=[100,100,solve(subs(x1=100,x2=100,EN))];

> A2:=[100,-100,solve(subs(x1=100,x2=-100,EN))];
A3:=[-100,-100,solve(subs(x1=-100,x2=-100,EN))];
A4:=[-100,100,solve(subs(x1=-100,x2=100,EN))];

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

> plt1:=polygonplot3d([A1,A2,A3,A4],style=patch):
display(plt1,view=[-10..10,-10..10,-40..0]);

[Maple Plot]

Formwechsel:aus der Normalen- bzw. Koordinatenform die Parameterform machen:

> n:=[3,-2,5];P:=[2,1,-3];

[Maple Math]

[Maple Math]

> EN:=dotprod(n,x-P)=0;

[Maple Math]

> loes:=solve(EN,x3);

[Maple Math]

> EP:=[s,t,subs(x1=s,x2=t,loes)];

[Maple Math]

Man kann hier die einzelnen Vektoren noch auseinandersortieren und erhält dann:

> EP:=[0,0,-11/5]+s*[1,0,-3/5]+t*[0,1,2/5];

[Maple Math]

Kontrolle:

> evalm(EP);

[Maple Math]

Oder man bestimmt aus der Normalenform drei Punkte A,B,C:

> A:=[0,0,solve(subs(x1=0,x2=0,EN))];

[Maple Math]

> B:=[0,solve(subs(x1=0,x3=0,EN)),0];

[Maple Math]

> C:=[solve(subs(x3=0,x2=0,EN)),0,0];

[Maple Math]

> EP2:=A+s*(B-A)+t*(C-A);

[Maple Math]

> evalm(EP2);

[Maple Math]

>

Daß diese beiden Ebenen identisch sind sieht man am besten über die zugehörigen Normalenformen (s.u.)

Lagebeziehungen bei Ebenen

Wir setzen voraus, daß beide Ebenen E1 und E2 in Koordinatenform vorliegen! Ggfls. durch Formwechsel (s.o.) zu erreichen

Parallelität

Die Normalenvektoren sind kollinear. Das LGS { E1,E2} hat keine Lösung

> n1:=[3,6,9];n2:=[-2,-4,-6];

>

[Maple Math]

[Maple Math]

> E1:=dotprod(n1,x-[1,1,1])=0;

[Maple Math]

> E2:=dotprod(n2,x-[3,4,5])=0;

[Maple Math]

> loes:=solve({E1,E2});

[Maple Math]

> E2:=dotprod(n2,x-[1,1,1])=0;#Veränderung des Beispiels

[Maple Math]

> loes:=solve({E1,E2});

[Maple Math]

Ebenen sind jetzt identisch.

Schnitt; Schnittwinkel; Orthogonale Ebenen

>

> x:=[x1,x2,x3];

[Maple Math]

> n1:=[3,2,1]:n2:=[2,-3,1];
E1:=dotprod(n1,x-[-1,2,4])=0;

[Maple Math]

[Maple Math]

> E2:=dotprod(n2,x-[3,0,5])=0;

[Maple Math]

> L:=solve({E1,E2});#Die Schnittgerade

[Maple Math]

> assign(%);

> x;

[Maple Math]

> vekt:=map2(subs,x[2]=s,x);#Darstellung der Geraden in der üblichen Form

[Maple Math]

> g:=unapply(vekt,s);#Gerade als Funktion

[Maple Math]

> g(3);#Der zu s=3 gehörende Punkt der Geraden

[Maple Math]

> polygonplot3d([g(3),g(5)]);

[Maple Plot]

> x1:='x1':x2:='x2':x3:='x3':#Freimachen der Variablen für weitere Rechnungen

> : x;

[Maple Math]

Schnittwinkel zwischen den Ebenen:

> evalf(180/Pi*angle(n1,n2));

[Maple Math]

Falls dieser Winkel >90° ist, muß man ihn noch von 180° subtrahieren.

Die Ebenen sind orthogonal, wenn die Normalenvektoren orthogonal sind.

Lagebeziehung Ebene - Gerade

Ebene in Koordinatenform, Gerade immer in Parameterform

Parallelität, Orthogonalität,Schnittpunkt

Die Gerade ist parallel zur Ebene, wenn ihr Richtungsvektor orthogonal zum NV der Ebene ist.

Sie liegt in der Ebene, wenn zusätzlich ein Punkt von in E liegt.

> n:=[1,2,-4];#Normalenvektor von E
P:=[-5,0,0];#Ein Punkt von E
Q:=[-2,3,4];#Ein Punkt von g
v:=[5,1,1];#Richtungsvektor von g

>

>

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

> E:=dotprod(n,x-P)=0;

[Maple Math]

> g:=evalm(Q+r*v);

[Maple Math]

> schnitt:=subs(x1=g[1],x2=g[2],x3=g[3],E);

[Maple Math]

> loes:=solve(schnitt);

[Maple Math]

> S:=map2(subs,r=loes,g);#Der Schnittpunkt von g mit E

[Maple Math]

> polygonplot3d([S,Q]);

Error, (in polygonplot3d) incorrect first argument

Der Punkt S ist nach Anwendung des map2-Befehls nicht plotbar. So geht es (es sieht genauso aus, ist aber nicht das gleiche!):

> S:=convert(S,list);

[Maple Math]

> polygonplot3d([S,P]);

[Maple Plot]

Varianten:

> v:=[4,0,1];

[Maple Math]

> g:=evalm(Q+r*v);

[Maple Math]

> schnitt:=subs(x1=g[1],x2=g[2],x3=g[3],E);

[Maple Math]

> loes:=solve(schnitt);

[Maple Math]

Also: leere Menge, g ist parallel zu E, aber nicht in E enthalten

> Q:=[-5,0,0];

[Maple Math]

> g:=evalm(Q+r*v);

[Maple Math]

> schnitt:=subs(x1=g[1],x2=g[2],x3=g[3],E);

[Maple Math]

Die Gleichung ist für alle r erfüllt, also liegt g in E.

Schnittwinkel Ebene-Gerade

Der Winkel w zwischen dem Normalenvektor n von E und dem Richtungsvektor n von g läßt sich wie üblich berechnen (0<=w<=90). Der gesuchte Schnittwinkel ist dann 90°-w.

Lagebeziehungen bei zwei Geraden

Es sei g: x= p +ru und h: x=q+sv

Parallele oder identische Geraden

Die Geraden sind parallel, wenn u und v kollinear sind. Sie sind identisch, wenn ein Punkt von g auf h liegt.

Man kann auch die Schnittmenge berechnen:

> u:=[2,-1,3]:v:=[-4,2,-6]:
p:=[1,2,3]:q:=[2,2,2]:

> g:=p+r*u; h:=q+s*v;

[Maple Math]

[Maple Math]

> LGS:={seq(evalm(g)[i]=evalm(h)[i],i=1..3)};

[Maple Math]

> loes:=solve(LGS);# Schnittmenge ist leer und u,v sind kollinear, also g parallel h, aber nicht identisch

[Maple Math]

> p:=[1,2,3]:q:=[3,1,6]:
g:=p+r*u; h:=q+s*v;

[Maple Math]

[Maple Math]

> LGS:={seq(evalm(g)[i]=evalm(h)[i],i=1..3)};

[Maple Math]

> loes:=solve(LGS);

[Maple Math]

Lösungsmenge unendlich, also g identisch mit h. Kontrolle:

> subs(r=1-2*s,g);

[Maple Math]

> evalm(%);

[Maple Math]

> evalm(h);

[Maple Math]

>

Schnitt und Schnittwinkel

> u:=[2,2,3]:v:=[-4,1,-6]:
p:=[3,4,6]:q:=[-7,4,-9]:
g:=p+r*u; h:=q+s*v;
LGS:={seq(evalm(g)[i]=evalm(h)[i],i=1..3)};

[Maple Math]

[Maple Math]

[Maple Math]

> loes:=solve(LGS);

[Maple Math]

> P:=evalm(subs(r=-1,g));#Schnittpunkt

[Maple Math]

> Q:=evalm(subs(s=-2,h));

[Maple Math]

> evalf(180/Pi*angle(u,v));

>

[Maple Math]

> alpha:=180-%;#Schnittwinkel

[Maple Math]

>

Windschiefe Geraden

Die Richtungsvektoren sind linear unabhängig, und es gibt keinen Schnittpunkt:

> u:=[2,2,3]:v:=[-4,1,-6]:
p:=[5,4,6]:q:=[-7,4,-9]:
g:=p+r*u; h:=q+s*v;
LGS:={seq(evalm(g)[i]=evalm(h)[i],i=1..3)};

[Maple Math]

[Maple Math]

[Maple Math]

> loes:=solve(LGS);

[Maple Math]

> basis({u,v});

Error, (in basis) expecting set or list of vectors

Hier muß man die Listen in Vektoren umwandeln!

> basis({convert(u,vector),convert(v,vector)});

[Maple Math]

Also u,v linear unabhängig, was man aber ohne basis-Kommando wohl auch direkt sieht!