使用两个变量在 \foreach 循环中增加,TikZ

使用两个变量在 \foreach 循环中增加,TikZ

我正在尝试在 TikZ 中循环绘制不同角度的箭头堆栈\foreach。我不想手动声明每个 z 坐标和角度,所以我使用了语法,{1,2,...,10}但这在下面的 for 循环中有两个变量的示例中似乎不起作用。

\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows}
\usetikzlibrary{3d}
\tikzset{>=latex}

\begin{document}

\tdplotsetmaincoords{90}{90}
\tdplotsetrotatedcoords{0}{20}{70}

\begin{tikzpicture}[tdplot_rotated_coords,scale=0.5]

\foreach \x/\y in {7/0, 8/10, ..., 10/30}
{
\draw (2, 2, \x) circle(2) node[right]{\y};
\draw[->, ultra thick, red] (2, 2, \x) --++ (\y:2) --++ (\y+180:4);
}

\end{tikzpicture}
\end{document}

有人知道如何解决这个问题吗?上面的代码给出了错误! Illegal unit of measure (pt inserted).

谢谢。

答案1

问题源于...宏参数中的部分;请注意,如果从代码中\foreach删除它,它就会消失。...,

虽然你当然可以认识到

7/0, 8/10, ..., 10/30

\foreach不能。我请您参阅手册第 56 节tikz在 tikz 中使用 \foreach 进行计算...有关 论证内部工作原理的更多详细信息\foreach

在这种特殊情况下,假设\x表示一个可以用足够简单的公式表达的序列 -\x这里仅表示一个算术序列 - 您可以将其用作\y唯一的循环变量并\x从迭代变量中派生;我已将后者定义为通过在下面的可选参数中\i使用。count=\i\foreach

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows}
\usetikzlibrary{3d}
\tikzset{>=latex}

\begin{document}

\tdplotsetmaincoords{90}{90}
\tdplotsetrotatedcoords{0}{20}{70}

\begin{tikzpicture}[tdplot_rotated_coords,scale=0.5]

\foreach[count=\i, evaluate=\i as \x using int(\i+6)] \y in {0,10,...,30}
{
    \draw (2, 2, \x) circle(2) node[right] {\y};
    \draw[->, ultra thick, red] (2, 2, \x) --++ (\y:2) --++ (\y+180:4);
}

\end{tikzpicture}
\end{document}

相关内容