如何使用旋转曲面 tikz 或 pgfplots 进行绘图?
\documentclass{article}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\end{tikzpicture}
\end{document}
我无法重现这样的表面。有人能帮助我吗?
答案1
在下面的图中,我给出了两个演示:一个是绕 y 轴旋转的表面,另一个是绕 x 轴旋转的表面
主要技巧是使用正弦和余弦函数适当地参数化表面。
f(t)
当你绕 y 轴旋转函数时,你让
x(t,s) = t*cos(s)
y(t,s) = t*sin(s)
z(t,s) = f(t)
如果你想f(t)
绕 x 轴旋转函数,那么你可以让
x(t,s) = t
y(t,s) = f(t)*cos(s)
z(t,s) = f(t)*sin(s)
通常s
会在间隔内,您可以根据需要[0,2\pi]
选择间隔。t
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
% rotated around the y-axis
\begin{tikzpicture}
\begin{axis}[view={60}{30}]
\addplot3[surf,shader=flat,
samples=20,
domain=1:2,y domain=0:2*pi,
z buffer=sort]
({x * cos(deg(y))}, {x * sin(deg(y))}, {1/x});
\end{axis}
\end{tikzpicture}
% rotated around the x-axis
\begin{tikzpicture}
\begin{axis}[view={60}{30}]
\addplot3[surf,shader=flat,
samples=20,
domain=1:2,y domain=0:2*pi,
z buffer=sort]
(x,{(1/x) * cos(deg(y))}, {(1/x) * sin(deg(y))});
\end{axis}
\end{tikzpicture}
\end{document}
按照问题编辑
\begin{tikzpicture}
\begin{axis}[view={60}{30}]
\addplot3[surf,shader=flat,
samples=20,
domain=0:2*pi,y domain=0:2*pi,
z buffer=sort]
({x * cos(deg(y))}, {x * sin(deg(y))}, {cos(deg(x))});
\end{axis}
\end{tikzpicture}