Cómo dibujar como esta imagen con tikz.

Cómo dibujar como esta imagen con tikz.

¿Alguien puede ayudarme a hacer este dibujo con tikz?

ingrese la descripción de la imagen aquí

código

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[thick,scale=10]
%
\coordinate (C1) at (0.3,-0.15);
\coordinate (C2) at (0.55,-0.15);
\coordinate (C3) at (0.425,-0.025);
\coordinate (C4) at (0.425,-0.275);
%
\coordinate (D1) at (0.85,-0.05);
\coordinate (D2) at (0.9,0.05);
\coordinate (D3) at (0.875,0.125);
\coordinate (D4) at (0.875,-0.125);
%
\coordinate (E1) at (0.375,0.375);
\coordinate (E2) at (0.625,0.375);
\coordinate (E3) at (0.525,0.425);
\coordinate (E4) at (0.525,0.325);
%
\coordinate (F1) at (0.15,0.015);
\coordinate (F2) at (0.1,-0.015);
\coordinate (F3) at (0.125,0.125);
\coordinate (F4) at (0.125,-0.125);
%
\coordinate (G1) at (0.375,-0.375);
\coordinate (G2) at (0.625,-0.375);
\coordinate (G3) at (0.475,-0.425);
\coordinate (G4) at (0.575,-0.325);

\begin{scope}[thick,dashed]
\draw (C1) -- (C4) -- (C2) -- (C3) -- (C1);
\draw (D1) -- (D4) -- (D2) -- (D3) -- (D1);
\draw (E1) -- (E4) -- (E2) -- (E3) -- (E1);
\draw (F1) -- (F4) -- (F2) -- (F3) -- (F1);
\draw (G1) -- (G4) -- (G2) -- (G3) -- (G1);
\end{scope}
\draw (F3) -- (F2) -- (C1) -- (C3) -- (E4) -- (E1);
\draw (C1) -- (C4) -- (G3) -- (G1) -- (F4) -- (F2);
\draw (D1) -- (C2) -- (C3) -- (E4) -- (E2) -- (D3) -- (D1);
\draw (D1) -- (C2) -- (C4) -- (G3) -- (G2) --(D4) -- (D1);
\draw (E2) -- (E3) -- (E1) -- (F3) -- (F2) -- (F4) -- (G1) -- (G3) --  (G2) -- (D4) -- (D1) -- (D3) --cycle;
\end{tikzpicture}

\end{document}

Respuesta1

Como siempre con TikZ y 3d: construye tus gráficos de atrás hacia adelante. (O use capas, pero eso aún necesita organización).

  1. las partes traseras del cubo
  2. los bordes posteriores del cubo
  3. los diamantes en el fondo
  4. los hexágonos dentro del cubo pero en la parte posterior
  5. los ejes dentro del cubo
  6. los hexágonos dentro del cubo pero en el frente
  7. los diamantes en el frente
  8. los lados frontales del cubo
  9. los ejes fuera del cubo

Elegí no llenar los lados frontales del cubo porque eso habría enturbiado toda la imagen.

Código

\documentclass[tikz]{standalone}
\usetikzlibrary{3d,arrows.meta}
\begin{document}
\begin{tikzpicture}[
  x=(-120:1cm*sin 30), y=(0:1cm), z=(90:1cm),
  %
  % h: half the height of the cube
  % r: half the diagonal of the square sides that touch the cube
  declare function={h=2; r=1;},
  %
  bg/.style={densely dotted},
  fg/.style={solid},
  axis bg/.style={densely dashed},
  axis fg/.style={solid,-{Stealth[round,/tikz/fill opacity=1]}},
  %
  square fill/.style={fill=blue!50},
  hex fill/.style   ={fill=green!50},
  cube fill/.style  ={fill=red!50},
  % 
%   debug/.style={shape=rectangle,font=\tiny,text=gray,inner sep=0pt, fill=white},
  %
  fill opacity=.5,
  %
  insert dia/.style={
    insert path={(#1n) -- (#1e) -- (#1s) -- (#1w) -- cycle}},
]

% corners of the cube
\foreach \side/\sign in {back/-, front/+}
\coordinate (\side-nw) at (\sign h, -h,  h)
 coordinate (\side-ne) at (\sign h,  h,  h)
 coordinate (\side-se) at (\sign h,  h, -h)
 coordinate (\side-sw) at (\sign h, -h, -h);

% corners of the squares/diamonds that touch the cube
\foreach \sign in {+,-}
  \foreach \x/\y/\z in {x/y/z, y/x/z, z/y/x}
    \coordinate[label={[shape=coordinate,debug/.try]:{\x\sign n}}]
       (\x\sign n) at (xyz cs: \x=\sign h, \y= 0, \z= r)
     coordinate[label={[shape=coordinate,debug/.try]:{\x\sign e}}]
       (\x\sign e) at (xyz cs: \x=\sign h, \y= r, \z= 0)
     coordinate[label={[shape=coordinate,debug/.try]:{\x\sign s}}]
       (\x\sign s) at (xyz cs: \x=\sign h, \y= 0, \z=-r)
     coordinate[label={[shape=coordinate,debug/.try]:{\x\sign w}}]
       (\x\sign w) at (xyz cs: \x=\sign h, \y=-r, \z= 0)
     coordinate[label={[shape=coordinate,debug/.try]:{\x\sign m}}]
       (\x\sign m) at (xyz cs: \x=\sign h, \y= 0, \z= 0);

% 1: fill the cube's sides in the bg
\path[cube fill, bg]            (back-nw) rectangle (back-se)  [insert dia=x-]
  {[canvas is xz plane at y=-h] (back-nw) rectangle (front-sw) [insert dia=y-]}
  {[canvas is xy plane at z=-h] (back-sw) rectangle (front-se) [insert dia=z-]};

% 2: draw the lines of the cube in the bg
\draw[bg] (back-sw) -- (back-nw)
          (back-sw) -- (back-se)
          (back-sw) -- (front-sw);

% 3: fill the diamonds in the bg (no draw because this will done by the hexagons)
\foreach \x in {x,y,z}
  \path[square fill, bg] [insert dia=\x-];

% 4: draw and fill the hexagons in the bg
\draw[hex fill, bg] (x-n) -- (z+s) -- (z+w) -- (y-n) -- (y-w) -- (x-w) -- cycle
                    (x-s) -- (z-s) -- (z-w) -- (y-s) -- (y-w) -- (x-w) -- cycle
                    (z+s) -- (z+e) -- (y+n) -- (y+w) -- (x-e) -- (x-n) -- cycle
                    (x-e) -- (x-s) -- (z-s) -- (z-e) -- (y+s) -- (y+w) -- cycle;

% 5: axes inside the cube
\foreach \x/\y/\z in {x/y/z, y/x/z, z/x/y}
  \draw[axis bg] (0,0,0) -- (xyz cs: \x=h, \y=0, \z=0);

% 6: hexagons in the fg
\draw[hex fill, fg] (x+n) -- (z+n) -- (z+w) -- (y-n) -- (y-e) -- (x+w) -- cycle
                    (y-e) -- (y-s) -- (z-w) -- (z-n) -- (x+s) -- (x+w) -- cycle
                    (z+e) -- (y+n) -- (y+e) -- (x+e) -- (x+n) -- (z+n) -- cycle
                    (y+s) -- (z-e) -- (z-n) -- (x+s) -- (x+e) -- (y+e) -- cycle;

% 7: diamonds in the fg
\foreach \x in {x,y,z}
  \draw[square fill, fg] [insert dia=\x+];

\draw[fg]                     (front-nw) rectangle (front-se) [insert dia=x+]
 {[canvas is xz plane at y=h] (front-ne) rectangle (back-se)  [insert dia=y+]}
 {[canvas is xy plane at z=h] (back-nw)  rectangle (front-ne) [insert dia=z+]};

% 9: the axes outside of the cube
\foreach \x/\y/\z in {x/y/z, y/x/z, z/x/y}
  \draw[axis fg] (xyz cs: \x=h, \y=0, \z=0) -- (xyz cs: \x=h + 1.5, \y=0, \z=0);
\end{tikzpicture}
\end{document}

Producción

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

información relacionada