Welcome to the home of the Penrose Empires software!

Please send comments and questions to jhealy+penrose@logn.net.

(Or, head straight for the download page.)


The Penrose Empires package is a set of Java 2 class files that allow the exploration of Penrose Tilings (see the Links section for more information on Penrose Tilings). Specifically, it allows the user to begin with a certain set of tiles and then compute the forced tiles that must appear in the plane. Source is available, under the Artistic License.

This software is different from most Penrose Tiling software because it computes non-local forced tiles. Until this point, most tilings were "grown" iteratively by forcing contiguous tiles. My software uses Ammann Bars to determine the locations of non-local forced tiles.

Ammann Bars? Non-local tiles? Huh?!?

If you have no idea what I'm talking about, that's okay. The basis for this software was my Senior Thesis in Computer Science when I was at Williams College. You're more than welcome to download my thesis to learn more about the methods for finding the empires of Penrose Tiles.

Additionally, the documentation for the software contains a brief introduction to how the software computes its results. I suggest you at least read this document to gain a better understanding of how the software works.

I encourage anyone who is interested to try the software out, regardless of whether they want to explore Penrose Empires in depth, or if they just want to play with some tiling software. Please let me know what you think!

Frequently Asked Questions

Where do I download the software?

The software can be downloaded from the download page. The page also has instructions for getting the software running, as well as the documentation for the software and my thesis, should you want to read it.

Why doesn't the software create complete tilings?

This software is only intended to find the empires of a patch of tiles. Unless the initial patch is carefully chosen, there will be gaps in the tiling where tiles are not forced. If you are not interested in only finding forced tiles, I suggest you search for other software that uses a different method (such as "inflation") to generate a full tiling.

I get java.lang.OutOfMemoryError when I try to compute large tilings. How come?

The GUI version of the software must be able to hold all the tiles in memory before rendering them to the screen. For large tilings, you have two choices. Either increase the memory to the JVM (using java -mx), or run the software in Command-Line Mode. Both of these options are explained further in the documentation.

How does this all work?

You should read my thesis. All you need to know is in there.


If you'd like to see an example of how the software looks, please visit my screenshots gallery. There you will see the software in various stages of computation.

Also, I have renderings of the seven Penrose vertex configurations available for viewing. These serve as a good demonstration of what the software is capable of (though the software can generate much larger pictures than those shown here).