Matheseitenübersicht
3D-Plotter
Abbildungsmatrizen

Geometrie-3D-Viewer

Diese Seite bietet die interaktive Darstellung der grundlegenden geometrischen Objekte im Raum, die im Rahmen des Themenfeldes lineare Algebra und analytische Geometrie behandelt werden: Vektoren, Punkte, Strecken, Polygone, Geraden und Ebenen, ja sogar lineare Abbildungen. Zusätzlich parametrisierte Kurven und Flächen im Raum. Alle Objekte können frei durch beliebige Parameter (per Schieberegler) beeinflußt werden. Definieren Sie dazu die Objekte im Eingabefeld links oben neben der Graphik. Die Eingabesyntax ist unten erklärt. Die Graphik ist selbstverständlich per Maus drehbar, und wie immer stehen diverse Darstellungsoptionen zur Verfügung. Unter den Erläuterungen findet sich die Möglichkeit, alle Abstände und Winkel zwischen den linearen Objekten berechnen zu lassen. Schnittobjekte können automatisch berechnet werden, ihre Gleichungen bzw. Koordinaten werden nach Markieren per Mausklick unter der Graphik angezeigt.

Objekte:


Boxgröße [-5; 5]

Zoom

Augdistanz

Achsenlänge


Koordinatenebenen:
    xy xz yz
Koordinatensystem
    Achsen skalieren
Box Raum rastern
Geradenspurpunkte Kreuze
Ebenenspurpunkte Kreuze
Ebenenspurgeraden
Schnitte automatisch
Objekte erkennen
Objekte beschriften
    Größe perspektivisch
Mausrad: Zoom Box

(Klicken Sie an die gewünschte Stelle der Graphik)

 

Objekte und ihre Eingabe

Die Eingabe aller Objekte erfolgt stets einzeilig und in der Reihenfolge  Objekttyp  Bezeichnung  objektspezifische Deklaration  Darstellungsoptionen
Diese Einträge werden jeweils durch mindestens ein Leerzeichen getrennt (auch bei Punkten zwischen Namen und Koordinatenklammer). Die Bezeichnung muß ein eindeutiger Name des Objekts sein. Diese Bezeichnung dient auch der Beschriftung in der Graphik.

Die möglichen Objekttypen und Aktionen entnehme man der folgenden Aufstellung. Diese ist gleichzeitig als Tutorial konzipiert, d.h. wenn man die folgenden Beschreibungen zu den Objekten und Aktionen nach und nach durcharbeitet und die Beispiele ausprobiert (per copy & paste ins Eingabefenster oben einfügen, auf Übernehmen klicken und dann verändern oder selbst nach den Beispielen eigene Objekte definieren), sollte man ein gutes Verständnis des Programms bekommen.

TypBeispieleErläuterungen
PunktePunkt A (2|4|3)
Punkt B (7/5,-1/13,0.2) r=3 f=red
Punkt C (3,4;-3;sqrt(2)) f=rgb(100,150,0)  
Punkt D ( 10 | -5 | 0 ) unsichtbar

Man beachte zunächst, daß nach dem Punktnamen unbedingt ein Leerzeichen stehen muß.

Die Koordinaten werden innerhalb runder Klammern durch |, Semikolon oder Komma getrennt, letzteres ist natürlich nur dann möglich, wenn kein Dezimalkomma verwendet wird. Dezimalpunkte sind hier ausnahmsweise erlaubt.
Es sind auch Brüche und Rechenausdrücke möglich. Hierzu stehen die Grundrechenarten zur Verfügung sowie die meisten grundlegenden Funktionen. Das einfache Potenzzeichen ^ wird als Operator nicht ohne weiteres verstanden. Quadrate usw. sollten mit Multiplikationen ausgedrückt werden, z.B. k*k für k². Wenn das nicht möglich ist, müssen Potenzen in die Funktion pow() gesteckt werden, z.B. pow(2^(1/3)). Für die Kreiszahl π gibt man in Großbuchstaben PI ein, für die Eulersche Zahl e ein großes E.)
Auch die Verwendung von freien Parametern mit zeitgleicher, interaktiver Einflußnahme auf alle betroffenen Objkte ist möglich, sie wird unten erläutert.

Die Punktfarbe wird nach Belieben mit der Option f=... deklariert, wobei entweder ein direkt unterstützter Farbname (siehe die Aufstellung hier bei den Erklärungen zu Farben) oder #rrggbb (mit hexadezimalen Farbkomponenten von 00 bis ff für rot, grün und blau) oder rgb(r,g,b) mit dezimalen Fabkomponenten von 0 bis 255 folgt.
Die Größe der Punktdarstellung wird mit r=... angegeben. (Punkte werden hier als kleine, gefüllte Kreise dargestellt.) Dann ist (in der Standardeinstellung) die Größe der Punktkreise noch von der Entfernung zum „Auge“ abhängig.

Das Wort unsichtbar sorgt für das hier Naheliegende. (Diese Option ermöglicht, Punkte nur als Referenz etwa für Vektorendefinitionen (siehe dort) zu verwenden, ohne sie zu zeichnen.) Wenn der Punkt D aus dem Beispiel auch nach dem Löschen des Schlüsselworts unsichtbar nicht angezeigt wird, liegt es vermutlich an der zu kleinen „Box“. Die x-Koordinate von D ist 10; die Darstellungsbox ist aber bei Programmstart ein Würfel von jeweils -5 bis 5 für jede Achse. Alles außerhalb wird nicht gezeichnet. Man drehe einfach mit dem Mauszeiger über der Graphik das Mausrad (so vorhanden) nach hinten oder ziehe den entsprechenden Schiebregler links der Graphik nach rechts.

Die Reihenfolge der optionalen Formatierungsangaben ist egal.

VektorenVektor v [3,1,5] s=1 f=orange
Vektor u A->B
Vektor OA O->A "Ortsvektor von A"

Explizit gegebene Vektoren müssen in eckigen Klammern angegeben werden, die Komponenten per Komma oder Semikolon getrennt. Die Schreibweise A->B deklariert einen Vektor von A nach B. Diese Punkte müssen vorher deklariert worden sein. Ausnahme ist der bereits vordefinierte Punkt O als Ursprung. O->A ist also der Ortsvektor von A.

Wichtig: Auch korrekt deklarierte Vektoren werden nicht automatisch gezeichnet, denn Vektoren haben ja keinen Ort. Dies gilt hier auch für deklarierte Ortsvektoren. Vektoren können dann mit der späteren Anweisung zeichne v an P in derjenigen Formatierung gezeichnet werden, die bei ihrer Deklaration angegeben wird: f=... regelt die Farbe, s=... die Linienstärke.

GeradenGerade g x=[1,3,0]+lambda[0,0,1] s=2 f=#d0a000
Gerade h durch A und B f=black
Gerade g2 x=O->A+μ*v s=2,5 f=olive
Gerade g3 x=omikron[1,2,-1]

Geraden können in Parameterform oder durch zwei (bereits definierte) Punkte angegeben werden. Die Parameterform muß mit x= beginnen. Stütz- und Richtungsvektor können entweder explizit oder implizit unter Verwendung bereits definierter Vektoren und Punkte angegeben werden. Die Parameter müssen griechische Buchstaben in normaler Umschrift oder als Unicodezeichen (λ, μ, ν usw.) sein. (Sorry, ich kann lateinische Buchstaben als Parameter nun einmal nicht ausstehen.)
Ursprungsgeraden können ohne Ortsvektor angegeben werden.

Unterstützte Formatierungen sind f=... für Farbe, s=... für Linienstärke, unsichtbar.

EbenenEbene E1 x=[2,3,4]+lambda[3,2,1]+my*[-1,0,2]
Ebene E2 durch A, B und C f=turquoise s=0,5
Ebene F 2x-5y+z=1 f=green s=1
Ebene XY z=0 f=CornflowerBlue nn=200
Ebene E3 x=u+ny*v+xi*A->B
Ebene H durch A mit n=v

Ebenen können in Parameter- oder Koordinatenform, durch drei gegebene Punkte oder durch einen gegeben Ebenenpunkt und den Normalenvektor definiert werden. Punkte müssen sich stets auf bereits definierte Punkte beziehen. Die Vektoren können explizit oder implizit unter Bezug auf bereits gegebene Vektoren definiert werden. Die Parameter müssen auch hier griechische Buchstaben sein.

Die Option nn=... regelt die Rasterung des Ebenennetzes. Je größer nn, desto feiner das Netz. Die Voreinstellung ist 40. Die Ebenennetze sind stets horizontal und orthogonal zur Horizontalen gerastert.

StreckenStrecke s A->B f=blue s=2

Strecken werden stets wie im Beispiel mit zwei bereits gegebenen Punkten und -> dazwischen deklariert.

PolygonePolygon Dreieck1 {A,B,C} f=red s=2 ff=gray
Polygon F1 {P1,P2,P3,P3,P4,P5) s=1e-10 ff=blue
Dreieck D1 {A,B,O}

Polygone werden über eine (beliebig lange) Liste von gegebenen Punkten definiert, die kommasepariert in geschweiften Klammern angegeben werden. Wird ff=... angegeben, wird das Polygon durchscheinend in dieser Farbe gefüllt. Vorsicht: Diese Füllung wird nicht auf die Box gekappt und ist bei nicht ebenen Polygonen meist unsinnig.
Für Dreiecke als Sonderfall gibt es die entsprechende Typbezeichnung.

ebene, regelmäßige n-Ecke n-Eck T n=5 M=A r=3*sqrt(sqrt(5)/10+0,5) nv=A->B
n-Eck U n=11 M=0 nv=[1;1;1] r=3 ff=red
n-Eck Q n=4 r=sqrt(8) M=(0,0,-1) nv=[0,0,1] rot=PI/4

Es müssen nach dem Namen angegeben werden: mit n=... die Anzahl der Ecken, mit M=... der Mittelpunkt, mit nv=... der Normalenvektor der Ebene, auf der das n-Eck liegt, jeweils explizit oder implizit möglich, dann mit r=... der Radius des Umkreises.
Der erste Eckpunkt wird orthogonal zur Normalenrichtung vom Mittelpunkt aus parallel zur xy-Ebene gelegt, falls die Normalenrichtung die z-Richtung ist, dann in x-Richtung. Mit rot=... kann man diese Stelle um den hier angegebenen Winkel (im Bogenmaß!) drehen.

Für n-Ecke werden intern je n Punkt- und Streckenobjekte mit den Bezeichnungen Objektname_P1 bzw. Objektname_k1 usw. erzeugt, für die dann normale Schnittberechnungen stattfinden und auf die man sich regulär beziehen kann. Schnittberechnungen mit der Fläche des n-Ecks finden derzeit noch nicht statt.

Kreise Kreis k1 M=B nv=[0,1,-3] r=4 f=green

Es werden die Angaben für den Mittelpunkt M=..., den Radius r=... sowie die Normalenrichtung nv=... erwartet. Wird nn=... gesetzt, so wird der Kreis als Netz gerastert oder nach Angabe des optionalen Schlüsselworts radial mit 2·nn radialen Speichen und nn-1 konzentrischen Kreisen, mit ff=... kann die Farbe einer optionalen, durchscheinenden Füllung angegeben werden. Ohne Angabe von nn oder ff besteht der Kreis nur aus der Peripherie, sonst aus der Scheibe (relevant für Schnitte mit Geraden).
Schnitte werden nur mit Ebenen und ggf. Geraden berechnet.

Kugeln Kugel K M=(3|2|-3/7) r=2 nn=20 Meridiane

Mit M=... wird der Mittelpunkt, mit r=... der Radius festgelegt. n=... (optional) gibt die Anzahl der Netzteilungen an. Das optionale Schlüsselwort Meridiane bestimmt, daß die Kugel mit Längen- und Breitenkreisen gezeichnet wird, wobei die Achsrichtung noch optional mit a=... (gefolgt von einem Vektor) festgelegt werden kann, Standard ist sonst die z-Richtung. Fehlt dieses Schlüsselwort, wird die Kugel in jeweils nn Scheiben (d.h. je nn-1 Kreisen) parallel zu den drei Koordinatenebenen gezeichnet.
Schnitte werden nur mit Ebenen und Geraden berechnet.

freie ParameterParameter k [-5,5,0]
param t {-2*PI;1,5;0}
param z {-5,5,0,1}

Der Objektbezeichnung Parameter oder kurz param folgt der Parametername und dann ein Tripel von Zahlen, die in eckigen oder geschweiften Klammern stehen können. Die ersten beiden Zahlen geben den Bereich des Parameters an, die dritte Zahl den initialen Wert. Ein optionaler vierter Wert legt die Schrittweite fest, die sonst auf ein Tausendstel des Intervalls gesetzt wird. Diese Werte müssen numerisch und konstant sein (Rechenausdrücke werden verstanden).

Nach der Deklaration wird für jeden dieser Parameter ein Schieberegler generiert.

Diese Parameter können nun nach der Deklaration in allen numerischen Ausdrücken (z.B. als Koordinaten und Kompenenten) solo oder sogar als Bestandteil von Termen verwendet werden. Stehen sie nur einzeln, z.B. Vektor v [1,k,2], genügt der Parametername; werden sie innerhalb eines Terms verwendet, muß ein # vorangestellt werden, Bsp.: Punkt P (3*#k | #k*#k-1 | sin(1/(1+#k*#k))).

Jedes Verändern des Parameterwerts per Schieberegler oder durch Direkteingabe (nach Klick auf Parameterwert möglich) nimmt sofort Einfluß auf alle Objekte, die ihn verwenden.

TermeTerm rad #w*PI/180
Term cw cos(#rad)

Ein Term definiert einen Rechenausdruck für einen Bezeichner, der dann im folgenden wie ein Parameter verwendet werden kann. Im Beispiel links muß natürlich vorher der Parameter w definiert worden sein, z.B. durch param w [-360,360,0,1]

KurvenKurve k [cos(#w),sin(#w),#w/10] {w,-20,20} f=crimson s=8/3 n=2000 Nach dem Kurvennamen folgt ein Vektor mit den von einer Laufvariable abhängigen Koordinaten der Kurvenpunkte bzw. Komponenten der entsprechenden Ortsvektoren. Der Variable muß jeweils ein # vorangestellt werden. Dann folgt ein Tripel mit Laufvariable (ohne #), Start- und Endwert. Die Option n=... bestimmt, wieviele Zwischenwerte berechnet werden. (Standardeinstellung ist n=1000.)

Hinweis: Das Beispiel links ist lang und eventuell Opfer des automatischen Zeilenumbruchs. Eingegeben werden müssen alle Objekte allerdings einzeilig.

FlächenFläche N [#u,#v,exp(-(#u*#u+#v*#v)/2)] {u,-4,4} {v,-4,4} nn=40
Fläche K [cos(#u)*cos(#v);cos(#u)*sin(#v);sin(#u)] [u;-PI/2;PI/2;18] [v;0;2*PI;36] f=blue s=1/2
Parametrisierte Flächen mit zwei Parametern. Definition wie bei Kurven, nur zwei Tripel für die beiden Parameter. Die Option n=... bestimmt, wieviele Zwischenwerte pro Parameter jeweils berechnet werden (Standardeinstellung hier n=200); nn=... regelt wie bei Ebenen die Anzahl der „Netzmaschen“ (Standardeinstellung: nn=20). Man kann in den beiden Parameterklammern ein viertes und auch ein fünftes Element anhängen, um nn und n für den entsprechenden Parameter separat festzulegen.

zeichne ...zeichne v in O

zeichne 0,5*v an A
zeichne k*v
zeichne (1-2*#k)*v an B

zeichne P

Die Aktion zeichne dient einerseits dem Zeichnen von Vektoren, die ja bei ihrer Definition per definitionem mangels Ort nicht automatisch gezeichnet werden. Nach dem Vektornamen muß an oder in und ein bekannter Punkt folgen (der Ursprung O ist vordefiniert). Die Vektoren können hierbei skaliert werden. Man studiere am besten die drei Beispiele links dazu.

Andererseits ist die Aktion zeichne zum Beispiel praktisch zum Neuzeichnen notwendigerweise früh definierter Punkte. Die Darstellung erfolgt streng nach Reihenfolge der Definition, eine Überprüfung der perspektivischen Überdeckung findet nicht statt. So können Punkte insbesondere von Ebenen leicht übermalt werden und kaum noch zu sehen sein. Mit der Aktion zeichne A am Ende der Deklarationen kann der früher definierte Punkt A im Vordergrund gezeichnet werden. Eine etwaig bei der Definition gesetzte Option unsichtbar wird dabei ignoriert.

Der zeichne-Befehl interpretiert keine Darstellungsoptionen, diese müssen beim Objekt selbst stehen, was insbesondere für Vektoren gilt. (Man beachte in den obigen Beispielen zu Vektoren die dort scheinbar überflüssigen, da zunächst wirkungslosen Formatierungsangaben zu Linienstärke und Farbe.)

MatrizenMatrix M [[0|1|0],[0|0|1],[-1|0|0]]
Matrix M [[cos(#w)|0|-sin(#w)],[0|1|0],[sin(#w)|0|cos(#w)]]T

Matrizen werden wie im Beispiel definiert (einzeilig, ohne Zeilenumbruch), die drei Vektoren sind standardmäßig die Zeilen der Matrix. Falls Spaltvektoren gemeint sein sollen, hängt man an die Matrix ein T (für Transposition) oder S (für Spalten) an. Matrizen dienen linearen Abbildungen von gegebenen Objekten; siehe dazu unten bei „Bild“. Auch hier können (vorher definierte) Parameter verwendet werden.

BildBild u M*v s=2 f=dodgerblue

Nach Definition einer Abbildungsmatrix kann diese wie im Beispiel auf fast alle Objekte angewendet werden. Schreibweise ist immer Matrixbezeichnung*Objektbezeichnung.
(Hier darf die Matrix auch direkt mit Punkten bzw. Punktmengen multipliziert werden, was eigentlich als grober formaler Fehler gilt.)

LotLot h von A auf E
Lotgerade durch P auf g
Lot von g1 auf g2 f=chartreuse

Ein Lot (von einem Punkt aus orthogonal zum zweiten Objekt oder orthogonal zu zwei Geraden) wird als Strecke dargestellt, der oder die Lotpunkte werden dabei generiert. Lotgeraden werden als Geraden generiert. Bei Strecken (Lot) wird von ... auf ... erwartet, bei Geraden (Lotgerade) durch ... auf .... Darstellungsoptionen sind wie sonst auch.

//// Beispiel zu Hilfsebenen
//Bild h M*g f=firebrick

Zwei Schrägstriche am Zeilenbeginn sorgen dafür, daß der Zeileninhalt nicht interpretiert wird. Man kann damit Kommentare eingeben oder Objekte deaktivieren.

 

Zur Darstellung

Die Darstellung erfolgt innerhalb einer sogenannten Box. Dies ist ein Würfel um den Ursprung mit einstellbarer Größe (per Schieberegler). Standardmäßig ist die Boxgröße auch per Mausrad einstellbar. Die Mausradfunktion ist optional auf den Zoom umstellbar. Alle Objekte — mit Ausnahme der Füllung von Polygonen und der Koordinatenachsen — werden an dieser Box abgeschnitten (sogenanntes clipping), was eine probate Möglichkeit ist, die räumliche Lage von Ebenen und Geraden zu veranschaulichen.

Die Darstellung ist nach Zentralperspektive, der virtuelle Abstand des Auges kann eingestellt werden. (Je näher, desto stärker fluchten die Objekte in der Tiefe.) Auf die Bezifferung der Koordinatenachsen wird zugunsten der Übersichtlichkeit grundsätzlich verzichtet, die Bedeutung der Skalierung kann leicht aus der Boxgröße erschlossen werden.

Objekte unter der Maus werden erkannt, fett dargestellt und unter der Graphik benannt. Das kann deaktiviert werden. Bei Ebenen klappt die Erkennung an ihrem Randpolygon. Für Kurven und Flächen gibt es keine Objekterkennung. (Hierzu müßten bei jedem Zeichnen alle oft Abertausende Streckenzüge gespeichert und dann auf Nähe zum Mauszeiger geprüft werden: zu langsam und zu speicheraufwendig.) Gegenseitige Schnitte werden zwischen allen Objekten mit Ausnahme von Kurven und Polygonen automatisch generiert, angedeutet und erkannt, falls diese Option nicht abgewählt wurde. Ebenso — optional zuwählbar — die Spurpunkte sowie -geraden von Geraden und Ebenen. Für die gegebenen Objekte kann an dieser Stelle auch eine ausführlichere Beschreibung angezeigt werden. Diese wird bei der Definition einfach in Anführungszeichen irgendwo im hinteren Teil angefügt. Klickt man auf ein Objekt, auch ein automatisch berechnetes Schnittobjekt, wird es unter der Graphik mit Koordinaten (bei Punkten), Parametergleichung (bei Geraden) oder Koordinatengleichung (bei Ebenen) aufgeführt. Hierbei wird versucht, eine ganzzahlige Darstellung und einen möglichst einfachen Stützvektor zu finden.

Die normale Objektbeschriftung erfolgt für Ebenen stets am tiefsten Punkt des (an der Box abgeschnittenen) Randes, für Geraden am „oberen“ Ende (jeweils auf den Bildschirm bezogen, nicht auf die Raumkoordinaten). Strecken und Vektoren werden rechts der Mitte (bezogen auf die Richtung vom Startpunkt aus) bezeichnet. Bei Punkten, die auf einer Geraden liegen, wird versucht, diese neben dieser Geraden zu beschriften, und zwar immer abseits der Bildmitte, was auch für die Position „freier Punkte“ gilt. Die Beschriftung kann global abgeschaltet werden oder für einzelne Objekte mit dem Schlüsselwort anonym in der Objektdeklaration. In der Standardeinstellung wird die Beschriftung mit zunehmendem Abstand zum Betrachter kleiner; dies kann deaktiviert werden.

Die Spurpunkte von Geraden und Ebenen werden — wie auch die Spurgeraden der Ebenen — standardmäßig nicht berechnet und angezeigt. Dies kann aber aktiviert werden. Die Spurpunkte von Geraden werden dann normalerweise wie auch die anderen Schnitte von Geraden mit Ebenen als Kreis (quasi „Loch“) in der durchstochenen Ebene dargestellt. Spurpunkte erscheinen in der Farbe der Geraden, andere Durchstoßpunkte in schwarz. Für die Spurpunkte gibt es auch eine Darstellung als Kreuz (drei Striche, je parallel zu den Koordinatenachsen).

 

Abstände

Abstandstabelle erstellen  •  Runden auf Kommastellen  •  Brüche  •  automatische Schnittobjekte einbeziehen
(Eine Abstandstabelle wird nach jeder Definitions- oder Parameteränderung automatisch berechnet)

 

Winkel

Winkeltabelle erstellen  •  Runden auf Kommastellen  •  automatische Schnittobjekte einbeziehen
(Eine Winkeltabelle wird nach jeder Definitions- oder Parameteränderung automatisch berechnet)

© Arndt Brünner, 30. 12. 2018
Version: 27. 1. 2019


Beispiele

// Parameterform der Gerade
Punkt A (1,2,3) f=red
Vektor OA O->A f=brown
Vektor r [1,-1,-1] s=2 f=indigo
zeichne OA an O
Gerade g x=OA+lambda*r f=green s=0,5
param λ [-5;5;1]
zeichne λ*r an A

// Parameterform der Ebene
// ax bis az sind die Koordinaten von A
// ux bis uz die Komponenten von u
// vx bis vz die Komponenten von v
// ->  Ebene x=OA+λu+µv
// P(x|y|z) ist Ebenenpunkt (z wird berechnet)
param ax [-5,5,0]
param ay [-5,5,1]
param az [-5,5,1]
param ux [-5,5,1]
param uy [-5,5,0]
param uz [-5,5,0]
param vx [-5,5,0]
param vy [-5,5,1]
param vz [-5,5,0]
param x [-5,5,2]
param y [-5,5,2]
Punkt A (ax,ay,az)
Vektor u [#ux,#uy,#uz] f=red s=1
Vektor v [#vx,#vy,#vz] f=blue s=1
Vektor OA O->A
Ebene E x=O->A+lambda*u+mu*v f=chartreuse s=0.5 nn=20
Term d #ux*#vy-#uy*#vx
Term lambda (#vy*#x-#vx*#y-#ax*#vy+#ay*#vx)/#d
Term my (#ax*#uy-#ay*#ux+#ux*#y-#uy*#x)/#d
Punkt P (#x,#y,#az+#lambda*#uz+#my*#vz)
Punkt B (#ax+#lambda*#ux,#ay+#lambda*#uy,#az+#lambda*#uz) unsichtbar
Vektor su A->B s=0.5 anonym
Vektor sv B->P s=0.5 anonym
zeichne OA an O
zeichne su an A
zeichne sv an B
zeichne u an A
zeichne v an A

// Abstand windschiefer Geraden.
// Nach und nach unten die // löschen!
Punkt A (-3|-1|0) unsichtbar
Punkt B (4|4|4) unsichtbar
Gerade g durch A und B f=blue s=3
Punkt C (1|-3|-1) unsichtbar
Punkt D (0|5|-1) unsichtbar
Gerade h durch C und D f=crimson s=3
Vektor rg A->B f=blue s=4
Vektor rh C->D f=red s=4
//zeichne 0.2*rg an A
//zeichne 0.3*rh an C
//zeichne 0.2*rg an C
//zeichne 0.3*rh an A
//Ebene H1 x=O->A+lambda*rg+mu*rh "Hilfsebene 1" s=0,3 nn=100 f=CadetBlue
//Ebene H2 x=O->C+lambda*rg+mu*rh "Hilfsebene 2" s=0,3 nn=100 f=coral
//Lot s von g auf h f=green  "orthogonale Verbindung der Geraden als Abstand paralleler Hilfsebenen"

// Parallelprojektion auf xy-Ebene
Punkt A (2,2,2) unsichtbar
Punkt B (4,2,2) unsichtbar
Punkt C (4,4,2) unsichtbar
Punkt D (2,4,2) unsichtbar
Punkt E (2,2,4) unsichtbar
Punkt F (4,2,4) unsichtbar
Punkt G (4,4,4) unsichtbar
Punkt H (2,4,4) unsichtbar
Polygon w1 {A,B,C,D}
Polygon w2 {A,B,F,E}
Polygon w3 {B,C,G,F}
Polygon w4 {C,D,H,G}
Polygon w5 {D,A,E,H}
Polygon w6 {E,F,G,H}
Ebene xy-Ebene z=0 f=MediumAquaMarine
Matrix P [[1|0|-2/3],[0|1|-1/3],[0|0|0]]
Bild b1 P*w1 f=blue
Bild b2 P*w2 f=blue
Bild b3 P*w3 f=blue
Bild b4 P*w4 f=blue
Bild b5 P*w5 f=blue
Bild b6 P*w6 f=blue
Bild EE P*E unsichtbar
Bild FF P*F unsichtbar
Bild GG P*G unsichtbar
Bild HH P*H unsichtbar
Bild AA P*A unsichtbar
Bild BB P*B unsichtbar
Bild CC P*C unsichtbar
Bild DD P*D unsichtbar
//Strecke ga A->AA s=0.2 anonym
//Strecke gb B->BB s=0.2 anonym
//Strecke gc C->CC s=0.2 anonym
//Strecke gd D->DD s=0.2 anonym
//Strecke ge E->EE s=0.2 anonym
//Strecke gf F->FF s=0.2 anonym
//Strecke gg G->GG s=0.2 anonym
//Strecke gh H->HH s=0.2 anonym

// Tetraeder im Würfel
Punkt A (-3,-3,-3)
Punkt B (3,-3,-3)
Punkt C (3,3,-3)
Punkt D (-3,3,-3)
Punkt E (-3,-3,3)
Punkt F (3,-3,3)
Punkt G (3,3,3)
Punkt H (-3,3,3)
Polygon t1 {A,C,F} s=4 ff=chocolate
Polygon t2 {A,H,F} s=4 ff=chocolate
Polygon t3 {H,F,C} s=4 ff=chocolate
Polygon t4 {A,C,H} s=4 ff=chocolate
Polygon q1 {A,B,C,D} f=grey
Polygon q2 {E,F,G,H} f=grey
Polygon q3 {A,B,F,E} f=grey
Polygon q4 {B,C,G,F} f=grey
Polygon q5 {C,D,H,G} f=grey
Polygon q6 {D,A,E,H} f=grey

// Kreise und Gaußsche Glockenkurve
param ? [-2*PI,2*PI,0]
param ? [0,5,1]
Kurve k [#t;0;4*exp(-#t*#t/(#?*#?))] {t,-5,5} n=5000 unsichtbar
Matrix M [[cos(#?)|-sin(#?)|0][sin(#?)|cos(#?)|0][0|0|1]]
Fläche Kreise [#u*cos(#t);#u*sin(#t);4*exp(-#u*#u/(#?*#?))] [u,0,5,40] [t,0,2*PI,4]
Bild b M*k

// Erdkugel und Horizontebene
param alpha [0,360,9,1]
param beta [-90,90,50,1]
param r [0,5;4;1]
Fläche K [#r*cos(#u)*cos(#v);#r*cos(#u)*sin(#v);#r*sin(#u)] [u;-PI/2;PI/2;18] [v;0;2*PI;36] f=blue s=1/2
Term ra #alpha*PI/180
Term rb #beta*PI/180
Term a #r*cos(#ra)*cos(#rb)
Term b #r*sin(#ra)*cos(#rb)
Term c #r*sin(#rb)
Punkt A (#a,#b,#c) anonym
Ebene Horizont #a*x+#b*y+#c*z=#r*#r s=0,3 f=#99aa66
Vektor Zenit O->A
Term q 1/#r
zeichne #q*Zenit in A

// Tangente am Hyperboloid
Fläche h [sqrt(#u*#u+1)*cos(#t),sqrt(#u*#u+1)*sin(#t),#u] [t,0,2*PI] [u,-5,5]
Punkt A (0,-sqrt(26),-5)
param w [-PI/2;PI/2;PI/2-2*atan(1/5)]
Punkt B (sqrt(26)*5/13;sqrt(26)*12/13;5)
Gerade g durch A und B s=2 f=navy
param phi [-2*PI;2*PI;0]
Matrix R [[cos(#phi),-sin(#phi),0],[sin(#phi),cos(#phi),0],[0,0,1]]
Bild A` R*A
Bild B` R*B
Gerade g` durch A` und B` s=1.3 f=magenta

© Arndt Brünner, 30. 12. 2018
Version: 27. 1. 2019