The correct solution is (E), I think. Notice that to compile this code you need the latest version of [`3dtools`](https://github.com/marmotghost/tikz-3dtools).
```
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{3dtools}%https://github.com/marmotghost/tikz-3dtools
\begin{document}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\foreach \Angle in {5,15,...,355}
{\begin{tikzpicture}[same bounding box=A]
\begin{scope}[3d/install view={phi=\Angle,psi=0,theta=60}]
\pgfmathsetmacro{\myr}{sqrt(1+tan(30)*tan(30))}
\pgfmathsetmacro{\myh}{2*sin(acos(\myr/2))}
\pgfmathsetmacro{\myt}{2*sqrt(6)}
\pgfmathsetmacro{\mys}{2+\myt}
\pgfmathsetmacro{\myd}{(1+sqrt(6))/cos(30)}
\pgfmathsetmacro{\myH}{sqrt(2/3)*\mys}
\path (-1,{-tan(30)},1) coordinate (C1) (1,{-tan(30)},1) coordinate (C2)
(0,{tan(60)-tan(30)},1) coordinate (C3) (0,0,{1+\myh}) coordinate (C4)
foreach \X in {1,2,3}
{({\myd*cos(90+\X*120)},{\myd*sin(90+\X*120)},0) coordinate (v\X)}
(0,0,{\myH}) coordinate (v4);
% cross check
% \pgfmathsetmacro{\mydAB}{tddistance("(v1)","(v2)")}
% \pgfmathsetmacro{\mydAD}{tddistance("(v1)","(v4)")}
% \typeout{\mydAB,\mydAD}
\let\mylistd\empty
\tikzset{add screen depth/.code={%
\pgfmathsetmacro{\mycoor}{TD("(C##1)")}%
\pgfmathsetmacro{\mysd}{screendepth(\mycoor)}%
\ifx\mylistd\empty
\edef\mylistd{\mysd}%
\else
\edef\mylistd{\mylistd,\mysd}%
\fi}}
\tikzset{add screen depth/.list={1,...,4}}
\pgfkeys{/my lists/.cd,
my initial array/.is array={\mylistd},
my values/.initial=\pgfkeysvalueof{/my lists/my initial array/content},%
my values/.sort numeric list={\temp}{\templ},% sort yields sorted list and index
my sorted array/.is array/.expanded={\temp},
my index machinery/.is array/.expanded={\templ}}%
\tikzset{ball 1/.style={ball color=red},ball 2/.style={ball color=blue},
ball 3/.style={ball color=green!70!black},ball 4/.style={ball color=orange}}
\foreach \X in \templ
{
\shade[3d/screen coords,ball \X] (C\X) circle[radius=1];}
\tikzset{3d/polyhedron/.cd,fore layer=foreground,back layer=background,
face edges/.style={},%
back/.style={3d/hidden,fill=none},
fore/.style={3d/visible,solid,fill=none,3d/polyhedron/edges have complete dashes=false},
complete dashes,
O={(0,0,1)},
draw face with corners={{(v1)},{(v2)},{(v3)}},
draw face with corners={{(v1)},{(v2)},{(v4)}},
draw face with corners={{(v1)},{(v3)},{(v4)}},
draw face with corners={{(v2)},{(v3)},{(v4)}}
}
\end{scope}
\end{tikzpicture}}
\end{document}
```
![ani.gif](/image?hash=480428d66ffc58f72d95954c05c4420472cc44c621bcdeeba60e994c44e82f36)