如何用 绘制灰度阴影球体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}