我怎样才能为立方体的四个面涂上颜色?

我怎样才能为立方体的四个面涂上颜色?

为了便于说明,我想给立方体的四个面涂上颜色。立方体的角由八个笛卡尔坐标表示:(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}

在此处输入图片描述

相关内容