Studying Wythoff and Zometool Constructions using Maple

by   Benoit Charbonneau, et al.
University of Waterloo

We describe a Maple package that serves at least four purposes. First, one can use it to compute whether or not a given polyhedral structure is Zometool constructible. Second, one can use it to manipulate Zometool objects, for example to determine how to best build a given structure. Third, the package allows for an easy computation of the polytopes obtained by the kaleiodoscopic construction called the Wythoff construction. This feature provides a source of multiple examples. Fourth, the package allows the projection on Coxeter planes


page 2

page 9


Decomposable sparse polynomial systems

The Macaulay2 package DecomposableSparseSystems implements methods for s...

TMM-Fast: A Transfer Matrix Computation Package for Multilayer Thin-Film Optimization

Achieving the desired optical response from a multilayer thin-film struc...

mVEM: A MATLAB Software Package for the Virtual Element Methods

This paper summarizes the development of mVEM, a MATLAB software package...

FlexRiLoG – A SageMath Package for Motions of Graphs

In this paper we present the SageMath package FlexRiLoG (short for flexi...

The Topological and Logical Structure of Concurrency and Dependency via Distributive Lattices

This paper is motivated by the desire to study package management using ...

A computer algebra system for the study of commutativity up-to-coherent homotopies

The Python package ComCH is a lightweight specialized computer algebra s...

SEIR-Campus: Modeling Infectious Diseases on University Campuses

We introduce a Python package for modeling and studying the spread of in...

1 Introduction

As geometry is a very visual field of mathematics, many have found it useful to construct geometric objects, simple and complex, either physically or with the help of a computer. The Maple package we present today allows for both. First, the package allows for the automatic construction of many of the convex uniform polytopes in any dimension by the kaleidoscopic construction known as the Wythoff construction. Combined with the plotting capabilities of Maple exploited by our package, we therefore provide an extension of Jeff Weeks’s KaleidoTile software [19] to higher dimensions. This construction provides an impressive zoo of examples with which one can experiment on the second and most important aspect of our package, Zometool constructability.

The Zometool System as it currently exists was first released in 1992 by Marc Pelletier, Paul Hildebrant, and Bob Nickerson, based on the ideas of Steve Baer some twenty years earlier; see [1]. It is marketed by the company Zometool Inc. As a geometric building block with icosahedral symmetry and lengths based on the golden ratio, it is able to construct incredibly rich structures with a very small set of pieces (see examples in Fig. 1). The Zometool System finds use today in many of the sciences: modeling of DNA [17], construction of Sierpiński superfullerenes [3], building models of quasicrystals (notably in the work of Nobel laureate Dan Shectman). Countless other mathematicians use the Zometool System for visualizing nuanced geometric structures easily (see for instance [11, 15, 16]). A notable example is Hall’s companion [10] to the Lie algebra textbook [9]. Many have used Zometool to teach or raise interest in mathematics [12, 13]. Zometool is also an invaluable tool for educators, who find great success in using it to teach geometry in a hands-on fashion.

Figure 1: A projection of the 24-cell, a close-up picture of the omnitruncated 120-cell along a 4-fold symmetry axis, and the root system of .

Hart and Picciotto’s book Zome Geometry [12] allows one to learn about geometric objects, polygons, polyhedra, and polytopes and their projections in a hands-on fashion. It contains instructions allowing one to build many projections. However, it can be difficult to verify that one is building the claimed structure from such instructions. Moreover, not all possible structures one might like to construct are included in [12], even when restricted to convex uniform polytopes. A list available from David Richter’s website [14], shows real-world constructions of all the polytopes. At the time of writing, only the bitruncated 120/600-cell has not been constructed according to this page.

This issue highlights the need for a good computational framework. The only existing tool known to the authors for working with Zometool on a computer is Scott Vorthmann’s vZome software [18], which can be used to construct and render models. vZome is very effective at constructing brand new solids from scratch, and at working with smaller projects, such as the regular polyhedra. For larger tasks, such as projections of 4-dimensional polytopes, it is more difficult to create a vZome construction. While vZome does support its own scripting language, Zomic, it does not possess all the analytic capabilities offered by Maple, and we found some operations we wanted to perform were not supported.

Another problem we concern ourselves with is the case when structures are not constructible in Zometool. When constructing things by hand or in the vZome software, it can be difficult to discern when a structure simply cannot be represented in Zometool, or if we are missing an idea in our construction.

A final issue with existing techniques is the need to be able to zoom in on parts of a model, and look at them in isolation. The approach used to construct a cube using 20 Zometool pieces is necessarily different from the one used to build the projection of an omnitruncated 120-cell, requiring 21,360 Zometool pieces. What is needed is a setting in which models can be broken into small workable components, and assembled easily from them, for example in layers.

When deciding constructability, Maple’s symbolic nature is desirable, as it allows the output of our program to be taken as a formal proof in either case. Maple objects can be manipulated and broken apart easily, allowing one to construct a polytope by its individual cells. In this fashion, “recipes” for Zometool constructions can be designed in Maple, streamlining the real-world building process.

One additional note regarding the Wythoffian zoo of examples provided by our package is warranted before we end this introduction. The routines provided allows one to construct all the Wythoffian polytopes, excluding snubs. Thus 11 of the 13 Archimedean solids and 45 of the 47 non-prismatic convex uniform 4-dimensional polytopes described in [8] can be generated in this package and tested for Zometool constructability; missing are the snub cube and snub dodecahedron in the Archimedean case, and the snub 24-cell and grand antiprism in the 4-dimensional case. Finally, for this class of polytopes, we provide functions to perform projections onto Coxeter planes (see Fig. 2 for example.)

Figure 2: The 120-cell projected on the Coxeter plane.

In Section 2, the Wythoff construction is quickly described. In Section 3, the possibilities of our package related to Zometool constructions and constructibility are explored. In Section 4, the various projections provided by our package are explained and illustrated. The package is available at

2 Wythoff construction

To properly discuss this material, a few definitions must be given upfront. A convex polytope is a bounded region of

bounded by hyperplanes. The simplest polytopes are thus polygons (in

) and polyhedra (in ). The intersection of the polytope and its bounding hyperplanes are called facets. Hence facets of polygons are edges and facets of polyhedra are faces. A polygon is called uniform if it is regular, and a polytope in dimensions is called uniform if all of its facets are uniform and the group of symmetry acts transitively on the vertices.

Wythoff had the brilliant idea in his 1918 paper [20] to construct uniform polytopes by first considering a finite group of reflection acting on and then considering the polytopes obtained as the convex hull of the orbit of a point under the ion of that group. By construction, these polytopes are uniform. This construction was polished by Coxeter’s 1935 paper [6] following his observation that every finite group of reflections is (what we now call) a Coxeter group:

Theorem 2.1 (Coxeter [4], Theorem 8)

Every finite group of reflections has a presentation of the form for a symmetric matrix with .

Coxeter groups are conveniently expressed using Coxeter diagrams: labelled graphs whose vertices are the generating reflections and where the edge is labelled and exists only when .

Theorem 2.2 (Coxeter [5])

Every Coxeter diagram is a finite disjoint union of the Coxeter diagrams for the Coxeter groups , and .

In this short paper, we won’t describe all these graphs. They are classic and easily found. The upshot of this construction is that it is very easy to describe a polytope using a diagram. The recipe is easy, and one can compute easily the corresponding sub-objects recursively by following the simple algorithm explained in [2]. We defer the full explanation to this paper or to Coxeter’s book [7] and simply illustrate it by few example.

In dimension three, imagine 3 mirrors passing through the origin and with dihedral angles . Reflections in this mirror generate a finite group called . This configuration is illustrated by the Coxeter diagram

. The point chosen is encoded by crossing boxes corresponding to mirror fixing the point. For instance,

is the polyhedra obtained by taking the convex hull of the orbit under the group of a point at distance 1 from the origin and on the intersection line of the first and second mirror: the icosahedron. This construction is implemented in Jeff Weeks’s KaleidoTile software [19] with a visual interface allowing the choice of the point being reflected.

KaleidoTile does not allow one to compute the corresponding Wythoffian polytopes in higher dimension. Our package does, and allows one, for example, to compute vertices and edges of the 120-cell

, the 600-cell

, and the more complicated omnitruncated 120-cell


3 Zometool Models

The package uses Maple’s module system to work at three distinct layers of abstraction. The most basic data that is used is the vertices, provided as a list of -tuples, and the edges, a list of unordered pairs of vertices. One layer higher is the cell data: Maple’s ComputationalGeometry package is used to convert the given skeleton into a list of 4-dimensional cells, which may be projected into 3-dimensional space via a function in the package.

One feature is used to determine whether or not a model is Zometool constructible. For instance, taking the 120-cell and projecting vertex-first to , one finds a set of (normalized) edge lengths not compatible with the Zometool system. This set provides a certificate that this particular projection is not Zometool constructible. Regardless of constructibility, our package provides the ability to manipulate the object and display it if desired; see for instance Fig. 9.

Assuming the object is Zometool constructible, a list of projected cells can be assembled into a Zometool model. Fig. 3 shows the 120-cell and 600-cell drawn as Zometool models, each projected into three dimensions cell-first. On its own, these image are too complicated to be of any use, although one point of interest is that they certify the fact that the 120-cell and 600-cell are constructible by Zometool. We can break apart the image by levels, for example to view the “core” of the model, or only the outermost cells, as in Fig. 4.

Figure 3: The 120-cell (left) and 600-cell (right) projected cell-first and modeled in Maple. The view is from the and Coxeter planes respectively, and offset slightly to show 3D structure. A dashed line indicates a blue strut, a solid line a yellow strut, and alternating dashes and dots a red strut.
Figure 4: Various components of the (cell-first projected) 120-cell. The core (left), and the upper half of the boundary (right).

After constructing the core, we can begin using some of the packaged utilities to determine what ought to be built next. For small models such as the 120-cell, building radially outwards is a standard strategy. Breaking by levels, we will show the model with its next layer of cells added. For convenience, the central part is drawn dotted, so the coloured edges are exactly the ones that must be added to the model. The cell can also be broken off entirely, so that it may be constructed on its own, or shown as the only cell in its layer adjoined to the previous layers. This makes the picture much less cluttered. An example is shown in Fig. 5.

Figure 5: The second layer of cells in a (cell-first projected) 120-cell. The type of cell added around the core is shown in the center. The right is the core with only one cell added.

We can continue this process for two more steps to get the full model. One useful feature is the ability to pass a filter function; for example, to cut away the cells in all but the positive orthant. When loaded in Maple, rotating the models is possible, making it somewhat easier to work with than static images. Using these two tools judiciously together allows one to effectively work with otherwise complicated models. The next step of the process looks like, with and without a filter function applied, is shown in Fig. 6.

Figure 6: The third layer of cells in a 120-cell. In the center is a piece cut from the left model using a filter. The right shows the previous step with only one cell added.

Since the 120-cell is uniform, if we understand how to build one part of the layer, we can repeat the construction elsewhere to finish it. Otherwise, we would have to be more careful with our filters, and handle each part of the layer individually. Finally, we can close up the last cells to get the full model, as seen in Fig. 7.

Figure 7: Closing off the remaining cells with blue and red pieces completes the model of the 120-cell

When considering large models such as the omnitruncated 120-cell, this sort of manipulation is quite helpful. Since it is impossible to build small-scale physical copies of the model that can be disassembled and investigated (even the smallest incarnation possible in Zometool measures roughly 1.9m in diameter and requires 21,360 pieces), the ability provided by this package to pick apart local features of the overall model is valuable for understanding how it should be constructed. For example, in order to understand how to suspend the model of the omnitruncated 120-cell from strings, we need to understand what the bottom half of the exterior looks like, to decide where strings should be placed. Some special paths formed by blue edges make good candidates for these string paths, and one could want to be able to isolate this feature. The results of both of these computations are shown in Fig. 8.

Figure 8: Half of the boundary cells of the omnitruncated 120-cell (left), and the four “blue paths” in the omnitruncated 120-cell that occur on circles of constant longitude (right).

These are not all the operations supported by the library, and generally it is easy to extend it to perform any other specific manipulations you might need. What we are trying to show is that by casting the question of Zometool modelling in the established framework of Maple, we get access to a powerful set of tools that can help in many aspects of a large-scale Zometool project.

One final use of this package that we shall point out is the ability to generate parts lists for a model. This is a rather long computation to run by hand, but simple to compute in Maple. Here is the list generated for the omnitruncated 120-cell, projected through a great rhombicosidodecahedral cell.

Balls = 7200
R2 = 2880
R1 = 2880
B2 = 3600
Y2 = 4800

Computations of this sort allow us to verify entries in Richter’s list [15], for example.

Figure 9: Vertex-first and edge-first projections of the 120-cell

4 Projections

In addition to constructing Zometool models, once cell data is constructed, it can be projected into three or two dimensional space and drawn, regardless of Zometool construtability. The projections included in this package are orthogonal projections onto arbitrary bases, stereographic projections, and projections onto Coxeter planes. When creating Zometool constructions of 4-dimensional polytopes, the most useful of these is the orthogonal projection—stereographic projections distort distances too much, and Coxeter plane projections are two-dimensional. We include the other projections, as in many cases they are not available elsewhere, in some cases are very nice looking, and in general are useful to get a good grasp of the objects; see for instance in Fig. 10 the stereographic projections of the truncated 16-cell (

) and truncated hypercube (


Figure 10: A north pole stereographic projection of the truncated 16-cell and truncated hypercube.

Of particular interest are the vertex-first, edge-first, face-first, cell-first projections, see for instance Fig. 9. Shown in Fig. 11 are the and projections of the omnitruncated 120-cell computed by our package.

Figure 11: The and Coxeter plane projection of the omnitruncated 120-cell

These projections do not occur as projections of the Zometool model of the omnitruncated 120-cell. So, in addition to allowing us to study Zometool models of Wythoffian polytopes, the Coxeter plane projections in this package can be used to enjoy some of the higher dimensional structure that is lost when projecting into three dimensions for the purposes of Zometool construction.


  • [1] A (not so brief) history of Zometool,
  • [2] Champagne, B., Kjiri, M., Patera, J., Sharp, R.T.: Description of reflection-generated polytopes using decorated Coxeter diagrams. Canadian J. Physics 73, 566–584 (1995).
  • [3] Chuang, C., Jin, B.Y.: Construction of Sierpiński superfullerenes with the aid of Zome geometry: Application to beaded molecules. In: Hart, G.W., Sarhangi, R. (eds.) Proceedings of Bridges 2013: Mathematics, Music, Art, Architecture, Culture. pp. 495–498. Tessellations Publishing, Phoenix, Arizona (2013),
  • [4] Coxeter, H.S.M.: Discrete groups generated by reflections. Annals of Mathematics 35(3), 588–621 (1934),
  • [5] Coxeter, H.S.M.: The complete enumeration of finite groups of the form . J. London Math. Soc., (1) 10, 21–25 (1935).
  • [6] Coxeter, H.S.M.: Wythoff’s Construction for Uniform Polytopes. Proc. London Math. Soc. (2) 38, 327–339 (1935).
  • [7] Coxeter, H.S.M.: Regular polytopes. Dover Publications Inc., New York, third edn. (1973)
  • [8] Conway, J.H., Guy, M.J.T.: Four-dimensional Archimedean polytopes. In: Proceedings of the Colloquium on Convexity, Copenhagen, 1965. Københavns Universitets Matematiske Institut, Copenhagen, Denmark (1965)
  • [9] Hall, B.: Lie groups, Lie algebras, and representations, Graduate Texts in Mathematics, vol. 222. Springer, Cham, second edn. (2015)., an elementary introduction
  • [10] Hall, B.C.: The geometry of root systems: an exploration in the Zometool system,
  • [11] Hart, G.W.: Barn raisings of four-dimensional polytope projections. Proceedings of International Society of Art, Math, and Architecture 2007 (2007),
  • [12] Hart, G.W., Picciotto, H.: Zome geometry: Hands-on learning with Zome models. Key Curriculum Press (2001)
  • [13] Hildebrandt, P.: Zome workshop. In: Sarhangi, R., Barrallo, J. (eds.) Bridges Donostia: Mathematics, Music, Art, Architecture, Culture. pp. 459–464. Tarquin Publications, London (2007),
  • [14] Richter, D.A.: H(4)-polychora with Zome,
  • [15] Richter, D.A.: Two results concerning the Zome model of the 600-cell. In: Sarhangi, R., Moody, R.V. (eds.) Renaissance Banff: Mathematics, Music, Art, Culture. pp. 419–426. Bridges Conference, Southwestern College, Winfield, Kansas (2005),
  • [16] Richter, D.A., Vorthmann, S.: Green quaternions, tenacious symmetry, and octahedreal Zome. In: Sarhangi, R., Sharp, J. (eds.) Bridges London: Mathematics, Music, Art, Architecture, Culture. pp. 429–436. Tarquin Publications, London (2006),
  • [17] Vörös, L.: A Zometool model of the b-dna. In: Torrence, E., Torrence, B., Séquin, C., McKenna, D., Fenyvesi, K., Sarhangi, R. (eds.) Proceedings of Bridges 2016: Mathematics, Music, Art, Architecture, Education, Culture. pp. 435–438. Tessellations Publishing, Phoenix, Arizona (2016),
  • [18] Vorthmann, S.: vZome, software available at
  • [19] Weeks, J.: KaleidoTile, software available at
  • [20] Wijthoff, W.A.: A relation between the polytopes of the C600-family. Koninklijke Nederlandse Akademie van Wetenschappen Proceedings Series B Physical Sciences 20, 966–970 (1918)