在平面上添加垂直于莫比乌斯带的线

在平面上添加垂直于莫比乌斯带的线

我试图沿着表面绘制一条从该图的中心线垂直指向的线,以表明莫比乌斯带是不可定向的,我曾尝试手动沿路径绘制线条,但似乎无法准确放置它们。任何帮助或建议都将不胜感激。

\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.arrowsTi 中的库文档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}

相关内容