我需要在我的文档中绘制一个螺旋面。我在互联网上找不到任何可以回答我的问题的东西。基本上,我需要绘制由方程指定的表面
x = u * cos (v);
y = u * sin (v);
z = v.
由于这些方程取决于 u 和 v,我无法绘制表面。绘制螺旋线要简单得多,因为它只取决于一个坐标:x。例如(Overleaf 示例):
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{comment}
\usepackage{pgfplots}
\pgfplotsset{width=10cm, compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
view={60}{30},
]
\addplot3[
domain=0:5*pi,
samples = 60,
samples y=0,
]
({sin(deg(x))},
{cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
\end{document}
对于螺旋面,该如何做?
答案1
欢迎!您只需为您的图添加一个维度即可。
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{comment}
\usepackage{pgfplots}
\pgfplotsset{width=10cm, compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
view={60}{30},
]
\addplot3[surf,shader=interp,
domain=0:5*pi,
samples=101,
samples y=2,
]
({y*sin(deg(x))},
{y*cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
\end{document}
或者使用网格。(的增加samples y
使得网格更加网格化,但也增加了编译时间,因为我们需要添加z buffer=sort
或类似的东西。)
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{comment}
\usepackage{pgfplots}
\pgfplotsset{width=10cm, compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
view={60}{30},
]
\addplot3[surf,
domain=0:5*pi,
samples=101,
samples y=11,z buffer=sort
]
({y*sin(deg(x))},
{y*cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
\end{document}