Platonic and Archimedean dual compounds​
​by Oliver Seipel
https://en.wikipedia.org/wiki/Polytope_compound​
A dual compound is composed of a polyhedron and its dual, arranged reciprocally about a common midsphere, such that the edge of one polyhedron intersects the dual edge of the dual polyhedron.
https://en.wikipedia.org/wiki/Dual_polyhedron

midpyramid

midpyramid places a pyramid on the midpoints of a given Polygon (and it’s the only routine to construct the dual compounds):
In[]:=
midpyramid[face_,k_]:=With[{mid=Map[Mean,{face,RotateLeft[face]}]},MapThread[Polygon[{kMean[face],#1,#2}]&,{mid,RotateLeft[mid]}]]
Example:
In[]:=
Graphics3D[Polygon[Map[Join[#,{1}]&,N[CirclePoints[5]]]],Lighting"Neutral",Boxed->False]/.{Polygon[p_]:>{{Red,Polygon[p]},{White,midpyramid[p,1.5]}}}
Out[]=

The five Platonic polyhedrons generate only three different Dual Compounds:

The Tetrahedron is self dual. The dual compound is Stella Octangula:
In[]:=
With[{poly=Normal[PolyhedronData["Tetrahedron","GraphicsComplex"]]},Graphics3D[{Red,poly,White,poly/.{Polygon[p_]:>midpyramid[p,3]}},Lighting"Neutral",Boxed->False,ViewProjection"Orthographic"]]
Out[]=
The dual of a Hexahedron is an Octahedron:
In[]:=
With[{poly=Normal[PolyhedronData["Cube","GraphicsComplex"]]},Graphics3D[{Red,poly,White,poly/.{Polygon[p_]:>midpyramid[p,2]}},Lighting"Neutral",Boxed->False,ViewProjection"Orthographic"]]
Out[]=
The dual of an Octahedron is a Hexahedron:
In[]:=
With[{poly=Normal[PolyhedronData["Octahedron","GraphicsComplex"]]},Graphics3D[{Red,poly,White,poly/.{Polygon[p_]:>midpyramid[p,3/2]}},Lighting"Neutral",Boxed->False,ViewProjection"Orthographic"]]
Out[]=
The dual of a Dodecahedron is an Icosahedron:
In[]:=
With[{poly=Normal[PolyhedronData["Dodecahedron","GraphicsComplex"]]},Graphics3D[Red,poly,White,poly/.Polygon[p_]:>midpyramid[p,
2
],Lighting"Neutral",Boxed->False,ViewProjection"Orthographic"]]
Out[]=
The dual of an Icosahedron is a Dodecahedron:
In[]:=
With{poly=Normal[PolyhedronData["Icosahedron","GraphicsComplex"]]},Graphics3DRed,poly,White,poly/.Polygon[p_]:>midpyramidp,
3
2
3-
5
,Lighting"Neutral",Boxed->False,ViewProjection"Orthographic"

The 13 Archimedean give 13 Dual Compounds:

The dual of a Cuboctahedron is a Rhombic Dodecahedron:
The dual of a GreatRhombicosidodecahedron is a Disdyakis Triacontahedron:
The dual of a GreatRhombicuboctahedron ia a Disdyakis Dodecahedron
The dual of an Icosidodecahedron is a Rhombic Triacontahedron:
The dual of a SmallRhombicosidodecahedron is a Deltoidal Hexecontahedron
The dual of a SmallRhombicuboctahedron is a Deltoidal Icositetrahedron
The dual of a Snub Cube (Cubus Simus) is a Pentagonal Icositetrahedron:
The dual of a SnubDodecahedron is a Pentagonal Hexecontahedron
The dual of a TruncatedCube is a Small Triakis Octahedron
The dual of a Truncated Dodecahedron is a Triakis Icosahedron
The dual of a Truncated Icosahedron is a Pentakis Dodecahedron
The dual of a Truncated Octahedron is a Tetrakis Hexahedron:
The dual of a Truncated Tetrahedron is a Triakis Tetrahedron: