![使用 TikZ 填充命令中的算法在 for 循环中逐步改变颜色](https://linux22.com/image/446370/%E4%BD%BF%E7%94%A8%20TikZ%20%E5%A1%AB%E5%85%85%E5%91%BD%E4%BB%A4%E4%B8%AD%E7%9A%84%E7%AE%97%E6%B3%95%E5%9C%A8%20for%20%E5%BE%AA%E7%8E%AF%E4%B8%AD%E9%80%90%E6%AD%A5%E6%94%B9%E5%8F%98%E9%A2%9C%E8%89%B2.png)
我想在 for 循环中使用单个变量来控制逐步绘制的矩形的位置及其填充颜色。这行不通:
\begin{tikzpicture}[scale=2,x={(1cm,-0.2cm)},z={(0.5cm,0.5cm)}]
\foreach \x in {0,0.2,...,1} \filldraw[fill=black!{100-100*\x},draw=black,thick] (\x,0,0) -- (\x,0,1) -- (\x,1,1) -- (\x,1,0) -- cycle;
\end{tikzpicture}
是否有任何语法可以让我在命令输入中使用变量执行简单的算术运算?我非常习惯在 MATLAB 等程序中执行此类操作,因此我很惊讶找不到简单的解决方案。
我能执行相反的操作,并在填充命令中使用“清理”,\x
同时将其转换为点定义的有用比例,但这似乎不太优雅,因为它需要我执行四次。
答案1
TikZ 循环中有此类计算的语法,请参阅手册,第 88 节 重复操作:Foreach 语句
/pgf/foreach/evaluate=⟨variable⟩ 作为 ⟨macro⟩ 使用 ⟨formula⟩
完整代码:
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=2,x={(1cm,-0.2cm)},z=0.5cm,0.5cm)}]
\foreach \x[evaluate=\x as \y using {100-100*\x}] in {0,.2,...,1}
\fill[black!\y,draw=black,thick] (\x,0,0)--(\x,0,1)--(\x,1,1)--(\x,1,0)--cycle;
\end{tikzpicture}
\end{document}