我试图沿着表面绘制一条从该图的中心线垂直指向的线,以表明莫比乌斯带是不可定向的,我曾尝试手动沿路径绘制线条,但似乎无法准确放置它们。任何帮助或建议都将不胜感激。
\documentclass{article}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps, external}
\usepackage{float}
\usepackage{tikz}
\begin{document}
\begin{figure}[H]
\begin{center}
\begin{tikzpicture}
\begin{axis}[
hide axis,
view={40}{40}
]
\addplot3 [
mesh, shader=faceted interp,
point meta=x,
colormap/blackwhite,
samples=100,
samples y=5,
z buffer=sort,
domain=0:360,
y domain=-0.5:0.5
] (
{(1+0.5*y*cos(x/2)))*cos(x)},
{(1+0.5*y*cos(x/2)))*sin(x)},
{0.5*y*sin(x/2)});
\addplot3 [
samples=50,
domain=-145:180,
samples y=0,
thick
] (
{cos(x)},
{sin(x)},
{0});
\end{axis}
\end{tikzpicture}
\end{center}
\end{figure}
\end{document}
莫比乌斯带是这样的
答案1
像这样吗?
显然,您需要根据实际需要进行调整。但是,只要您想要的是我理解的问题大意,您就应该能够做到这一点。
基本思想是使用markings
间隔放置节点。每个节点旋转 90 度。这并不完全正确,因为它发生在 2D 而不是 3D 中。但对于说明目的来说,这可能已经足够了。
这些节点来自shapes.arrows
,内容为空,并且具有,text height
因此0pt
它们看起来本质上就像末端带有箭头的线。
您也可以用箭头标记(例如从 开始arrows.meta
)。这种方法效果很好,但我不知道如何将箭头添加到线条上。事实上,我根本不知道如何在正确的位置绘制线条。(我不知道如何使用 指定相对坐标axis cs
。)
但是,您可以根据需要进一步自定义箭头节点。请参阅shapes.arrows
Ti 中的库文档钾Z 手册了解详情。
\documentclass[border=10pt,multi,tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps, external}
\pgfplotsset{compat=1.14}
\usetikzlibrary{decorations.markings,shapes.arrows}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
hide axis,
view={40}{40}
]
\addplot3
[
mesh, shader=faceted interp,
point meta=x,
colormap/blackwhite,
samples=100,
samples y=5,
z buffer=sort,
domain=0:360,
y domain=-0.5:0.5,
]
(%
{(1+0.5*y*cos(x/2)))*cos(x)},
{(1+0.5*y*cos(x/2)))*sin(x)},
{0.5*y*sin(x/2)}
);
\addplot3
[
samples=50,
domain=-145:180,
samples y=0,
thick,
postaction={decorate},
decoration={% pgfplots manual 355-356
markings,
mark=between positions 0 and 1 step 2.5mm with
{
\node [single arrow, transform shape, rotate=-90, fill, draw, inner sep=0pt, single arrow head extend=1pt, text width=2.5mm, text height=0pt, anchor=west, line width=.4pt, ] {};
},
},
]
(%
{cos(x)},
{sin(x)},
{0}%
);
\end{axis}
\end{tikzpicture}
\end{document}