Beziehungen zwischen geometrischen Objekten
- package("geo"): export(geo):
Das klärt die Prozedur schnitt.
- schnitt(punkt(1,1,3),punkt(1,1,3)),
schnitt(punkt(1,1,3),gerade(vektor(4,1,6),vektor(1,0,1))),
schnitt(punkt(1,1,3),ebene(vektor(4,1,6),vektor(1,0,1),vektor(0,2,1))),
schnitt(gerade(vektor(3,1,5),vektor(0,0,1)),gerade([3,1,3],[3,1,7])),
schnitt(gerade(vektor(3,1,5),vektor(0,0,1)),ebene(y+x=4)),
schnitt(ebene(x+y=4),ebene([4,0,0],[0,4,0],[0,4,4]))
In den diesen Beispielen ist das erste Objekt vollständig im zweiten enthalten, was an der Parameteranzahl![]()
des Ergebnisses zu erkennen ist.
- parameteranzahl(gerade(vektor(3,1,5),vektor(0,0,1))),
parameteranzahl(ebene(y+x=4)),
parameteranzahl(schnitt(gerade(vektor(3,1,5),vektor(0,0,1)),ebene(y+x=4)))
Jetzt ist das erste Objekt nur teilweise im zweiten enthalten, weil die Parameterzahl im Ergebnis kleiner ist.![]()
- schnitt(gerade(vektor(3,1,5),vektor(0,0,1)),gerade([0,1,3],[3,1,7])),
schnitt(gerade(vektor(3,1,5),vektor(0,1,0)),ebene(y+x=4)),
schnitt(ebene(x+y=4),ebene([4,0,0],[0,2,0],[0,2,2]))
Und in den folgenden Fällen ist der Schnitt leer.![]()
- schnitt(punkt(1,1,3),punkt(1,2,3)),
schnitt(punkt(1,1,3),gerade(vektor(4,3,6),vektor(1,0,1))),
schnitt(punkt(1,1,3),ebene(vektor(4,3,6),vektor(1,0,1),vektor(0,2,1))),
schnitt(gerade(vektor(3,1,5),vektor(0,0,1)),gerade([0,1,3],[0,1,7])),
schnitt(gerade(vektor(0,1,3),vektor(0,0,1)),ebene(y+x=4)),
schnitt(ebene(x+y=4),ebene([2,0,0],[0,2,0],[0,2,2]))
Das Ergebnis wird nicht in Mengenschreibweise angegeben, damit es wieder vom Typ "Matrix" ist und direkt![]()
weiterverarbeitet oder (wie noch gezeigt wird) gezeichnet werden kann.
- schnitt(schnitt(ebene(x+y=4),ebene([2,0,0],[0,2,0],[0,2,2])),punkt(3,4,5))
Beim Gleichsetzen der Vektoren zweier Vektoren ist darauf zu achten, dass ihre Parameter unterschiedlich![]()
benannt sind. Die Prozedur schnitt nimmt diese Umbenennung automatisch vor, es sein denn das wird durch die
Option HOLD ausdrücklich verhindert.
- schnitt(gerade(1+r,2,3*r),gerade(2*r,2,1+2*r)),
schnitt(gerade(1+r,2,3*r),gerade(2*r,2,1+2*r),HOLD)
Sind zwei Geraden identisch, parallel, geschnitten, windschief?![]()
Weitere Prozeduren sind möglich, die klären,
- ob zwei Vektoren kollinear sind,
- ob drei Vektoren komplanar sind,
- ob zwei Geraden parallel sind,
- ob zwei Geraden windschief sind usw.
Diese Fragen sind nun aber durch "Einzeiler" zu lösen, etwa:
- bool(solve(vektor(1,2,3)=k*vektor(2,4,6))<>{})
Oder: Sind zwei gegebene Geraden identisch?![]()
Es ist zu prüfen, ob das Schnittgebilde eine Gerade ist (was daran zu erkennen ist, dass ein Parameter vorkommt).
- bool(parameteranzahl(
schnitt(
gerade([4,1,2],[4,-1,0]),
gerade(4,r,r+1)
)
)>0
)