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 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.