¿Cómo hago una red cristalina 3D usando TikZ?

¿Cómo hago una red cristalina 3D usando TikZ?

He estado tratando de hacer una red cristalina 3D decente usando LaTeX y TikZ desde hace un tiempo, y finalmente logré encontrar un código en el que alguien había hecho uno perfecto. Sin embargo, no importa lo que intente, en lugar de una red 3D, obtengo un lío de piezas esféricas orientadas aleatoriamente.

Resultado previsto Mi resultado

A continuación se muestra el código que utilicé (https://github.com/dog-blood/utterly-unorganized-latex-code/tree/main/Chem/Unit%203%20Gasses):

\begin{tikzpicture}[isometric view,rotate around z=180,line cap=round,line join=round,scale=0.8]
    
    
    \tikzset{xy/.style={canvas is xy plane at       z=\a,shift={(0.5*\a,0.5*\a)},rotate=90*\i,fill=red1,draw=pag!30},
        xz/.style={canvas is xz plane at y=\a,shift={(0.5*\a,0.5*\a)},rotate=90*\i,fill=red1,draw=pag!30},
        yz/.style={canvas is yz plane at x=\a,shift={(0.5*\a,0.5*\a)},rotate=90*\i,fill=red1,draw=pag!30},
        my ball/.style={top color=red2, bottom color=red2}}
    
    
    \def\a{3} % edge length
    \pgfmathsetmacro\r{0.25*sqrt(2.5)*\a} % sphere radius
    % background
    \foreach\i in {0,120,240}
    \draw[rotate=\i,color=pag!,my ball] (\a,0,0) --++ (0,\r,0) arc (90:135:\r) arc (0:60:\r cm)
    {[canvas is xz plane at y=0] arc (135:90:\r)} -- cycle;
    % sphere (center)
    \draw[my ball, color=pag]  (0.5*\a,0.5*\a,0.5*\a) circle (\r cm);
    % foreground
    \foreach\i in {0,120,240}
    \draw[rotate=\i,my ball,color=pag] (\a,\a,0) --++ (60:\r cm) arc (60:120:\r cm) -- cycle;
    
    \foreach\s in {xy,xz,yz} \foreach\i in {1,...,4}
    \draw[\s] (45:{\a*sin(45)}) --++ (180:\r) arc (180:270:\r) -- cycle;
\end{tikzpicture}

Respuesta1

Encontré mi error, era temprano en la mañana y se me olvidó agregar:

\usetikzlibrary{perspective}

información relacionada