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

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

Beschriftung dreidimensionaler GrafikFormate für Text in Grafik

2.9.14 Fortgeschrittenes Thema: Grafikdarstellung auf elementarer Ebene

Alle Grafik-Funktionen, wie zum Beispiel Show und Plot, haben eine Option DisplayFunction, die angibt, wie die von ihr produzierten Grafik-Objekte tatsächlich angezeigt werden. Das funktioniert so, daß die Einstellung, die Sie für DisplayFunction angegeben haben, automatisch auf jedes erzeugte Grafik-Objekt angewandt wird.

Einstellungen für die Option DisplayFunction

Innerhalb des Mathematica-Kerns wird Grafik immer durch Grafik-Objekte mit Grafik-Primitiven repräsentiert. Wenn Sie jedoch tatsächlich Grafik wiedergeben, muß sie in eine elementare Form konvertiert werden, die von einer Mathematica-Benutzeroberfläche, wie zum Beispiel einer Notebook-Schnittstelle, oder von anderen externen Programmen, verarbeitet werden kann.

Die normale elementare Form, die Mathematica für Grafik benutzt, ist PostScript. Die Mathematica-Funktion Display hat als Argument ein beliebiges Mathematica-Grafik-Objekt und konvertiert es in einen Block PostScript-Code. Es kann dann diesen Code in eine Datei, ein externes Programm oder in einen beliebigen anderen Ausgabestrom senden.

Konvertierung von Mathematica-Grafik in PostScript-Code

Der Vorgabewert der globalen Variable $DisplayFunction ist Function[ Display[$Display, #] ]. Mit dieser Voreinstellung werden Grafik-Objekte, die durch Funktionen wie Show und Plot erzeugt werden, automatisch in PostScript konvertiert und zu einem beliebigen, durch den Wert der globalen Variable $Display beschriebenen Strom geschickt. Die Variable $Display wird typischerweise während der Initialisierung einer Mathematica-Session gesetzt.

Einfügung von wörtlichem PostScript-Code

Mit den normalen zweidimensionalen Mathematica-Grafik-Primitiven können Sie die meisten der Effekte erzeugen, die mit PostScript erhalten werden können. Mitunter mögen Sie es jedoch als nötig erachten, PostScript-Code direkt einzugeben. Sie erreichen dies mit der speziellen zweidimensionalen Grafik-Primitive PostScript.

Die Zeichenketten, die Sie in den PostScript-Primitiven spezifiziert haben, werden wörtlich in den endgültigen, durch Display erzeugten PostScript-Code eingefügt. Sie sollten die PostScript-Primitive mit Sorgfalt benutzen. Es ist zum Beispiel entscheidend, daß Ihr Code den PostScript-Stack wieder in exakt den ursprünglichen Zustand bringt, wenn er abgeschlossen ist. Um Positionen von Objekten angeben zu können, müssen Sie außerdem die Koordinatenskalierung verstanden haben, die Mathematica in seinem PostScript-Output vornimmt. Außerdem können alle von Ihnen eingefügten PostScript-Primitiven nur funktionieren, wenn sie vom abschließenden PostScript-Interpreter, den Sie zur Anzeige Ihrer Grafik benutzen, unterstützt werden.

Die PostScript-Primitive gibt unverarbeiteten PostScript-Code, der eine Bézier-Kurve zeichnet.

In[1]:= Show[Graphics[ {
PostScript[".008 setlinewidth"],
PostScript[".1 .1 moveto"],
PostScript["1.1 .6 -.1 .6 .9 .1 curveto stroke"] },
Frame -> True]]

Out[1]=

In den meisten Fällen erzeugt ein bestimmtes Mathematica-Grafik-Objekt stets PostScript-Code einer bestimmten Form. Bei Graphics3D-Objekten können Sie mit der Option RenderAll zwischen zwei verschiedenen Formen wählen.

Die Hauptfrage ist, wie die Polygone, die dreidimensionale Objekte formen, wiedergegeben werden sollen. Mit der Voreinstellung RenderAll -> True werden alle von Ihnen spezifizierten Polygone vollständig gezeichnet, aber die hinteren zuerst. Wenn die Polygone alle gezeichnet sind, sind nur die vorderen sichtbar. Während ein Objekt auf dem Bildschirm gezeichnet wird, können Sie jedoch in der Regel die Polygone sehen, die sich im Inneren befinden.

Das Problem bei diesem Ansatz: Für ein Objekt mit vielen Schichten kann es im großen Umfang zur Erzeugung von überflüssigem PostScript-Code kommen, der zu Polygonen gehört, die im endgültigen Bild nicht sichtbar sind. Dies können Sie mit der Einstellung RenderAll -> False eventuell umgehen. In diesem Fall berechnet Mathematica exakt, welche Polygone oder Teile von Polygonen tatsächlich in Ihrem endgültigen Bild sichtbar sein werden, und gibt nur diese wieder. Solange es nur recht wenige Überschneidungen zwischen Polygonen gibt, wird dieser möglicherweise viel langsamere Ansatz in der Regel zu weniger PostScript-Code führen.

Eine Option für die Wiedergabe dreidimensionaler Bilder

Wenn Sie eine PostScript-Darstellung eines dreidimensionalen Objektes erzeugen, verlieren Sie alle Informationen über die Tiefen der Objektteile. Möglicherweise möchten Sie manchmal eine Darstellung, die Informationen über die Tiefe enthält, an externe Programme schicken. Oftmals ist dann das ursprüngliche Graphics3D-Objekt in Mathematica-Form die geeignete Repräsentation. Aber einige externe Programme können nicht mit sich schneidenden Polygonen umgehen. Dafür gibt es in Graphics3D die Option PolygonIntersections. Wenn Sie PolygonIntersections -> False setzen, wird Ihnen Show nicht Ihr ursprüngliches Graphics3D-Objekt zurückgeben, sondern stattdessen eines, in dem sich schneidende Polygone in disjunkte Stücke zerlegt wurden, mindestens mit der Einstellung für ViewPoint usw., die Sie gegeben haben.

Beschriftung dreidimensionaler GrafikFormate für Text in Grafik