Check the orthogonality through the ghost cycle¶
Proposition I.6.19 [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}{⋋} $ Let cycles $\cycle{}{\bs}$ and $\cycle[\tilde]{}{\bs}$ be $\bs$-orthogonal in $\Space[\sigma]{R}{}$ and let $\cycle[\breve]{}{\bs}$ be the ghost cycle of $\cycle{}{\bs}$. Then:
- $\cycle[\tilde]{}{\bs}$ and $\cycle[\breve]{}{\bs}$ are $\sigma$-orthogonal in $\Space[\sigma]{R}{}$ for seven cases \emph{except} two cases $\sigma=0$ and $\bs=\pm 1$.
- In the $\sigma$-implementation, the tangent\index{tangent} line to $\cycle[\tilde]{}{\bs}$ at its intersection point with
- the ghost cycle $\cycle[\breve]{}{\sigma}$, if $\sigma=\pm 1$, or
- the non-selfadjoint part $H\cycle{}{\bs}$ of the cycle $\cycle{}{\bs}$, if $\sigma=0$,
passes the $\bs$-centre of $\cycle{}{\bs}$, which coincides with
the $\sigma$-centre of $\cycle[\breve]{}{\sigma}$.
Proof. Definition of the ghost cycle depend either we use vector or paravector formalism.
from init_cycle import *
def ghost_cycle(C,ep,en):
if (UseVectors):
esign=remove_dirac_ONE(pow(ep.subs({ep.op(1) : 1}),2))
else:
esign=remove_dirac_ONE(pow(ep.subs({ep.op(1) : 0}),2))
return cycle2D([C.center(ep)[0],-C.center(ep)[1]*jump_fnct(esign)], en, C.radius_sq(en,M1))
Finding the roots of the ghost cycle
C5=ghost_cycle(C,es,e)
R=C.roots()
C3
is the cycle a cycle orthogonal to C
C3=C1.subject_to([C1.is_orthogonal(C,es)])
Latex("C3 is $\breve{\sigma}$-orthogonal to C: %s" % C3.cycle_product(C,es).is_zero())
## Was used for debug
#print (C3.cycle_product(C5,e))
#for i in range (3):
# for j in range (3):
# print ("%s,%s: %s" % (i,j,C3.cycle_product(C5,e).subs({sign : i-1,sign1 : j-1})))
Latex("C3 is $\sigma$-orthogonal to C5 if $\sigma=\pm 1$ : %s" %\
(C3.cycle_product(C5,e).subs({sign : -1, sign1 : -1}).is_zero() \
and C3.cycle_product(C5,e).subs({sign : 1, sign1 : 1}).is_zero()))
Latex("C3 is p-orthogonal to C5 if $\sigma_1=0$: %s" % \
C3.cycle_product(C5,e).subs({sign : 0, sign1 : 0}).is_zero())
Check the geometric orthogonality condition for parabolas. Define a point above the root of the first parabola
P2=[C.roots()[0],v]
Define a cycle passing this point and being orthogonal to C
C3=C1.subject_to([C1.passing(P2), C1.is_orthogonal(C,es)])
Calculate the slop of the parabola
Sl3=C3.val(P1).diff(u1)/C3.val(P1).diff(v1)
"Tangent to first parabola above second's root passes second's centre: %s" %\
(Sl3*(C.center(es)[0]-P2[0])+(C.center(es)[1]-P2[1])).subs({u1 : P2[0], v1 : P2[1], sign : 0})\
.numer().normal().is_zero()
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.