# Soccer Ball Dual

To mirror the standard truncated icosahedron, a dodecahedron of side $$AB=1$$ is truncated to have 20 triangles and 12 decagons roughly as in the hand sketch:

Condition of same length of regular spherical polygon side lengths ( using Law of Cosines/ Sines ) gives arc lengths:

$$AP= 0.274396,PQ=0.473744, QB=AP ; \;$$

You can mash up some of the answers from the football question $3D$ graphic of soccer ball

Credit to J. M.'s technical difficulties♦ and MarcoB as this draws on those answers:

arc[center_?VectorQ, {start_?VectorQ, end_?VectorQ}] :=
Module[{ang, co, r}, ang = VectorAngle[start - center, end - center];
co = Cos[ang/2]; r = EuclideanDistance[center, start];
BSplineCurve[{start,
center + r/co Normalize[(start + end)/2 - center], end},
SplineDegree -> 2, SplineKnots -> {0, 0, 0, 1, 1, 1},
SplineWeights -> {1, co, 1}]]

curvedEdges[polyh_] :=
ReplaceAll[MeshPrimitives[polyh, 1],
Line[coords_] :> arc[{0, 0, 0}, coords]];

draw[poly_] :=
Block[{r = Norm[MeshPrimitives[poly, 0][[1, 1]]]},
Graphics3D[{EdgeForm[],
MeshPrimitives[poly, 2] /.
p : Polygon[l_] :> {If[Length[l] > 3, Orange, Yellow],
GraphicsComplex[r (Normalize /@ MeshCoordinates[#]),
MeshCells[#, 2]] &@
DiscretizeRegion[p, MaxCellMeasure -> {"Area" -> 0.0025}]},
curvedEdges[poly]
}, Boxed -> False, Lighting -> "Neutral"]]

draw[TruncatedPolyhedron[Dodecahedron[]]]


• Triangle size in this image smaller than required. where in the code should it be changed? Error .MeshPrimitives is not a Graphics3D primitive or directive ; .I have v 11.0 Commented Jun 12, 2020 at 14:27
• I can't help you with v11 I'm afraid but it's really simple: just use this answer mathematica.stackexchange.com/a/118617/72682 and replace "TruncatedIcosahedron" with "TruncatedDodecahedron". Commented Jun 12, 2020 at 14:32
• It works for all Polyhedra. In the above image triangles are smaller. Where in the code is adjustability written in? Commented Jun 12, 2020 at 17:14
• It's not. In 12.1 it's possible to adjust the side ratio with: TruncatedPolyhedron[Dodecahedron[], 0.3]. In v11 you'll need to use the PolyhedronOperations package: << PolyhedronOperations; Truncate[PolyhedronData["Dodecahedron"], .3]` Commented Jun 12, 2020 at 17:21