Here I fill the space below the function z = x^2+y^2 to get a solid object. I did it by:
- Plotting the curves at the edges, for x=0 and y=0
- Plotting the bottom edges
- Naming the paths above using name path
- Using the fillbetween library to fill the space between top boundary curves and the bottom edges
- Defining a pgf layer for the background and plotting the original surface z = x^2+y^2 on it, so the boundary areas on the main layer hide parts of the function
- Shading the boundary areas improve the 3D look
My oringinal post on TeXwelt.de: http://texwelt.de/wissen/fragen/8690/
Edit and compile if you like:
\documentclass[border=15pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps,fillbetween}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\pgfdeclarelayer{pre main}
\pgfsetlayers{pre main,main}
\begin{axis}[
hide axis,
domain = -4:4,
zmax = 12,
colormap/bone
]
\begin{pgfonlayer}{pre main}
\addplot3 [surf] {(x^2+y^2)/4};
\end{pgfonlayer}
\addplot3 [name path = xline, draw = none] (x,-4,0);
\addplot3 [name path = yline, draw = none] (4,y,0);
\addplot3 [name path = xcurve, y domain = 0:0, draw = none]
(x, -4, {(x^2+16)/4});
\addplot3 [name path = ycurve, y domain = 0:0, draw = none]
(4, x, {(16+x^2)/4});
\addplot [left color = black, right color = black!50, draw = none]
fill between[of = xcurve and xline];
\addplot [left color = black!50, right color = black, draw = none]
fill between[of = yline and ycurve, reverse = true];
\end{axis}
\end{tikzpicture}
\end{document}
Click to download: fill-space-3d.tex • fill-space-3d.pdf
See also: Original Source by Stefan Kottwitz
Note: The copyright belongs to the blog author and the blog. For the license, please see the linked original source blog.
Leave a Reply
You must be logged in to post a comment.