Guten Abend Reinhard,
Ihr unteres Bild ist ein ContourPlot. In einem 3D Plot können Sie einen
ContourPlot mit ShadowPlot aus dem Graphics3D Paket einfüen.
Bezüglich der Aufgabe, in einen Plot3D-Bild z-Niveaulinien
einzuzeichnen, sollten Sie einmal MathSource absuchen. Wenn Sie es
eigenhändig tätigen wollen, dann empfiehlt sich auf die Schnelle folgendes:
(1) Plot3D mit Mesh -> False
(2) die Niveaulinien aus einem Gatter von ImplicitPlots herausholen
(3) alles zusammen zeichnen, mit anderen Worten,
In[136]:=
Needs["Graphics`ImplicitPlot`"];
Clear[schlosserLevelsHomeMade];
schlosserLevelsHomeMade[f_, x_, y_, xMin_, xMax_, yMin_, yMax_, z_List,
opts___] :=
(* expecting f as f[x, y] in {xMin, xMax} x {yMin, yMax}; want to plot
levels at values from z in the list *)
Module[{lines, l0, g3D},
If[FreeQ[f, x] || FreeQ[f, y],
Print["Function f independent from x,y."];
Return[$Failed]
];
g3D = Plot3D[f, {x, xMin, xMax}, {y, yMin, yMax}, opts,
Mesh -> False, DisplayFunction -> Identity];
lines = {};
(* ugly, i.e. procedural *)
For[o = 1, o <= Length[z], o++,
lines = Append[lines, Part[First[Graphics[ImplicitPlot[f == z[[o]],
{x, xMin, xMax}, {y, yMin, yMax},
DisplayFunction -> Identity, opts]]], All, 3] /. {p_?NumberQ,
q_?NumberQ} -> {p, q, z[[o]]}
]
];
Show[{g3D, Graphics3D[{AbsoluteThickness[1], lines}]}, DisplayFunction
-> $DisplayFunction]
] /; Length[z] > 0
In[147]:=
schlosserLevelsHomeMade[Sin[x y] Cos[x + y], x, y, -Pi, Pi, -Pi, Pi,
Range[-0.9, 0.9, 0.1], PlotPoints -> 83]
gibt das Bildchen im Anhang. Problem ist, dass die Polygone von g3D
zuzeiten die lines verdecken, weil die Polygone und die lines unabhängig
voneinander diskretisiert sind. Andererseits braucht man die Polynome
gerade wg. ihrer Verdeckungsanalyse: Ohne die Polygone sieht man ein
sinnloses Gewirr von Niveaulinien. Bevor man hier Verbesserungen
anbringt, ist die Suche auf MathSource angebracht, denn solche
Darstellungsaufgaben sind mglw. grundlegend in der Welt des technischen
Zeichnens.
Gruss
Udo.
reinhard schlosser wrote:
Liebe Liste,
ich möchte den Graph einer reellwertigen Funktion von zwei
Veränderlichen zeichen.
Z. B. z = f(x,y) = (x2 + 3 y2) exp(1 - (x2 + y2)).
Verwende ich Plot3D, dann wird der Graph durch ein Netz von partiellen
Funktionen dargestellt.
Wie kann ich statt dieses Netzes mit Plot3D oder Ähnliches eine Schar
von 3D-Niveaukurven darstellen lassen?
Zusätzlich sollten diese Niveaukurven noch in eine Ebene z = const der
3D-Darstellung projeziert werden.
Im Anhang ist graphisch dargestellt, was ich gerne hätte.
Vielen Dank im voraus für Eure Hilfe.