Quantcast
Channel: Antworten auf: Wie plotte ich den Schnitt zweier Ebenen im 3D Raum?
Viewing all articles
Browse latest Browse all 2

Antwort von Community

$
0
0

Wenn Du diesen länglichen Ausdruck in die Definition einer Funktion absorbierst, ist es recht einfach. Du musst nur den Teil hinter der grünen Ebene zuerst zeichnen, dann die grüne Ebene und dann den Rest.

Öffne in Overleaf
\documentclass[margin=2mm,tikz]{standalone}\usepackage{tikz}\usepackage{pgfplots}\pgfplotsset{compat=1.16}\begin{document}\begin{tikzpicture}[declare function={f(\x,\y)=(tan(deg(.05*pi))/(sqrt(2)-tan(deg(.05*pi))))*\x-(tan(deg(.05*pi))/(sqrt(2)-tan(deg(.05*pi))))*\y;}]
 \begin{axis}\begin{scope}\clip (0,{0},{0}) -- ({f(0,1)},{f(0,1)} ,{1}) -- 
  ({f(1,1)},{1} ,{1}) -- ({f(1,0)},{1} ,{0});
  \addplot3[domain=-1:1, samples=20,y domain=0:1, opacity=.5, colormap=
  {redblack}{color=(gray) color=(red)}, surf, shader=interp]
  ({f(x,y)} ,{x},{y});
 \end{scope}\addplot3[domain=-1:1, samples=20,y domain=0:1, opacity=.5, colormap=
 {redblack}{color=(gray) color=(green)}, surf, shader=interp]
 ({x},{f(x,y)},{y});

 \begin{scope}\clip (0,{0},{0}) -- ({f(0,1)},{f(0,1)} ,{1}) -- 
  ({f(-1,1)},{-1} ,{1}) -- ({f(-1,0)},{-1} ,{0});
  \addplot3[domain=-1:1, samples=20,y domain=0:1, opacity=.5, colormap=
  {redblack}{color=(gray) color=(red)}, surf, shader=interp]
  ({f(x,y)} ,{x},{y});
 \end{scope}\end{axis}\end{tikzpicture}\end{document}

alt text

Im Prinzip kannst Du auch pgfplots automatisch die Sortierung machen lassen, entweder mit patch plots oder restrict expression to domain. Allerdings bekommst Du dann Klötzchen so wie in der PSTricks Antwort ausser Du bestimmst die Schnittmenge analytisch, was aber dann im Wesentlichen auf das Selbe rausläuft.


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images