This is very nice. I note that the spherical Voronoi implementation in my posts was written quite a while ago, and using undocumented properties like "VertexFaceConnectivity"
was the easiest method. Nowadays, I would say it's more advisable to use MeshConnectivityGraph[]
:
With[{mcg = MeshConnectivityGraph[chm, {2, 0}, 0]},
Table[EdgeList[mcg, DirectedEdge[_, {0, k}]][[All, 1]][[All, 2]],
{k, MeshCellCount[chm, 0]}]]
but of course you should do your own comparisons against your DualPolyhedron[]
approach.
A good survey paper to read about all these things is this paper by Sugihara, which has also nice pointers to other literature.