Darstellung geometrischer Objekte
- package("geo"): export(geo):
- plot(plot::Point2d(1,1,PointColor=RGB::Green),
plot::Line2d([1,2],[3,1]),
ViewingBox=[0..4,0..3]);
plot() erscheint hier einmal als Prozedur, die die Grafik erzeugt. Die Prozedur berücksichtigt dabei die am Ende![]()
![]()
in den Klammern stehenden Optionen (hier: ViewingBox=[0..4,0..3]).
plot:: bezieht sich auf ein Paket von Zusatzprozeduren, die nur bei Bedarf geladen werden.
Hier wird die Prozedur Point2d angefordert und benutzt, die vorbereitende Berechnungen für die Darstellung
eines Punktes durchführt (hier mit den Koordinaten 1,1 und der Option PointColor=RGB::Green).
In plot() existieren viele Prozeduren für unterschiedliche grafische Objekte. Das Paket ist sehr umfangreich,
aber auch komplex. Deshalb wird hier eine neue Prozedur zeichne eingeführt, die intuitiv benutzt werden kann:
- zeichne(punkt(3,2,1),
vektor([3,2,1],vektor(2,1,2)),
ebene(vektor(2,1,2),vektor(3,2,1)),
gerade(vektor(0,0,0),vektor(2,1,2))
);
In zeichne werden einige Voreinstellungen getroffen, die aber überschrieben werden können.![]()
![]()
Axes=Origin, AxesTips=TRUE, AxesTitleAlignment=End,
Scaling=Constrained, ViewingBox=[-1..6,-1..6,-1..6]
Speziell kann jederzeit der Bildausschnitt etwa durch
zeichne(...,ViewingBox=[-4..4,-4..4,0..6])
an die eigenen Voreinstellungen angepasst werden.
Alle Optionen der Prozedur plot() stehen nach wie vor zur Verfügung!
Den durch punkt, vektor, gerade, ebene beschriebenen Objekten können individuell grafische
Eigenschaften zugeschrieben werden. Zum Beispiel lassen sich ihre Farben einzeln festlegen.
- zeichne(punkt(3,2,1,Color=RGB::Red),
vektor([3,2,1],vektor(2,1,2),Color=RGB::Blue),
gerade(vektor(0,0,0),vektor(2,1,2),Color=RGB::Green),
ebene(vektor(2,1,2),vektor(3,2,1),Color=RGB::Yellow)
);
Den in MuPAD vorhandenen Optionen wurden einige weitere hinzugefügt.![]()
![]()
Koordinatenlinien zeichnen (Punkt, Vektor)
Delta=TRUE|FALSE (Voreinstellung FALSE)
Delta=<Farbe> (Voreinstellung RGB::Green)
Die MuPAD-Optionen Title, TitlePosition, TitleAlignment werden für Vektoren optimiert, so
dass der Titel - anders als im Standard-MuPAD - in die Mitte des Vektorpfeiles gesetzt wird.
- zeichne(punkt(1,1,1),
punkt(2,2,2,Color=RGB::Red,Title="A"),
punkt(3,3,3,Visible=FALSE,Delta=TRUE),
vektor(5,1,3,Delta=RGB::Red,Title="a"))
Die zusätzlichen Optionen für punkt werden von einer Prozedur plotPunktVektor, die von zeichne automatisch![]()
![]()
aufgerufen wird, interpretiert und in MuPAD-Optionen umgesetzt. Es wird dadurch eigentlich nichts Neues geschaffen,
nur wird dem Benutzer das Erstellen komplexer MuPAD-Konstruktionen abgenommen.
(DEMO ist bisher nur für plotPunktVektor implementiert.)
- DEMO := TRUE:
plotPunktVektor(punkt(1,2,3,Delta=TRUE,Title="A")):
DEMO := FALSE:
plot::Point3d([1, 2, 3],Title = " A",TitlePosition = [1, 2, 3], TitleAlignment\ = Left), plot::Polygon3d([matrix([[0], [0], [0]]),matrix([[1], [0]]),matrix([[1], [2], [\ 3]]),LineStyle=Dashed,LineWidth=0.5,attribute)Wenn ein Vektorpfeil nicht im Nullpunkt angetragen werden soll, wird zusätzlich an erster Stelle der Startpunkt
(Start-Ortsvektor) angegeben. Das Programm zeichne zeichnet daraufhin den Verbindungspfeil.
Dort läßt sich auch der Winkel antragen.
- A := punkt(3,2,1,Color=RGB::Red);
u_ := vektor([3,2,1],vektor(2,1,2));
v_ := vektor(vektor(3,2,1),vektor(2,3,1));
zeichne(vektor(A),u_,v_,
punkt(A,Color=RGB::Green),
winkel(punkt(3,2,1),vektor(2,1,2),vektor(2,3,1),Color=RGB::Green));
Polygon![]()
![]()
![]()
![]()
![]()
Das Programm zeichne verarbeitet auch ein Polygon, das wahlweise als Punkt-/Vektorfolge oder Punkt-Vektorliste
mit Optionen angegeben wird. Das Polygon führt von Punkt zu Punkt und interpretiert einen Vektor als Verbindungsvektor
zum nachfolgenden Punkt.
Dots=TRUE|FALSE (Voreinstellung FALSE)
Dots=<Farbe> (Voreinstellung RGB::Blue bzw. eingestellte LineColor)
Anders als im Standard-MuPAD ist Closed=TRUE voreingestellt.
- p1 := polygon(punkt(2,0,0),punkt(2,0,4),vektor(2,0,0));
p2 := polygon(vektor(2,0,0),vektor(2,0,4),vektor(2,0,0));
zeichne(p1,Color=RGB::Green,p2,Color=RGB::Red);
Spurpunkte, Achsenabschnitte zeichnen (Gerade, Ebene)![]()
![]()
![]()
![]()
Dots=TRUE|FALSE (Voreinstellung TRUE für Geraden und FALSE für Ebenen)
Dots=<Farbe> (Voreinstellung RGB::Blue bzw. eingestellte LineColor)
- zeichne(gerade(vektor(0,0,0),vektor(2,1,2)),
gerade(vektor(1,0.5,1),vektor(1,-2,0),Dots=RGB::Red),
ebene(vektor(2,1,2),vektor(3,2,1),Dots=TRUE)
);
Raster zeigen (Ebene)![]()
![]()
Raster=TRUE|FALSE (Voreinstellung FALSE)
Wenn Filled=FALSE und Raster=FALSE (bzw. nicht festgelegt) ist, werden die Spurgeraden der Ebene gezeichnet.
Spurgeraden zeigen (Ebene)
Lines=TRUE|FALSE (Voreinstellung FALSE)
Lines=<Farbe> (Voreinstellung RGB::Blue)
Statt Lines kann auch LineColor benutzt werden.
- zeichne(ebene(r,r/2,s,Dots=TRUE),
ebene(1-2*r,r-s,2+s,Filled=FALSE),
ebene(4,r,s,Dots=RGB::Red,Filled=FALSE,Raster=TRUE),
ebene(6,r,s,Color=RGB::Green,LineColor=RGB::Red)
)
Achsenabschnitte und Spurgeraden werden einzeln oder pauschal eingebunden.![]()
![]()
- e_ := ebene(1-2*r,r-s,2+s):
f_ := ebene(2-r,2+r,s):
zeichne(abschnitt(e_,Color=RGB::Red), // alle Abschnitte
abschnitt(f_)[1],Color=RGB::Green, // ein Abschnitt
spur(e_,Color=RGB::Red,Dots=RGB::Black), // alle Spurgeraden
spur(f_)[2],Color=RGB::Yellow,Dots=FALSE // eine Spurgerade
)
Schnitte können unmittelbar eingebunden werden:![]()
![]()
- zeichne(ebene(r,2,s),ebene(r,s,2),
schnitt(ebene(r,2,s),ebene(r,s,2)),
punkt(ebene(r,s,2)) $i=1..20
)
Zum Abschluss werden 14 Ebenen definiert, die alle verschiedenen Lagen repräsentieren.![]()
![]()
- e := ebene(2,r,s),ebene(r,2,s),ebene(r,s,2), // [ 1][ 2][ 3] parallel zu zwei Achsen
ebene(0,r,s),ebene(r,0,s),ebene(r,s,0), // [ 4][ 5][ 6] enthält zwei Achsen
ebene(r,2*r,s),ebene(s,r,2*r),ebene(2*r,s,r), // [ 7][ 8][ 9] enthält eine Achse
ebene(2-2*r,r,s),ebene(s,2-2*r,r),ebene(r,s,2-2*r), // [10][11][12] schneidet zwei Achsen (parallel zur dritten)
ebene(1-2*r,r-s,2+s), // [13] schneidet alle drei Achsen
ebene(r,r+s,s) // [14] schneidet alle drei Achsen in O
:
- zeichne(szene((e[i],Color=[i mod 3,(i+1) mod 3,(i+2) mod 3]) $i=4..6),
szene((e[i],Color=[i mod 3,(i+1) mod 3,(i+2) mod 3]) $i=4..6),
szene((e[i],Color=[i mod 3,(i+1) mod 3,(i+2) mod 3]) $i=7..9),
szene((e[i],Color=[i mod 3,(i+1) mod 3,(i+2) mod 3]) $i=10..12),
szene((e[i],Color=[i mod 3,(i+1) mod 3,(i+2) mod 3]) $i=13..14),
Layout = Tabular, Columns=3,
Height = 80*unit::mm, Width = 180*unit::mm
)