Hallo liebe LaTeX-Freunde, ich möchte das tun was im Titel gefragt. Wie folgt sieht mein Minimalbsp. aus: Open in Online-Editor
\documentclass[margin=2mm,tikz]{standalone} \usepackage{tikz} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis} \addplot3[domain=-1:1, samples=20,y domain=0:1, opacity=.5, colormap= {redblack}{color=(gray) color=(red)}, surf, shader=interp ] ({(tan(deg(.05*pi))/(sqrt(2)-tan(deg(.05*pi))))*x-(tan(deg(.05*pi))/(sqrt(2)-tan(deg(.05*pi))))*y} , {x}, {y}); \addplot3[domain=-1:1, samples=20,y domain=0:1, opacity=.5, colormap= {redblack}{color=(gray) color=(green)}, surf, shader=interp ] ({x}, {(tan(deg(.05*pi))/(sqrt(2)-tan(deg(.05*pi))))*x-(tan(deg(.05*pi))/(sqrt(2)-tan(deg(.05*pi))))*y} , {y}); \end{axis} \end{tikzpicture} \end{document} Sprich ich würde gerne die Schnitt-Gerade der zwei geplotteten Ebenen-Ausschnitte plotten. Kennt jemand hierfür irgend ein Paket oder Trick? gefragt 20 Apr '15, 13:05 Ross |
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} Im Prinzip kannst Du auch pgfplots automatisch die Sortierung machen lassen, entweder mit patch plots oder beantwortet 27 Apr '19, 03:20 Community Aha, das geht also doch mit pgfplots. Kann man auch auf die Ebenen so ein (dezentes) Gitter legen wie bei pstricks?
(27 Apr '19, 11:41)
cis
@cis Hast Du Dir die Schnittlinie in der pstricks Antwort genau angeschaut? Das "dezente Gitter" ist ein Trick. Aber wenn Deine Frage ist, ob man ein Gitter über die Ebenen legen kann, ist die Antwort natürlich ja. Eine Möglichkeit ist, alle
(27 Apr '19, 16:53)
Community
|
Meinst du so etwas? (mit Open in Online-Editor
\documentclass[margin=2mm,pstricks]{standalone} \usepackage{pst-solides3d} \begin{document} \begin{pspicture}[solidmemory](-3,-3)(1,5) \psset{viewpoint=20 150 40 rtp2xyz,Decran=15,lightsrc=-10 15 10,action=none} \defFunction[algebraic]{funcA}(x,y) {(tan(.05*pi)/(sqrt(2)-tan(.05*pi)))*x-(tan(.05*pi)/(sqrt(2)-tan(.05*pi)))*y} {x} {y} \psSolid[object=surfaceparametree,linecolor={[cmyk]{1,0,1,0.5}}, base=-1 pi pi neg 5 pi mul 3 div, fillcolor=yellow!50,incolor=green!30, function=funcA,linewidth=0.1\pslinewidth,ngrid=30,name=A]% \defFunction[algebraic]{funcB}(x,y) {x} {(tan(.05*pi)/(sqrt(2)-tan(.05*pi)))*x-(tan(.05*pi)/(sqrt(2)-tan(.05*pi)))*y} {y} \psSolid[object=surfaceparametree,linecolor={[cmyk]{1,0,1,0.5}}, base=-1 pi pi neg 5 pi mul 3 div, fillcolor=cyan!50,incolor=magenta!30, function=funcB,linewidth=0.1\pslinewidth,ngrid=30,name=B]% \psSolid[object=fusion,base=A B,action=draw**] \end{pspicture} \end{document} beantwortet 31 Jul '15, 21:21 Herbert |