Rendering $E_8$-Root Polytope

Feb 11 2023 · LastMod: Feb 11 2023

Generate the 3D-graph of the $E_8$-root system using the code, provided here, with Mathematica, and export to .x3d:

1refl[n_] := Flatten[Outer[List, Sequence @@ Table[{-1, 1}, {n}]], n - 1];
2perm[{a_, b_, c_, d_, e_, f_, g_, h_}] := Flatten[Function[ Permutations@{a #1, b #2, c #3, d #4, e #5, f #6, g #7, h #8}] @@@ refl[8], 1];
3eperms[n_] := Select[perm[n], EvenQ@Count[Sign@#, -1] &];
4
5vertices = Union@Join[eperms@{1, 1, 1, 1, 1, 1, 1, 1},
6    perm@{2, 2, 0, 0, 0, 0, 0, 0}];
7edges = Select[Position[DistanceMatrix[vertices] - Sqrt[8], 0], Apply[Less]];
8
9graph = Show[Graph3D[edges, EdgeShapeFunction -> (Tube[#, .001] &), VertexSize -> Small]];
  1. The function refl generates the list of all possible ways for filling $n$ slots with $-1$ and $1$, corresponding to a group that we will call $H$.
  2. The function perm permutes and further extens the permutation group with the $H$ (semidirect product).
  3. The function eperm selects out those permutations, given by perm, with even number of negative elements.
  4. With Show, Graph3D is converted to Graphics3D. Only graphics can be exported.
$E_8$ Polygon

Export to .x3d to feed into Blender (a rule of thumb: .x3d for graphics generated by Graph3D and .dxf for those directly generated by Graphics3D):

1Export["graph.x3d", graph]

Import graph.x3d into Blender, add light source and a floor plane, and render.

E8 Polygon, Rendered with Blender

Or, if you like,

E8 Polygon2, Rendered with Blender