使用 Tikz 制作立方体

使用 Tikz 制作立方体

我怎样才能在乳胶上画出这样的东西:

在此处输入图片描述

我在尝试以“ClassicThesis 风格”进行图形装饰

\begin{tikzpicture}[remember picture,overlay,shorten >= -10pt]

\coordinate (aux1) at ([yshift=-15pt]current page.north east);
\coordinate (aux2) at ([yshift=-410pt]current page.north east);
\coordinate (aux3) at ([xshift=-4.5cm]current page.north east);
\coordinate (aux4) at ([yshift=-150pt]current page.north east);

\begin{scope}[titlepagecolor!40,line width=12pt,rounded corners=12pt]
\draw
  (aux1) -- coordinate (a)
  ++(225:5) --
  ++(-45:5.1) coordinate (b);
\draw[shorten <= -10pt]
  (aux3) --
  (a) --
  (aux1);
\draw[opacity=0.6,titlepagecolor,shorten <= -10pt]
  (b) --
  ++(225:2.2) --
  ++(-45:2.2);
\end{scope}
\draw[titlepagecolor,line width=8pt,rounded corners=8pt,shorten <= -10pt]
  (aux4) --
  ++(225:0.8) --
  ++(-45:0.8);
\begin{scope}[titlepagecolor!70,line width=6pt,rounded corners=8pt]
\draw[shorten <= -10pt]
  (aux2) --
  ++(225:3) coordinate[pos=0.45] (c) --
  ++(-45:3.1);
\draw
  (aux2) --
  (c) --
  ++(135:2.5) --
  ++(45:2.5) --
  ++(-45:2.5) coordinate[pos=0.3] (d);   
\draw 
  (d) -- +(45:1);
\end{scope}
\end{tikzpicture}%

有人可以给我一个想法吗?

答案1

图形可以绘制成双线。首先用外线的颜色绘制一条非常粗的线。然后使用相同的路径将地狱蓝绘制为内线:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xcolor}
\begin{document}
\begin{tikzpicture}
  \def\Unit{30pt}
  \def\InnerLineWidth{8pt}
  \def\OuterLineWidth{2pt}
  \definecolor{OuterLineColor}{rgb}{.15, .15, .55}
  \definecolor{InnerLineColor}{rgb}{.55, .85, .97}
  \def\LineDrawing{%
    (0, 0) coordinate (A)
    \foreach \p/\a in {
      B/-30, C/30, D/-30, E/30,
      F/90, G/150, H/90, I/150,
      J/210, K/-90, L/210%
    } {
      -- ++(\a:\Unit) coordinate (\p)
    } -- cycle
    (A)
    \foreach \p in {A, B, C, D, E} {
      -- ($(\p) + (-90:\Unit)$) coordinate (\p2)
    }
    -- (E)
    \foreach \p in {E, F, G, H, I} {
      -- ($(\p) + (30:\Unit)$) coordinate (\p2)
    }
    -- (I)
    \foreach \p in {I, J, K, L, A} {
      -- ($(\p) + (150:\Unit)$) coordinate (\p2)
    }
    -- cycle
    \foreach \p in {
      B, C, D,
      F, G, H,
      J, K, L%
    } {
      (\p) -- (\p2)
    }
  }
  \draw[OuterLineColor, line width=\InnerLineWidth + 2 * \OuterLineWidth]
    \LineDrawing
  ;
  \draw[InnerLineColor, line width=\InnerLineWidth]
    \LineDrawing
  ;
\end{tikzpicture}
\end{document}

结果

答案2

要制作三维形状,您可以使用画布并xyz根据需要设置坐标系。默认值为x=1cm和,以下代码:y=1cmz=(-3.85mm,-3.85mm)

\coordinate (center) at (0,0);
\draw [->] (center) -- (1,0,0);
\draw [->] (center) -- (0,1,0);
\draw [->] (center) -- (0,0,1);

结果是:

默认 tikz xyz 坐标系

可以像这样重新定义这个值:

\begin{scope}[z={(-8.66mm,-5mm)},x={(8.66mm,-5mm)}]
\coordinate (center) at (0,0);
\draw [->] (center) -- (1,0,0);
\draw [->] (center) -- (0,1,0);
\draw [->] (center) -- (0,0,1);
\end{scope}

这会导致更好的坐标系来绘制指定的图片:

重新定义 xyz 坐标系

现在,当使用xyzCS 时,x、y 和 z 轴将遵循之前定义的增量,从而更容易绘制外部和内部形状:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,calc}
\definecolor{titlepagecolor}{RGB} {96,200,244}

\begin{document}
\begin{tikzpicture}
\coordinate (center) at (0,0);
\begin{scope}[z={(-8.66mm,-5mm)},x={(8.66mm,-5mm)},line width=2pt]
\fill[titlepagecolor!40, draw=blue!80!black] (center) ++(0,-2,0) --
               ++(0,0,1) --
               ++(-1,0,0) --
               ++(0,1,0) --
               ++(-1,0,0) --
               ++(0,1,0) --
               ++(0,0,-1) --
               ++(0,1,0) --
               ++(0,0,-1) --
               ++(1,0,0) --
               ++(0,0,-1) --
               ++(1,0,0) --
               ++(0,-1,0) --
               ++(1,0,0) --
               ++(0,-1,0) --
               ++(0,0,1) --
               ++(0,-1,0) --
               ++(0,0,1) -- cycle;
\fill[white, draw=blue!80!black] (center) ++(0,-0.8,0) --
               ++(0,0,1) --
               ++(-0.8,0,0) --
               ++(0,0.8,0) --
               ++(0,0,-1) --
               ++(0,1,0) --
               ++(0,0,-0.8) --
               ++(0.8,0,0) --
               ++(0,-1,0) --
               ++(1,0,0) --
               ++(0,-0.8,0) --
               ++(0,0,0.8) -- cycle;
\fill[white, draw=blue!80!black] (center) ++(0,-1.05,0.2) -- ++(0,0,0.6) -- ++(0,-0.7,0) -- ++(0,0,-0.6) -- cycle;
\fill[white, draw=blue!80!black] (center) ++(1,-1.05,-0.8) -- ++(0,0,0.6) -- ++(0,-0.7,0) -- ++(0,0,-0.6) -- cycle;
\end{scope}
\end{tikzpicture}
\end{document}

我没有好主意来绘制正方形,而且它有点详尽,所以我留下了一个(无聊的)方法的例子。

编译结果

相关内容