Rhombic Dodecahedron

Author

Eric W. Weisstein
January 5, 2024

This notebook downloaded from http://mathworld.wolfram.com/notebooks/Polyhedra/RhombicDodecahedron.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/RhombicDodecahedron.html.

©2024 Wolfram Research, Inc. except for portions noted otherwise

Figure

With[{pname="RhombicDodecahedron"},
GraphicsRow[{
Graphics3D[{Opacity[.8],PolyhedronData[pname,"Polyhedron"]},Boxed->False],
Graphics3D[{PolyhedronData[pname,"Lines"]},Boxed->False],
PolyhedronData[pname,"Net"]
},ImageSize->700]]

Solid

Orientations

PolyhedronData["RhombicDodecahedron","Orientations"]

PolyhedronData["RhombicDodecahedron","DefaultOrientation"]

PolyhedronData[{"RhombicDodecahedron",#}]&/@%

Solid and Dual

GraphicsRow[PolyhedronData["RhombicDodecahedron",#]&/@{"Graphics3D","Dual","DualCompound"}]

Net

PolyhedronData["RhombicDodecahedron","Net"]

PolyhedronData["RhombicDodecahedron","Net","Colored"]

NetPrintout[PolyhedronData["RhombicDodecahedron","Polyhedron"],"RhombicDodecahedron.pdf"]

Properties: {"RhombicDodecahedron", "C4"} == "RhombicDodecahedron"

Initialization

<<MathWorld`Polyhedra`

p=PolyhedronData[pname="RhombicDodecahedron","Polyhedron"]

vol=PolyhedronData[pname,"Volume"]

Centroid

PolyhedronData[{"RhombicDodecahedron","C4"},"Centroid"]

PolyhedronCentroid[p]

RegionCentroid[p]

Circumsphere

PolyhedronData[{"RhombicDodecahedron","C4"},"Circumsphere"]

Circumsphere[p]

MyCircumsphere[p]

Norm/@p[[1]]//FullSimplify//Union

Convex

PolyhedronData[{"RhombicDodecahedron","C4"},"Convex"]

ConvexPolyhedronQ[p]

ConvexHull

PolyhedronData[{"RhombicDodecahedron","C4"},"ConvexHull"]

PolyhedronData[{"RhombicDodecahedron","C4"},"ConvexHull",#]&/@{"Name","Scale"}

ConvexHullOf

hullof=DeleteCases[Select[PolyhedronData[All],PolyhedronData[#,"ConvexHullName"]===pname&],pname]

GraphicsGrid[Partition[Graphics3D[{
{Green,Opacity[.7],PolyhedronData[#,"Polyhedron"]},
{Blue,Opacity[.2],PolyhedronData[#,"ConvexHull","Polyhedron"]}},Boxed->False,PlotLabel->Style[PolyhedronData[#,"Name"],Directive[14,Black,Italic,FontFamily->"Times"]]]&/@hullof,UpTo[3]],Dividers->All,ImageSize->400]

Faces

Show[GraphicsArray[partition[PolyhedronFaces[poly],5]]]

PolyhedronFaceCounts[poly]

EdgeLengths

PolyhedronData[{"RhombicDodecahedron","C4"},"EdgeLengths"]

PolyhedronData[{"RhombicDodecahedron","C4"},"Lines"]/.Line[l_]:>EuclideanDistance@@l//Union

GeneralizedDiameter

PolyhedronData[{"RhombicDodecahedron","C4"},"GeneralizedDiameter"]

GeneralizedDiameter[p]

InertiaTensor

PolyhedronData[{"RhombicDodecahedron","C4"},"InertiaTensor"]

MomentOfInertia[p]/Volume[p]

PolyhedronInertiaTensor[p]

Insphere

PolyhedronData[{"RhombicDodecahedron","C4"},"Insphere"]

Insphere[p]

MyInsphere[p]

MeanCylindricalRadius

PolyhedronData[pname,"MeanCylindricalRadius"]

N[%]

((NIntegrate[(Sqrt[(x^2)+(y^2)]),{x,y,z}∈p])/vol)

Integrate over polyhedron

(i=((Integrate[(Sqrt[(x^2)+(y^2)]),{x,y,z}∈p])/vol))//Timing

N[i]

Divergence theorem

(rxy=MeanCylindricalRadius[p,"Simplification"->FullSimplify,Debug->True])//Timing

N[rxy]

LogSimplify[rxy]//FullSimplify

CAD

cad=CylindricalDecomposition[PolyhedronData[pname,"RegionFunction"][x,y,z],{x,y,z},"Function"]

((NIntegrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxy=((Integrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

CAD over  1/16

reg=FullSimplify[PolyhedronData[pname,"RegionFunction"][x,y,z]&&0<y<Tan[Pi/4]x&&z>0]

((Volume[ImplicitRegion[reg,{x,y,z}]])/vol)

cad=CylindricalDecomposition[reg,{x,y,z},"Function"]

16((NIntegrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxy=16((Integrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

N[rxy]

LogSimplify[rxy]//FullSimplify//Expand

FullSimplify[(1/(6 (Sqrt[3])))+(1/(3 (Sqrt[6])))]+((5 ArcSinh[1])/(6 (Sqrt[6])))

N[%]

MeanSquareCylindricalRadius

PolyhedronData[pname,"MeanSquareCylindricalRadius"]

((NIntegrate[(x^2)+(y^2),{x,y,z}∈p])/vol)//FullSimplify

(((Integrate[(x^2)+(y^2),{x,y,z}∈PolyhedronData[{"RhombicDodecahedron",#},"Polyhedron"]])/vol))&/@PolyhedronData["RhombicDodecahedron","Orientations"]

MeanSphericalRadius

PolyhedronData[pname,"MeanSphericalRadius"]

((NIntegrate[(Sqrt[(x^2)+(y^2)+(z^2)]),{x,y,z}∈p])/vol)

Integrate over polyhedron [unevaluated]

(rxy=((Integrate[(Sqrt[(x^2)+(y^2)+(z^2)]),{x,y,z}∈p])/vol))//Timing

N[rxy]

Divergence theorem [bad integral]

(rxyz=MeanSphericalRadius[p,"Simplification"->FullSimplify,Debug->True])//Timing

N[rxyz]

LogSimplify[rxyz]//FullSimplify

CAD

cad=CylindricalDecomposition[PolyhedronData[pname,"RegionFunction"][x,y,z],{x,y,z},"Function"]

((NIntegrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxyz=((Integrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

N[rxyz,20]

rxysimp1=ResourceFunction["LogSimplify"][rxy]//FullSimplify

CAD over  1/16 [unevaluated]

reg=FullSimplify[PolyhedronData[pname,"RegionFunction"][x,y,z]&&0<y<Tan[Pi/4]x&&z>0]

((Volume[ImplicitRegion[reg,{x,y,z}]])/vol)//FullSimplify

cad=CylindricalDecomposition[reg,{x,y,z},"Function"]

16((NIntegrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxyz=16((Integrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

N[rxyz,20]

rxysimp1=LogSimplify[rxy]//FullSimplify

MeanSquareSphericalRadius

PolyhedronData[pname,"MeanSquareSphericalRadius"]

((NIntegrate[(x^2)+(y^2)+(z^2),{x,y,z}∈p])/vol)

(((Integrate[(x^2)+(y^2)+(z^2),{x,y,z}∈PolyhedronData[{"RhombicDodecahedron",#},"Polyhedron"]])/vol))&/@PolyhedronData["RhombicDodecahedron","Orientations"]

Midsphere

PolyhedronData[{"RhombicDodecahedron","C4"},"Midsphere"]

Midsphere[p]

Midsphere[p]

Orientations

PolyhedronData[pname,"Orientations"]

PolyhedronData[pname,"DefaultOrientation"]

RegionFunction

reg=PolyhedronData[{"RhombicDodecahedron","C4"},"RegionFunction"][x,y,z]

bounds=Flatten/@Transpose[{{x,y,z},PolyhedronData[{"RhombicDodecahedron","C4x"},"CoordinateBounds"]}]

range={0,-.1,.1}+#&/@bounds

RegionPlot3D[Evaluate[reg],Evaluate[Sequence@@range],PlotPoints->40]

Simple

SimplePolyhedronQ[p]

Skeleton

g=PolyhedronData[{"RhombicDodecahedron","C4"},"Skeleton"]

r=RecognizeGraph[g]

GraphData[r,"Graph","All"]

SurfaceArea

PolyhedronData[{"RhombicDodecahedron","C4"},"SurfaceArea"]

SurfaceArea[p]

PolyhedronSurfaceArea[p]

VertexSubsetHulls

PolyhedronData[{"RhombicDodecahedron","C4"},"VertexSubsetHulls"]

(h=VertexSubsetHulls[p,"Platonic"])//Timing

g=Function[poly,Graphics3D[{
{Gray,Opacity[.2],EdgeForm[Thick],PolyhedronData[p,"Faces"]},ConvexHull3D[N[PolyhedronData[p,"VertexCoordinates"]][[#]]]&/@poly},Boxed->False]]/@h[[All,2]]

Volume

PolyhedronData[{"RhombicDodecahedron","C4"},"Volume"]

Volume[p]

PolyhedronVolume[p,Method->"Pyramids"]

PolyhedronVolume[p,Method->"GaussLaw"]

Integrate[1,{x,y,z}∈PolyhedronData[{"RhombicDodecahedron","C4"},"Region"]]//Timing

Integrate[1,{x,y,z}∈PolyhedronData[{"RhombicDodecahedron","C4"},"ImplicitRegion"]]//Timing

Integrate[Boole[PolyhedronData[{"RhombicDodecahedron","C4"},"RegionFunction"][x,y,z]],{x,y,z}∈FullRegion[3]]//Timing

Properties: {"RhombicDodecahedron", "C4x"}

Initialization

<<MathWorld`Polyhedra`

p=PolyhedronData[pname={"RhombicDodecahedron","C4x"},"Polyhedron"]

vol=PolyhedronData[pname,"Volume"]

Centroid

PolyhedronData[{"RhombicDodecahedron","C4x"},"Centroid"]

PolyhedronCentroid[p]

RegionCentroid[p]

Circumsphere

PolyhedronData[{"RhombicDodecahedron","C4x"},"Circumsphere"]

Circumsphere[p]

MyCircumsphere[p]

Norm/@p[[1]]//FullSimplify//Union

Convex

PolyhedronData[{"RhombicDodecahedron","C4x"},"Convex"]

ConvexPolyhedronQ[p]

ConvexHull

PolyhedronData[{"RhombicDodecahedron","C4x"},"ConvexHull"]

PolyhedronData[{"RhombicDodecahedron","C4x"},"ConvexHull",#]&/@{"Name","Scale"}

Faces

Show[GraphicsArray[partition[PolyhedronFaces[poly],5]]]

PolyhedronFaceCounts[poly]

EdgeLengths

PolyhedronData[{"RhombicDodecahedron","C4x"},"EdgeLengths"]

PolyhedronData[{"RhombicDodecahedron","C4x"},"Lines"]/.Line[l_]:>EuclideanDistance@@l//Union

GeneralizedDiameter

PolyhedronData[{"RhombicDodecahedron","C4x"},"GeneralizedDiameter"]

GeneralizedDiameter[p]

InertiaTensor

PolyhedronData[{"RhombicDodecahedron","C4x"},"InertiaTensor"]

MomentOfInertia[p]/Volume[p]

PolyhedronInertiaTensor[p]

Insphere

PolyhedronData[{"RhombicDodecahedron","C4x"},"Insphere"]

Insphere[p]

MyInsphere[p]

MeanCylindricalRadius

PolyhedronData[pname,"MeanCylindricalRadius"]

N[%]

((NIntegrate[(Sqrt[(x^2)+(y^2)]),{x,y,z}∈p])/vol)

ClosestMeanCylindricalRadius[%]

Integrate over polyhedron

(rxy=((Integrate[(Sqrt[(x^2)+(y^2)]),{x,y,z}∈p])/vol)//FullSimplify)

N[rxy]

Divergence theorem

(rxy=MeanCylindricalRadius[p,"Simplification"->FullSimplify,Debug->True])//Timing

N[rxy]

LogSimplify[rxy]//FullSimplify

CAD

cad=CylindricalDecomposition[PolyhedronData[pname,"RegionFunction"][x,y,z],{x,y,z},"Function"]

((NIntegrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxy=((Integrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

CAD over  1/16

reg=FullSimplify[PolyhedronData[pname,"RegionFunction"][x,y,z]&&0<y<Tan[Pi/4]x&&z>0]

Show[Graphics3D[{Opacity[.2],p}],RegionPlot3D[ImplicitRegion[reg,{x,y,z}],PlotPoints->50]]

((Volume[ImplicitRegion[reg,{x,y,z}]])/vol)//FullSimplify

cad=CylindricalDecomposition[reg,{x,y,z},"Function"]

16((NIntegrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxy=16((Integrate[(Sqrt[(x^2)+(y^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

N[rxy]

FullSimplify[rxy]

MeanSphericalRadius

PolyhedronData[pname,"MeanSphericalRadius"]

((NIntegrate[(Sqrt[(x^2)+(y^2)+(z^2)]),{x,y,z}∈p])/vol)

ClosestMeanSphericalRadius[%]

Integrate over polyhedron

(rxyz=((Integrate[(Sqrt[(x^2)+(y^2)+(z^2)]),{x,y,z}∈p])/vol))//Timing

N[rxyz]

Divergence theorem [bad integral]

(rxyz=MeanSphericalRadius[p,"Simplification"->FullSimplify,Debug->True])//Timing

N[rxyz]

LogSimplify[rxyz]//FullSimplify

CAD

cad=CylindricalDecomposition[PolyhedronData[pname,"RegionFunction"][x,y,z],{x,y,z},"Function"]

((NIntegrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxyz=((Integrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

N[rxyz,20]

rxysimp1=ResourceFunction["LogSimplify"][rxy]//FullSimplify

CAD over  1/16 [unevaluated]

reg=FullSimplify[PolyhedronData[pname,"RegionFunction"][x,y,z]&&0<y<Tan[Pi/4]x&&z>0]

Show[Graphics3D[{Opacity[.2],p}],RegionPlot3D[ImplicitRegion[reg,{x,y,z}],PlotPoints->50]]

((Volume[ImplicitRegion[reg,{x,y,z}]])/vol)//FullSimplify

cad=CylindricalDecomposition[reg,{x,y,z},"Function"]

16((NIntegrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol)

(rxyz=16((Integrate[(Sqrt[(x^2)+(y^2)+(z^2)])Boole[cad],{x,y,z}∈FullRegion[3]])/vol))//Timing

ByteCount[rxyzlog=LogSimplify[rxyz,"ZeroTestNumericalPrecision"->10000,WorkingPrecision->10000,Debug->True]]//Timing

ByteCount[rxyzcollect=Collect[TrigToExp[rxyzlog],Log[_]]//RootReduce]//Timing

MeanSquareCylindricalRadius

PolyhedronData[pname,"MeanSquareCylindricalRadius"]

N[%]

((NIntegrate[(x^2)+(y^2),{x,y,z}∈p])/vol)

Integrate over Polyhedron

(rxy2=((Integrate[(x^2)+(y^2),{x,y,z}∈p])/vol)//FullSimplify)

N[rxy2]

Divergence theorem

(rxy2=MeanSquareCylindricalRadius[p,"Simplification"->FullSimplify,Debug->True])//Timing

MeanSquareSphericalRadius

PolyhedronData[pname,"MeanSquareSphericalRadius"]

((NIntegrate[(x^2)+(y^2)+(z^2),{x,y,z}∈p])/vol)

Integrate over polyhedron

(rxy2=((Integrate[(x^2)+(y^2)+(z^2),{x,y,z}∈p])/vol)//FullSimplify)

N[rxy2]

Integrate over region

reg=PolyhedronData[pname,"RegionFunction"][x,y,z]

(rxy=((Integrate[((x^2)+(y^2)+(z^2))Boole[reg],{x,y,z}∈FullRegion[3]])/vol))

Divergence theorem

(rxy2=MeanSquareSphericalRadius[p,"Simplification"->FullSimplify,Debug->True])//Timing

Boole Integrate doing z integral first

{{xmin,xmax},{ymin,ymax},{zmin,zmax}}==CoordinateBounds[p]

ineq=PolyhedronData[pname,"RegionFunction"][x,y,z]

(i1=Integrate[Boole[ineq]((x^2)+(y^2)+(z^2)),{z,zmin,zmax}])//Timing

NIntegrate[(i1/vol),{x,xmin,xmax},{y,ymin,ymax}]

(i2=Integrate[(i1/vol),{x,xmin,xmax},{y,ymin,ymax}])//Timing

Midsphere

PolyhedronData[{"RhombicDodecahedron","C4x"},"Midsphere"]

Midsphere[p]

Midsphere[p]

RegionFunction

reg=PolyhedronData[{"RhombicDodecahedron","C4x"},"RegionFunction"][x,y,z]

bounds=Flatten/@Transpose[{{x,y,z},PolyhedronData[{"RhombicDodecahedron","C4x"},"CoordinateBounds"]}]

range={0,-.1,.1}+#&/@bounds

RegionPlot3D[Evaluate[reg],Evaluate[Sequence@@range],PlotPoints->40]

Simple

SimplePolyhedronQ[p]

Skeleton

g=PolyhedronData[{"RhombicDodecahedron","C4x"},"Skeleton"]

r=RecognizeGraph[g]

GraphData[r,"Graph","All"]

SurfaceArea

PolyhedronData[{"RhombicDodecahedron","C4x"},"SurfaceArea"]

SurfaceArea[p]

PolyhedronSurfaceArea[p]

VertexSubsetHulls

PolyhedronData[{"RhombicDodecahedron","C4x"},"VertexSubsetHulls"]

(h=VertexSubsetHulls[p,"Platonic"])//Timing

g=Function[poly,Graphics3D[{
{Gray,Opacity[.2],EdgeForm[Thick],PolyhedronData[p,"Faces"]},ConvexHull3D[N[PolyhedronData[p,"VertexCoordinates"]][[#]]]&/@poly},Boxed->False]]/@h[[All,2]]

Volume

PolyhedronData[{"RhombicDodecahedron","C4x"},"Volume"]

Volume[p]

PolyhedronVolume[p,Method->"Pyramids"]

PolyhedronVolume[p,Method->"GaussLaw"]

Integrate[1,{x,y,z}∈PolyhedronData[{"RhombicDodecahedron","C4x"},"Region"]]//Timing

Integrate[1,{x,y,z}∈PolyhedronData[{"RhombicDodecahedron","C4x"},"ImplicitRegion"]]//Timing

Integrate[Boole[PolyhedronData[{"RhombicDodecahedron","C4x"},"RegionFunction"][x,y,z]],{x,y,z}∈FullRegion[3]]//Timing

Perspective

PolyhedronProjectionGraph[PolyhedronData["RhombicDodecahedron","Polyhedron"],#,"Simplification"->FullSimplify]&/@{{0,0,1},{0,Sqrt[2],1},{0,1,0,π/2},{1,0,1},{2 (Sqrt[2]),(Sqrt[2]),1,ArcTan[(Sqrt[11])]},{1,-1,((Sqrt[2])/3),-ArcCot[(Sqrt[10])]},{1,1,1,π/6},{2 (Sqrt[2]),(Sqrt[2]),3,ArcCot[(5/(Sqrt[19]))]}}

GraphData["RhombicDodecahedralGraph","Graph","Perspective"]

Inscribed cuboctahedron

V5

g=Show[Graphics3D[{
PointSize[.03],Point/@Centroid/@Polyhedron[RhombicDodecahedron],
Wireframe[Polyhedron[RhombicDodecahedron]],
RotateAboutAxis[#,{0,0,1},Pi/4]&/@Polyhedron[Cuboctahedron]/.Polygon[x_]:>Polygon[Sqrt[2/3]x]
}],Boxed->False]

V6

g=Show[Graphics3D[{
PointSize[.03],Point[Mean/@PolyhedronData["RhombicDodecahedron","Polygons"][[All,1]]],
PolyhedronData["RhombicDodecahedron","Lines"],
PolyhedronData["Cuboctahedron","Polygons"]/.Polygon[x_]:>Polygon[Sqrt[2/3]x]
}],Boxed->False]

Short (Long) Diagonals form Cube (Octahedron)

faces=PolyhedronFaces[poly]/.Thread[Range[Length[PolyhedronVertices[poly]]]->PolyhedronVertices[poly]];
f=Transpose[Partition[#,2]]&/@faces;
l=Sort[Union[RootReduce/@Norm/@(Subtract@@@Flatten[f,1])],Less]

short=Select[Flatten[f,1],RootReduce@Norm[Subtract@@#]==First[l]&];
long=Select[Flatten[f,1],RootReduce@Norm[Subtract@@#]==Last[l]&];

Show[GraphicsArray[Partition[Graphics3D[#,Boxed->False,PlotRange->1.2{{-1,1},{-1,1},{-1,1}}]&/@{
Polyhedron[poly],
{Polyhedron[poly],{Thickness[.015],Red,Line/@short}},
{Thickness[.015],Red,Line/@short},
Polyhedron[poly],
{Polyhedron[poly],{Thickness[.015],Blue,Line/@long}},
{Thickness[.015],Blue,Line/@long}
},3]
],GraphicsSpacing->{-.3,-.3},ImageSize->400
]

g=Show[Graphics3D[{{Blue,Line/@long},{Red,Line/@short}}],
Boxed->False]

Jack

Show[GraphicsArray[{
				Show[Graphics3D[Jack],Boxed->False,
				ViewPoint->{1.1,2,.4},DisplayFunction->Identity],
				Show[RhombicDodecahedronConstruction,Boxed->False,
				ViewPoint->{1.1,2,.4},DisplayFunction->Identity]
		}]]

WriteLiveForm["jack.m",
	Show[Graphics3D[Jack],Boxed->False,ViewPoint->{1.1,2,.4}]]

WriteLiveForm["rhomjack.m",
	Show[RhombicDodecahedronConstruction,Boxed->False,ViewPoint->{1.1,2,.4}]]

v=RhombicDodecahedronConstruction[[1,1,1,1,1]]/. Polygon->Identity

d[i_,j_]:=Sqrt[(v[[i]]-v[[j]]).(v[[i]]-v[[j]])]

{d[1,2],d[1,3],d[2,4]}

2ArcTan[Sqrt[2.]] 180/Pi

{2ArcCot[Sqrt[2.]]180/Pi,ArcCos[1/3.]180/Pi}

2(ArcCot[Sqrt[2.]]+ArcTan[Sqrt[2.]])180/Pi

Show[Graphics[line[{{0,-Sqrt[2]},{1,0},{0,Sqrt[2]},{-1,0}}]]]

AttachPyramid[Polygon[l_List]]:=Module[{c=centroid[l],h=1,i},
		Line/@Table[{l[[i]],c+h c/Sqrt[c.c]},{i,4}]
]

WriteLiveForm["rhomcube.m",
	Show[Graphics3D[{
				SplitLines[AttachPyramid/@(cube[][[1]]),1],
				cube[][[1]]
			}],opts]]

Rhombi

WriteLiveForm["cuboctco.m",
	Show[Graphics3D[SplitLines[{Cuboctahedron[[1]],CubeOctahedronDiagonals,
				{PointSize[.03],CubeOctahedronPoints}},2]],opts]]//Timing

WriteLiveForm["rhomdodi.m",
	Show[Graphics3D[{RhombicDodecahedron[][[1]],SplitLines[CubeOctahedronDiagonals,1],{PointSize[.03],CubeOctahedronPoints}}],Boxed->False]
]

<<Archimedean`

v=PolyhedronVertices[RhombicDodecahedron];

lines=Map[Line[v[[#]]]&,Transpose[Partition[#,2]]&/@PolyhedronFaces[RhombicDodecahedron],{2}];

points=Apply[Point[Midpoint[#]]&,lines,{2}];

Show[Graphics3D[{Polyhedron[RhombicDodecahedron],lines,
PointSize[.04],points}],Boxed->False]

Construction

Solid

RhombicDodecahedronExact:=RhombicDodecahedronExact=rhombicDodecahedron[Sqrt[3]]

rhombicDodecahedron[s_:1/Sqrt[2]]:=Module[{i},OrientCentered[Flatten[{Table[{Polygon[{{1,1,i},{0,0,2i},{1,-1,i},{2,0,0}}s],Polygon[{{-1,1,i},{0,0,2i},{1,1,i},{0,2,0}}s],Polygon[{{-1,-1,i},{0,0,2i},{-1,1,i},{-2,0,0}}s],Polygon[{{1,-1,i},{0,0,2i},{-1,-1,i},{0,-2,0}}s]},{i,-1,1,2}],Polygon[{{1,-1,-1},{2,0,0},{1,-1,1},{0,-2,0}}s],Polygon[{{1,1,-1},{0,2,0},{1,1,1},{2,0,0}}s],Polygon[{{-1,1,-1},{-2,0,0},{-1,1,1},{0,2,0}}s],Polygon[{{-1,-1,-1},{0,-2,0},{-1,-1,1},{-2,0,0}}s]}]]]

poly=FullSimplify[Flatten[Dual[Polyhedron[Cuboctahedron]]]];
FullSimplify[v=PolyhedronVertices[poly]]//InputForm
First/@poly/.Thread[v->Range[Length[v]]]

Net

<<ExtraPackages`UnfoldPolytope`

UnfoldPolytope[Flatten[Normal[PolyhedronData["RhombicDodecahedron","Faces"]]]]

UnfoldPolytope[Flatten[Normal[PolyhedronData["RhombicDodecahedron","Faces"]]]][[1]]

r[x_:{0,0}]:=Polygon[x+#&/@{{0,0},{Sqrt[2],-1},{2Sqrt[2],0},{Sqrt[2],1}}]
rl[x_:{0,0}]:=Polygon[x+#&/@{{0,0},v2,{((2 (Sqrt[2]))/3),-(8/3)},{-((Sqrt[2])/3),-(5/3)}}]
r2[x_:{0,0}]:=Polygon[x+#&/@{{2 (Sqrt[2]),0},{(Sqrt[2]),-1},{((4 (Sqrt[2]))/3),-(8/3)},{((7 (Sqrt[2]))/3),-(5/3)}}]

α=ArcCos[1/3];
β=2ArcTan[(Sqrt[2])];

v1={Sqrt[2],1};
v2={Sqrt[2],-1};

piece={rh[0],Polygon[{{0,0},v2,{((2 (Sqrt[2]))/3),-(8/3)},{-((Sqrt[2])/3),-(5/3)}}],
Polygon[{{2 (Sqrt[2]),0},{(Sqrt[2]),-1},{((4 (Sqrt[2]))/3),-(8/3)},{((7 (Sqrt[2]))/3),-(5/3)}}],r[{((4 (Sqrt[2]))/3),-(8/3)}]}

pp[n_]:=piece/.Polygon[x_]:>Polygon[{((8(Sqrt[2]))/3)n,0}+#&/@x]

Graphics[{Yellow,EdgeForm[Black],pp/@Range[0,2]}]

Graphics[{LightYellow,EdgeForm[Black],NetFromPolygon[pp/@Range[0,2]]}]

NetFromPolygon[pp/@Range[0,2]]