子路径上的箭头提示

子路径上的箭头提示

有什么优雅的方法可以将箭头放在每个子路径边缘上吗?(是的,我见过这个答案,但在我看来,不太优雅)我认为这种功能有一定的必要性。至少应该更容易实现。

\documentclass[tikz
%border=1cm
]{standalone}
   
\begin{document}
   
\begin{tikzpicture}[] 
            \pgfmathsetmacro\N{6}
            \pgfmathsetmacro\n{4*\N}
            \draw[] (0,0) 
            {
            foreach \i in {1,...,\n}
                    {
                    
                    -- ++({(2*\i-1)*90/\N}:{1-0.01*\i})
                    
                    }
            }
            ;
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

我只会创建单独的路径(结束edge路径操作会创建自己的路径)。当然,您可以对\foreach包含完整 的外部使用相同的方法\draw

(@)只是一个临时坐标(每次迭代都会重新定义)。

另一个选择可能是show path construction装饰decorations.pathreplacing图书馆。不过,这只会破坏原始路径并将其再次替换为单独的路径。
(我edge在这里再次使用它,以便它继承其父路径的属性。)

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{
  arrows.meta, % better arrows (→ bounding box)
  decorations.pathreplacing}
\begin{document}
\begin{tikzpicture} % edges
\pgfmathsetmacro\N{6}
\pgfmathsetmacro\n{4*\N}
\path[->] (0,0) coordinate (@) foreach \i in {1,...,\n}{
  (@) edge coordinate[at end] (@) ++ ({(2*\i-1)*90/\N}:{1-0.01*\i})};
\end{tikzpicture}

\begin{tikzpicture} % separate paths
\pgfmathsetmacro\N{6}
\pgfmathsetmacro\n{4*\N}
\coordinate (@) at (0,0);
\foreach \i in {1,...,\n}
  \draw[->] (@) -- coordinate[at end] (@) ++ ({(2*\i-1)*90/\N}:{1-0.01*\i});
\end{tikzpicture}

\begin{tikzpicture} % decoration
\pgfmathsetmacro\N{6}
\pgfmathsetmacro\n{4*\N}
\path[
  ->,
  decorate,
  decoration={
    show path construction,
    lineto code={\path (\tikzinputsegmentfirst) edge (\tikzinputsegmentlast);},
  }] (0,0) foreach \i in {1,...,\n} { -- ++({(2*\i-1)*90/\N}:{1-0.01*\i}) };
\end{tikzpicture}
\end{document}

相关内容