4

This is called the quasiregular space-filling tessellations in 3D:

formed by

and

Are there any smart ways to do a LaTex figure drawing this?

enter image description here

9

This is a code that works for view parameters not too different from what is used here. If you want to create a version in which you can adjust the view parameters, you need to somehow make TikZ to sort the planes according to their 3d positions. This can be achieved with the methods used in this answer to a previous question of yours.

\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{80}{200}
\begin{tikzpicture}[tdplot_main_coords,line cap=round,line join=round,
 pics/octahedron/.style={code={
 \draw[fill=red!80!black] (-1,0,1) -- (1,0,1) -- (0,{sqrt(2)},0) -- cycle;
 \draw[fill=red!30!black] (1,0,1) -- (1,0,-1) -- (0,{sqrt(2)},0) -- cycle;
 \draw[fill=red!60!black] (1,0,-1) -- (-1,0,-1) -- (0,{sqrt(2)},0) -- cycle;
 \draw[fill=red] (-1,0,-1) -- (-1,0,1) -- (0,{sqrt(2)},0) -- cycle;}},
 pics/tetrahedron1/.style={code={
 \draw[fill=yellow!60!black] (0,0,-1) -- (1,{sqrt(2)},0) -- (-1,{sqrt(2)},0) -- cycle;
 \draw[fill=yellow] (0,0,1) -- (1,{sqrt(2)},0) -- (-1,{sqrt(2)},0) -- cycle;
 }},
 pics/tetrahedron2/.style={code={
 \draw[fill=yellow!60!black] (0,{sqrt(2)},-2) -- (0,{sqrt(2)},0) -- 
 (1,0,-1) -- cycle;
 \draw[fill=yellow] (-1,0,-1)-- (0,{sqrt(2)},-2) -- (0,{sqrt(2)},0) -- cycle;;
 }}]
 \path foreach \Y in {0,1}{ foreach \X in {0,1,2} {
 (2*\X+\Y,{sqrt(2)*\Y},-\Y)pic{octahedron}} 
  foreach \X in {0,...,\the\numexpr2-\Y} { (2*\X+1+\Y,{sqrt(2)*\Y},-\Y) pic{tetrahedron1}}
  foreach \X in {0,1,2} { (2*\X+\Y,{sqrt(2)*\Y},-\Y)   pic{tetrahedron2}}
  };
 \path foreach \Y in {2} { foreach \X in {0,1} {
 (2*\X+\Y,{sqrt(2)*\Y},-\Y)pic{octahedron}}
 foreach \X in {0} {
  (2*\X+1+\Y,{sqrt(2)*\Y},-\Y) pic{tetrahedron1}}  };
\end{tikzpicture}
\end{document}

enter image description here

One may animate this to illustrate the point of the tessellation.

\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{80}{200}
\foreach \Iteration in {1,...,21}
{\begin{tikzpicture}[tdplot_main_coords,line cap=round,line join=round,
 pics/octahedron/.style={code={
 \draw[fill=red!80!black] (-1,0,1) -- (1,0,1) -- (0,{sqrt(2)},0) -- cycle;
 \draw[fill=red!30!black] (1,0,1) -- (1,0,-1) -- (0,{sqrt(2)},0) -- cycle;
 \draw[fill=red!60!black] (1,0,-1) -- (-1,0,-1) -- (0,{sqrt(2)},0) -- cycle;
 \draw[fill=red] (-1,0,-1) -- (-1,0,1) -- (0,{sqrt(2)},0) -- cycle;}},
 pics/tetrahedron1/.style={code={
 \draw[fill=yellow!60!black] (0,0,-1) -- (1,{sqrt(2)},0) -- (-1,{sqrt(2)},0) -- cycle;
 \draw[fill=yellow] (0,0,1) -- (1,{sqrt(2)},0) -- (-1,{sqrt(2)},0) -- cycle;
 }},
 pics/tetrahedron2/.style={code={
 \draw[fill=yellow!60!black] (0,{sqrt(2)},-2) -- (0,{sqrt(2)},0) -- 
 (1,0,-1) -- cycle;
 \draw[fill=yellow] (-1,0,-1)-- (0,{sqrt(2)},-2) -- (0,{sqrt(2)},0) -- cycle;;
 }}]
 \path[tdplot_screen_coords] (-6.5,-3.5) rectangle (1,1.5);
 \path foreach \Y in {0,1}{ foreach \X in {0,1,2} {
  \ifnum\the\numexpr\X+9*\Y<\Iteration
 (2*\X+\Y,{sqrt(2)*\Y},-\Y)pic{octahedron}
 \fi
 } 
  foreach \X in {0,...,\the\numexpr2-\Y} {
  \ifnum\the\numexpr\X+9*\Y+3<\Iteration
   (2*\X+1+\Y,{sqrt(2)*\Y},-\Y) pic{tetrahedron1}
  \fi 
   }
  foreach \X in {0,1,2} {
  \ifnum\the\numexpr\X+9*\Y+6<\Iteration
   (2*\X+\Y,{sqrt(2)*\Y},-\Y)   pic{tetrahedron2}
  \fi }
  };
 \path foreach \Y in {2} { foreach \X in {0,1} {
  \ifnum\the\numexpr\X+18<\Iteration
   (2*\X+\Y,{sqrt(2)*\Y},-\Y)pic{octahedron}
 \fi}
 foreach \X in {0} {
 \ifnum20<\Iteration
  (2*\X+1+\Y,{sqrt(2)*\Y},-\Y) pic{tetrahedron1}
 \fi}  };
\end{tikzpicture}}
\end{document}

enter image description here

|improve this answer|||||
  • this works nicely +1 (accepted soon) – wonderich Feb 18 at 5:17
  • thank you answer accepted! – wonderich Feb 23 at 18:30
  • p.s. I also post a new question on the tensor like network graph. – wonderich Feb 23 at 18:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.