Hallo! Ich kann Ebenen in der Form z = z(x,y) plotten. Aber z.B. die Ebene x = -5 oder der xz-Koordinatenebene y = 0 muss ich wieder als Polygonzug eingeben. Gibt es bei eine Möglichkeit, Funktionen in der Form f(x,y,z) = 0 einzugeben?

Es soll in etwa dieses Bild entstehen, nur mit anderem Koordinatensystem (siehe Minibsp.):

alt text

In folgendem Minimalbeispiel wollte ich den Begrenzungs-Würfel mit einem Trick erzeugen, scheint so nicht zu klappen.

Bei der unteren Ebene z = -5 schaffe auch nicht, die Raster-Linien zu beseitigen.

So weit bin ich:

alt text

Open in Online-Editor
\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}[
declare function = {
Z1(\x,\y) = -5;
Z2(\x,\y) = -x-y;
}]
\begin{axis}[grid,
x={(-0.7071cm,-0.7071cm)},    
y={(1cm,0.0cm)}, 
z={(0cm,1cm)},
axis lines=center,
font=\footnotesize,
xmax=5.4,ymax=5.4,zmax=5.4,
xmin=-5.4,ymin=-5.4,zmin=-5.4,
xlabel=\normalsize$x$,ylabel=\normalsize$y$,zlabel=\normalsize$z$,
major tick style = {black},
minor tick num=1, minor tick style = {very thin},
axis line style = {-latex}, %Pfeilspitzen
%enlargelimits=0.1,% relatives Verlängern der Achsen
]

% Ebene z = -5
\addplot3 [color=red, surf, semitransparent] {Z1(x,y)};

% Ebene z = -x-y
%\addplot3 [surf] {Z2(x,y)};

% xz-Koordinatenebene y=0
\addplot3[fill=blue, semitransparent]coordinates{(4,0,-4) (-4,0,-4) (-4,0,4) (4,0,4)(4,0,-4)};

%Würfel
\addplot3[only marks,mark=cube,mark size=5cm, semitransparent] coordinates {(0,0,0)} ;

% Weitere Raumflächen
%\addplot3[
%opacity=0.3,
%surf,
%shader=flat,
%samples=50,
%domain=-2:2,y domain=-2:2] 
%{exp(-(x^2+y^2))};
\end{axis}
\end{tikzpicture}
\end{document}

gefragt 04 Aug '15, 13:46

cis's gravatar image

cis
9.5k75452491
Akzeptiert-Rate: 29%

bearbeitet 04 Aug '15, 16:03

color=red macht bei \addplot3 gar nichts, ich vermute, du willst colormap=… haben. Übrigens ist f(x,y,z) = 0 keine Ebene sondern nur ein Punkt im Ursprung.

(04 Aug '15, 21:39) Henri

Lass es mit xelatex oder latex->dvips->ps2pdf laufen oder öffne es in online-editor. Wenn du keine Linien haben willst, dann entkommentiere die grid Option:

Open in Online-Editor
\documentclass[margin=2mm,pstricks]{standalone}
\usepackage{pst-solides3d}

\begin{document}
\begin{pspicture}[solidmemory](-3,-3)(5,5)
\psset{viewpoint=30 30 40 rtp2xyz,Decran=15,lightsrc=viewpoint,action=none,linewidth=0.1pt,
  %grid%% falls keine Linien gezeichnet werden sollen
  }
\defFunction[algebraic]{funcA}(x,y)
    {-5}
    {x}
    {y}
\psSolid[object=surfaceparametree,
     base=-5 5 -5 5,fillcolor=yellow,function=funcA,ngrid=30,name=A]%
\defFunction[algebraic]{funcB}(x,y) 
    {x}
    {0}
    {y}
\psSolid[object=surfaceparametree,
    base=-8 3 -5 5,fillcolor=cyan,function=funcB,ngrid=30,name=B]%
\defFunction[algebraic]{funcC}(x,y) 
    {x}
    {y}
    {0}
\psSolid[object=surfaceparametree,
    base=-8 3 -5 5,fillcolor=blue,function=funcC,ngrid=30,name=C]%
\psSolid[object=fusion,base=A B C,action=draw**]  
\axesIIID(3,5,5)(7,8,10)
\end{pspicture}

\end{document}

alt text

Permanenter link

beantwortet 05 Aug '15, 08:50

Herbert's gravatar image

Herbert
5.1k34
Akzeptiert-Rate: 31%

bearbeitet 05 Aug '15, 11:54

Man kann Ebenen in pgfplots auch parametrisch plotten. Im Falle von z = –5 geht das mittels

Open in Online-Editor
\addplot3 (x,y,-5);

Die Rasterlinien lassen durch Nutzen eines anderen Shaders entfernen, nämlich

Open in Online-Editor
\addplot3[surf,shader=interp] (x,y,-5);

Allerdings wirst du bei deinem Problem auf eine inhärente Limitierung von pgfplots stoßen und zwar, dass Ebenen immer übereinander gelegt werden und nicht ihrer tatsächlichen Hierarchie entsprechend dargestellt werden.

Permanenter link

beantwortet 04 Aug '15, 21:36

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Danke für die AW. Kann ich auch die Farbe selbst festlegen?

\addplot3[surf, color=red, shader=interp, semitransparent] (x,y,-5);

wird nicht angenommen.

(04 Aug '15, 22:31) cis

Mir ist noch aufgefallen:

Bei der Seitenrißkoordinatenbene stört er sich an dem z:

\addplot3[surf, color=red, shader=interp, semitransparent] (0,y,z);

Mmmmhhh.... Wie geht das?

(04 Aug '15, 22:35) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×296

gestellte Frage: 04 Aug '15, 13:46

Frage wurde gesehen: 9,226 Mal

zuletzt geändert: 05 Aug '15, 11:54