使用 PGFPlots 绘制圆柱体和球体

使用 PGFPlots 绘制圆柱体和球体

我想要一个半径为 1、高度为 1 的圆柱体,其中心位于 xy 平面上方的原点,以及一个以原点为中心、半径为 sqrt(2) 的球体部分,覆盖圆柱体。

圆柱体顶部的球体

这就是我所做的

\documentclass[tikz,border=3mm]{standalone} 
\usepackage{pgfplots}

\begin{document} 
\begin{tikzpicture}
    \begin{axis}[
    axis lines=middle,
    view={340}{25},
    domain=0:5,
    y domain=0:2*pi,
    xmin=-1.5, xmax=1.5,
    ymin=-1.5, ymax=1.5,
    zmin=0.0,
    samples=30,
    xlabel=$x$,
    ylabel=$y$,
    zlabel={$z$},
    ]
    \addplot3 [surf, z buffer=sort, opacity=0.6] 
           ({cos(deg(y))},{sin(deg(y))},{x});
    \end{axis} 
\end{tikzpicture}
\end{document}

答案1

这为您提供了绘图的可能参数化。所以这是一个开始。

\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[point meta max=1]
 \addplot3[surf,shader=flat,samples=2,samples y=37,
    domain=0:1,domain y=0:360,z buffer=sort,
    point meta=0,opacity=0.5] ({cos(y)},{sin(y)},x);
 \addplot3[surf,shader=interp,samples=15,samples y=37,
    domain=45:90,domain y=0:360,z buffer=sort,
    point meta=0.5] ({sqrt(2)*cos(y)*cos(x)},
        {sqrt(2)*sin(y)*cos(x)},{sqrt(2)*sin(x)});
\end{axis}
\end{tikzpicture}
\end{document}

答案2

刚刚收到!

\documentclass{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.9, colormap/blackwhite}

\begin{document} 
\begin{tikzpicture}
    \begin{axis}[
    axis equal,
    axis lines=middle,
    view={110}{25},
    domain=0:5,
    y domain=0:2*pi,
    xmin=-1.5, xmax=1.5,
    ymin=-1.5, ymax=1.5,
    zmin=0.0, zmax=1.9,
    samples=35,
    xlabel=$x$,
    ylabel=$y$,
    zlabel={$z$},
    ]
    \addplot3 [surf, z buffer=sort, opacity=0.6, domain=0:1, color=black!90] 
           ({cos(deg(y))},{sin(deg(y))},{x});
    \addplot3[surf,domain=45:90,domain y=0:360,z buffer=sort, opacity=0.6, color=black!50] ({sqrt(2)*cos(y)*cos(x)},
        {sqrt(2)*sin(y)*cos(x)},{sqrt(2)*sin(x)});
    \end{axis} 
\end{tikzpicture}
\end{document}

谢谢@abcdefg

相关内容