Introduction: Hyperbolic Cookies

These are the instructions for cookies that are not only delicious but aso in the shape of mathematical objects!

Namely, they are patterned by uniform tilings of the hyperbolic Poincaré disk. Huh? For pictures, just look above; for a longer explanation, I can point you either to Wikipedia or to this nice explanation on the Saint Louis University website. These are also shapes that were used by M. C. Escher, such as in Circle Limit III.

There is an infinite number of hyperbolic tilings (any three integers p, q, r such that 1/p + 1/q + 1/r < 1 define such a tiling; for example, in the first image the numbers 2, 3 and 7 were used), and they naturally tile a disc, which is perfect for drawing on cookies. Moreover, they have nice patterns, such as a set of triangles inside polygons, which we can use for decorating the cookies.

The simplest way to decorate a cookie using complicated mathematical shapes is to 3d-print an appropriate cookie cutter. Since drawing the shape by hand was a bit beyond my artistic skills or my patience, I programmed it instead — so OpenSCAD was the best tool to generate it.

In case you are interested in the mathematical details, I also attached a
paper explaining the algorithm I wrote for generating the tiling. This algorithm is optimal — it generates no duplicate tiles. Instead, it computes in advance a set of transformations that will generate each tile exactly once.

Step 1: Select and Draw the Cookie Cutter

The first step is to choose the geometry of the cookie cutter. As I wrote above, this means selecting three integers p, q and r ≥ 2 such that 1/p + 1/q + 1/r < 1. (Some of these integers may even take the value +∞).

A few .STL files with good values of (p,q,r), including those I used myself — (2,3,7) and (2,4,5) — are attached to this step. If you prefer to play with the values of p, q and r you can use the attached OpenSCAD file.

I also uploaded the OpenSCAD file as a (supposedly) customizable model on Thingiverse a few months ago, but this file seems to break Thingiverse's customizer application. The depth parameter defines the number of rings that will be drawn around the center. Warning: the complexity of the drawing is exponential in the depth.(more precisely, it grows as r^depth).For this reason, it is probably better to keep depth = 1 while you are playing with p, q and r, and then to set it to a reasonable value (probably not more than 5 or 6 though; there is no need to generate details too small to be printed!).

My favourite triplet is (2,3,7) (among other reasons, because it gives the sum 41/42, which is the closest possible value to 1), although as the gallery above shows, (2,8,3), (3,3,4), (0,2,3), (0,0,2), (0,3,2), and (3,4,3) also give some interesting shapes. In general, the model will always have rotational symmetry of order r, while the numbers p and q are interchangeable. Picking p = 2 makes the tiling a {r,q} regular tiling, which means a tiling by regular polygons with each polygon having r sides, and q polygons meeting at each vertex.

For entering an infinite value for one of the parameters, enter the number 0 instead, and any such value must come first (so 0,2,3 is legal, but 2,0,3 is not).

Step 2: Print the Cookie Cutter

Each cookie cutter prints as two parts: one part is for cutting the exterior shape of the cookie, while the other one is for printing the pattern on the cookie. This design makes it easier to clean.

The STL file should be a quite easy print (no support required), but it has a lot of small details in the first layer. I had some adhesion trouble and fixed it by lowering the first layer acceleration in Cura.


I printed this on an Ender 3 using food-safe PLA filament (from French supplier Arianeplast). This is probably not enough precaution to make the design fully and officially food-safe, since the 3d printer is not. However, the quantity of matter that eventually goes from the 3d printer to the actual cookie is quite negligible, so this did not prevent me from baking!

Also note that, while cleaning fine details by hand is not very fun, PLA is not dishwasher-safe (as my wife discovered while trying to help me). Use a brush (and medium-warm water) instead.

Step 3: Bake

It's almost Christmas time so I used the following recipe for Christmas cookies:

  • 250g flour
  • 100g butter, softened
  • 120g honey + 80g brown sugar
  • 1tsp each: cinnamon, ginger, nutmeg
  • 2 orange or lemon zests
  • 1 pinch of salt

Whisk together sugar, honey and butter. Add dry ingredients, wrap in cling film and put to rest in the fridge overnight. If the dough is too thick for rolling, add a few drops of water (or lemon juice). Roll to about 5mm high and cut the shapes with the cookie cutter, then mark the pattern with the iner stamp.

Preheat oven at 180° and bake for 10 to 12 minutes.

As an alternative, I also tried saffron cookies:

  • 10 saffron pistils
  • 2 tbsp milk (warm)
  • 80g soft butter
  • 40g sugar
  • 25g almond powder
  • 150g flour
  • 1 egg yolk

Crush the saffron and infuse it in warm milk for at least 15 minutes (the longer the better). Mix the ingredients as in the previous recipe. Paint the cookies with egg yolk before putting in the oven.

A last warning: using cookie cutters is quite more difficult in hot weather (the butter melts and the dough becomes too soft for marking the shapes).

Made with Math Contest

Runner Up in the
Made with Math Contest