Requirement: This repository is included in the official release of FragM. You can run the examples by installing FragM and navigating to
examples >> neozhaoliang
.
In this project, We will visualize hyperbolic Coxeter groups of varying ranks 3/4/5 and levels 1/2/3. The scenes can be categorized into two types:
The level of a Coxeter group $G$ is defined as the smallest non-negative integer $l$, such that after removing any $l$ vertices from its Coxeter diagram, all connected components of the remaining diagram are finite or affine. For example, finite (spherical) and affine (Euclidean) Coxeter groups have level 0.
It's proved in a paper by George Maxwell that Coxeter groups of level 1 or 2 are both hyperbolic. For level 1, the limit set is the ideal boundary and there is no sphere packing. For level 2, there is a maximal sphere packing on the ideal boundary, meaning the spheres do not intersect and fill the boundary. For levels higher than 2, the spheres still fill the boundary, but they will overlap. For further mathematical details, please refer to the paper by Chen and Labbé (Chen and Labbé's paper) on the connection between hyperbolic geometry and sphere packings.
From left to right: compact tiling, paracompact tiling (with ideal vertices on the boundary), non-compact tiling (with hyperideal vertices outside the space)
The level 2 case in the rightmost image appears less attractive. However, it can be observed that each cell, which is an unbounded triangle, intersects the ideal boundary at an arc. All these arcs pack the entire boundary circle. This phenomenon generalizes to three and four-dimensional spaces. If the group has level 2, each cell in the honeycomb will intersect the boundary at a disk/sphere, and these disks/spheres pack the entire boundary.
The code used to render the following image is here. It can render any hyperbolic group of rank 4 that has all labels $m_{s,t}<\infty$ and contains a finite sub-diagram of rank 3. (Images with Poincaré disks packing the boundary are of level 2)
In this case, there will be overlapping circles:
In order (left to right, top to bottom): tetrahedron, cube, octahedron, dodecahedron, icosahedron.
These packings follow from a preprint of Kapovich and Kontorovich. Level not defined.
Extended Bianchi groups. Left: Bi23. Right: Bi31.
Groups from Mcleod's thesis. Left: Modified f(3,6). Right: f(3,14).
These are the ball packings in the next section but shown in the Poincaré unit ball model.
Please refer to the official Wiki page of FragM for more detailed information on how to use it.
Download or clone this repository to your local machine.
Visit the Fragmentarium release page and select the appropriate release for your operating system. In this tutorial, the instructions are based on a Windows environment. Therefore, download the file Fragmentarium-2.5.7-221224-winex.7z
. Save the file and extract it to a convenient location on your disk.
In the extracted folder, locate the executable file named Fragmentarium-2.5.7.exe
. Double-click it to launch the application. Upon launching, you should see the following interface:
The interface is organized into four main regions:
Ctrl + S
to save your modifications, then click Build
to recompile and view the updated result.#group
macros.From the menu bar, select File -> Open
. Navigate to the directory where you saved the source code of this project and choose a .frag file. For example, select Ball-Packings-UHS.frag
. Fragmentarium will load and compile the file, displaying the rendered output on your screen:
The .frag code written for FragM in this repository is licensed under the GPL License. The images demonstrated by the authors in this project, including those uploaded by the authors on other platforms such as Twitter, are licensed under the CC BY-NC-SA license.