The Python code available on this page is a collection of classes and support functions for visualizing inversive and hyperbolic geometry, with the hyperbolic examples utilizing the Poincaré disc model. For more online information on hyperbolic geometry see here.
I was prompted to develop this software while reading about these topics in the excellent textbook "Geometry" by David A. Brannan, Matthew F. Esplen, and Jeremy J. Gray, Cambridge University Press; 2nd ed., and in particular chapters 5 and 6. I also found chapter 10 of "Euclidean and Non-Euclidean Geometries" by Marvin J. Greenberg, W.H. Freeman, 4th ed., useful for additional information on hyperbolic trigonometry.
I've 'repurposed' most of my code from two sources – Casey Duckering's Python hyperbolic library and the hyperbolic_tessellation code in Section 16.7 of "A Programmer's Introduction to Mathematics" by Jeremy Kun. My main 'contribution', especially in the case of Duckering library, was to drastically simplify the implementation. The difference can be seen by comparing the output of one of his examples with a similar version using my library:
The difference reflects one of my aims: to make the code simple enough to be easily understood while still being able to reproduce most of the drawings in chapters 5 and 6 of Brannan et al.. Also, in the context of inversion geometry, I wanted to generate a Pappus Chain similar to one drawn by hand in the Numberphile Youtube video "Epic Circles". My results are shown below: