为了便于说明,我想给立方体的四个面涂上颜色。立方体的角由八个笛卡尔坐标表示:(0,0,0)$、(0,0,1)$、(0,1,0)$、(0,1,1)$、(1,0,0)$、(1,0,1)$、(1,1,0)$、(1,1,1)$。立方体包含角 (0,1,1)$ 和 (1,1,1)$ 的两条边应为空白。立方体包含 (0,1,1)$ 和 (0,0,1)$ 但不包含 (1,1,1)$ 的面应为蓝色。立方体包含 (1,1,1)$ 和 (1,0,1)$ 但不包含 (0,1,1)$ 的面应为红色。包含全部 $(0,1,0)$、$(1,1,0)$、$(0,0,0)$、$(1,0,0)$ 的立方体的一面应为绿色。包含全部 $(0,0,1)$、$(1,0,1)$、$(0,0,0)$、$(1,0,0)$ 的立方体的一面应为黄色。
如果我们将所需的配色方案与所附图片中的魔方配色方案联系起来,则魔方的白色将被空白替换,魔方的绿色将被空白替换,魔方的红色保持不变,魔方的蓝色将被黄色替换,魔方的橙色将被蓝色替换,魔方的黄色将被绿色替换。
如果立方体的绘图具有透视性就好了,这样就可以看到并在印刷中再现四种颜色,并且如果有一些空间可以写标题就好了。
对此,我提出问题我们可以给立方体上色并旋转它吗?它要求动态表示。
答案1
目前的代码应该可以解决你的问题:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
[
scale=6.0,
very thick,
line join=round,
y={(-1cm,0.5cm)},
x={(1cm,0.5cm)},
z={(0cm,1cm)},
]
\coordinate (A1) at (0,0,0);
\coordinate (A2) at (0,1,0);
\coordinate (A3) at (1,1,0);
\coordinate (A4) at (1,0,0);
\coordinate (B1) at (0,0,1);
\coordinate (B2) at (0,1,1);
\coordinate (B3) at (1,1,1);
\coordinate (B4) at (1,0,1);
\fill[yellow] (A2) -- (A3) -- (B3) -- (B2) -- cycle;
\fill[green] (A2) -- (A3) -- (A4) -- (A1) -- cycle;
\fill[red] (A3) -- (B3) -- (B4) -- (A4) -- cycle;
\fill[blue] (A1) -- (A2) -- (B2) -- (B1) -- cycle;
\draw (A2) -- (A1) -- (A4);
\draw (B2) -- (B1) -- (B4) -- (B3) -- cycle;
\draw (A1) -- (B1);
\draw (A2) -- (B2);
\draw (A4) -- (B4);
\draw[thin] (A3) -- (B3);
\draw[thin] (A3) -- (A4);
\end{tikzpicture}
\caption{This is my colored box.}
\end{figure}
\end{document}
免责声明:此答案基于 Gonzalo Medina (@GonzaloMedina) 的答案,该答案在该答案被接受后被删除。代码基本上是由他编写的,我只做了一些小修改,以便更准确地回答当前问题。
答案2
这可以通过 轻松完成tikz-3dplot
。您可以根据需要更改每面的颜色。此外,您可以从不同角度查看立方体(即在代码中更改视角)。此外,您可以围绕任意轴进行旋转(即参见我的答案我的答案)。
\documentclass[border={10}]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\tdplotsetmaincoords{60}{125} % view angles
\tdplotsetrotatedcoords{0}{0}{0}
\begin{document}
\begin{tikzpicture}
[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
scale=5,tdplot_rotated_coords,
cube/.style={line width=3pt,black},
grid/.style={very thin,gray},
axis/.style={->,blue,line width=3pt,>=stealth},
]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%draw a grid in the x-y plane
\foreach \x in {-0.5,0,...,2.5}
\foreach \y in {-0.5,0,...,2.5}
{
\draw[grid] (\x,-0.5) -- (\x,2.5);
\draw[grid] (-0.5,\y) -- (2.5,\y);
}
%draw the main coordinate frame axes
\draw[axis,tdplot_main_coords] (0,0,0) -- (3.5,0,0) node[anchor=north]{$x$};
\draw[axis,tdplot_main_coords] (0,0,0) -- (0,3.5,0) node[anchor=north]{$y$};
\draw[axis,tdplot_main_coords] (0,0,0) -- (0,0,3.5) node[anchor=west] {$z$};
%draw the cube
\draw[cube,fill=blue] (0,0,0) -- (0,2,0) -- (2,2,0) -- (2,0,0) -- cycle;
\draw[cube,fill=red] (0,0,0) -- (0,2,0) -- (0,2,2) -- (0,0,2) -- cycle;
\draw[cube,fill=green!20] (0,0,0) -- (2,0,0) -- (2,0,2) -- (0,0,2) -- cycle;
\draw[cube,fill=yellow!20] (0,0,2) -- (2,0,2) -- (2,2,2) -- (0,2,2) -- cycle;
\draw[cube,fill=black!30!green] (2,2,2) -- (0,2,2) -- (0,2,0) -- (2,2,0) -- cycle;
\draw[cube,fill=black!30!yellow,opacity=0.7] (2,0,0) -- (2,2,0) -- (2,2,2) -- (2,0,2) -- cycle;
\end{tikzpicture}
\end{document}