None What_is_cycle_relation

Start from the basics: What is a cycle relation, anyway?

Vladimir V Kisil

We use name cycles to denote quadrics. On a plane they are circles, parabolas and hyperbolas (together with limiting cases: straight lines and points). See What is cycle for an introduction.

Beauty of cycles multiplies when we arrange them into interrelated construction, which are called figures here. Within a figure different cycles may be connected by cycle relations, which are introduced in this notebook.

Note: to execute the notebook you may need to install software.

Table of contents of this notebook

Back to the top-level Table of Contents.

Constructing with compass, construction with MoebInv

We will illustrate the idea of cycle relations through the comparison with the classical geometric constructions by compass & straightedge. It turns out that quite a lot can be done using just the relation of cycle orthogonality

First we initialise our digital scratchpad.

In [1]:
from figure import *
from IPython.display import Image
show_asy_off()
            Python wrappers for MoibInv Library
     ---------------------------------------------
Please cite this software as
V.V. Kisil, MoebInv: C++ libraries for manipulations in non-Euclidean geometry, SoftwareX, 11(2020),100385. doi:10.1016/j.softx.2019.100385.
     ---------------------------------------------

Then we start a figure and place to random thee points A, B and C:

In [2]:
F=figure()
A=F.add_point([-2,-1], "A")
B=F.add_point([1,1], "B")
C=F.add_point([0,2], "C")

Here we store in variables A, B and C keys to the newly placed cycles representing those points. They will be used to indicate the parent for a particular relation.

Let us visualise the figure to see our work:

In [3]:
F.asy_write(300,-4,2,-3,3,"relations1","png")
Image("relations1.png")
Out[3]:
No description has been provided for this image

How to draw a cycle passing these three points? With compass & straightedge it requires some intermediate steps. In Lie spheres geometry you need only to tell that the new cycle shall be orthogonal to the three cycles representing those points. Thus we create a cycle by specifying a list with three relations and a label for the new cycle:

In [4]:
d=F.add_cycle_rel([is_orthogonal(A), is_orthogonal(B), is_orthogonal(C)], "d")
F.asy_write(300,-4,2,-3,3,"relations2","png")
Image("relations2.png")
Out[4]:
No description has been provided for this image

Let us now add two more arbitrary points:

In [5]:
G=F.add_point([-1.7,0.7], "G")
H=F.add_point([1,2], "H")
F.asy_write(300,-4,2,-3,3,"relations3","png")
Image("relations3.png")
Out[5]:
No description has been provided for this image

How to draw a line through these two points? A straight line is a cycle which passes the infinity, thus we have again have a list of three orthogonality conditions:

In [6]:
l=F.add_cycle_rel([is_orthogonal(G), is_orthogonal(H), is_orthogonal(F.get_infinity())], "l")
F.asy_write(300,-4,2,-3,3,"relations4","png")
Image("relations4.png")
Out[6]:
No description has been provided for this image

Another typical task is to identify the intersection points, say, for the cycle c and the kine l. The intersection shall be orthogonal to these two cycles. Also, as a point it shall be orthogonal to itself. The self-reference can be specified either as is_orthogonal() (the parent is ommited) or is_orthogonal(0) (a dummy zero parent is provided). Let us try:

In [7]:
E=F.add_cycle_rel([is_orthogonal(d), is_orthogonal(l), is_orthogonal()], "E")
F.asy_write(300,-4,2,-3,3,"relations5","png")
Image("relations5.png")
Out[7]:
No description has been provided for this image

We got two intersections, but they are under the same roof E. To access then individually, we split E through with_index() relation. It shall name the parent and provide the parameter—the number of particular cycle in a given node. Note that indexes start their numbering from $0$:

In [8]:
E1=F.add_cycle_rel([with_index(E,0)], "E1")
E2=F.add_cycle_rel([with_index(E,1)], "E2")
F.asy_write(300,-4,2,-3,3,"relations6","png")
Image("relations6.png")
Out[8]:
No description has been provided for this image

Now, we are expanding a set of used relations and will build a cycle passing these two different points E1 and E2 and touching the real line.

In [9]:
k=F.add_cycle_rel([is_orthogonal(E1), is_orthogonal(E2), is_tangent(F.get_real_line()), only_reals(), is_real_cycle()], "k")
F.set_asy_style(k, "rgb(1,0,0)")
F.asy_write(300,-4,2,-3,3,"relations7","png")
Image("relations7.png")
Out[9]:
No description has been provided for this image

There are two solutions (drawn in red) because the tangency relations invokes a quadratic equation. The relations only_reals() requests that there is no complex numbers for cycle coefficients, The relation is_real_cycle() forbids circles with imaginary radius. Both relations are helpful for the quadratic conditions like tangency.

Executive summary

A new cycle can be added to a figure by specifying a list of its relation to other cycles—either already existing or the new cycle itself. In this way we can avoid vicious loops. Thus the concept of a cycle relation is central to this software.

A cycle relation from MoebInv library belongs to one of the following three categories:

  • Characterising a geometric property through one or several equations on new cycle’s coefficients—it is typically used in a list with others relations. The most fundamental example is orthogonality, see the above example.

  • Constructing a new cycle—it is used alone or with choosing relations from the next category. An example is a reflection in a cycle.

  • Choosing a cycle by certain condition, e.g. either its all coefficients are real numbers. Such relations are usually not used themselves, rather they may complement relations of the first two categories.

Thereafter, a meaningful list of relations to define a new cycle has the form:

(some characterising or single constructing) and optional choosing relation(s)

The order of relations in the list is not important. Some relations (at any category) may need additional parameter(s) (real or Clifford numbers).

All relations except two choosing—"Only Real coefficients" and "Only Numeric coefficients"—link a new cycle to other cycle(s).

Five relations—"Orthogonal", "f-Orthogonal", "Two cycle product ratio", "Only Real coefficients" and "Only Numeric coefficients"—can meaningfully link a new cycle to itself. To this end they can be used without a parent or with dummy zero parent (see the intersection point example above)

Back to ToC

Further Reading

More detailed description of all available cycle relations can be found on-line.

However, already presented relations are sufficient to build various meaningful figures.

Back to ToC

Back to the top-level Table of Contents.

References

  1. V.V. Kisil. Starting with the group SL2(R). Notices Amer. Math. Soc., 54(11):1458–1465, 2007. arXiv:math/0607387, Zbl # 1137.22006.

2. V.V. Kisil. Geometry of Möbius Transformations: Elliptic, Parabolic and Hyperbolic Actions of $SL_2(\mathbb{R})$. Imperial College Press, London, 2012. Includes a live DVD.

3. V.V. Kisil, MoebInv notebooks, stated at 2019.

4. V. V. Kisil. An extension of Mobius–Lie geometry with conformal ensembles of cycles and its implementation in a GiNaC library. Proc. Int. Geom. Cent., 11 (3):45–67, 2018. E-print: arXiv:1512.02960. Project page: http://moebinv.sourceforge.net/.

5. V. V. Kisil. Möbius–Lie geometry and its extension. In I. M. Mladenov, G. Meng, and A. Yoshioka (eds.) Geometry, integrability and quantization XX, pages 13–61, Bulgar. Acad. Sci., Sofia, 2019. E-print: arXiv:1811.10499.

6. V. V. Kisil. MoebInv: C++ libraries for manipulations in non-Euclidean geometry. SoftwareX, 11:100385, 2020. doi: 10.1016/j.softx.2019.100385.

Back to ToC

Back to the top-level Table of Contents.