在 tikz 中的绘图域中使用变量

在 tikz 中的绘图域中使用变量

请考虑以下示例:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc,patterns,decorations.pathmorphing,decorations.markings}

\begin{document}
\begin{tikzpicture}
   \foreach \t in {0,...,10} {
     \pgfmathparse{8/10*\t};
     \draw[color=red,domain=0:\pgfmathresult] plot (\x,{0.5*sin(2*pi*\t/10 r - 0.25*pi*\x r) - 2*\t});

}
\end{tikzpicture}
\end{document}

重点是,我想\pgfmathresult在绘图域中使用变量。但是它给了我TeX capacity exceeded, sorry。有什么办法可以解决这个问题吗?

答案1

首先,第一个图位于域 [0,0] 上。这会导致问题。要查看此问题,请尝试(在 tikzpicture 中):

\draw[domain=0:0] plot (\x,\x);

的初始值以 1 开始,而不是 0 \t

接下来,要在其他 tikz 命令中使用计算值,请尝试使用\pgfmathsetmacro

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc,patterns,decorations.pathmorphing,decorations.markings}

\begin{document}
\begin{tikzpicture}

\foreach \t in {1,...,10} {
    \pgfmathsetmacro{\sup}{8/10*\t}
    \draw[color=red,domain=0:\sup] plot (\x,{0.5*sin(2*pi*\t/10 r - 0.25*pi*\x r) - 2*\t});
}
\end{tikzpicture}
\end{document}

输出为

地块

答案2

一般来说,\pgfmathresult在 TikZ 调用中直接使用是不明智的,因为当 TikZ 解析该部分时,它可能已经被覆盖。然而这不是这里的问题。TikZ 实际上在为 0domain=0:0时会卡住。使用它启动是可行的。\t\foreach1

相关内容