________________________________________________________________________________
Inhalt....: Darstellung einiger 3D Körper
Kategorie.: Grafik
Mathematik: Grafik
MuPAD.....: 3.1.1
Datum.....: 2005-04-04
Autoren...: Kai Gehrs <acrowley@mupad.de>
Funktionen: plot, plot::Box, plot::Cone, plot::Cylinder, plot::Hexahedron
Funktionen: plot::Tetrahedron, plot::Octahedron, plot::Icosahedron
Funktionen: plot::Dodecahedron, plot::Tetrahedron, plot::ClippingBox
Funktionen: BackgroundStyle, TopBottom, Width, Height, Axes, Frame
Funktionen: plot::Transform3d
________________________________________________________________________________
Darstellung einiger 3D Körper
Dieses Arbeitsblatt demonstriert den Einsatz von MuPAD Grafikfunktionen und Grafikoptionen
anhand eines Beispiels.
Wir stellen in diesem Arbeitsblatt eine Reihe von 3D-Körpern vor, die so direkt in MuPAD
verfügbar sind.
Mit Hilfe von plot::Box lassen sich Würfel und ganz allgemein Quader in 3D darstellen.
Wir zeichnen zwei Quader, von denen nur der zweite farbig gefüllt wird. Die Quader werden
durch die Angabe von drei Koordinatenbereichen x1..x2, y1..y2, z1..z2 bestimmt.
plot(plot::Box(-3..-1, 0..2, 0..1,
FillColor = RGB::Red),
plot::Box(1..3, 0..2, 0..1, Filled = FALSE,
LineColor = RGB::Black),
Axes = None, Scaling = Constrained,
Width = 170, Height = 80,
BackgroundStyle = TopBottom):

Kantenlänge und Position des Quaders lassen sich natürlich auch wieder animieren. Mit Hilfe
der Funktion plot::Transform3d lässt sich ein Quader in einen allgemeinen Parallelepiped
überführen. Die Transformation wird durch einen Vektor b und eine Matrix A bestimmt, so dass
beliebige Punkte x auf dem Quader in die neuen Punkte A*x + b überführt werden. Wir wenden
eine solche Tranformation auf den Einheitswürfel an und zeichnen sowohl den Würfel selbst
als auch das daraus entstandene Parallelepiped.
b:= matrix([0,0,0]);
A:= matrix([[1,1,0],[1,1,3],[0,3,1]])


Einheitswuerfel:= plot::Box(0..1, 0..1, 0..1):
plot(Einheitswuerfel,
plot::Transform3d(b, A, Einheitswuerfel),
Scaling = Constrained,
Width = 170, Height = 100,
BackgroundStyle = TopBottom):

Die Funktion plot::Cone erlaubt das zeichnen von Kegeln: Wir zeichnen einen Kegel mit
Radius r = 6. Der Mittelpunkt des Grundkreises befindet sich im Koordinatenursprung,
die Spitze im Punkt (0 | 0 | 10):
plot(plot::Cone(6, [0, 0, 0], [0, 0, 10]),
Axes = None, Scaling = Constrained,
Width = 170, Height = 100,
BackgroundStyle = TopBottom):

Durch die Angabe eines zweiten Radius (für das obere "Ende" des Kegels) zeichnen wir einen
Kegelstumpf. Es werden keine abschließenden Kreisscheiben gezeichnet, man kann also durch
den Stumpf hindurchschauen:
RadiusUnten := 16:
RadiusOben := 7:
ZentrumUnten:= [ 3, 4, 5]:
ZentrumOben := [11, 12, 13]:
plot(plot::Cone(RadiusUnten, ZentrumUnten,
RadiusOben, ZentrumOben,
FillColor = RGB::DarkGray),
Axes = None, Scaling = Constrained,
Width = 170, Height = 100,
BackgroundStyle = TopBottom):

Die offene Grund- und Stumpffläche können aber leicht geschlossen werden, indem man
an entsprechende Stelle einfach einen 3D-Kreis zeichnet (siehe aich die Hilfeseite von
plot::Circle3d).
Stimmen der Radius der Basis und der Radius der oberen Grundfläche überein, so lässt sich
mit Hilfe von plot::Cone auch ein Zylinder zeichnen:
plot(plot::Cone(RadiusUnten, ZentrumUnten,
RadiusUnten, ZentrumOben,
FillColor = RGB::DarkGray),
Axes = None, Scaling = Constrained,
Width = 170, Height = 100,
BackgroundStyle = TopBottom):

Der obige Zylinder kann natürlich auch mit Hilfe der Funktion plot::Cylinder gezeichnet
werden. Dann sind allerdings die obere und die untere Grundfläche geschlossen. Der Zylinder
wird über Angabe der Mittelpunkte der kreisförmigen Grundflächen sowie seinen Radius fest-
gelegt:
plot(plot::Cylinder(RadiusUnten,
ZentrumUnten, ZentrumOben,
FillColor = RGB::DarkGray),
Axes = None, Scaling = Constrained,
Width = 170, Height = 100,
BackgroundStyle = TopBottom):

Die fünf Platonischen Körper (Tetraeder, Hexaeder, Octaeder, Dodecaeder und Icosaeder) sind
ebenfalls in MuPAD direkt verfügbar. Sie werden entweder über die Angabe des Mittelpunktes
des Körpers oder auch durch zusätzliche Angabe eines Radius bestimmt:
plot(plot::Hexahedron (Center = [0, 0, 0]),
plot::Tetrahedron (Center = [3, 0, 0]),
plot::Octahedron (Center = [6, 0, 0]),
plot::Icosahedron (Center = [9, 0, 0]),
plot::Dodecahedron(Center = [12, 0, 0]),
Axes = Frame,
Width = 170, Height = 100,
BackgroundStyle = TopBottom):

plot(plot::Hexahedron (Radius = 1, Center = [0, 0, 0]),
plot::Tetrahedron (Radius = 2, Center = [4, 0, 0]),
plot::Octahedron (Radius = 3, Center = [10, 0, 0]),
plot::Icosahedron (Radius = 4, Center = [20, 0, 0]),
plot::Dodecahedron(Radius = 5, Center = [35, 0, 0]),
Axes = Frame,
Width = 170, Height = 100,
BackgroundStyle = TopBottom):

Alle 3D-Körper, deren Seitenflächen sich aus Dreiecken und/oder Vierecken konstruieren lassen,
können -bei Kenntnis Ihrer Eckpunkte ihrer Beziehung zu einander- mit Hilfe der MuPAD Funktion
plot::SurfaceSet darstellt werden. Ein Beispiel hierzu befindet sich in dem Arbeitsblatt
"Cuboctahedron", in dem der gleichnamige Archimedische Körper entsprechend konstruiert
wird.
________________________________________________________________________________
Anmerkungen:
1. Weitere Anregungen zum Einsatz von MuPAD in der Lehre finden Sie auf unserem WebPortal
MuPAD in Schule und Studium unter: http://schule.mupad.de bzw. http://studium.mupad.de.
________________________________________________________________________________