带有 tikz-3dplot 的灰色阴影球体

带有 tikz-3dplot 的灰色阴影球体

如何用 绘制灰度阴影球体tikz-3dplot?我尝试使用\tdplotsphericalsurfaceplot半径等于 的球体1,并parametricfill根据球面角度进行调整。但是,看起来我只能根据关注帖子,这不适合我。我可以完全重新定义 \tdplotdosurfaceplot,但这似乎有点过头了。

我要强调的是,我希望真的3D 绘图(我的图片的其余部分需要3D 坐标:我需要绘制圆弧),因此不能使用 2D 技巧,例如

\draw [ball color=white] (0,0,0) circle (1) ;

所以这是不是重复的如何绘制阴影球体。我明确想要一个 3d 绘图,最好带有tikz-3dplot,但我也可以接受其他 3d 软件包。

这里有两个 MWE:第一个球体使用均匀着色,而第二个球体使用球面角的线性组合:

\begin{tikzpicture}[tdplot_main_coords]
\tdplotsphericalsurfaceplot[parametricfill]{24}{24}{1} {black}{50}{}{}{}
\begin{scope}[xshift=4cm]
\tdplotsphericalsurfaceplot[parametricfill]{24}{24}{1} {black}{\tdplottheta+\tdplotphi}{}{}{}
\end{scope}
\end{tikzpicture}

我还想摆脱参数线...也许这不是合适的包,或者不是包中的正确命令。 在此处输入图片描述

答案1

更好地利用pgfplots(改编自这个帖子\theta+\phi)。我认为,参数填充看起来很奇怪。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
  \begin{axis}
    [
      width=6cm,height=6cm,
      axis equal,enlargelimits=false,
      axis lines=none,
      domain=0:180,samples=21,
      y domain=0:360,samples y=21,
      colormap/blackwhite,
      view={100}{10},
    ]
    \addplot3
      [
        surf,
        z buffer=sort,
        shader=flat,
        point meta={acos(z/sqrt(x*x+y*y+z*z)) + atan2(y,x)}
      ] (
        {sin(x)*cos(y)},
        {sin(x)*sin(y)},
        {cos(x)}
      );
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

经过一番尝试,我终于想出了一个可以接受的解决方案,它确实使用了tikz-3dplot(但有缺点,见下文)。这是一个 MWE,显示了在阴影球体上绘制的球形三角形。要查看不同的阴影,只需转到如何绘制阴影球体

下面的解决方案部分欺骗了我们:它不绘制阴影球体,而是绘制透视阴影 2D 圆盘;因此必须在 3 维空间中旋转它才能使其看起来像球体(因此需要旋转坐标)。但是弧的球面坐标是正确的。

\documentclass[11pt]{article}
\usepackage{tikz,tikz-3dplot}
\tdplotsetmaincoords{80}{110}

\begin{document}
\begin{figure}
\begin{center}
\begin{tikzpicture}[scale=3,tdplot_main_coords]
    % spherical background
    \tdplotsetrotatedcoords{20}{80}{0}
    \draw [ball color=white,very thin,tdplot_rotated_coords] (0,0,0) circle (1) ;
    % equator
    \draw [dashed] (0,0,0) circle (1) ;
    % spherical triangle
    \tdplotdefinepoints(0,0,0)(0.8,-0.4,-0.4)(0.4,0.8,-0.4)
    \tdplotdrawpolytopearc[thick]{1}{}{}
    \tdplotdefinepoints(0,0,0)(0.4,0.8,-0.4)(0.45,0.22,0.9)
    \tdplotdrawpolytopearc[thick]{1}{}{}
    \tdplotdefinepoints(0,0,0)(0.45,0.22,0.9)(0.8,-0.4,-0.4)
    \tdplotdrawpolytopearc[thick]{1}{}{}
\end{tikzpicture}
\end{center}
\end{figure}
\end{document}

另一个缺点是定义弧的语法不方便tikz-3dplot,并且不能将其与命令混合coordinate阴影球体上的球面三角形

相关内容