Introduction
The open source book Geometry with an Introduction to Cosmic Topology by Michael P. Hitchman is a fascinating introduction to non-Euclidean geometries following the Erlangen program. The approach in the book relies heavily on Möbius transformations and their effects on clines.
This repo aims to provide an implementation of the clines described in the book. Currently only numerical treatment is implemented but the plan is to add symbolic treatment as well.
What is a Cline?
A cline is a mathematical concept (see Definition 3.2.3) that unifies circles and lines in the complex plane under a single equation:
where:
\(c\) and \(d\) are real numbers
\(\alpha\) is a complex number
\(\bar{z}\) and \(\bar{\alpha}\) represent the complex conjugates of \(z\) and \(\alpha\)
This geometric structure represents:
A circle if \(|\alpha|^2 > c \cdot d\) and \(c \neq 0\)
A point if \(|\alpha|^2 = c \cdot d\) and \(c \neq 0\)
A line if \(c = 0\)
No geometric object if \(|\alpha|^2 < c \cdot d\) and \(c \neq 0\)
Visual Representation
Below is a visualization showing examples of clines in the complex plane:
(Source code, png, hires.png, pdf)
Features
The Cline library provides:
Unified Representation: Represent both circles and lines with a single class
Multiple Construction Methods:
From direct equation parameters
From three points
From circle center and radius
From two points (for a line)
Easy Access to Properties:
Circle center and radius
Line normal and direction vectors
Distance from origin
Visualization: Plot circles and lines using Matplotlib
Why Use Clines?
Clines provide several advantages:
Unified Treatment: Algorithms can work with both circles and lines
Transformation Properties: Clines transform elegantly under Möbius transformations
Algebraic Simplicity: Representing complex geometric relationships with simple equati