for visualizing Coxeter polytopes

What's Jenn?
Download Jenn
How do I use jenn?
Math behind Jenn

Screen Shots
Catalog of Polytopes
Projective Go
What is Jenn?

Jenn is a toy for playing with various quotients of Cayley graphs of finite Coxeter groups on four generators. Jenn builds the graphs using the Todd-Coxeter algorithm, embeds them into the 3-sphere, and stereographically projects them onto euclidean 3-space. (The models really live in the hypersphere so they looked curved in our flat space.) Jenn has some basic motion models governing the six degrees of freedom of rotation of the hypersphere.
What are people doing with Jenn?

VJing: Lewis Smart made a couple music vids to show on a projector screen at outdoor electronic dance music parties in Australia.

T-shirts: Mike Anstrell paints Jenn's projections of polytopes on clothing.

3D Printing: (stereolithography) ...anyone have results yet?

What are you doing with Jenn3D?


If you just want to use Jenn, download one of these, unzip, and run.
Platform Downloads
Mac/Intel Version 2006:11:27. (gzip'd tarball)
jenn3d_mactel_nopng.2006_11_27.tgz (no capturing support),
or jenn3d_mactel.2006_11_27.tgz (with capturing support -requires libpng)
Mac/PowerPC Version 2006:11:27 (gzip'd tarball)
Windows Version 2008:03:13. (zip'd)
Note: I have been unable to get libpng capturing to work under Cygwin (so disable HAVE_PNG in the makefile). I would appreciate any tips if you get this working.
Note: You may need libpng in Mac OS X to save images. Ethan Tira-Thompson has an OS X port of libpng here.

If you want to compile Jenn yourself, here's the source:
Linux, Unix, Mac,
Windows+Cygwin, etc.
Version 2010:12:27. (gzip'd tarball)

Instructions for compiling:
1. extract and unzip, e.g.
2. edit makefile: specify the target type
3. make
4. run jenn or jenn.exe

#here's an example:
> tar -xzf jenn.2006_07_28.tgz
> cd jenn3d
> vim makefile #or your favorite editor
#...uncomment your compile type...
> make
> ./jenn

You may also need to install the Glut and (optionally) the libpng libraries. Users of Debian-based systems such as Ubuntu or Mac+Fink can get this with
> sudo apt-get install glut
> sudo apt-get install libpng #or libpng3 on for Macs

Gentoo users can simply
> emerge glut libpng

Windows+Cygwin users will need glut32.dll.

Nick Jordan reports:

On a Debian system to get the src dependencies for jenn3d you do:
> sudo apt-get install freeglut3-dev
> sudo apt-get install libpng-dev
as opposed to doing:
> sudo apt-get install glut
> sudo apt-get install libpng
On an amd64 machine, I needed to remove the "-malign-double" flag, before it would compile, I suppose because a double isn't really a double on 64 bit.

How do I use Jenn?
The menu in the upper-left corner is somewhat self-explanatory. Viewing the help menu once will turn the help system on and provide help for other menus as well. Type 'k' for a list of keyboard shortcuts.

Polytope Models.
A variety of models are availabe to view: regular polyhedra, regular polychora, truncted polytopes, edge-truncated polytopes, snub(?) polytopes, tori (duoprisms), Cayley grahs (omnitruncated polytopes), etc. My favorite is the bitruncated 120-cell.

Viewing Options.
The scroll wheel (or arrow keys) zoom in and out, and SHIFT+ARROW pans for those hard-to-reach shots. Full-screen is buggy and can be turned on but not off.

The models float around (rotating with six degrees of freedom) with nearly constant velocity. The motion can be controlled with all three mouse buttons (each fixing a pair of axes of the 3-sphere); spacebar toggles the brakes, which are on by default. To get some funky motion, or just keep a model in one place, you can enable a spring tying the model to a "center" positon. If the model moves too fast or too slowly, try slowing down or speeding up.

In flying mode, the right mouse button controlls speed and the left mouse button steers direction. It helps to zoom in, and maybe turn off faces (f) and fatten the edges (+).

Style Options.
Both solid and line-art rendering are available (see style menu or press 'h'). Vertex and edge-drawing can be toggled. Drawing thickness can be adjusted, and fog can be added to aid depth perception.

Models can be viewed in either mono or stereo. Jenn now allows motion and depth-of-field blurring. Screen-shots can be taken with extended exposure time and increased rendering quality. The accumulation buffer also provides high-contrast viewing and color-reversing

Saving. (when compiled with libpng support)
Images can be saved to color or grayscale png images (jenn_capture.png). Jenn3d can make very large images (&ge 1 GigaPixel) by tiling the images. But Beware! large high-quality images take alot of time and disk space, e.g. 1 day and 100Megs. For high quality images like that above, and those on wikipedia, I usually take a picure double-sized and downsample by a factor of two.

You can save 3D mesh models to .STL files with the 'export' button. Note that toggling between high/low quality in Jenn3D changes the output mesh density (try viewing in wireframe style to see this). For 3d-printing (stereolithography) you might want to increase the minimum tube radius (after version 2008:03:13). The added radius is not shown in Jenn3D (still on the to-implement queue), so you'll have to view with your favorite STL file viewer to get it right. Some users have reported good results with Magics and 3dconverter. Let me know about how exporting works for you.


  1. Libpng does not seem to work (even compile) under Cygwin.
  2. Jenn can usually switch to fullscreen mode ('f') but not back. This is really a bug in the Glut library, and apparently has no fix. :(
  3. Scroll wheel does not seem to work in MacOS or Windows. This is apparently a flaw in the Glut library.
Contribute: If you find a bug and/or bugfix, please let me know or send me updated source. If this is a hassle, we can move to Sourceforge.
The Math behind Jenn


Why are the lines curved?
The models live in the curved space of the hypersphere S3. Although the "lines" are flat in this curved space (great circles, or more generally geodesics) the curvature of their space becomes apparent when projected down to 3-space (where we live).
Why aren't far-away things small?
Because the space has positive curvature. In our flat space two rays eminating from your eye get farther and farther apart.But what if light rays bent around the earth (as in over-the-horizon radar)? Then rays would diverge until they got a quarter of the way around the earth, but then converge on the opposite side of the earth. In that case, objects on the opposite side of the earth would fill up a large portion of your field of view: they'd look big.
In flying mode, it looks like I'm inside the polytope. Is this what it's like to live in the hypersphere?
No, not really. If you were actually in the hypersphere the lines would look straight and you'd only see half of the polytope at any one time (the other half would be behind you).

Hi-Res Screenshots
Here are some uniform polychora with faces.

These takes advantage of the wide-aperture blurring capability.

Some crisp older images.

For more images, check out the Catalog of Polytopes.

Play Go in Projective 3-space (older)
Jenn was originally designed to be a go board for graphs embedded in projective 3-space. The source for the old version is available as a tarball either
gzip'd: jenngo.2006_08_04.tgz, or
bzip2'd: jenngo.2006_08_04.tbz2.
Here's a windows binary, zip'd:


  • Double left-click to place a black stone; double right-click to place a white stone.
  • Left- and right- arrow keys undo and redo moves (you can watch the whole game after it's done).
  • SPACEBAR toggles the brakes, which are on by default. Letting the board float around with no brakes is a good way to find moves (remember, this is projective 3-space).
  • The 'r' key randomly plays a stone. Holding the 'r' key down will play an entire random game (and then some).
  • The 'p' key pauses the game, and the 'f' key switches to (but not from) fullscreen.
  • The ESCAPE key exits.
Captured stones are automatically removed from the board. Jenn-Go uses Chinese scoring, so you have to fill in all but your two eyes in each group to get points. (The the motivation for Chinese scoring is in simplicity of scoring algorithm. I have yet to sucessfully explain Japanese scoring to a beginner.)

Choosing a board
This has to be done at the command line. Jenn-Go inputs the six elements of the upper-triangle of a Coxeter matrix and then any subset of the numbers [0-3] deonting which generators are included in the vertex symmetry group. Some nice boards are listed in jennhelp.txt. Also try
> ./jenn 3 2 2 4 2 3

Feel free to write a network interface; I'll play you.

Jenn is licensed under version 2 of the GNU Public License.
The images on- and screenshots pointed to by- this page are in the PUBLIC DOMAIN.
Images you produce with Jenn are your property.

Fritz Obermeyer - Johann - (Jenn 3d) - Polytopes