>-----Original Message-----
>From: Roland K [mailto:roland_k76@XXXXXXX.de]
>Sent: Thursday, July 10, 2003 8:02 AM
>To: dmug@XXXXXXX.ch
>Subject: 2 Graphics3D-Objekte zusammen mit verschiedenen
>Farben in einer
>Grafik darstellen
>
>
>Hallo,
>ich möchte zwei Graphics3D Objecte (Zylinder und
>Kugel), die beide mit dem Befehl "InequalityPlot3D"
>erstellt wurden zusammen in einer Grafik mit "Show"
>darstellen. Das ist prinzipiell auch möglich,
>allerdings soll der Zylinder rot und die Kugel blau
>eingefärbt werden. Auch das ist für jede Darstellung
>alleine möglich. Wenn man aber beide mit dem Befehl
>"Show" kombiniert, erhalten beide Körper die
>identische Einfärbung. Weiß jemand, wie man den roten
>Zylinder und eine blaue Kugel zusammen in einer Grafik
>darstellen kann?
>
>Vielen Dank
>
>Roland Krivachy
>
>P.S. Hier die Befehle in Mathematica4.2:
>
><< Graphics`InequalityGraphics`
><< Graphics`Graphics3D`
>zylinder = InequalityPlot3D[((x - y)^2 + (y - z)^2 +
>(z - x)^2 < 1 ), {x, -2,
> 2}, {y, -2, 2}, {z, -2, 2}, AmbientLight
>-> RGBColor[1, 0, 0]];
>kugel = InequalityPlot3D[ (x^2 + y^2 + z^2 < 1 ), {
> x, -2, 2}, {y, -2, 2}, {z, -2, 2}, AmbientLight
>-> RGBColor[0, 0, 1]];
>Show[zylinder, kugel];
>
Roland,
ich kann dir keine perfekte Lösung anbieten, aber vieleicht etwas, mit dem
du leben kannst.
Zunächst: dein Versuch kann so nicht funktionieren, da du die Einfärbungen
der Objekte mit AmbientLight vornehmen wolltest. AmbientLight ist aber eine
Option für Show, bezieht sich auf die Graphik insgesammt, wenn du nichts
anders spezifizierst, wird die Option aus dem ersten Graphischen Objekt
genommen.
(1) Es ist allerdings möglich, die Beleuchtungen in das Graphische Objekt
hineinzuziehen, das geht mit der Option PolygonIntersections -> False. also:
z0 = InequalityPlot3D[((x - y)^2 + (y - z)^2 + (z - x)^2 < 1),
{x, -2, 2}, {y, -2, 2}, {z, -2, 2}]
k0 = InequalityPlot3D[(x^2 + y^2 + z^2 < 1),
{x, -2, 2}, {y, -2, 2}, {z, -2, 2}]
Jetzt
z4 = Show[z0, PolygonIntersections -> False,
AmbientLight -> RGBColor[1, 0, 0]]
k4 = Show[k0, PolygonIntersections -> False,
AmbientLight -> RGBColor[0, 0, 1]]
(das sind nur Konversionen, tatsächlich wird noch nichts gezeigt, aber
jetzt)
Show[z4, k4, Lighting -> False]
(Lighting -> False ist wichtig!)
Dummerweise ist die Sache von ein paar Fehlermeldungen bekleidet, die m.E.
von Bugs aus dem Graphischen System vom Mathematica kommen; man könnte dies
durch Nacharbeiten an z4, k4 vermeiden; oder wenn's dich stört, schalte die
Meldungen ab.
Methode (2), färbe die Oberflächen ein:
Da ich nicht weiß, wie man das in InequalityGraphics3D direkt macht (ich
nehem an es geht nicht), tu' ich's hinterher:
z3 = Insert[z0, FaceForm[RGBColor[1, 0, 0], GrayLevel[0.5]], {1, 1}]
k3 = Insert[k0, FaceForm[RGBColor[0, 0, 1], GrayLevel[0.5]], {1, 1}]
Show[z3, k3, Lighting -> False]
(Jetzt hast aber du keinen Beleuchtungs-Effekt mehr, aber schön eingefärbte
Objekte)
(3) besser!
Eben fällt mir ein, daß es mit SurfaceColor hübscher geht:
k5 = Insert[k0, SurfaceColor[RGBColor[0, 0, 1]], {1, 1}]
z5 = Insert[z0, SurfaceColor[RGBColor[1, 0, 0]], {1, 1}]
Show[k5, z5, AmbientLight -> GrayLevel[.2]]
(das AmbientLight habe ich am Schluß nur zugefügt, damit das Resultat nicht
so düster aussieht; wenn du die Körper nicht so knallig einfärbst, ist das
nicht nötig, und es sieht noch besser aus: ausprobieren!)
--
Hartmut Wolf