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