Penrose Empires

Welcome to the home of the Penrose Empires software!
Please send comments and questions to

(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 check the links section for pointers to other software that generates full tilings.

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.

I get weird blocks of color covering parts of the tiling. What gives?

This is a known bug in the JVM version 1.3.0(Bug ID #4349998). Upgrading to the latest JVM (1.3.1 or later) appears to fix the problem. If you can't upgrade, export your tiling to PDF of EPS format, the bug will not appear in the saved file.

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).


If you're interested in learning more about Penrose Tilings, here are a few links that you may find useful:

Science U Science U has a short but easy-to-understand description of Penrose Tilings. A great place to start if you need an introduction.
The Geometry Junkyard This site has a lot of links to some very good sites. Once you have the basics down, this is a great site to visit to see other software and information about Penrose Tilings.
Dr. Matrix Programming Challenge A site with links to some good Penrose Tiling applications (they have a contest running for such programs). Also some good background information.
Duane Bailey's Color Postscript Penrose Generator Duane Bailey (my thesis advisor) created this program that generates complete Penrose Tilings. By editing the Postscript you can set the desired parameters, and then send it directly to a printer for viewing.
Alhambra Alhambra is a Java-based tiler. It allows you to create tilings using different types of tiles (Penrose, Wang, etc). However, it does not enforce the matching rules for Penrose Tilings; the user must take care to create tilings that are valid.