This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Die Struktur von Grafik und Ton /

Dreidimensionale GrafikanweisungenZeichnen dreidimensionaler Oberflächen

2.9.10 Koordinatensysteme für dreidimensionale Grafik

Immer wenn Mathematica ein dreidimensionales Objekt zeichnet, stellt es einen quaderförmigen Kasten um das Objekt auf. Mit der Options-Voreinstellung Boxed -> True zeichnet Mathematica dann die Kanten dieses Kastens explizit. Aber im allgemeinen schneidet Mathematica automatisch alle Teile Ihres Objekts ab, die sich außerhalb des quaderförmigen Kastens befinden.

Die Option PlotRange gibt den Bereich der -, - und -Koordinaten an, den Mathematica in den Kasten aufnehmen soll. Wie in zwei Dimensionen ist die Voreinstellung PlotRange -> Automatic, unter der Mathematica einen internen Algorithmus einsetzt, um zu versuchen, die „interessanten Teile" in das Diagramm einzubeziehen, die außenliegenden Teile aber wegzulassen. Mit PlotRange -> All erfaßt Mathematica alle Teile.

Dies lädt ein Paket, das diverse Polyeder definiert.

In[1]:= <<Graphics`Polyhedra`

Dies erzeugt ein sternförmiges Ikosaeder.

In[2]:= stel = Stellate[Icosahedron[ ]] ;

Hier wird das sternförmige Ikosaeder in einem Kasten gezeichnet.

In[3]:= Show[Graphics3D[stel], Axes -> True]

Out[3]=

Bei dieser Einstellung für PlotRange liegen viele Teile des sternförmigen Ikosaeders außerhalb des Kastens und werden abgeschnitten.

In[4]:= Show[%, PlotRange -> {-1, 1}]

Out[4]=

Weitgehend so wie in zwei Dimensionen können Sie entweder „ursprüngliche" oder „skalierte" Koordinaten zur Angabe der Positionen der Elemente in dreidimensionalen Objekten verwenden. Skalierte Koordinaten, spezifiziert als Scaled[sx, sy, sz], laufen in jeder Dimension von 0 bis 1. Die Koordinaten definieren am Kasten ein rechtshändiges Koordinatensystem.

Koordinatensysteme für dreidimensionale Objekte

Dies stellt einen Quader in eine Ecke des Kastens.

In[5]:= Show[Graphics3D[{stel,
Cuboid[Scaled[{0, 0, 0}],
Scaled[{0.2, 0.2, 0.2}]]}]]

Out[5]=

Sobald Sie angegeben haben, wo mehrere grafische Elemente innerhalb eines dreidimensionalen Kastens plaziert werden sollen, müssen Sie Mathematica mitteilen, wie der Kasten zu zeichnen ist. Im ersten Schritt ist zu spezifizieren, welche Gestalt der Kasten haben soll. Dies entspricht der Spezifikation des Bildseitenverhältnisses bei zweidimensionalen Diagrammen. In drei Dimensionen können Sie mit der Option BoxRatios das Verhältnis der Seitenlängen für den Kasten spezifizieren. Für Graphics3D-Objekte ist die Vorgabe BoxRatios -> Automatic; sie gibt an, daß die Gestalt des Kastens durch den Bereich der tatsächlich für seinen Inhalt verwendeten Koordinaten festgelegt sein soll.

Spezifikation der Gestalt des Rahmens für dreidimensionale Objekte

Dies zeigt das sternförmige Ikosaeder in einem langen Kasten.

In[6]:= Show[Graphics3D[stel], BoxRatios -> {1, 1, 5}]

Out[6]=

Um ein Bild eines dreidimensionalen Objektes zu erzeugen, müssen Sie Mathematica mitteilen, von welchem Augpunkt Sie auf das Objekt schauen wollen. Dies erreichen Sie mit der Option ViewPoint.

Einige häufige Einstellungen für diese Option werden im Abschnitt 1.9.7 angegeben. Im allgemeinen können Sie jedoch Mathematica jeden beliebigen Augpunkt mitteilen, solange er nur außerhalb des Kastens liegt.

Augpunkte werden in der Form ViewPoint -> sx, sy, sz angegeben. Die Werte si werden in einem speziellen Koordinatensystem angegeben, in dem das Zentrum des Kastens in {0, 0, 0} liegt. Die speziellen Koordinaten sind so skaliert, daß die längste Seite des Kastens einer Einheit entspricht. Die Längen der anderen Kastenseiten in diesem Koordinatensystem werden durch die Einstellungen für die Option BoxRatios festgelegt. Bei einem würfelförmigen Kasten variiert deshalb jede der speziellen Koordinaten im Bereich des Kastens zwischen und . Beachten Sie, daß der Augpunkt stets außerhalb des Kastens liegen muß.

Dies erzeugt ein Bild unter Benutzung des Vorgabe-Augpunktes {1.3, -2.4, 2}.

In[7]:= surf = Plot3D[(2 + Sin[x]) Cos[2 y],
{x, -2, 2}, {y, -3, 3},
AxesLabel -> {"x", "y", "z"}]

Out[7]=

Dies erhalten Sie mit einem Augpunkt, der sich in der Nähe einer der Ecken des Kastens befindet.

In[8]:= Show[surf, ViewPoint -> {1.2, 1.2, 1.2}]

Out[8]=

Sowie Sie sich vom Kasten wegbewegen, wird der perspektivische Effekt entsprechend kleiner.

In[9]:= Show[surf, ViewPoint -> {5, 5, 5}]

Out[9]=

Spezifikation der Position und Orientierung dreidimensionaler Objekte

Um ein Bild eines dreidimensionalen Objektes zu erstellen, müssen Sie mehr angeben, als nur von wo Sie auf das Objekt schauen wollen. Sie müssen auch angeben, wie Sie das Objekt in Ihrem endgültigen Bild „einrahmen" wollen. Dies können Sie mit den zusätzlichen Optionen ViewCenter und ViewVertical tun.

Mit ViewCenter können Sie Mathematica mitteilen, welcher Punkt des Objektes im Zentrum Ihres endgültigen Bildes erscheinen soll. Der Punkt wird durch die Angabe seiner skalierten Koordinaten spezifiziert, die in jeder Richtung des Kastens zwischen 0 und 1 variieren. Bei der Einstellung ViewCenter -> {1/2, 1/2, 1/2} wird das Zentrum des Kastens deshalb im Zentrum Ihres endgültigen Bildes erscheinen. Bei vielen Festlegungen des Augpunktes wird der Kasten jedoch nicht symmetrisch erscheinen, so daß diese Einstellung für ViewCenter nicht den ganzen Kasten in der endgültigen Bildfläche zentrieren wird. Dies erreichen Sie mit der Einstellung ViewCenter -> Automatic.

ViewVertical spezifiziert, auf welche Weise das Objekt in Ihrem endgültigen Bild aufgestellt werden soll. Die Einstellung für ViewVertical gibt die Richtung in skalierten Koordinaten an, die im fertigen Bild nach oben zeigt. Mit der Voreinstellung ViewVertical -> {0, 0, 1} zeigt die -Richtung Ihres ursprünglichen Koordinatensystems im endgültigen Bild nach oben.

Mit dieser Einstellung für ViewCenter erscheint eine Ecke des Kastens im Zentrum Ihres Bildes.

In[10]:= Show[surf, ViewCenter -> {1, 1, 1}]

Out[10]=

Diese Einstellung für ViewVertical läßt die -Achse des Kastens in Ihrem Bild senkrecht erscheinen.

In[11]:= Show[surf, ViewVertical -> {1, 0, 0}]

Out[11]=

Wenn Sie die Optionen ViewPoint, ViewCenter und ViewVertical festlegen, können Sie sich das so vorstellen, als wenn Sie angeben, wie Sie auf ein physisches Objekt schauen. ViewPoint gibt an, wo sich Ihr Kopf relativ zum Objekt befindet. ViewCenter gibt an, wohin Sie schauen (das Zentrum Ihres Blickes), und ViewVertical gibt an, welches die Aufwärtsrichtung Ihres Kopfes ist.

In der Sprache der Koordinatensysteme geben Einstellungen für ViewPoint, ViewCenter und ViewVertical an, wie die Koordinaten des dreidimensionalen Kastens in Koordinaten Ihres Bildes in der endgültigen Darstellungsfläche transformiert werden sollen.

Für einige Zwecke ist es nützlich, sich die Koordinaten in der endgültigen Darstellungsfläche als dreidimensional vorzustellen. Die - und -Achsen verlaufen horizontal bzw. vertikal, während die -Achse aus der Papierseite hinauszeigt. Positionen, die in diesem „Anzeige-Koordinatensystem" angegeben werden, bleiben fixiert, wenn Sie ViewPoint und die Einstellungen ändern. Die Positionen der Lichtquellen, die im nächsten Abschnitt beschrieben werden, werden in diesem Anzeige-Koordinatensystem definiert.

Koordinatensysteme für dreidimensionale Grafik

Sobald Sie ein zweidimensionales Bild eines dreidimensionalen Objektes erhalten haben, gibt es noch einige Fragen dazu, wie dieses Bild wiedergegeben werden soll. Diese Fragen sind aber dieselben, die bei zweidimensionaler Grafik auftreten. So können Sie zum Beispiel die endgültige Gestalt Ihres Bildes durch Änderung der Option AspectRatio modifizieren, und durch Einstellung der Option PlotRegion spezifizieren Sie, welches Gebiet Ihrer gesamten Darstellungsfläche Ihr Bild einnehmen soll.

Dies modifiziert das Bildseitenverhältnis des endgültigen Bildes.

In[12]:= Show[surf, Axes -> False, AspectRatio -> 0.3]

Out[12]=

Gewöhnlich skaliert Mathematica die Bilder dreidimensionaler Objekte so, daß sie so groß wie möglich in die von Ihnen vorgegebene Darstellungsfläche eingepaßt werden. Obwohl diese Skalierung zumeist Ihren Wünschen entspricht, so hat dies jedoch zur Folge, daß die Größe, in der ein bestimmtes dreidimensionales Objekt gezeichnet wird, mit der Orientierung des Objektes variieren kann. Um diese Variationen zu vermeiden, können Sie die Option SphericalRegion -> True setzen. Bei dieser Optionssetzung plaziert Mathematica im Grunde eine Kugel um den dreidimensionalen Rahmen und skaliert das endgültige Bild so, daß diese Kugel ganz in die von Ihnen angegebene Darstellungsfläche paßt. Die Kugel hat ihren Mittelpunkt im Zentrum des Rahmens und ist so gezeichnet, daß der Rahmen gerade in sie hineinpaßt.

Dies zeichnet eine längliche Version des Diagramms.

In[13]:= Show[surf, BoxRatios -> {1, 5, 1}]

Out[13]=

Mit SphericalRegion -> True wird das endgültige Bild so skaliert, daß eine Kugel, die um den Rahmen plaziert wird, in die Darstellungsfläche paßt.

In[14]:= Show[%, SphericalRegion -> True]

Out[14]=

Durch die Einstellung SphericalRegion -> True wird die Skalierung eines Objektes konsistent für alle seine Orientierungen. Das ist nützlich, wenn Sie animierte Folgen erzeugen, die ein bestimmtes Objekt in mehreren verschiedenen Orientierungen zeigen.

Ändern der Vergrößerung dreidimensionaler Bilder

Dreidimensionale GrafikanweisungenZeichnen dreidimensionaler Oberflächen