Check that all orthogonal cycles passing a point meet at its invesion¶
Exercise I.6.28 [1] $ \newcommand{\scalar}[3][]{\left\langle #2,#3 \right\rangle_{#1}} \newcommand{\Space}[3][]{\mathbb{#2}^{#3}_{#1}} \newcommand{\Space}[3][]{\mathbb{#2}^{#3}_{#1}} \newcommand{\cycle}[3][]{{#1 C^{#2}_{#3}}} \newcommand{\realline}[3][]{#1 R^{#2}_{#3}} \newcommand{\bs}{\breve{\sigma}} \newcommand{\zcycle}[3][]{#1 Z^{#2}_{#3}} \newcommand{\SL}[1][2]{\mathrm{SL}_{#1}(\Space{R}{})} \newcommand{\rs}{\sigma_r} \newcommand{\lvec}[1]{\overrightarrow{#1}} \newcommand{\rmi}{\mathrm{i}} \newcommand{\alli}{\iota} \newcommand{\rme}{\mathrm{e}} \newcommand{\rmd}{\mathrm{d}} \newcommand{\rmh}{\mathrm{j}} \newcommand{\rmp}{\varepsilon} \newcommand{\modulus}[2][]{\left| #2 \right|_{#1}} \newcommand{\sperp}{⋋} $ Prove the following properties of inversion:
Let a cycle $\cycle[\tilde]{s}{\bs}$ be $\bs$-orthogonal to a cycle $\cycle{s}{\bs}=(k,l,n,m)$. Then, for any point $u_1+\alli v_1\in \Space[\sigma]{R}{}$ ($\alli^2=\sigma$) belonging to $\sigma$-implementation of $\cycle[\tilde]{s}{\bs}$, this implementation also passes through the image of $u_1+\alli v_1$ under the Möbius transform defined by the matrix $\cycle{\bs}{\sigma}$:
$u_2+\alli v_2 =\cycle{\bs}{\sigma}(u_1-\alli v_1 ) = \begin{pmatrix} l+\alli\bs n & -m\\ k & -l+\alli\bs n \end{pmatrix} (u_1-\alli v_1).$
Thus, the point $u_2+\alli v_2$ is the {inversion} of $u_1+\alli v_1$ in $\cycle{s}{\bs}$.
Conversely, if a cycle $\cycle[\tilde]{s}{\bs}$ passes two different points $u_1+\alli v_1$ and $u_2+\alli v_2$, then $\cycle[\tilde]{s}{\bs}$ is $\bs$-orthogonal to $\cycle{s}{\bs}$.
If a cycle $\cycle[\tilde]{s}{\bs}$ is $\bs$-orthogonal to a cycle $\cycle{s}{\bs}$, then the $\bs$-inversion in $\cycle{s}{\bs}$ sends $\cycle[\tilde]{s}{\bs}$ to itself.
$\bs$-inversion in the $\sigma$-implementation of a cycle $\cycle{s}{\bs}$ coincides with $\sigma$-inversion in its $\bs$-ghost cycle $\cycle[\breve]{s}{\bs}$.
Solution. Cycle C2
is passing point P
from init_cycle import *
C2=C1.subject_to([C1.passing(P),C1.is_orthogonal(C,es)])
Different formulae for vector and paravector formalism
if (UseVectors):
Pn=C.moebius_map(P,e,diag_matrix([1,-sign1]))
else:
Pn=C.moebius_map([P[0],-P[1]],e,diag_matrix([1,-sign1]))
Output of checks
print("An othogonal cycle passes the inversed point: %s " %\
C2.val(Pn).normal().is_zero())
C3=C1.subject_to([C1.passing(Pn),C1.passing(P),C1.is_orthogonal(C,es)])
print("The cycle passing both points is the same: %s" % C2.is_equal(C3))
C4=C1.subject_to([C1.passing(P),C1.passing(Pn)])
print("A cycle passing both points is orthogonal: %s" %\
bool(C.is_orthogonal(C4,es)))
This notebook is a part of the MoebInv notebooks project [2] .
References¶
Vladimir 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.
Vladimir V. Kisil, MoebInv notebooks, 2019.