I'm a computer programmer, and while I like math, this is an area where my understanding of math falls short of what I need in order to apply it successfully.

I've been looking at M.C. Escher's "Circle Limit" drawings, which use a Poincare disk model to illustrate tilings of the hyperbolic plane. What I want to do is generate the coordinates (in the Cartesian plane, for a graphics display) of vertices in such a tiling. But I'm not even sure where to start. It seems like I need two things:

- a way to generate the coordinates in the hyperbolic plane, for each vertex of several cells (polygons) in such a tiling; and
- the formula to convert those coordinates to the Cartesian plane, using the Poincare Disk model.

For example, in Circle Limit I, each fish seems equivalent to a quadrilateral (four other fish touch its edges), and each vertex is surrounded by either 4 or 6 fish. I don't need to generate fish, just quadrilaterals. But I don't know how to do it.

Do you know of software to do this? Or can someone help me with an algorithm?

I want to generate a finite area of the plane (of course?). If an algorithm could help me generate $k$ rings of cells around the origin, that would be most convenient.

Thanks for any suggestions.

P.S. I'd also be interested in hyperbolic tilings besides Escher's, e.g. http://en.wikipedia.org/wiki/Heptagonal_tiling

P.P.S. I just found some source code for drawing hyperbolic tilings (see bottom of the page), which includes generating locations of vertices. I can extract these vertex coordinates by putting in print statements. But they're grouped by line segment rather than by cell, and converting from the former to the latter does not seem easy.