Pour la rédaction d’un article, j’ai dû schématiser une grille régulière 3D (des cubes en fait). Après beaucoup d’hésitation entre TikZ et Inkscape, j’ai opté pour la première solution, que j’ai jugée plus flexible.
Table des matières
Cube élémentaire
Commençons par définir une commande qui dessinera un cube élémentaire aux coordonnées souhaitées :
Dans le préambule
\usepackage{tikz} \newcommand{\elemcube}[4][blue]{ \draw [fill=#1!30,very thin] (#2+1,#3,#4) -- ++(0,1,0) -- ++(0,0,-1) -- ++(0, -1, 0) -- cycle; \draw [fill=#1!40,very thin] (#2,#3+1,#4) -- ++(1,0,0) -- ++(0,0,-1) -- ++(-1, 0, 0) -- cycle; \draw [fill=#1!10,very thin] (#2,#3,#4) -- ++(1,0,0) -- ++(0,1,0) -- ++(-1, 0, 0) -- cycle; } \newenvironment{stackedboxes}{ \begin{tikzpicture}[x=(220:0.5cm), y=(-40:0.5cm), z=(90:0.353cm)] }{ \end{tikzpicture} } |
Dans le corps de document
\begin{stackedboxes} \elemcube{0}{0}{0} \end{stackedboxes} |
Empilement de cubes
Ordre d’affichage
Là où ça se complique un peu, c’est que, compte-tenu de la façon dont est défini un cube élémentaire, TikZ n’est pas à même de déterminer qui de deux cubes doit cacher l’autre. C’est donc à nous de déterminer quel cube doit être affiché en premier.
Ainsi, les cubes doivent être classés suivants les règles suivantes (de la plus prioritaire à la moins prioritaire) :
- x croissants
- y croissants
- z croissants
Exemples
\begin{stackedboxes} \elemcube{-1}{-1}{-1} \elemcube{-1}{-1}{0} \elemcube{-1}{0}{-1} \elemcube{-1}{0}{0} \elemcube{-1}{1}{-1} \elemcube{0}{-1}{-1} \elemcube{0}{-1}{0} \elemcube{0}{0}{-1} \elemcube[red]{0}{0}{0} \elemcube{0}{1}{-1} \elemcube{1}{-1}{-1} \elemcube{1}{-1}{0} \elemcube{1}{0}{-1} \elemcube{1}{1}{-1} \end{stackedboxes} |
\begin{stackedboxes} % F \elemcube{-2}{0}{3} \elemcube{-1}{0}{1} \elemcube{-1}{0}{3} \elemcube{0}{0}{0} \elemcube{0}{0}{1} \elemcube{0}{0}{2} \elemcube{0}{0}{3} % U \def\y{3} \elemcube{-2}{\y}{0} \elemcube{-2}{\y}{1} \elemcube{-2}{\y}{2} \elemcube{-2}{\y}{3} \elemcube{-1}{\y}{0} \elemcube{0}{\y}{0} \elemcube{0}{\y}{1} \elemcube{0}{\y}{2} \elemcube{0}{\y}{3} % C \def\y{6} \elemcube{-2}{\y}{0} \elemcube{-2}{\y}{3} \elemcube{-1}{\y}{0} \elemcube{-1}{\y}{3} \elemcube{0}{\y}{0} \elemcube{0}{\y}{1} \elemcube{0}{\y}{2} \elemcube{0}{\y}{3} % K \def\y{9} \elemcube{-2}{\y}{0} \elemcube{-2}{\y}{3} \elemcube{-1}{\y}{1} \elemcube{-1}{\y}{2} \elemcube{0}{\y}{0} \elemcube{0}{\y}{1} \elemcube{0}{\y}{2} \elemcube{0}{\y}{3} \end{stackedboxes} |