使用 2 个参数进行绘图

使用 2 个参数进行绘图

几天前我发过。建议的代码确实帮助我绘制了一些我想要的漂亮曲线和曲面,但当涉及到依赖于两个变量/参数的曲面时,我无法让代码工作。例如,我试图做这样的事情

在此处输入图片描述

于是我开始尝试绘制一个球体的表面。我阅读了很多关于这个主题的文章,似乎总是使用 pgf 来定义一些参数,但我找到了一个只使用 TikZ 的代码,我很喜欢,并尝试将其适应我的用例。

\begin{tikzpicture}[x={(-1.3cm,-1.3cm)},y={(2.7cm,-.3cm)},z={(0cm,2cm)}, scale=0.3, > = Straight Barb]
  \draw[->] (0,0,0) -- (4,0,0) node[left] {$x$};
  \draw[->] (0,0,0) -- (0,4,0) node[below] {$y$};
  \draw[->] (0,0,0) -- (0,0,4) node[left] {$z$};
  \foreach \x/\y in {0/0, 1/1, ..., 10/10}
{
  \draw[->, ultra thick, red] ({\x}, {\y}, {(1 - {\x}**2 - {\y}**2)**(1/2)}) ;
}
\end{tikzpicture}

我给变量输入了一些随机值只是为了测试,但它返回了一个错误

缺失数字,视为零

我尝试过更改({\x}, {\y}, {(1 - {\x}**2 - {\y}**2)**(1/2)})({\x}, {\y}, {(1 - \x**2 - \y**2)**(1/2)})但无法消除错误。然后我开始考虑使用另一个坐标系对 pgf 进行操作,但我真的陷入困境,不知道该怎么做,所以我再次来寻求帮助。如果有人能解释我如何得到类似图像的东西,我将不胜感激!

答案1

使用等距透视法绘制球体很容易。例如,使用Tiisometric view形式perspectiveZ 库。利用该库和3d选项库,canvas is...您可以绘制如下内容:

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{3d,perspective}
\tikzset
{
  axis/.style={black,-latex},
  xy/.style={canvas is xy plane at z=0},
  xz/.style={canvas is xz plane at y=0},
  yz/.style={canvas is yz plane at x=0},
}

\begin{document}  
\begin{tikzpicture}[line cap=round,line join=round,isometric view,rotate around z=180,blue]
  % sphere, inside
  \draw[xy,fill=blue!60] (2,0) arc (0:-270:2) -- (0,1) arc (90:360:1) -- cycle;
  % sphere, outside
  \draw[shading=ball,ball color=blue!60] 
        {[xy] (2,0) arc (0:-45:2)} arc (180:0:2 cm) 
        {[xy] arc (135:90:2)} -- (0,0,2) -- cycle;
  % slices
  \draw  [xz,fill=blue!20] (1,0) -- (2,0) arc (0:90:2) -- (0,1) arc (90:0:1) -- cycle;
  \draw  [yz,fill=blue!30] (1,0) -- (2,0) arc (0:90:2) -- (0,1) arc (90:0:1) -- cycle;
  % axes
  \draw[axis] (0,0,0) -- (3,0,0) node[left]  {\strut$x$};
  \draw[axis] (0,0,0) -- (0,3,0) node[right] {\strut$y$};
  \draw[axis] (0,0,0) -- (0,0,3) node[above] {$z$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容