# Message Boards

0
|
1923 Views
|
0 Replies
|
0 Total Likes
View groups...
Share
 Hilbert's 3rd Problem asks which polyhedra can be cut up an reassembled into other polyhedra. The problem was solved by Max Dehn in 1901 with what are now called Dehn invariants. A write-up can be found at Dehns Dissection Theorem. The Dehn invariant of a polyhedron is the total of the tensor products of the edge lengths and "adapted" dihedral angles. But that's too complicated at this hour of the night. But products of the edge lengths and dihedral angles, that I can do. DehnCalculator[name_] := Module[{faceindices, dihedralanglerules, vertexindices, anglelist, joinedfaces, edges, edgelengths, edgelengthsfromfaces, simplifiededgelengths}, edgelengths = PolyhedronData[name, "EdgeLengths"]; faceindices = PolyhedronData[name, "FaceIndices"]; dihedralanglerules = PolyhedronData[name, "DihedralAngleRules"]; anglelist = Last /@ dihedralanglerules; joinedfaces = First /@ dihedralanglerules; edges = (Intersection @@ faceindices[[#]]) & /@ joinedfaces; vertexindices = PolyhedronData[name, "VertexIndices"]; edgelengthsfromfaces = (EuclideanDistance @@ vertexindices[[#]]) & /@ edges; simplifiededgelengths = Nearest[edgelengths, #] & /@ edgelengthsfromfaces; {name, N[Total[simplifiededgelengths anglelist]/Pi, 30][]} ];  The tricky part is syncing the edges with the dihedral angles. But there's the code. So -- which polyhedra have nice numbers under my crude Dehn invariant calculator? Here's a piece of analytic code: Grid[Reverse /@ Select[DehnCalculator[#] & /@ PolyhedronData[], Chop[Last[#] - Round[Last[#]]] == 0 &]]  And here is the result. 6.00000000000000000000000000000 AcuteGoldenRhombohedron 18.0000000000000000000000000000 AugmentedTruncatedTetrahedron 46.0000000000000000000000000000 BiaugmentedTruncatedCube 6.00000000000000000000000000000 Cube 30.0000000000000000000000000000 CubeFiveCompound 24.0000000000000000000000000000 {CubeFourCompound,1} 24.0000000000000000000000000000 {CubeFourCompound,2} 36.0000000000000000000000000000 CubeSixCompound 60.0000000000000000000000000000 CubeTenCompound 18.0000000000000000000000000000 CubeThreeCompound 12.0000000000000000000000000000 CubeTwoCompound 18.0000000000000000000000000000 ElongatedDodecahedron 30.0000000000000000000000000000 GreatDodecahedron 150.000000000000000000000000000 GreatRhombicosidodecahedron 54.0000000000000000000000000000 GreatRhombicuboctahedron 8.00000000000000000000000000000 Gyrobifastigium 6.00000000000000000000000000000 ObtuseGoldenRhombohedron 48.0000000000000000000000000000 PentagonalPrismSixCompound 4.00000000000000000000000000000 {Prism,3} 8.00000000000000000000000000000 {Prism,5} 10.0000000000000000000000000000 {Prism,6} 12.0000000000000000000000000000 {Prism,7} 14.0000000000000000000000000000 {Prism,8} 16.0000000000000000000000000000 {Prism,9} 18.0000000000000000000000000000 {Prism,10} 16.0000000000000000000000000000 RhombicDodecahedron 160.000000000000000000000000000 RhombicEnneacontahedron 72.0000000000000000000000000000 RhombicHexecontahedron 30.0000000000000000000000000000 RhombicIcosahedron 48.0000000000000000000000000000 RhombicTriacontahedron 30.0000000000000000000000000000 SmallStellatedDodecahedron 30.0000000000000000000000000000 SquashedDodecahedron 24.0000000000000000000000000000 TruncatedOctahedron So, theoretically, each of these polyhedra could be cut up and glued together to make a cube. It turns out that over at Demonstrations, solutions for quite a few of these can be found at cube dissections. Many of them are space-filling polyhedron. Of the space-filling polyhedra in PolyhedronData, only DehnCalculator["EscherSolid"] gives a weird value ~ 49.9817541506643924553741723588. Maybe there's a mistake in my code somewhere. The next step might be to make this more accurate so that it works on arbitrary polyhedra such as the space-filling tetrahedra.