![使用 2 个参数进行绘图](https://linux22.com/image/454760/%E4%BD%BF%E7%94%A8%202%20%E4%B8%AA%E5%8F%82%E6%95%B0%E8%BF%9B%E8%A1%8C%E7%BB%98%E5%9B%BE.png)
几天前我发过这。建议的代码确实帮助我绘制了一些我想要的漂亮曲线和曲面,但当涉及到依赖于两个变量/参数的曲面时,我无法让代码工作。例如,我试图做这样的事情
于是我开始尝试绘制一个球体的表面。我阅读了很多关于这个主题的文章,似乎总是使用 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
形式perspective
钾Z 库。利用该库和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}