None ex.I.5.9

Various examples of pencils spanned by two cycles

Exercise I.5.9 Investigate the following:

  1. What happens with an elliptic pencil if one of spanning circles is imaginary? Or if both spanning circles are imaginary?

  2. How does a pencil look if one spanning cycle is a straight line?

    If both cycles are straight lines?

  3. A pair of circles is symmetric about the line joining their centres. Thus, circular pencils look similar regardless of the direction of this line of centres. Our hyperbolas and parabolas have a special orientation: their axes of symmetry are vertical. Thus, a horizontal or vertical line joining the centres of two hyperbolas/parabolas make a special arrangement. How do hyperbolic pencils look if the line of centres is not horizontal?

Solution. Initialisation come first

In [1]:
from init_cycle import *
A=asy()
            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.
     ---------------------------------------------

Using vector formalism and idx

The procedure draws some representatives from the linear span of two cycles

In [2]:
def makepencil(C2, C3, xmin, xmax, ymin, ymax, colour1, colour2, colour3, name):
    N=5
    A.erase()
    A.send("picture ort;")
    A.send("erase(ort);")
    A.size(100)
    A.send("size(ort,100);")
    A.send(C2.asy_string(xmin, xmax, ymin, ymax, colour1, "1.5pt"))
    A.send(C3.asy_string(xmin, xmax, ymin, ymax, colour2, "1.5pt"))
    A.send(C2.asy_string("ort", xmin, xmax, ymin, ymax, [0,0,.8]))
    A.send(C3.asy_string("ort", xmin, xmax, ymin, ymax, [0,0,.8]))
    
    C0=C.subject_to([C2.is_orthogonal(C),C3.is_orthogonal(C),k==1]).subs({sign : C2.get_metric(1,1)})
    for i in range(N):
        C4=cycle2D(C2.exmul(i+1)+C3.exmul(N-i))
        A.send(C4.asy_string(xmin, xmax, ymin, ymax,\
        [colour1[0]*(i+1.0)/N+colour2[0]*(1.0-1.*i/N),\
        colour1[1]*(i+1.0)/N+colour2[1]*(1.0-1.*i/N),\
        colour1[2]*(i+1.0)/N+colour2[2]*(1.0-1.*i/N)]))
        if (i== (i/2)*2): # Only even numbered cycles for the orthogonality figure
            A.send(C4.asy_string("ort",xmin, xmax, ymin, ymax, [0,0,.8]))
        C4=cycle2D(C2.exmul(-pow(i+1.0,1.1))+C3)
        A.send(C4.asy_string(xmin, xmax, ymin, ymax,\
        [colour3[0]*(i+1.0)/N+colour2[0]*(1.0-1.*i/N),\
        colour3[1]*(i+1.0)/N+colour2[1]*(1.0-1.*i/N),\
        colour3[2]*(i+1.0)/N+colour2[2]*(1.0-1.*i/N)]))
        if (i== (i/2)*2): # Only even numbered cycles for the orthogonality figure
            A.send(C4.asy_string("ort",xmin, xmax, ymin, ymax, [0,0,.8]))
        C4=C2+cycle2D(C3.exmul(-pow(i+1.0,1.1)))
        A.send(C4.asy_string(xmin, xmax, ymin, ymax,\
        [colour3[0]*(i+1.0)/N+colour1[0]*(1.0-1.*i/N),\
        colour3[1]*(i+1.0)/N+colour1[1]*(1.0-1.*i/N),\
        colour3[2]*(i+1.0)/N+colour1[2]*(1.0-1.*i/N)]))
        if (i== (i/2)*2): # Only even numbered cycles for the orthogonality figure
            A.send(C4.asy_string("ort",xmin, xmax, ymin, ymax, [0,0,.8]))
    
    # The loop for the orthogonal cycles        
    for i in range(N):
        A.send(C0.subs({n : i}).asy_string("ort",xmin, xmax, ymin, ymax, [0,.8,0], "dashed"))
        if (i>0):
            A.send(C0.subs({n : -i}).asy_string("ort",xmin, xmax, ymin, ymax, [0,.8,0], "dashed"))
    A.shipout(f'{name}')
    A.shipout(f'{name}-ort')
    display(Image(f'{name}.png'))
    display(Image(f'{name}-ort.png'))

The next samples are used as illustrations in the book

In [3]:
C2=cycle2D([-1.1,1],e,.81)
C3=cycle2D([1.1,1],e,.47)
for j in range (3):
    makepencil(C2.subs({sign : j-1}), C3.subs({sign : j-1}), \
    -2,2,-1-j,3-j,[0,1,0],[0,0,1],[1,0,0], "pencil%d" % j)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [4]:
makepencil(cycle2D([-1,1],e.subs({sign : -1}),1.21), \
           cycle2D([1,1],e.subs({sign : -1}),4), \
           -3,3,-2,4,[0,1,0],[0,0,1],[1,0,0], "pencile")
No description has been provided for this image
No description has been provided for this image
In [5]:
makepencil(cycle2D(1,[-1,1],1,e.subs({sign : 0})), \
           cycle2D(1,[1.4,-.8],2,e.subs({sign : 0})), \
           -3,3,-2,4,[0,1,0],[0,0,1],[1,0,0], "pencilp")
No description has been provided for this image
No description has been provided for this image
In [6]:
makepencil(cycle2D([-1,1],e.subs({sign : 1}),1), \
           cycle2D([.5,1],e.subs({sign : 1}),1.7), \
           -3,3,-4,2,[0,1,0],[0,0,1],[1,0,0], "pencilh")
No description has been provided for this image
No description has been provided for this image

Here is some additional pictures of linear spans
in parabolic and hyperbolic spaces with
centres on different levels

In [7]:
makepencil(cycle2D(1,[-1,.6],1,e.subs({sign : 0})), \
           cycle2D(1,[-.1,-.6],-1.5,e.subs({sign : 0})), \
-2.5,1.5,-1.5,2.5,[0,1,0],[0,0,1],[1,0,0], "pencilpa")
No description has been provided for this image
No description has been provided for this image
In [8]:
makepencil(cycle2D([0,0],e.subs({sign : 1}),1), \
           cycle2D([.5,1],e.subs({sign : 1}),1), \
-3,3,-4,2,[0,1,0],[0,0,1],[1,0,0], "pencilha")
No description has been provided for this image
No description has been provided for this image

Span if one circle is imaginary

In [9]:
makepencil(cycle2D([-1,1],e.subs({sign : -1}),1), \
           cycle2D([1,1],e.subs({sign : -1}),-1), \
-3,3,-2,4,[0,1,0],[0,0,1],[1,0,0], "pencile1i")
No description has been provided for this image
No description has been provided for this image

Span if both circles are imaginary

In [10]:
makepencil(cycle2D([-1,1],e.subs({sign : -1}),-1), \
           cycle2D([1,1],e.subs({sign : -1}),-1), \
-3,3,-2,4,[0,1,0],[0,0,1],[1,0,0], "pencile2i")
No description has been provided for this image
No description has been provided for this image

Span of touching circles

In [11]:
makepencil(cycle2D([-1,1],e.subs({sign : -1}),1), \
           cycle2D([1,1],e.subs({sign : -1}),1), \
-3,3,-2,4,[0,1,0],[0,0,1],[1,0,0], "pencilet")
No description has been provided for this image
No description has been provided for this image

Span of touching hyperbolas

In [12]:
makepencil(cycle2D([-1,1],e.subs({sign : 1}),1), \
           cycle2D([1,1],e.subs({sign : 1}),1), \
-3,3,-4,2,[0,1,0],[0,0,1],[1,0,0], "pencilht")
No description has been provided for this image
No description has been provided for this image

Span of touching parabolas

In [13]:
makepencil(cycle2D(1,[0,2],-1,e.subs({sign : 0})), \
           cycle2D(1,[.5,1],0,e.subs({sign : 0})), \
           -1.5,2.5,-1,3,[0,1,0],[0,0,1],[1,0,0], "pencilpt")
No description has been provided for this image
No description has been provided for this image

Span of two intersecting upward parabolas intersecting in one finite point

In [14]:
makepencil(cycle2D(1,[-.75,1.125],-9.0/8,e.subs({sign : 0})), \
        cycle2D(1,[.75,1.125],-9.0/8,e.subs({sign : 0})), \
           -2.5,2.5,-1,3,[0,1,0],[0,0,1],[1,0,0], "pencilpf")
No description has been provided for this image
No description has been provided for this image
In [15]:
makepencil(cycle2D(1,[-1,1],3.0/4,e.subs({sign : 0})), \
        cycle2D(1,[1,1],3.0/4,e.subs({sign : 0})), \
           -2.5,2.5,-1,3,[0,1,0],[0,0,1],[1,0,0], "pencilpf2")
No description has been provided for this image
No description has been provided for this image

Span of two parallel vertical lines.

In [16]:
makepencil(cycle2D(1,[0,0],-4,e.subs({sign : 0})), \
        cycle2D(1,[5.0/6,0],2.0/3,e.subs({sign : 0})), \
           -2.5,2.5,-1,3,[0,1,0],[0,0,1],[1,0,0], "pencilpl")
No description has been provided for this image
No description has been provided for this image
In [17]:
makepencil(cycle2D(1,[4.0/3,0],4.0/3,e.subs({sign : 0})), \
        cycle2D(1,[8.0/15,0],4.0/15,e.subs({sign : 0})), \
           -2.5,2.5,-1,3,[0,1,0],[0,0,1],[1,0,0], "pencilpl2")
No description has been provided for this image
No description has been provided for this image

Span of touching upward and downward parabolas

In [18]:
makepencil(cycle2D(1,[-.5,1],0,e.subs({sign : 0})), \
           cycle2D(1,[.5,-1],0,e.subs({sign : 0})), \
           -1.5,1.5,-1.5,1.5,[0,1,0],[0,0,1],[1,0,0], "pencilpt2")
No description has been provided for this image
No description has been provided for this image

Span of a cicrle and a line

In [19]:
makepencil(cycle2D([-1,1],e.subs({sign : -1}),1), \
           cycle2D(0,[1,0],1,e.subs({sign : -1})), \
-3,3,-2,4,[0,1,0],[0,0,1],[1,0,0], "pencilecl")
No description has been provided for this image
No description has been provided for this image
In [20]:
del(A)
closing Asymptote session

This notebook is a part of the MoebInv notebooks project [2] .

References

  1. 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.

  2. Vladimir V. Kisil, MoebInv notebooks, 2019.

Back to Folder