Five Easy Pieces
Practically the same idea (and code) as Give Me Some Space, just truncating the tetrahedron rather than rectifying it.
The code for the Manipulate
is below; when exporting to a GIF I used "DisplayDurations" -> Prepend[Table[1/50, {199}], 1/2]
inside Export
to get the animation to pause on the original tetrahedron for half a second.
DynamicModule[{viewpoint = {Cos[2?/3], Sin[2?/3], 1/Sqrt[2]},
g = .6, d = .2, n = 4,
v = PolyhedronData["Tetrahedron", "VertexCoordinates"],
e = {{2, 3, 4}, {1, 4, 3}, {4, 1, 2}, {3, 2, 1}},
tt = PolyhedronData["TruncatedTetrahedron", "VertexCoordinates"],
te = PolyhedronData["TruncatedTetrahedron", "Faces"][[2]],
cols = RGBColor /@ {"#e43a19", "#f2f4f7", "#111f4d"},
s, r},
Manipulate[
s = Haversine[? t];
r = Haversine[2 ? t];
Graphics3D[{Thickness[.004], EdgeForm[None],
Table[
{GraphicsComplex[
(1/2 + r/2) v[[i]] + RotationTransform[2 ?/3 s, v[[i]]][#] & /@ (v/4),
{cols[[1]], Polygon[e[[i]]], cols[[2]], Polygon[e[[Drop[Range[4], {i}]]]]}]},
{i, 1, Length[v]}],
GraphicsComplex[
RotationTransform[0, {0, 0, 1}][RotationTransform[? s, {-Sqrt[3], -3, Sqrt[6]}][1/4 tt]],
{cols[[1]], Polygon[te[[1, ;; 4]]], cols[[2]], Polygon[te[[1, 5 ;;]]]}]},
Boxed -> False, ImageSize -> {540, 540}, PlotRange -> 2.5,
Background -> cols[[-1]], ViewPoint -> 10 viewpoint,
ViewAngle -> ?/125, ViewVertical -> {0, 0, 1},
SphericalRegion -> True,
Lighting -> {{"Ambient", GrayLevel[d]},
{"Directional", GrayLevel[g], ImageScaled[{2, 0, 2}]},
{"Directional", GrayLevel[g], ImageScaled[{-2, 2, 2}]},
{"Directional", GrayLevel[g], ImageScaled[{0, -2, 2}]}}],
{t, 0, 1}]
]