如何在 tikz 上用可变颜色填充立方体的一个面?

如何在 tikz 上用可变颜色填充立方体的一个面?

根据下图,我想改变两面的颜色。怎么实现呢?两面都一样(只是我无法正确绘制其中一面)。 在此处输入图片描述

\documentclass[border=10pt,tikz,multi]{standalone}
\tikzset{%
  yzx/.style = {%
    x={(-.385cm, -.385cm)},
    y={(1cm, 0cm)},
    z={(0cm, 1cm)},
  },
}
\begin{document}
\begin{tikzpicture}[yzx, scale=2.5]
  ‎\filldraw[ fill=gray!30,looseness=1](0,0,0.2)--(2,0,0.2)--(2,2,0.2)-- (0,2,0.2)--cycle;
  ‎‎\filldraw[ fill=gray!30,looseness=1] (0,2,0.2)--(2,2,0.2)--(2,2,-0.2)-- (0,2,-0.2)--cycle;
  ‎‎\filldraw[ fill=gray!30,looseness=1] (2,0,0.2)--(2,2,0.2)--(2,2,-0.2)-- (2,0,-0.2)--cycle;
‎‎\end{tikzpicture}
\end{document}

答案1

这可能不是您想要的,而是一个近似值。要获得您想要的结果,您可能需要阅读 TikZ 手册中关于 PGF 层中阴影的讨论,以便定义一个自定义阴影,该阴影在旋转时会正确显示。这需要考虑到非矩形形状的阴影部分比矩形形状的阴影部分要小,并且即使是矩形形状也只使用定义阴影的中心。

\documentclass[border=10pt,tikz,multi]{standalone}
\tikzset{%
  yzx/.style = {%
    x={(-.385cm, -.385cm)},
    y={(1cm, 0cm)},
    z={(0cm, 1cm)},
  },
}
\begin{document}
\begin{tikzpicture}[yzx, scale=2.5]
  ‎\filldraw[fill=gray](0,0,0.2)--(2,0,0.2)--(2,2,0.2)-- (0,2,0.2)--cycle;
  ‎‎\filldraw[top color=blue, bottom color=red] (2,0,0.2)--(2,2,0.2)--(2,2,-0.2)-- (2,0,-0.2)--cycle;
  \pgfsetadditionalshadetransform{\pgftransformscale{.7}}
‎‎  ‎‎\filldraw[top color=blue, bottom color=red, shading angle=30] (0,2,0.2)--(2,2,0.2)--(2,2,-0.2)-- (0,2,-0.2)--cycle;
\end{tikzpicture}
\end{document}

近似阴影

也就是说,TikZ/PGF 根本不容易对事物进行阴影处理(或淡化)。对于既不是矩形也不是圆形的形状,没有直接定义或操作阴影的方法。确实,该设置可确保旋转的径向阴影不会扭曲,但在其他情况下,结果远非直观。(我完全不明白为什么手册声称它们通常会产生您想要或期望的结果。至少就我而言,事实并非如此。但也许我只是有相反的想法。)

考虑到可用的原材料,TikZ/PGF 是一项令人难以置信的成就。但是,阴影并不是它的优势,速度也同样如此。

相关内容