PyGeo: a dynamic geometry toolkit

What Distinguishes PyGeo?

Dandelin spheres

view script


PyGeo was built from inception to take advantage of the current generation of 3d graphic capabilities (applied geometry, in itself, of course). While this has a certain appeal just on motivational grounds, the importance of this aspect of PyGeo is, it is contended, of a significantly higher order.

The study even of the 2 dimensional geometries beyond the simplest Euclidean concepts requires 3 dimensions for thorough investigation, or where the enhancement of intuition is a goal.

The visualization of the projective geometry of the plane requires the facility for the visualization of the projection from plane to plane. Well accomplished in 3d space.

In the exploration of the geometry of the complex plane, the visualization of the projection to the unit sphere adds an important dimension. The 3rd dimension.

Relevant Quote :

“It has long been the custom in the schools as well as the university, first to study the plane and them, entirely separated from it, the geometry of space. On this account space perception, which we possess originally, is stunted. In contrast to this the 'fusionists' wish to treat the plane and space together, in order not to restrict our thinking artificially to two dimensions.....”

Felix Klein

Elementary Mathematics from an Advanced Standpoint


From the PyGeo Overview:

PyGeo is implemented in the Python programming language, making extensive use of its object oriented characteristics - and PyGeo constructions themselves can only be Python scripts processed directly by the Python interpreter.

In creating the simplest geometric construction in PyGeo one is therefore also programming. Typing is unavoidable, and spelling counts.

Sorry. No point and click. Until after the construction is created and on the screen.

The possibility of allowing it to be otherwise not only exists, but has been impressively realized in a number of other efforts.

One can visit

for a look at the myriad of options, free and otherwise, more appropriate for those who find the requirement of an ability to create constructions by mouse clicks on screen as essential to their own purposes or on behalf of their students.

But it cannot sensibly be thought that there are not trade-offs being made in settling upon such an approach.

And those trade-offs seem to be assessed differently by different sensibilities.

PyGeo takes a position on the matter.

That position is that the cognitive involvement and deliberatation that a planned, text-based construction approach requires is a good thing, and that the power, depth and range of the exploratory experience it encourages is, on motivational grounds and others, a very good thing.


The choice of Python as the implementation language for PyGeo is quite integral to PyGeo's educational purpose and design. Python code is often referred to as "executable pseudo-code". This helps bring some unique characteristics to PyGeo as tool for the study of geometric concepts.

Because of the level of programming abstraction provided by Python and the accessibility to its code as realistically readable text, the analytics driving the rendering of the synthetic, visual geometry is highly exposed. One can explore the analytics at work.

The abstract becomes much less abstract, and the two classical approaches to the study of geometry can and should become, more coherently, one.

PyGeo is committed to the idea that its code is the application no less so then is the response to mouse activity on a construction window. Please see the work in progress document intended to provide an entry point to a reading of the code as document. Anatomy of PyGeo code

More from Felix Klein :

“Last semester I endeavored always to enliven the abstract discussions of arithmetic, algebra, and analysis by means of figures and graphic methods, which bring the things nearer to the individual and often make clear to him, for the first time, why he should be interested in them. Similarly I shall now, from the beginning, accompany space perception, which of course, will hold first place, with analytic formulas, which facilitate in the highest degree the precise formulation of geometric facts. ”

Felix Klein

Elementary Mathematics from an Advanced Standpoint


PyGeo, as open source Python, should be readily extensible by anyone inclined toward the effort. Extend the functionality, create new primitives and interfaces for study of specialized geometric areas.

PyGeo is not an application, as such

More engagement is perhaps required than if it were

The environment hopes to be accessible, but not glib

...a laboratory, a toolkit and a framework for explorations in dynamic and empirical geometry.

complex epicycles

And imaginative play. Logo