Curves of Constant Curvatures in Möbius Geometry

Dedicated to the memory of Alfred  Gray

by Rolf Sulanke

Starting date  April 13, 2010
Finished December 7, 2010

Introduction

In this notebook we apply Mathematica to describe the curves of constant  curvatures in the three-dimensional  Möbius  geometry.   The calculations and examples illustrate and complete the presentation of the subject in my not  yet finished book [MDG].  In our book [OS3] one finds the foundations of elementary Möbius  geometry in terms of linear algebra; also hyperbolic and elliptic geometry as used in this notebook are contained there.  

The classical work treating Möbius differential geometry is W. Blaschke & G. Thomsens book [BT]. A contemporary presentation of this field is given by Udo Hertrich-Jeromin in his book [H-J].  There one can find more literature and some aspects of the history of this field. This interesting book accumulates a lot of material  of  the subject, but it  contains nothing about the Möbius differential geometry of curves. In my paper [MGII] I treated this matter  by E. Cartan's method of  moving frames.  The curves of constant curvatures are classified there solving a differential equation.  In the presentation [MDG] and in chapter 2 below I applied  the classification of 1-parameter subgroups of the Möbius group to describe all the curves of constant curvatures in the 3-dimensional Möbius space.  In the present notebook the theory as described in [MDG] is applied and illustrated. Some calculations not contained in [MDG] are performed only here.  I recommend  to look at chapter 3 of [MDG]; this notebook can be considered as a part of that chapter.  A special role play the circles  and lines in Möbius geometry. These curves are locally Möbius equivalent;  they form a Cartan class of immersions for which  local invariants like curvatures do not exist. Of course they are also orbits of 1-parametric subgroups.  Under a curve of constant curvatures in the Möbius space we always understand a generally curved curve with constant curvatures. 

Any  1-parametric subgroup whose orbit is a curve of constant curvatures can be completed to a uniquely defined connected 2-dimensional maximal abelian subgroup of the Möbius group, see chapter 3 below.  The orbits of these subgroups are the Dupin cyclides. The Dupin cyclides can be characterised as surfaces being envelopes of 1-parametric sphere families in a twofold way:  There exist two distinct such families having the same envelope.  They appear as the main part of  homogeneous surfaces in the 3-dimensional Möbius space, see [MGV].  The characteristics of the generating sphere  families form two families of circles (or lines) each generating the cyclide.  These families are transformed into themselves by the 1-parametric subgroup generating the curve of constant curvature defining the cyclide; since the transformations are conformal the curves of constant curvatures are isogonal trajectories of the circle families.  A well known example are the helices on the circle cylinder in Euclidean geometry. In dimension 3 the classification in chapter two shows that any curve of constant  Möbius curvatures is Möbius equivalent to a curve of constant Riemannian curvatures  in an Euclidean, hyperbolic or elliptic space, whose Riemannian geometries are subgeometries of the Möbius space: their isometry groups are subgroups of the Möbius group.

For the application of Mathematica to Euclidean differential geometry we mention the pioneering work of Alfred Gray,  who introduced me into Mathematica,  see  [G06].  A short presentation of n-dimensional Euclidean curve theory is given in my paper [ECG] which together with a corresponding notebook EuCurves.nb  may be downloaded from my homepage.  From there one may download also other notebooks treating Möbius elementary geometry, pseudo-Euclidean geometry and Lie algebras.
 
I hope that the present notebook may serve as a good example of applying Mathematica to differential geometry.  Of special interest are the many symbolical calculations carried out here.  This and the graphical and numerical  tools of Mathematica  have been very useful in exploring the subject.

Keywords

Möbius group,  curves of constant curvatures, space forms (conformal models),  Dupin cyclides, cone, isotropic-orthogonal coordinates, pseudo-orthonormal coordinates, spherical reflections,  2D-spirals, spiral cylinder, stereographic projection, pseudo-Euclidean space

Copyright

This notebook and the accompanying packages are  public. Authors who intend to publish a changed or completed version of them should do it under their own names with the condition that they cite the original notebook with the internet address or other source where they got it. I am not responsible for errors or damages originated by the use of the procedures contained in my notebooks or packages; everybody who applies them should test carefully whether they are appropriate for his purposes.

Initialization

Before starting to work interactively with this notebook first time, read this section carefully and  make the necessary preparation. Later it suffices to call the menu item "Evaluation. Evaluate Initialization Cells".

The needed packages

For working with the notebook you need the packages
euvec.m, vectorcalc.m,  neuvec.m,  eudiffgeo.m, mdg.m.
You may download these and other packages from my Homepage .  From there you find all the packages mentioned above in the file mdgpack.zip, download.
Before initializing the notebook ensure that these packages are laying in a directory of your choice, e.g. ~/mathpack, in your

$Path

If necessary, insert the addresses of yor package- and your working directory into the next cells which correspond to your operating system:

For Windows:

PrependTo[$Path,"E:\\mymath\\mathpack"];

SetDirectory["E:\\mymath\\diffgeo\\mdg"];

For Linux:

PrependTo[$Path,"~/mymath/mathpack"];

SetDirectory["~/mymath/diffgeo/mdg"];

Directory[]

Now give the cells corresponding to your  operating system the properties "Cell Evaluatable" and "Initialization cell" (Menu Cell/Cell properties), and inactivate these properties for the  cells corresponding to the other operating system. If this is done, save the notebook. Next time you may start the notebook directly with the evaluation of the initialization, as follows:

The Initialization

Before starting to work interactively with the notebook

Activite Evaluation/Evaluate Initialization from the menu.

The first command loads the packages mentioned above:

Needs["mdg`"]

In this notebook we  shall  consider the 3-dimensional  Möbius space as the elliptical quadrik,  the 3-dimenssional sphere, in the 4-dimensional real projective space.  Therefore we set the dimension dim and the index ind  of the vector space as follows:

dim::usage="dim is the dimension of the vector space under consideration; it must be set within the Global Context.";

?dim

dim =5;

ind ::usage="ind is the index of the pseudo-Euclidean vector space under consideration; it must be set within the Global Context.";

ind =1;

Examples:

?vec

vec[x]

?dual

dual[vec[x]]

pssp[vec[x],vec[x]]

%==vec[x].dual[vec[x]]

$Assumptions

We always assume that the global constants and variables appearing in the next command are real numbers:

$Assumptions=s∈Reals&&t∈Reals&&u∈Reals&&v∈Reals&&w∈Reals&&x∈Reals&&y∈Reals&&z∈Reals&&a∈Reals&&b∈Reals&&c∈Reals&&k∈Reals&&h∈Reals;

1.  List of Symbols and their Usages

In this section one finds tables of the symbols introduced in the imported packages and in the Global Context.
To get the usages click on the name! If this does not work,enable Dynamic Updating in the Evaluation Menu.

1.1.  Symbols in the Package vectorcalc.m

?vectorcalc`*

1.2. Symbols in the Package euvec.m

?euvec`*

1.3. Symbols in the Package eudiffgeo.m

?eudiffgeo`*

1.4. Symbols in the Package neuvec.m

?neuvec`*

Examples

ide[]*IdentityMatrix[dim]

%//MatrixForm

This is the Gram matrix of a pseudo-orthonormal Basis:

Table[pssp[stb[i],stb[j]],{i,1,dim},{j,1,dim}]//MatrixForm

Options[orthonorm]

??neglect

Context[neglect]

1.5. Symbols in the Package mdg.m

?mdg`*

Examples

iob[0,4]

iob[0]

io[3]

io[]

Assuming that vec[x], vec[y] are  the isotropic-orthogonal coordinates coordinates of  two vectors, their pseudo-Euclidean scalar product is

vec[x,3].io[3].vec[y,3]

tranoi[ ] transforms the isotropic-orthogonal coordinates into the pseudo-orthogonal coordinates of the same  vectors

transoi[].vec[x]

The pseudo-orthogonal scalar product pssp of the transformed coordinates coincides with the isotropic-orthogonal scalar product of the origionals:

Simplify[pssp[transoi[].{x[1],x[2],x[3],x[4],x[5]},transoi[].{y[1],y[2],y[3],y[4],y[5]}]]

%== vec[x].io[].vec[y]

1.6.  Symbols in the Global Context

Evaluate the next cell to get the actual list of the symbols in the Global context.

?Global`*

2. Space Curves of Constant Curvatures

In this chapter we describe the  curves of constant curvatures as orbits of 1-parameter subgroups of the Möbius group, see section 3.2 of [MDG].  There is shown that any curve of constant Möbius curvatures k, h is Möbius equivalent to an orbit of the 1-parametric subgroup g(t) = exp[cc[k,h]t] of the Möbius group.  In section  2.1 we calculate these subgroups, what leads to a very large complex formula, hardly to work with manually.  Nevertheless, by the help of Mathematica we may classify and visualize the curves of constant curvatures as shown in the subsequent sections of this chapter. Since equivalent curves (under the action of the Möbius group)  correspond to conjugated subgroups we obtain at the same time the classification of the 1-parametric subgroups of the Möbius group of (S^3) in conjugacy classes.

2.1. The 1-Parametric Subgroups of the Möbius Group Generate the Curves of Constant Curvatures

2.1.1.  The Solution of the Frenet equation with constant Curvatures.

The matrix of the Frenet formulas in isotropic orthonormal coordinates  is (see Example 3.1.3 in [MDG])

cc::usage = "cc[k,h] = mfre3D[k,h] is the matrix of the Frenet formulas in the 3-dimensional Moebius space.";

cc[k_,h_]:= mfre3D[k,h]

?mfre3D

cc[k,h]//MatrixForm

The matrix cc[k,h] represents an element of the Lie algebra of the Möbius group in isotropic-orthogonal coordinates:

Transpose[cc[k,h]].io[] + io[].cc[k,h]

The MatrixExp yields the solution of the Frenet  equations for constant curvatures k,h being the 1-parameter subgroup of the Möbius group

gr[k_,h_,t_] :=MatrixExp[cc[k,h]*t]

with the startng conditions

gr[k,h,0]//MatrixForm

Remember:  We work in isotropic orthonormal coordinates; thus this is an isotropic-orthonormal basis:

Table[stb[i].io[].stb[j],{i,1,dim},{j,1,dim}]//MatrixForm

The next result shows that the corresponding 1-parametric subgroups leave the isotropic-orthonormal scalar product invariant, thus these subgroups belong to the Möbius group:

Timing[Simplify[Transpose[gr[k,h,t]].io[].gr[k,h,t],{k>0,h>0}]]

Simplify[gr[k,h,t][[1]].io[].gr[k,h,t][[1]]]

The formula for gr[k,h,t] is very long and not very handy:

FullSimplify[gr[k,h,t],{k>0,h>0}]

Also the trigonometric form of the matrix is too complicated:

FullSimplify[ExpToTrig[gr[k,h,t]],{k>0,h>0,t>0}]

We prove
Proposition.  The curves

curvecc[k_,h_][t_] := Simplify[ExpToTrig[Transpose[gr[k,h,t]][[1]]]]

are a complete system of representatives of the generally curved curves of  constant curvatures k, h in the Möbius 3-space. The parameter t is the natural conformal parameter of the curve.

Proof. First we check that this vector is isotropic; this needs ca 13.5 min:

curvecc[k,h][t]

Timing[FullSimplify[curvecc[k,h][t].io[].curvecc[k,h][t],{ t>0,k>0,h>0}]]

We show the solution property for the Frenet formulas; the following identity means that the column vectors of the matrix are the solution of the Frenet formulas with matrix cc[k,h]:

Simplify[D[gr[k,h,t],t]== gr[k,h,t].cc[k,h]]

Thus we calculate  the vectors of  the Frenet frame as the rows of the transposed matrix (a very large expression)

Simplify[ExpToTrig[Transpose[gr[k,h,t]]]]

and define the Frenet frame as the result of this calculation:

frmat[k_,h_,t_] :={{(2*h^2*k*(4 + h^4 + 4*h^2*k + 4*k^2) + 
     (h^6*k + 4*(1 + k^2) + h^4*(1 + 4*k^2 - 
         k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) - 
       h^2*(-8*k - 4*k^3 + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2] + 2*k^2*Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))*
      Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6*k + 4*(1 + k^2) + h^4*(1 + 4*k^2 + 
         k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) + 
       h^2*(8*k + 4*k^3 + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2] + 2*k^2*Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))*Cosh[
       (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]])/
    (2*(2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
      h^4*(1 + 8*k^2))), 
   (((-h^6)*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]] + 2*Sqrt[(4 + h^4 + 4*h^2*k + 
           4*k^2)*(h^2 - 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2])] + 
       h^4*(-4*k*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])]) + 
       h^2*(-4*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] - 
         4*k^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         2*k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
            (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2])]))*
      Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]] + 2*Sqrt[(4 + h^4 + 4*h^2*k + 
           4*k^2)*(-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2])] + 
       h^4*(4*k*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])]) + 2*h^2*
        (2*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]] + 2*k^2*Sqrt[-h^2 + 2*k + 
            Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]] + 
         k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
            (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2])]))*
      Sinh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
    (2*Sqrt[2]*(2*h^6*k + 4*(1 + k^2) + 
      4*h^2*k*(3 + 2*k^2) + h^4*(1 + 8*k^2))), 
   Sqrt[2]*
    (-((Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]]*Sin[
         (Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 - 
        2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
        h^2*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))) + 
     (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]]*Sinh[
        (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k +
              4*k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 + 
       2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
       h^2*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]))), h*(1/(-1 - 2*h^2*k) + 
     (2*Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
      (4 + h^4 + 4*k^2 - 2*k*Sqrt[4 + h^4 + 4*h^2*k + 
          4*k^2] + h^2*(4*k + Sqrt[4 + h^4 + 
           4*h^2*k + 4*k^2])) + 
     (2*Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
      (4 + h^4 + 4*k^2 + 2*k*Sqrt[4 + h^4 + 4*h^2*k + 
          4*k^2] - h^2*(-4*k + Sqrt[4 + h^4 + 
           4*h^2*k + 4*k^2]))), 
   (-2*h^2*(4 + h^4 + 4*h^2*k + 4*k^2) + 
     (h^6 - 2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
       h^4*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) + 
       h^2*(4 + 4*k^2 - 2*k*Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))*
      Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6 + 2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
       h^4*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) + 
       2*h^2*(2 + 2*k^2 + k*Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))*Cosh[
       (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]])/
    (2*(2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
      h^4*(1 + 8*k^2)))}, 
  {
   ((-(h^6*k*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 4*(1 + k^2)*
         Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]] + h^4*(Sqrt[h^2 - 2*k + 
            Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]] + 
          4*k^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]] - 
          k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])]) - 
        h^2*(-8*k*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*
                h^2*k + 4*k^2]] - 
          4*k^3*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]] + Sqrt[
           (4 + h^4 + 4*h^2*k + 4*k^2)*(h^2 - 2*k + 
             Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])] + 
          2*k^2*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])])))*
      Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6*k*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
            4*h^2*k + 4*k^2]] + 4*(1 + k^2)*
        Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]] +  
       h^4*(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 
         4*k^2*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
            (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2])]) + 
       h^2*(8*k*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         4*k^3*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])] + 2*k^2*Sqrt[
           (4 + h^4 + 4*h^2*k + 4*k^2)*(-h^2 + 2*k + 
             Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])]))*
      Sinh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
    (2*Sqrt[2]*(2*h^6*k + 4*(1 + k^2) + 
      4*h^2*k*(3 + 2*k^2) + h^4*(1 + 8*k^2))), 
   ((1 + 2*h^2*k)*((4 + h^4 + 4*k^2 - 
        2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
        h^2*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
       Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]] + 
      (4 + h^4 + 4*k^2 + 2*k*Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2] + h^2*(4*k + Sqrt[4 + h^4 + 
            4*h^2*k + 4*k^2]))*
       Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]]))/
    (2*(2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
      h^4*(1 + 8*k^2))), 
   (-Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]]*t)/Sqrt[2]])/
    Sqrt[4 + h^4 + 4*h^2*k + 4*k^2], 
   Sqrt[2]*h*
    (-((Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]]*Sin[
         (Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 - 
        2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
        h^2*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))) + 
     (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]]*Sinh[
        (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 + 
       2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
       h^2*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]))), 
   (((-h^6)*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]] + 2*Sqrt[(4 + h^4 + 4*h^2*k + 
           4*k^2)*(h^2 - 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2])] + 
       h^4*(-4*k*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])]) + 
       h^2*(-4*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] - 
         4*k^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         2*k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
            (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2])]))*
      Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]] + 2*Sqrt[(4 + h^4 + 4*h^2*k + 
           4*k^2)*(-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2])] + 
       h^4*(4*k*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])]) + 2*h^2*
        (2*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]] + 2*k^2*Sqrt[-h^2 + 2*k + 
            Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]] + 
         k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
            (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2])]))*
      Sinh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
    (2*Sqrt[2]*(2*h^6*k + 4*(1 + k^2) + 
      4*h^2*k*(3 + 2*k^2) + h^4*(1 + 8*k^2)))}, 
  {(1/Sqrt[2])*
    (((h^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]] + Sqrt[(4 + h^4 + 4*h^2*k + 
           4*k^2)*(h^2 - 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2])])*
       Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 - 
       2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
       h^2*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])) - 
     (((-h^2)*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 
        Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
          (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2])])*Sinh[
        (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/
      (-h^4 + h^2*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]) - 2*(2 + 2*k^2 + 
         k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))), 
   (-Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]]*t)/Sqrt[2]])/
    Sqrt[4 + h^4 + 4*h^2*k + 4*k^2], 
   ((1 + 2*h^2*k)*((4 + h^4 + 4*k^2 + 
        2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
        h^2*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
       Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]] + 
      (4 + h^4 + 4*k^2 - 2*k*Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2] - h^2*(-4*k + Sqrt[4 + h^4 + 
            4*h^2*k + 4*k^2]))*
       Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]]))/
    (2*(2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
      h^4*(1 + 8*k^2))), 
   (h*((4*k^3*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 
        Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
          (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2])] + 2*k^2*
         (2*h^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]] + Sqrt[
           (4 + h^4 + 4*h^2*k + 4*k^2)*(h^2 - 2*k + 
             Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])]) + 
        k*(4*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]] + h^4*Sqrt[h^2 - 2*k + 
             Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]] + 
          h^2*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])]))*
       Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]] + 
      (-4*k^3*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 
        Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
          (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2])] + 2*k^2*
         (-2*h^2*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*
                h^2*k + 4*k^2]] + 
          Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
            (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2])]) + 
        k*(-4*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]] - h^4*Sqrt[-h^2 + 2*k + 
             Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]] + 
          h^2*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])]))*
       Sinh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]]))/
    (Sqrt[2]*(2*h^6*k + 4*(1 + k^2) + 
      4*h^2*k*(3 + 2*k^2) + h^4*(1 + 8*k^2))), 
   Sqrt[2]*
    (-((Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]]*Sin[
         (Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 - 
        2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
        h^2*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))) + 
     (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]]*Sinh[
        (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 + 
       2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
       h^2*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2])))}, 
  {(h*(-2*k*(4 + h^4 + 4*h^2*k + 4*k^2) + 
      (4*k^3 + 2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
        2*k^2*(2*h^2 + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]) + k*(4 + h^4 + 
          3*h^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
       Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]] + 
      (4*k^3 - 2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
        2*k^2*(-2*h^2 + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]) + k*(4 + h^4 - 
          3*h^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
       Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]]))/
    (2*(2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
      h^4*(1 + 8*k^2))), Sqrt[2]*h*
    ((Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]]*
       Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 - 
       2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
       h^2*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])) - 
     (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]]*Sinh[
        (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 + 
       2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
       h^2*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]))), 
   -((h*((4*k^3*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])] + 2*k^2*
          (2*h^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
                4*h^2*k + 4*k^2]] + 
           Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])]) + 
         k*(4*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
                4*h^2*k + 4*k^2]] + 
           h^4*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
                4*h^2*k + 4*k^2]] + 
           h^2*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
              (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                 4*k^2])]))*
        Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]]*t)/Sqrt[2]] + 
       (-4*k^3*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])] + 2*k^2*
          (-2*h^2*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
                4*h^2*k + 4*k^2]] + 
           Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])]) + 
         k*(-4*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
                4*h^2*k + 4*k^2]] - 
           h^4*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
                4*h^2*k + 4*k^2]] + 
           h^2*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
              (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                 4*k^2])]))*
        Sinh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]]*t)/Sqrt[2]]))/
     (Sqrt[2]*(2*h^6*k + 4*(1 + k^2) + 
       4*h^2*k*(3 + 2*k^2) + h^4*(1 + 8*k^2)))), 
   (4 + h^4 + 4*h^2*k + 4*k^2 + 
     h^2*(4*k^3 + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
       2*k^2*(2*h^2 + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]) + k*(4 + h^4 + 
         h^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
      Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     h^2*(4*k^3 - Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
       2*k^2*(-2*h^2 + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]) + k*(4 + h^4 - 
         h^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
      Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
    (2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
     h^4*(1 + 8*k^2)), h*(1/(1 + 2*h^2*k) - 
     (2*Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
      (4 + h^4 + 4*k^2 - 2*k*Sqrt[4 + h^4 + 4*h^2*k + 
          4*k^2] + h^2*(4*k + Sqrt[4 + h^4 + 
           4*h^2*k + 4*k^2])) - 
     (2*Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
      (4 + h^4 + 4*k^2 + 2*k*Sqrt[4 + h^4 + 4*h^2*k + 
          4*k^2] - h^2*(-4*k + Sqrt[4 + h^4 + 
           4*h^2*k + 4*k^2])))}, 
  {(-2*h^2*k^2*(4 + h^4 + 4*h^2*k + 4*k^2) + 
     (h^6*k^2 - 2*(1 + k^2)*Sqrt[4 + h^4 + 4*h^2*k + 
          4*k^2] + h^4*k^2*(4*k - 
         Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) + 
       2*h^2*k*(2*k + 2*k^3 - 
         2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
         k^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
      Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6*k^2 + 2*(1 + k^2)*Sqrt[4 + h^4 + 4*h^2*k + 
          4*k^2] + h^4*k^2*(4*k + 
         Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) + 
       2*h^2*k*(2*k + 2*k^3 + 
         2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
         k^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
      Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
    (2*(2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
      h^4*(1 + 8*k^2))), 
   ((-(h^6*k*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 4*(1 + k^2)*
         Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]] + h^4*(Sqrt[h^2 - 2*k + 
            Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]] + 
          4*k^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]] - 
          k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])]) - 
        h^2*(-8*k*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*
                h^2*k + 4*k^2]] - 
          4*k^3*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]] + Sqrt[
           (4 + h^4 + 4*h^2*k + 4*k^2)*(h^2 - 2*k + 
             Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])] + 
          2*k^2*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
             (h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
                4*k^2])])))*
      Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6*k*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
            4*h^2*k + 4*k^2]] + 4*(1 + k^2)*
        Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]] + 
       h^4*(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 
         4*k^2*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         k*Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
            (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 4*
                k^2])]) + 
       h^2*(8*k*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         4*k^3*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
              4*h^2*k + 4*k^2]] + 
         Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
           (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2])] + 2*k^2*Sqrt[
           (4 + h^4 + 4*h^2*k + 4*k^2)*(-h^2 + 2*k + 
             Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])]))*
      Sinh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]]*t)/Sqrt[2]])/
    (2*Sqrt[2]*(2*h^6*k + 4*(1 + k^2) + 
      4*h^2*k*(3 + 2*k^2) + h^4*(1 + 8*k^2))), 
   (1/Sqrt[2])*
    (((h^2*Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]] + Sqrt[(4 + h^4 + 4*h^2*k + 
           4*k^2)*(h^2 - 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2])])*
       Sin[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/(4 + h^4 + 4*k^2 - 
       2*k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
       h^2*(4*k + Sqrt[4 + h^4 + 4*h^2*k + 4*k^2])) - 
     (((-h^2)*Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 
             4*h^2*k + 4*k^2]] + 
        Sqrt[(4 + h^4 + 4*h^2*k + 4*k^2)*
          (-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2])])*Sinh[
        (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
              4*k^2]]*t)/Sqrt[2]])/
      (-h^4 + h^2*(-4*k + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2]) - 2*(2 + 2*k^2 + 
         k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))), 
   -((h*(-2*k*(4 + h^4 + 4*h^2*k + 4*k^2) + 
       (4*k^3 + 2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] + 
         2*k^2*(2*h^2 + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]) + k*(4 + h^4 + 
           3*h^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
        Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]]*t)/Sqrt[2]] + 
       (4*k^3 - 2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2] - 
         2*k^2*(-2*h^2 + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]) + k*(4 + h^4 - 
           3*h^2*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]))*
        Cosh[(Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*
                k + 4*k^2]]*t)/Sqrt[2]]))/
     (2*(2*h^6*k + 4*(1 + k^2) + 
       4*h^2*k*(3 + 2*k^2) + h^4*(1 + 8*k^2)))), 
   (2*h^2*k*(4 + h^4 + 4*h^2*k + 4*k^2) + 
     (h^6*k + 4*(1 + k^2) + h^4*(1 + 4*k^2 - 
         k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) - 
       h^2*(-8*k - 4*k^3 + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2] + 2*k^2*Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))*
      Cos[(Sqrt[h^2 - 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]] + 
     (h^6*k + 4*(1 + k^2) + h^4*(1 + 4*k^2 + 
         k*Sqrt[4 + h^4 + 4*h^2*k + 4*k^2]) + 
       h^2*(8*k + 4*k^3 + Sqrt[4 + h^4 + 4*h^2*k + 
           4*k^2] + 2*k^2*Sqrt[4 + h^4 + 4*h^2*k + 
            4*k^2]))*Cosh[
       (Sqrt[-h^2 + 2*k + Sqrt[4 + h^4 + 4*h^2*k + 
             4*k^2]]*t)/Sqrt[2]])/
    (2*(2*h^6*k + 4*(1 + k^2) + 4*h^2*k*(3 + 2*k^2) + 
      h^4*(1 + 8*k^2)))}}

The result is a very large expression. In spite of this we try the first Frenet equation:

FullSimplify[D[frmat[k,h,t][[1]],t]-frmat[k,h,t][[2]]]

Analogously we test the other Frenet equations:

FullSimplify[D[frmat[k,h,t][[2]],t]-frmat[k,h,t][[1]]*k-frmat[k,h,t][[5]]]

FullSimplify[D[frmat[k,h,t][[3]],t]-frmat[k,h,t][[1]]-frmat[k,h,t][[4]]*h]

FullSimplify[D[frmat[k,h,t][[4]],t]+frmat[k,h,t][[3]]*h]

FullSimplify[D[frmat[k,h,t][[5]],t]-frmat[k,h,t][[2]]*k-frmat[k,h,t][[3]]]

FullSimplify[D[frmat[k,h,t],t]/. t->0]//MatrixForm

%== Transpose[cc[k,h]]

Clearly, by definition, the first  vector represents the curve.

frmat[k,h,t][[1]] == curvecc[k,h][t]

The identity

cc[k,h].io[] +io[].Transpose[cc[k,h]]

shows that with cc[k,h] also Transpose[cc[k, h]] belongs to the Möbius Lie algebra. Therefore the transpose of  gr[k,h,t] belongs to the Möbius group (Check it!) and the row vectors satisfy the isotropic-orthogonal relations, and the frame is the Frenet frame of the curve, see Example 3.1.3 in [MDG].  For the last statement we consider formula (3.1.24) in [MDG]. To show that ds = dt we calculate

sq2[k_,h_,t_]= FullSimplify[D[frmat[k,h,t][[2]],t].io[].D[frmat[k,h,t][[2]],t],k∈ Reals&&h∈ Reals&&t∈ Reals]

sq3[k_,h_,t_]= FullSimplify[D[frmat[k,h,t][[2]],{t,2}].io[].D[frmat[k,h,t][[2]],{t,2}],k∈ Reals&&h∈ Reals&&t∈ Reals]

sq3[k,h,t]-sq2[k,h,t]^2

and this proves our statement.

2. 1.2. Visualization in the Euclidean Space. Examples

In this subsection we shall visualize the curves curvecc[k,h][t] of constant curvatures k, h. We get their parameter representation on the unit hypersphere of the 4-dimensional Euclidean space by the help of the following modules

?sphmap

?transoi

Since the 3-sphere cannot be visualized directly, we apply

?sterproj

to get a conformal picture of the curve in the Euclidean space. We define

euclidpt[u_List] := sterproj[sphmap[transoi[].u]]

euclidpt::usage = "euclidpt[u] yields the point of the Euclidean n-space which correspond to the point of the Möbius n-space represented by the isotropic (n+2)-vector u under stereographic projection from the North pole. u must be given in isotropic-orthogonal coordinates.";

The origin is

euclidpt[stb[1]]

The North pole itself has no image:

euclidpt[stb[5]]

The image of the curve is obtained by

eucurvecc[k_,h_][t_] :=  euclidpt[curvecc[k,h][t]]

eucurvecc::usage ="eucurvecc[k,h][t] is the image of the curve of constant Möbius curvatures k,h with natural parameter t under stereographic projection onto the Euclidean 3-space.";

The output of the following cell is very large:

FullSimplify[eucurvecc[k,h][t]]

ParametricPlot3D[eucurvecc[-5,1][t], {t,-10,10},PlotRange ->All,PlotPoints -> 100]

ParametricPlot3D[eucurvecc[-.5,1][t], {t,-20,20},PlotRange ->All,PlotPoints -> 100]

Changing the sign of h changes reflects the curve :

ParametricPlot3D[eucurvecc[-.5,-1][t], {t,-20,20},PlotRange ->All,PlotPoints -> 100]

The image needs not to be a curve of constant curvatures with respect to  Euclidean geometry since the generating 1-parameter subgroup in general will not leave the North pole fixed:

ParametricPlot3D[eucurvecc[-1.2,.5][t],{t,-40,40},PlotRange -> All,PlotPoints ->100, PlotStyle -> {Thick, Red}]

ParametricPlot3D[eucurvecc[-2,1.5][t],{t,-80,80},PlotRange -> All,PlotPoints ->100, PlotStyle -> {Blue},Boxed -> False,Axes -> False]

picture1 =%;

Export["picture1.eps",picture1]

ParametricPlot3D[eucurvecc[-5,-7][t], {t,-10,10},PlotRange ->All,PlotPoints -> 100]

ParametricPlot3D[eucurvecc[0,1][t], {t,-30,30},PlotRange ->All,PlotPoints -> 100]

eucurvecc[0,h][t]

2.1.3. The Case h=0

If  h = 0 we obtain plane curves, corresponding to loxodromes on the 2-sphere, see the notebook  [lox] where the Möbius differential geometry of plane curves is treated.

eucurvecc[0,0][t]

ParametricPlot3D[eucurvecc[0,0][t], {t,-25,25}]

ParametricPlot3D[eucurvecc[-5,0][t], {t,-10,10},PlotRange ->All,PlotPoints -> 100]

Inded, for h = 0  we have

frmat[k,0,t][[4]]

The curve lies in the 2-sphere defined by stb[4], see Example 3.1.3 in [MDG].

2.2. Classification and Properties of the 1-Parameter Subgroups

2.2.1. The Classification Theorem

Since the 1-parametric subgroups correspond bijectively to the 1-dimensional subspaces of the Lie algebra it suffices to classify these.  Adjoint subspaces correspond to conjugated subgroups and these generate Möbius congruent curves of constant curvatures;  Therefore the elements  cc[k,h]  generate a complete representative system of the 1-üarameter subgroups with respect to conjugation.
We consider the fixed elements of the action of the corresponding 1-parameter subgroup  generated by

cc[k,h]//MatrixForm

It is well known and easy to prove that the eigenvectors of X to the eigenvalue 0 and only these are fixed under the action of the corresponding 1-parameter subgroup exp(tX)

NullSpace[cc[k,h]]

cc[k,h].%[[1]]

v0::usage ="v0[k,h]is an eigenvector of cc[k,h] to the eigenvalue 0.";

v0[k_,h_] := {-k*h,0,0,1,h}

v0[k,h]

cc[k,h].v0[k,h]

We test the fixed point property applying the transformation gr[k,h,t]  to the NullSpace vector:

Simplify[gr[k,h,t].v0[k,h]== v0[k,h]]

The geometry of the curve depends on the invariant defining the character of the fixed vector (remember: We are working with isotropic orthogonal coordinates!)

v0[k,h].io[].v0[k,h]

chB::usage ="chB[k,h] defines the character of the curve of constant curvatures k,h in the 3-dimensional Moebius space; it equals the invariant B.";

The invariant B appears  in [MGII].

chB[k_, h_] := 1 + 2*k*h^2

?chB

Plot3D[chB[k,h], {k,-10,10},{h,-9,9}]

grchB1=%;

For k =-1/(2(h^2)) the fixed vector is isotropic, it defines a fixed point of the corresponding 1-parameter subgroup in the Möbius space,modelled by the unit 3-sphere.

ParametricPlot3D[{-1/(2h^2),h,0},
{h,-9,-.2},PlotStyle -> {Red,Thick}]

ParametricPlot3D[{-1/(2h^2),h,0},
{h,.2,9},PlotStyle -> {Red,Thick}]

Show[{%,%%},PlotRange -> All]

grchB2 =%;

Show[{grchB1, grchB2}]

This Line separates the regions chB[k, h]<0, chB[k, h]>0:

chB[-5,-5]

chB[5,-5]

The graph of chB[k, h] contains two lines, defined by

chB[0,h]

chB[k,0]

Case 1: Elliptic geometry on the 3-sphere,   chB[k,h] < 0
If the invariant B =1 + 2*kk*hh^2= chB[k,h] is  negative,   the  fixed vector is timelike; the corresponding 1-parameter subgroup leaves the orthogonal subspace invariant too, since the scalar product is invariant. The corresponding  1-parametric subgroup leaves the 3-sphere corresponding to v0[k,h] invariant, and the subgroup belongs to the isometry group of this 3-sphere; its orbits are curves of constant curvatures of the elliptic geometry of this 3-sphere.

Case 2: Hyperbolic geometry on the pseudo-3-sphere,  chB[k,h] >0
If the invariant B =1 + 2*kk*hh^2= chB[k,h] is  positive,   the  fixed vector is spacelike; the corresponding 1-parametric subgroup leaves the orthogonal subspace invariant too, which is a 4-dimensional pseudo-Euclidean vector space (W^4) of index 1.  This subgroup leaves the pseudo- 3-sphere of  (W^4) defined  by pssp[x,x] = -1 invariant and the subgroup belongs to the isometry group of this hyperbolic geometry;  its orbits are   curves of constant curvatures of the hyperbolic geometry of this pseudo- 3-sphere.

Case 3: Confomal Euclidean geometry on the 3-space,  chB[k,h] =0
The fixed eigenvector is isotropic and defines a point in the Möbius 3-sphere fixed under the corresponding  1-parametric subgroup.  The complement of this fixed point is invariant under this group too; it represents an Euclidean space under the stereographic projection of the 3-sphere from the fixed point, and the group is a 1-parametric conformal group of the Euclidean space.  Therefore the generally curved orbits are curves of constant curvatures in  the Euclidean geometry on the complement of the fixed point in the Möbius space.  In difference to the other 3-dimensional geometries, in the Euclidean geometry the curves of constant curvatures are characterised by only one conformal curvature (since chB[k,h]=0).

The case discussion yields ( see also Corollary 2.1 in ]MGII])

Theorem. The generally curved curves of constant curvatures  in the 3-dimensional Möbius geometry coincide with the curves of constant curvatures in the metric geometries mentioned in the cases 1-3; these are all generally curved curves of constant curvatures in the 3-dimensional Möbius space.

2.2.2.  The mflat Case h=0

By the general theory, the vanishing of the last curvature means that the curve is contained in a subsphere. Indeed, we have for all k

chB[k,0]

and the curve is contained in a 2-sphere:

gr[k,0,t].iob[3]

%== iob[3]

The eigenvalue 1 has multiplicity 1 as the eigenvalue 0 of the generating element cc[k,0]:

NullSpace[cc[k,0]]

On the other hand, since chB[k,0]= 1>0 the 1-parametric subgroup belongs to the isometry group of the pseudo-hypersphere in the 4-dimensional pseudo-Euclidean orthogonal complement of iob[3], and the curve is of constant metric curvature in the 3-dimensional hyperbolic geometry.

The Euclidean picture belongs to a plane:

eucurvecc[k,0][t]

Explore the curves inserting distinct values of k in the next cell

ParametricPlot[Take[eucurvecc[-5,0][t],2] ,{t,-100,100},PlotRange -> All,PlotPoints -> 200]

Limit[eucurvecc[k,0][t], t -> -Infinity]

Limit[eucurvecc[k,0][t], t -> Infinity]

Plot[{%[[1]],%[[2]]}, {k, -10,10}]

FindMaximum[%%[[2]],{k,0}]

ParametricPlot[Take[eucurvecc[-0.5773502691893181`,0][t],2] ,{t,-100,100},PlotRange -> All]

ParametricPlot[Take[eucurvecc[10,0][t],2] ,{t,-100,100},PlotPoints -> 100,PlotRange -> All]

ParametricPlot[Take[eucurvecc[-10,0][t],2] ,{t,-100,100},PlotPoints -> 100,PlotRange -> All]

The example: k=h=0

eucurvecc[0,0][t]

Limit[%, t-> Infinity]

Limit[%%, t-> -Infinity]

ParametricPlot[Take[eucurvecc[0,0][t],2] ,{t,-10,10},PlotRange -> All]

It is Möbius equivalent to a loxodrome.  The limits for t -> ±Infinity are not 0 and Infinity, as shown before. By the map

?sphericalreflection

we get the loxodrome in form of a logarhitmic spiral starting at {1/Sqrt[2], 1/Sqrt[2]}:

ParametricPlot[sphericalreflection[Take[eucurvecc[0,0][t],2],- {1/Sqrt[2],1/Sqrt[2]},2],{t,-3,3},PlotRange -> All]

ParametricPlot[sphericalreflection[{-1/Sqrt[2],-1/Sqrt[2]}+Take[eucurvecc[0,0][t],2], {0,0},1]+{1/Sqrt[2],1/Sqrt[2]}/2,{t,-3,3},PlotRange -> All]

Now we shall use the fact that for h =0 the curve is contained in a 2-sphere; as a curve of constant curvature it is conformally equivalent to a loxodrome, see Section 3.2.1 in [MDG], and the notebook [lox]. We construct parameter representations of these spherical curves and plot them. We start with

?curvecc

curvecc[k,0][t]

Simplify[%.io[].%]

Now we transform to pseudo-orthonormal coordinates:

transoi[].curvecc[0,0][t]

FullSimplify[%]

FullSimplify[pssp[%,%]]

dim = 5

The four - dimensional isotropic representing vector is obtained by

Append[Take[transoi[].curvecc[k,0][t],3],(transoi[].curvecc[k,0][t])[[5]]]

FullSimplify[%]

We insert the result  into the next definition

curvecc2D[k_][t_]:= 
  {((-1 + Sqrt[1 + k^2])*Cos[Sqrt[-k + Sqrt[1 + k^2]]*t] + 
     (1 + Sqrt[1 + k^2])*Cosh[Sqrt[k + Sqrt[1 + k^2]]*t])/
    (2*Sqrt[2]*Sqrt[1 + k^2]), 
   (Sqrt[-k + Sqrt[1 + k^2]]*Sin[Sqrt[-k + Sqrt[1 + k^2]]*t] + 
     Sqrt[k + Sqrt[1 + k^2]]*Sinh[Sqrt[k + Sqrt[1 + k^2]]*t])/
    (2*Sqrt[1 + k^2]), 
   ((-Sqrt[k + Sqrt[1 + k^2]])*Sin[Sqrt[-k + Sqrt[1 + k^2]]*t] + 
     Sqrt[-k + Sqrt[1 + k^2]]*Sinh[Sqrt[k + Sqrt[1 + k^2]]*t])/
    (2*Sqrt[1 + k^2]), 
   -(((1 + Sqrt[1 + k^2])*Cos[Sqrt[-k + Sqrt[1 + k^2]]*t] + 
      (-1 + Sqrt[1 + k^2])*Cosh[Sqrt[k + Sqrt[1 + k^2]]*t])/
     (2*Sqrt[2]*Sqrt[1 + k^2]))}

dim = 4

curvecc2D[k][t]

FullSimplify[pssp[%,%]]

This is  an isotropic vector (in pseudo-orthonotmal coordinates) representing the curve in the 2-sphere. The parameter representation of the spherical curve in Euclidean  coordinates is obtained by

?sphmap

Simplify[sphmap[curvecc2D[k][t]]]

Simplify[%.%]

We plot the curve for k=0 and the unit sphere

ParametricPlot3D[sphmap[curvecc2D[0][t]],{t,-35,35},PlotRange -> All, PlotStyle -> {Red,Thick}]

loxo1 = %;

Show[Graphics3D[{Opacity[.2],Sphere[{0,0,0}] }]]

sphere1= %;

Show[{loxo1,sphere1}, Boxed -> False, Axes -> False]

This is a special loxodrome (isogonal trajectory of the circle bundle through the two limit points). Choose other values of k (and h = 0) e.g.

ParametricPlot3D[sphmap[curvecc2D[-5][t]],{t,-35,35},PlotRange -> All, PlotStyle -> {Red,Thick}]

lox2 =%;

Show[{lox2,sphere1}, Boxed -> False, Axes -> False]

lox5 = %;

Export["lox5.png",lox5]

The spherical curve of constant Möbius curvature k are  treated in the notebook logspir.nb . In the following we in general assume 
h≠0. We reset

dim = 5;

2.3. The Eigensystem of cc[k,h]

2.3.1. The Definitions

eval::usage = "eval[k,h] is the symbolically evaluated function Eigenvalues[cc[k,h]].";

Clear[k,h]; eval[k_,h_] =Eigenvalues[cc[k,h]]

For the definiton of eval the use of "Set" (=) is deciding; using "SetDelayed" (:=) would return a vector function where under nunerical evaluation the order of the conponents would depend on their values:

?Eigenvalues

Click »  and then MORE INFORMATION

A detailed discussion of this situation can be found in my notebook eigsyset.nb .

eval[2,3]

Eigenvalues[cc[2,3]]

eval[k,h][[5]]

Plot3D[Re[eval[k,h][[5]]],{k,-10,10},{h,-10,10}]

Plot3D[Chop[Re[Eigenvalues[cc[k,h]][[5]]]],{k,-10,10},{h,-10,10}]

evec::usage = "evec[k,h] is the symbolically evaluated function Eigenvectors[cc[k,h]].";

evec[k_,h_]= Eigenvectors[cc[k,h]];

We test the eigenvector property;

Table[Simplify[cc[k,h].evec[k,h][[i]] -eval[k,h][[i]]*evec[k,h][[i]]],{i,5}]

k=-Random[];h = Random[];Table[Simplify[cc[k,h].evec[k,h][[i]] -eval[k,h][[i]]*evec[k,h][[i]]],{i,5}]

Chop[%]

Clear[k,h]

OK.
We calculate the scalar products of the eigenvectors:

evprods[k_,h_]:= Simplify[Table[evec[k,h][[i]].io[].evec[k,h][[j]],{i,5},{j,5}]]

evprods[k,h]

Table[Chop[evprods[1.2,5][[i,j]]],{i,5},{j,5}]//MatrixForm

The eigenvectors corresponding to non-zero eigenvalues are isotropic, see [OS3], Corollary 2.2.27.

Table[evprods[k,h][[i,i]],{i,5}]

Table[evprods[1.2,5][[i,i]],{i,5}]

Chop[%]

By Corollary 2.2.30 of [OS3] the root subspace to the eigenvalue 0 is orthogonal to the other root subspaces:

Table[evprods[k,h][[1,i]],{i,5}]

The non-zero eigenvalues appear as pairs with opposite sign, and the corresponding eigenvectors to each pair generate a neutral, two-dimensional subspace, see  Proposition 2.2.30 in [OS3].

eval[k,h][[2]]+eval[k,h][[3]]

eval[k,h][[4]]+eval[k,h][[5]]

evprods[k,h][[2,3]]

FullSimplify[%, h∈Reals&&k∈Reals]

evprods[k,h][[4,5]]

FullSimplify[%, h∈Reals&&k∈Reals]

cc[k,h]//MatrixForm

Hint.  These results are valid in the complex extension of the 5-dimensional vector space V, and one has to consider the consequence for the real space V as usual. We conclude

Proposition. The real matrix cc[k,h] has always the eigenvalue 0.  At least one of the pairs of eigenvalues (a,-a), a≠ 0, must be imaginary.  The non zero eigenvalues have 1-dimensional eigenspaces.

Proof. By Proposition 2.2.30 in [OS3] the dimension of the sum of the root subspaces to the non-zero eigenvalues is even. Therefore a non trivial root subspace of odd dimension must exist, and its eigenvalue must be zero. The non-zero eigenvalues appear in pairs of opposite sign. Since the matrix is real, the non real pairs must be conjugate, too. Thus they are imaginary. Since in a pseudo-Euclidean vector sspace of index 1 exist two-dimensional neutral subspaces only, and in each orthogonal decompostion of such a space  exist at most one such component, at least one pair of the eigenvalues must be imaginary.   (About neutral subspaces see e.g. [0S3], section 2.2.7.) In the case chB[k,h] =0 this is also true, as the next calculation show:

Solve[chB[k,h]==0,{k,h}]

Simplify[eval[-1/(2*h^2),h]]

The last calculations show the last statement, q.e.d
Some special cases:

Simplify[eval[k,0]]

Simplify[eval[0,0]]

Reduce[eval[k,h][[2]]==eval[k,h][[4]],{k,h},Complexes]

It follows that for real k,h such a situation is impossible; we always have eval[k, h][[2]] ≠  eval[k, h][[4]]

Reduce[eval[k,h][[2]]==eval[k,h][[4]],{k,h},Reals]

Reduce[eval[k,h][[2]]==eval[k,h][[5]],{k,h},Reals]

Reduce[eval[k,h][[2]]==eval[k,h][[3]],{k,h},Reals]

Reduce[eval[k,h][[2]]==0,{k,h},Reals]

Reduce[eval[k,h][[4]]==0,{k,h},Reals]

The solution is equvalent to the Euclidean case 3:

Reduce[chB[k,h]==0,{k,h},Reals]

We conclude
Proposition.  If chB[k,h]≠0, all the eigenvalues of cc[k,h] have multiplicity 1 and they are different. The eigennvectors of the non  zero eigenvalues are isotropic and imaginary in the elliptic case chB[k,h] <0; in the hyperbolic case chB[k,h]> 0 two of them are real and two imaginary. In the Euclidean case chB[k,h] = 0  the eigenvalue 0 has multiplicity 3, the other two eigenvalues are conjugate inaginary.

In the next Section 2.4 we discuss the Euclidean case in detail.

2.3.2  A General Test

?RandomReal

Test. We generate two random numbers kk,hh in the intervall [-10,10]  and calculate  eval[kk,hh][[3]], eval[kk,hh][[5]] and the invariant chB[kk,hh] =1 + 2*kk*hh^2. For  negative  chB[kk,hh]  the non-zero eigenvalues are  imaginary.  For positive chB[kk,hh] the eval[[3]]  is imaginary and the  eval[[5]] is real:

Table[Clear[kk,hh];kk = RandomReal[{-10,10}];hh=RandomReal[{-10,10}];Chop[{eval[kk,hh][[3]],eval[kk,hh][[5]],1+2*kk*hh^2}],{10}]//TableForm

In the case chB[k,h]==0  the eigenvalue eval[[5]] equals zero, eval[[3]] is  imaginary:

Table[Clear[kk,hh];hh = RandomReal[{-10,10}];kk = -1/(2*hh^2);Chop[{eval[kk,hh][[3]],eval[kk,hh][[5]],1+2*kk*hh^2},10^(-7)],{30}]//TableForm

Clear[kk,hh]

Remark. sometimes appear numerical errors larger than (10^(-8)); therefre we used Chop with delta = (10^(-7)).

2.3.3. The case k=0

Simplify[eval[k,0]]

Simplify[eval[k,0]]

eval[0,0]

Eigensystem[cc[k,0]]

Eigensystem[cc[0,0]]

JordanDecomposition[cc[0,0]]

%[[2]]//MatrixForm

NullSpace[cc[0,0]]

evec[0,0]

2.4. Case 3, the Euclidean Case chB=0

2.4.1.  The Eigensystem in the  Euclidean Case

The Euclidean case is characterized by

Reduce[chB[k,h]== 0,k, Reals]

chB[-1/(2*h^2), h]==0

The Euclidean case appears under the conditions h≠0, k = -1/(2*h^2) only:

chB[k,0]

JordanDecomposition[cc[-1/(2*h^2),h]]

mm[h_] =%[[1]]

Of course, the similarity transform mm[h] is not, in general,   a Möbius transform. The Jordan normal form is

%%[[2]]//MatrixForm

For the eigenvalues  we obtain using the function eval

Simplify[eval[-1/(2*h^2),h]]

The direct calculation yields

Simplify[Eigenvalues[cc[-1/(2*h^2),h]]]

Plot[I*{-((I (Sqrt[1+(h^4)]))/(Abs[h])),(Sqrt[-((1+(h^4))/(h^2))])}, {h,-3,3}]

Plot[I*{-((I (Sqrt[1+(h^4)]))/h),((I (Sqrt[1+(h^4)]))/h)}, {h,-3,3}]

For the eigenvectors we obtain

Simplify[evec[-1/(2*h^2),h]]//MatrixForm

rank[%]

Strange: Without simplification the rank of the matrix is larger!
Test it:

rank[evec[-1/(2*h^2),h]]

Symbolic calculation of the eigenvectors yields the correct result:

Eigenvectors[cc[-1/(2*h^2),h]]//MatrixForm

rank[%]

For the scalar products of the eigenvectors we obtain the matrix

?evprods

evprods[-1/(2*h^2),h]//MatrixForm

Eigensystem[cc[-1/(2*h^2),h]]

{{0,0,0,-((Sqrt[-1-(h^4)])/h),((Sqrt[-1-(h^4)])/h)},{{(1/(2 (h^2))),0,0,(1/h),1},{0,0,0,0,0},{0,0,0,0,0},{-((1+2 (h^4))/(2 (h^2))),-((Sqrt[-1-(h^4)])/h),h (Sqrt[-1-(h^4)]),-(h^3),1},{-((1+2 (h^4))/(2 (h^2))),((Sqrt[-1-(h^4)])/h),-h (Sqrt[-1-1/(2*h^2)-(h^4)]),-(h^3),1}}}

Eigenvalues[cc[-1/(2*h^2),h]]

Eigenvectors[cc[-1/(2*h^2),h]]//MatrixForm

Simplify[evec[-1/(2*h^2),h]]//MatrixForm

rank[%]

The reason for the false rank result for evec[-1/(2*h^2), h] is that the  specialisation of eval, evec to the values (k,h) = (-1/(2*h^2), h) has another, more complicated shape as the direct evaluation for these arguments; thus we define:

euclideaneval[h_] = Eigenvalues[cc[-1/(2*h^2),h]]

euclideanevec[h_] = Eigenvectors[cc[-1/(2*h^2),h]]

euclideanevec[h]//MatrixForm

2.4.2. The Curves in the Euclidean Case

FullSimplify[eucurvecc[-1/(2*h^2),h][t]]

eucurvecc0[h_][t_] := eucurvecc[-1/(2*h^2),h][t]

ParametricPlot3D[eucurvecc0[.5][t], {t,-30,30},PlotRange -> All]

The curve seems to tend to the same limit point for t-> ±Infinity:

Limit[eucurvecc0[.5][t],t-> Infinity]

Limit[eucurvecc0[.5][t],t-> -Infinity]

We use the limit point {0, 0, 0.707107} as the center of a spherical reflection

?sphericalreflection

and obtain as  a conformally equivalent curve a helix :

ParametricPlot3D[sphericalreflection[eucurvecc0[.5][t],{0,0,0.707107},2] ,{t,-30,30},PlotRange -> All]

The eigenvector of cc[-1/(2*h^2), h] to the eigenvalue 0 represents a fixed point of the corresponding 1-parameter  transformation group:

euv[h_] =evec[-1/(2*h^2),h][[1]]

The corresponding Euclidean point is

euclidpt[euv[h]]

euclidpt[euv[.5]]

A spherical reflection with this point as center maps it to Infinity, i.e. the North pole of our model of the Möbius space, and the curve into a helix, as expected, compare the Theorem in Section 2.2.

euccc[h_][t_] := sphericalreflection[eucurvecc0[h][t], euclidpt[euv[h]],1]

hh = .2;ParametricPlot3D[euccc[hh][t], {t,-10,10}]

The sign of h defines whether the curve turns left or right:

hh = .2;ParametricPlot3D[euccc[-hh][t], {t,-10,10}]

Test the curves for distinct values off hh!

Clear[hh]

euccc[h][t]

FullSimplify[%,{h>0,t>0}]

cfhelix[h_][t_] = %

To prove that our curves are helices we calculate their Euclidean curvature and torsion; both are constant:

?curvature

?torsion

curvature[cfhelix[h]][t]

FullSimplify[%,{h>0,t>0}]

FullSimplify[torsion[cfhelix[h]][t], {h>0,t>0}]

2.5. Case 2, the Hyperbolic Case chB>0

2.5.1. The Hyperbolic  Space

We consider the pseudo-Euclidean model of the n-dimensional hyperbolic space: the positive half of the hyper-hyperboloid in the (n+1)-dimensional pseudo-Euclidean vector space of index 1 orthogonal to stb[dim], defined by

pssp[u,stb[dim]]= 0,pssp[u,u] = - r^2, pssp[stb[1],u] < 0.

In pseudo-orthogonal coordinates the embedding into the Möbius space as a half-hypersphere is defined by the representing isotropic vector

confhyp::usage = "confhyp[u_List] maps the n-dimensional hyperbolic hypersphere pssp[u,u] = -r^2 of the (n+1)-dimensional pseudo-Euclidean vector space of index 1 into the (n+1)-dimensional isotropic cone of the (n+2)-dimensional pseudo-Euclidean vector space (in pseudo-orthonormal coordinates). Warning: pssp[u,u] < 0 must be fulfilled by the argument u!";

confhyp[u_List] := Module[{nn = Length[u], rr,i},
If[nn<2,Print["Argument false!"];Return[]];
rr =-u[[1]]^2 + Sum[u[[i]]^2,{i,2,nn}];
If[rr≥ 0, Print[u, "is not timelike!"]; Return[]];
Simplify[Append[u, Sqrt[-rr]]]]

confhyp[{t,u,v,w}]

Assuming[(t^2)-(u^2)-(v^2)-(w^2)== 1,Simplify[pssp[%,%]]]

Here is a parameter representation of the positive sheet of the hyper-hyperbolid in the Lorentz space:

pthyp3D[u_, v_, w_, r_: 1] := {Cosh[w], Cos[u]*Cos[v]*Sinh[w], 
    Cos[u]*Sin[v]*Sinh[w], Sin[u]*Sinh[w]}*r

pthyp3D::usage ="pthyp3D[u,v,w,r:1] is a parameter representation  of the positive sheet of the hyper-hyperboloid pssp[x,x] = -1/r^2 in the Lorentz space (in pseudo-orthonormal coordinates); u,v,w are polar coordinates.";

pthyp3D[u,v,w]

Simplify[pssp[%,%,4,1]]

confhyp[pthyp3D[u,v,w,r]]

Simplify[pssp[%,%]]

pthyp3D[u,0,w]

ParametricPlot3D[{Cosh[w], Cos[u]*Sinh[w], Sin[u]*Sinh[w]}, 
  {w, 0, 3}, {u, 0, 2*Pi}]

confhyp[pthyp3D[u,v,w,r]]

Simplify[pssp[%,%]]

To obtain the representatives directly we set

hyp3D[u_, v_, w_, r_:1] := {r*Cosh[w], r*Cos[u]*Cos[v]*Sinh[w], 
   r*Cos[u]*Sin[v]*Sinh[w],r*Sin[u]*Sinh[w], Sqrt[r^2]}

Simplify[hyp3D[u,v,w,r] == confhyp[pthyp3D[u,v,w,r]]]

??sphmap

sphhyp3D:: usage = "sphhyp3D[u,v,w] is the point of the lower half of the unit 3-sphere corresponding to the point of the imaginary unit hypersphere in the Minkowski space with polar coordinates u,v,w.";

sphhyp3D[u_,v_,w_] :=-sphmap[hyp3D[u,v,w]]

sphhyp3D[u,v,w]

Simplify[%.%]

sphhyp3D[u,0,w]

ParametricPlot3D[{-Cos[u] Tanh[w],-Sin[u] Tanh[w],-Sech[-w]},{u,0,2*Pi},{w,0,3}]

F.Klein's Conformal Ball Model

We show that the map of the positive sheet of the hyper-hyperboloid to the lower half of the 3- sphere defined by common parameters (u,v,w) is conformal: 

Lemma. Let (ds^2)  be the positive definite Riemannian metric induced by the first fundamental form on the hyper-hyperboloid by the pseudo Euclidean metric of the Lorentz space,  and (dS^2) the first fundamental form of the unit hypersphere in the 4-dimensional Euclidean space, Then the map

f[pthyp3D[u,v,w]] :=sphhyp3D[u,v,w]

is conformal, what means more exactly

(SuperStar[f])(dS^2)(va,vb) := (dS^2)(df(va),df(vb)) = (ds^2)(va,vb)/(Cosh[w])^2

is valid for any pair of tangential vectors va,vb in the  tangential space of  an arbitrary point (u,v,w) of the parameter manifold.

Proof.

cv1 = D[sphhyp3D[u,v,w],u]

cv2 = D[sphhyp3D[u,v,w],v]

cv3 = D[sphhyp3D[u,v,w],w]

Simplify[cv1.cv1]

Simplify[cv1.cv2]

Simplify[cv1.cv3]

Simplify[cv2.cv2]

Simplify[cv2.cv3]

Simplify[cv3.cv3]

cw1 = D[pthyp3D[u,v,w],u]

cw2 = D[pthyp3D[u,v,w],v]

cw3 = D[pthyp3D[u,v,w],w]

dim = 4

Simplify[pssp[cw1,cw1]]

Simplify[pssp[cw1,cw2]]

Simplify[pssp[cw1,cw3]]

Simplify[pssp[cw2,cw2]]

Simplify[pssp[cw2,cw3]]

Simplify[pssp[cw3,cw3]]

Comparing the scalar products an using the linearity of the scalar products we obtain the statement. The  half hypersphere is named the spherical model of the hyperbolic space. Projecing the half-hypersphere stereographically from the North pole to the equatorial hyperplane, weobtain the open unit ball in this Euclidean 3-space as image. Since the stereographic projection is conformal also the composition F = sterproj∘f is a conformal map giving  F.Klein's  ball model of the hyperbolic space.

Simplify[sterproj[sphhyp3D[u,v,w]]]

The image of  sphhyp3D is the the lower half of the 3-sphere, and by stereographic projection we obtain the 3-dimensional open ball of radius 1 as an conformal model of the hyperbolic space, see [OS3] in particular example 2.6.6.

Table[ParametricPlot3D[sterproj[sphhyp3D[u,v,w]],{u,0,2*Pi},{v,0,Pi/2}],{w,.1,2,.1}]

Show[%, PlotRange -> All]

Limit[sterproj[sphhyp3D[u,v,w]], w-> -Infinity]

Simplify[%.%]

This is a part of the image; for w -> Infinity the image points tends to the bording unut sphere.

2.5.2. The Hyperbolic Plane

dim = 4

A parameter representation of the hyperbolic plane is obtained analogously to pthyp3D by

pthyp3D[u,0,v,r]

pthyp2D[u_,v_,r_:1]:= {r Cosh[v],r Cos[u] Sinh[v],r Sin[u] Sinh[v]}

pthyp2D::usage ="pthyp3D[u,v,r:1] is a parameter representation of the positive sheet of a hyperboloid in pseudo-orthonormal coordinates); u,v are polar coordinates.";

pthyp2D[u,v]

Simplify[pssp[%,%,3,1]]

ParametricPlot3D[pthyp2D[u,v],{u,0,2*Pi},{v,0,3}]

confhyp[pthyp2D[u,v,r]]

Simplify[pssp[%,%]]

hyp2D[u_,v_,r_:1] := r*{Cosh[v], Sinh[v]Cos[u],Sinh[v]*Sin[u],1}

hyp2D::usage ="hyp2D[u,v,r] is a parameter representation of representatives of the points of the hyperbolic plane of curvature -1/r^2 in the Möbius sphere (in pseudo-orthonormal coordinates); u,v are polar coordinates.";

hyp2D[u,v,r]

Simplify[pssp[%,%]]

Simplify[hyp2D[u,v,r]== confhyp[pthyp2D[u,v,r]], r>0]

sphhyp2D[t_,u_] :=-sphmap[hyp2D[t,u,1]]

sphhyp2D::usage = "sphhyp2D[u,v] is the point of the lower half of the unit sphere corresponding to the point of the imaginary unit sphere with polar coordinates u,v in the 3-dimensional Minkowski space.";

sphhyp2D[t,u]

Simplify[%.%]

The image is the Möbius model of the hyperbolic plane:

ParametricPlot3D[sphhyp2D[t,u],{t,0,10},{u,0,2*Pi},PlotRange -> All, PlotStyle -> Opacity[.2]]

hs1 = %;

2.5.3. The Hyperbolic Curves of Constant Curvature

dim

Since now chB >0, a spacelike unit vector, say stb[5], is invariant, and the 1-parametric subgroup lays in the isometry group of the hyperbolic space, modelled in the 4-dimensional pseudo-Euclidean space of index 1 by the upper half od the hyperbola H+.  The orthogonal complement of stb[5] is invariant under cc[k,h]; it decomposes orthogonally in two orthogonal 2-subspaces in which thr operator with respect to pseudo-orthogonal coordinates has the standard form

cchyp[a_,b_] :={{0,a,0,0},{a,0,0,0},{0,0,0,b},{0,0,-b,0}}

cchyp[a,b]//MatrixForm

cchyp::usage = "cchyp[a,b] is the normal form of an infinitesimal Lorentz transformation in the 4-dimensional Minkowski space depending on the parameters a,b.";

The corresponding subgroup is given by

grhyp[a_,b_,t_] := {{Cosh[a t],Sinh[a t],0,0},{Sinh[a t],Cosh[a t],0,0},{0,0,Cos[b t],Sin[b t]},{0,0,-Sin[b t],Cos[b t]}}

grhyp::usage = "grhyp[a,b,t] is the 4x4-matrix of a one-parametric subgroup of the pseudo-orthogonal group O[1,3], the Lorentz group of special relativity, depending on the parameters a,b.";

MatrixForm[grhyp[a, b, t]]

Indeed, we have

(D[grhyp[a,b,t],t]/.t->0)//MatrixForm

Proposition. Any curve of constant Möbius curvatures k,h  with

chB[k,h] > 0

is a curve of constant Riemannian curvatures  in the hyperbolic space. Thus we obtain in the hyperbolic case all curves of constant Möbius curvatures as orbits of a 1-parametric  group grhyp[a,b,t] on the 3-sphere.

?confhyp

curvecchyp[a_,b_,u_,v_,w_][t_]:= -sphmap[confhyp[grhyp[a,b,t].pthyp3D[u,v,w]]]

Simplify[curvecchyp[a,b,u,v,w][t]]

Finally we visualize the curve applying stereographic projection

hyperboliccc[a_,b_,u_,v_,w_][t_] := sterproj[curvecchyp[a,b,u,v,w][t]]

hyperboliccc::usage = "hyperboliccc[a,b,u,v,w][t] is the stereographic projection of the orbit of the point with parameters u,v,w of the 3-dimensional hyperbolic space under the action of the 1-parametric group grhyp[a,b,t].";

The point with coordinates u,v,w in F. Klein's model of the hyperbolic space  as the half unit hypersphere in the 4-dimensional Euclidean space is

sphmap[confhyp[pthyp3D[u,v,w]]]

Under stereographic projection we obtain a point in the open ball

Simplify[hyperboliccc[a,b,u,v,w][0]]

The image of the curve of constant curvatures has the parameter representation

Simplify[hyperboliccc[a,b,u,v,w][t]]

WARNING!  For some parameters a, b,...  and larger values of t one has too large deviation of the scalar products, and one gets error messages only!

grhyp[1,1,t].pthyp3D[1.,0,.5]

aaa[t_]=pssp[%,%,4,1]

Simplify[%]

Plot[Chop[aaa[t]+1], {t,-15,15}]

ParametricPlot3D[hyperboliccc[1,1,1.,0,0.5][t],{t,-7,7},PlotRange -> All,PlotStyle -> {Red,Thick}]

cchyp1=%;

Graphics3D[{Opacity[.2],Sphere[]},Boxed-> False]

sph1= %;

Show[{sph1,cchyp1}]

Limit[hyperboliccc[1,1,1.,0,0.5][t], t-> Infinity]

Limit[hyperboliccc[1,1,1.,0,0.5][t], t-> -Infinity]

The curve tends to the Infinity of the hyperbolic space.

ParametricPlot3D[hyperboliccc[.1,1,1.,.3,0.5][t],{t,-50,50},PlotRange -> All,PlotStyle -> {Red,Thick}]

cchyp2 = %;

Show[{sph1,cchyp2}]

Limit[hyperboliccc[.1,1,1.,.3,0.5][t], t-> Infinity]

Limit[hyperboliccc[.1,1,1.,.3,0.5][t], t-> -Infinity]

Also this curve tends to the Infinity of the hyperbolic space.

2.5.4. The Limit Points

It seems, that any stereographic image of a curve of constant hyperbolic curvature  runs from the border point {-1,0,0} to the border point {1,0,0}, or vice versa.  Remember that the image of the hyperbolic space is the open ball of radius 1. We test generally

Table[(aa=Random[];bb = Random[];uu=Random[];vv = Random[];ww=Random[];{{aa,bb,uu,vv,ww},Limit[Chop[hyperboliccc[aa,bb,uu,vv,ww][t]], t-> Infinity]}),{30}]

Clear[aa,bb,uu,vv,ww,aaa]

This test, and the analogous with t-> -Infinity, shows tha all these curves run from the border point {1,0,0} to the border point {-1,0,0}.

Simplify[Limit[hyperboliccc[a,b,u,v,w][t], t -> Infinity]]

Clearly, here the limit of the first component is  -1, and the two other components tend to zero..

Limit[hyperboliccc[a,b,u,v,w][t], t -> -Infinity]

Clearly, here the limit of the first component is 1, and the two other components tend to zero..

It follows:

Lemma.  Any curve of constant curvature  of our representative family (in the Riemannian or Möbius geometry)

sphmap[hyperboliccc[a,b,u,v,w][t]]

runs from the border point {1,0,0} to the border point {-1,0,0}, or vice versa in the conformal model of the Möbius space.

The reason is the eigensystem of the transformation

Eigenvectors[grhyp[a,b,t]]

Limit[%, t->Infinity]

FullSimplify[%, {a>0}]

Obviously, the limits of the last two rows of this matrix are 
{-1, 1, 0, 0}, {1, 1, 0, 0}. and we have

sphmap[{1,1,0,0}]

sphmap[{-1,1,0,0}]

grhyp[a,b,t].{1,1,0,0}

%=={Exp[a*t],Exp[a*t],0,0}

Simplify[%, a>0]

grhyp[a,b,t].{-1,1,0,0}

%=={-Exp[a*-t],Exp[a*-t],0,0}

Simplify[%, a>0]

sphmap[{-Exp[a*-t],Exp[a*-t],0,0}]

These points are fixed points for  all the 1-parametric transformation groups grhyp[a,b,t].  Any finite limit point of a 1-parametric transformation group must be a fixed point.

2.5.5. The Frenet Frame of the Second Order

dim= 5;

The 5-dimensional isotropic representative of the pseudo-spherical orbit grhyp[a, b, t].pthyp3D[u, v, w] is

pscurvecchyp[a_,b_,u_,v_,w_][t_] :=confhyp[grhyp[a,b,t].pthyp3D[u,v,w]]

Simplify[pscurvecchyp[a,b,u,v,w][t]]

Simplify[pssp[%,%]]

For simplicity we assume u = 0, v= Pi/2, a = 1;we shall show that therewith we obtain a representative family of the curves of constant Möbius curvatures of hyperbolic  type.

We will calculate the Möbius curvatures of this curve. Tothis aim we follow E. Cartan*s reduction procedure as described in [MDG], Section 3.1. First we transform to isotropic-orthogonal coordinates and obtain by

cy[b_,w_][t_] :=transio[].pscurvecchyp[1,b,0,Pi/2,w][t]

an isotropic  representative of the curve of constant Möbius curvatures.

cy[b,w][t]

FullSimplify[%.io[].%]

The corresponding curve in the stereographic projection of the Möbius space is

hypccc[b_,w_][t_] := hyperboliccc[1,b,0,Pi/2,w][t]

To construct a normed representative we consider

cy1[b_, w_][t_] =D[cy[b,w][t],t]

FullSimplify[%.io[].%]

fn[b_, w_] = (1/2)*(1 - b^2 + (1 + b^2)*Cosh[2*w])

Plot3D[fn[b,w], {b,0,3}, {w,0,1},PlotRange -> All]

Here is a normed representative

fy[0][b_,w_,t_] =Simplify[cy[b,w][t]/Sqrt[fn[b,w]]]

FullSimplify[%.io[].%]

fy[1][b_,w_,t_] = FullSimplify[ D[fy[0][b,w,t],t]]

{((Cosh[w] Sinh[t])/(Sqrt[1-(b^2)+(1+(b^2)) Cosh[2 w]])),(((Sqrt[2]) Cosh[t] Cosh[w])/(Sqrt[1-(b^2)+(1+(b^2)) Cosh[2 w]])),hypccc[b_,w_][t_] := hyperboliccc[1,b,0,Pi/2,w][t]-(((Sqrt[2]) b Sin[b t] Sinh[w])/(Sqrt[1-(b^2)+(1+(b^2)) Cosh[2 w]])),-(((Sqrt[2]) b Cos[b t] Sinh[w])/(Sqrt[1-(b^2)+(1+(b^2)) Cosh[2 w]])),((Cosh[w] Sinh[t])/(Sqrt[1-(b^2)+(1+(b^2)) Cosh[2 w]]))}

FullSimplify[%.io[].%]

Thus the representative is normed. We need its second derivative

fy2[b_,w_,t_] = FullSimplify[D[fy[0][b,w,t],{t,2}],{b>0,w≠ 0,t>0}]

ff2[b_,w_,t_] =FullSimplify[fy2[b,w,t].io[].fy2[b,w,t]]

ff2[b_,w_] =ff2[b,w,1]

Plot3D[ff2[b,w],{b,-2,2},{w,-3,3},PlotRange -> All]

ff2[b,0]

Simplify[%]

fy[4][b_,w_,t_] =FullSimplify[fy2[b,w,t]+fy[0][b,w,t]*ff2[b,w]/2]

FullSimplify[fy[0][b,w,t].io[].fy[0][b,w,t],{b>0,w>0,t>0}]

FullSimplify[fy[0][b,w,t].io[].fy[1][b,w,t],{b>0,w>0,t>0}]

FullSimplify[fy[0][b,w,t].io[].fy[4][b,w,t],{b≠ 0,w≠ 0,t>0}]

FullSimplify[fy[1][b,w,t].io[].fy[1][b,w,t],{b>0,w>0,t>0}]

FullSimplify[fy[1][b,w,t].io[].fy[4][b,w,t],{b>0,w>0,t>0}]

FullSimplify[fy[4][b,w,t].io[].fy[4][b,w,t],{b>0,w>0,t>0}]

fy[i][b,w,t], i=0,1,4, are the vectors defined by (16) see  Lemma 7 of [MDG].  

  Now we shall find the natural conformal parameter of our curve; it should be a constant multiple of t. We apply (23),(24) of [MDG].

fy3[b_,w_,t_] = FullSimplify[D[fy[0][b,w,t],{t,3}]]

ff3[b_,w_,t_] =FullSimplify[fy3[b,w,t].io[].fy3[b,w,t]]

Clear[ff3]; ff3[b_, w_] = (1 - b^6 + (1 + b^6)*Cosh[2*w])/
    (1 - b^2 + (1 + b^2)*Cosh[2*w])

FullSimplify[ff3[b,w]-ff2[b,w]^2]

lambda[b_, w_] = FullSimplify[(ff3[b,w]-(ff2[b,w])^2)^(-1/4)]

This is a special case of (23).  lambda being constant we obtain by (24) for the natural conformal parameter

Plot3D[lambda[b,w], {b,-2,2},{w,-3,3},PlotPoints -> 100]

The values b =0 and w=0 play a special role:

lambda[b,0]

lambda[0,w]

In these cases the curves lie in a 2-sphere, they are not generally curved. For w=0 one obtaines a line  through the origin, not depending on b:

hypccc[b,0][t]

ParametricPlot3D[hypccc[1,0][t], {t,-2,2}]

In the case b=0 we obtain a plane curve

hypccc[0,2][t]/. t-> 2.

ParametricPlot3D[hypccc[0,2][t],{t,-2,2}, PlotStyle -> {Red,Thick}, PlotRange -> All]

Show[{%,Graphics3D[{Opacity[.3],Sphere[{0,0,0}]}]}]

hypccc[0,2][t]

ctest[t_] := Take[hypccc[0,2][t],2]

ctest[t]

curvature[ctest][t]

FullSimplify[%]

The curvature is constant, and the curve is  a part of  a circle. Also for b=0, w arbirary,  we obtain:

FullSimplify[curvature[hypccc[0,w]][t], w>0]

FullSimplify[torsion[hypccc[0,w]][t], w>0]

In the general case the Eucliden curvature of the image of the curve depends on t:

FullSimplify[curvature[hypccc[b,w]][t], {b>0,w>0}]

FullSimplify[D[%,t], {b>0,w>0}]

2.5.6.  Frame of the Third Order

Thus in the following we assume b≠0 and w≠0. In the next step we define the Frenet frame of the third order.  Following Proposition 3.1.8 of [MDG], we find for fy[2] :

FullSimplify[(fy[0][b,w,t]*(fy3[b,w,t].io[].fy2[b,w,t])+fy[1][b,w,t]*ff2[b,w]+fy3[b,w,t])*lambda[b,w]^2]

fy[2][b_, w_, t_] := {(Abs[b]*Sinh[t]*Sinh[w]*Sinh[2*w])/
    (Abs[Sinh[2*w]]*Sqrt[1 - b^2 + (1 + b^2)*Cosh[2*w]]), 
   2*Sqrt[2]*Abs[b]*Cosh[t]*Cosh[w]*
    Sqrt[Csch[2*w]^2/(1 - b^2 + (1 + b^2)*Cosh[2*w])]*Sinh[w]^2, 
   2*Sqrt[2]*Cosh[w]^2*Sqrt[Csch[2*w]^2/
      (1 - b^2 + (1 + b^2)*Cosh[2*w])]*Sign[b]*Sin[b*t]*Sinh[w], 
   2*Sqrt[2]*Cos[b*t]*Cosh[w]^2*
    Sqrt[Csch[2*w]^2/(1 - b^2 + (1 + b^2)*Cosh[2*w])]*Sign[b]*
    Sinh[w], (Abs[b]*Sinh[t]*Sinh[w]*Sinh[2*w])/
    (Abs[Sinh[2*w]]*Sqrt[1 - b^2 + (1 + b^2)*Cosh[2*w]])}

Test:

fy[2][b,w,t]

FullSimplify[%.io[].%]

OK. 
The last unknown vector fy[3] of this frame is defined by

-FullSimplify[transio[].psCross[transoi[].fy[0][b,w,t],transoi[].fy[1][b,w,t],transoi[].fy[2][b,w,t],transoi[].fy[4][b,w,t]],{b ≠0,w ≠0}]

fy[3][b_, w_, t_] := 
  {(2*Sqrt[2]*Cosh[w]*(Cosh[w] + b^2*(-Cosh[t] + Cosh[w]))*
     Sign[b]*Sinh[w]^2)/(Abs[Sinh[2*w]]*
     (1 - b^2 + (1 + b^2)*Cosh[2*w])), 
   -((2*b*Abs[b]*Abs[Csch[w]]*Sinh[t]*Sinh[w]^2)/
     (1 - b^2 + (1 + b^2)*Cosh[2*w])), 
   (4*Cos[b*t]*Cosh[w]^2*Sign[b]*Sinh[w])/
    (Abs[Sinh[2*w]]*(1 - b^2 + (1 + b^2)*Cosh[2*w])), 
   -((4*Cosh[w]^2*Sign[b]*Sin[b*t]*Sinh[w])/
     (Abs[Sinh[2*w]]*(1 - b^2 + (1 + b^2)*Cosh[2*w]))), 
   -((2*Sqrt[2]*Cosh[w]*(Cosh[w] + b^2*(Cosh[t] + Cosh[w]))*
      Sign[b]*Sinh[w]^2)/(Abs[Sinh[2*w]]*
      (1 - b^2 + (1 + b^2)*Cosh[2*w])))}

To control the definitions we test the scalar products of the frame vectors:

FullSimplify[fy[0][b,w,t].io[].fy[0][b,w,t],{ b∈ Reals, w∈ Reals, t∈ Reals}]

FullSimplify[fy[0][b,w,t].io[].fy[1][b,w,t],{ b∈ Reals, w∈ Reals, t∈ Reals}]

FullSimplify[fy[0][b,w,t].io[].fy[2][b,w,t],{ b∈ Reals, w∈ Reals, t∈ Reals}]

and this is zero, since

FullSimplify[(-Abs[Sinh[2 w]] Sign[w]+Sinh[2 w])==0,w∈ Reals]

Only Mathematica does not recognize it, in spite of.

FullSimplify[(-Abs[Sinh[2 w]] Sign[w]+Sinh[2 w])==0,w>0]

FullSimplify[(-Abs[Sinh[2 w]] Sign[w]+Sinh[2 w])==0,w<0]

FullSimplify[(-Abs[Sinh[2 w]] Sign[w]+Sinh[2 w])==0,w==0]

FullSimplify[fy[0][b,w,t].io[].fy[2][b,w,t],{ b∈ Reals, w>0, t∈ Reals}]

FullSimplify[fy[0][b,w,t].io[].fy[3][b,w,t],{ b∈ Reals, w∈ Reals, t∈ Reals}]

FullSimplify[fy[0][b,w,t].io[].fy[4][b,w,t],{ b∈ Reals, w∈ Reals, t∈ Reals}]

FullSimplify[fy[1][b,w,t].io[].fy[1][b,w,t],{ b∈ Reals, w∈ Reals, t∈ Reals}]

As before, obviously

FullSimplify[(-Abs[b]+b Sign[b+(b^3)])]

FullSimplify[fy[1][b,w,t].io[].fy[2][b,w,t],{ b∈ Reals, w>0, t∈ Reals}]

FullSimplify[fy[1][b,w,t].io[].fy[3][b,w,t],{ b≠ 0 , w≠ 0, t∈ Reals}]

This is zero, only Mathematica does not simplify the corresponding factor:

FullSimplify[(-Abs[Csch[w]] Abs[Sinh[2 w]]+2 Cosh[w]), { w≠ 0, w∈ Reals}]

FullSimplify[(-Abs[Csch[w]] Abs[Sinh[2 w]]+2 Cosh[w])== 0,{ w≠ 0, w∈ Reals}]

Thus as expected the scalar product equals zero.

FullSimplify[fy[1][b,w,t].io[].fy[3][b,w,t],{ b≠ 0 , w> 0, t∈ Reals}]

FullSimplify[fy[1][b,w,t].io[].fy[4][b,w,t],{ b∈ Reals, w∈ Reals, t∈ Reals}]

FullSimplify[fy[2][b,w,t].io[].fy[2][b,w,t],{ b∈ Reals, w>0, t∈ Reals}]

FullSimplify[fy[2][b,w,t].io[].fy[3][b,w,t],{ b∈ Reals, w∈ Reals,w ≠ 0,b≠ 0, t∈ Reals}]

FullSimplify[(Csch[w]-Abs[Csch[w]] Abs[Csch[2 w]] Sinh[2 w])== 0,{  w∈ Reals,w ≠ 0}]

FullSimplify[(Csch[w]-Abs[Csch[w]] Abs[Csch[2 w]] Sinh[2 w])== 0,{  w∈ Reals,w > 0}]

FullSimplify[(Csch[w]-Abs[Csch[w]] Abs[Csch[2 w]] Sinh[2 w])== 0,{  w∈ Reals,w < 0}]

Also in ths case we get the correct result zero.

FullSimplify[fy[2][b,w,t].io[].fy[3][b,w,t],{ b∈ Reals, w∈ Reals,w > 0,b≠ 0, t∈ Reals}]

FullSimplify[fy[2][b,w,t].io[].fy[4][b,w,t],{ b∈ Reals, w∈ Reals,w ≠ 0,b≠ 0, t∈ Reals}]

FullSimplify[fy[2][b,w,t].io[].fy[4][b,w,t],{ b∈ Reals, w>0,b≠ 0, t∈ Reals}]

FullSimplify[fy[3][b,w,t].io[].fy[3][b,w,t],{ b∈ Reals, w∈ Reals,w ≠ 0,b≠ 0, t∈ Reals}]

FullSimplify[fy[3][b,w,t].io[].fy[4][b,w,t],{ b∈ Reals, w∈ Reals,w ≠ 0,b≠ 0, t∈ Reals}]

Again, since

FullSimplify[(-Abs[Csch[w]] Abs[Sinh[2 w]]+2 Cosh[w])== 0,{ w≠ 0, w∈ Reals}]

we get the correct result zero.

FullSimplify[fy[3][b,w,t].io[].fy[4][b,w,t],{ b∈ Reals, w∈ Reals,w > 0,b≠ 0, t∈ Reals}]

FullSimplify[fy[4][b,w,t].io[].fy[4][b,w,t],{ b∈ Reals, w∈ Reals,w ≠ 0,b≠ 0, t∈ Reals}]

Det[Table[fy[i][b,w,t],{i,0,4}]];

ft =FullSimplify[%, {b≠ 0,w ≠ 0}]

BB=-2* Random[]; Plot3D[ft/. b->BB,{w,-1,1},{t,0,3}]

Clear[BB,ft]

We conclude

Lemma. fy[i][b,w,t], i = 0,1,2,3,4,  is  a special positively oriented moving frame of second order for the curve of constant curvature hypccc[b,w,][t] in the  hyperbolic space, represented in Möbius geometry by fy[0][b,w,t], t the normal parameter defined above.

fy[2][b,w,s*lambda[b,w]]

Simplify[fy[2][b,w,s*lambda[b,w]],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w >0}]

fr3[2][b_, w_, s_] = 
 Sign[w]* {(Abs[b]*Sinh[w]*Sinh[s/(((b + b^3)^2*Sinh[2*w]^2)/
         (1 - b^2 + (1 + b^2)*Cosh[2*w])^2)^(1/4)])/
    Sqrt[1 - b^2 + (1 + b^2)*Cosh[2*w]], 
   (Sqrt[2]*Abs[b]*Cosh[s/(((b + b^3)^2*Sinh[2*w]^2)/
         (1 - b^2 + (1 + b^2)*Cosh[2*w])^2)^(1/4)]*Sinh[w])/
    Sqrt[1 - b^2 + (1 + b^2)*Cosh[2*w]], 
   (Sqrt[2]*Cosh[w]*Sign[b]*
     Sin[(b*s)/(((b + b^3)^2*Sinh[2*w]^2)/
         (1 - b^2 + (1 + b^2)*Cosh[2*w])^2)^(1/4)])/
    Sqrt[1 - b^2 + (1 + b^2)*Cosh[2*w]], 
   (Sqrt[2]*Cos[(b*s)/(((b + b^3)^2*Sinh[2*w]^2)/
         (1 - b^2 + (1 + b^2)*Cosh[2*w])^2)^(1/4)]*Cosh[w]*
     Sign[b])/Sqrt[1 - b^2 + (1 + b^2)*Cosh[2*w]], 
   (Abs[b]*Sinh[w]*Sinh[s/(((b + b^3)^2*Sinh[2*w]^2)/
         (1 - b^2 + (1 + b^2)*Cosh[2*w])^2)^(1/4)])/
    Sqrt[1 - b^2 + (1 + b^2)*Cosh[2*w]]}

FullSimplify[fr3[2][b,w,s].io[].fr3[2][b,w,s],{ b∈ Reals, w∈ Reals, t∈ Reals,b ≠0,w ≠0}]

lambda[b,w]

fr3[1][b_,w_,s_]:= fy[1][b,w,s*lambda[b,w]]

fr3[3][b_,w_,s_]:= fy[3][b,w,s*lambda[b,w]]

fr3[0][b_,w_,s_]:=fy[0][b,w,s*lambda[b,w]]/lambda[b,w]

fr3[4][b_,w_,s_]:= fy[4][b,w,s*lambda[b,w]]*lambda[b,w]

FullSimplify[fr3[0][b,w,s].io[].fr3[0][b,w,s],{ b∈ Reals, w∈ Reals, t∈ Reals,b ≠0,w ≠0}]

FullSimplify[fr3[1][b,w,s].io[].fr3[0][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[2][b,w,s].io[].fr3[0][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[3][b,w,s].io[].fr3[0][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[3][b,w,s].io[].fr3[0][b,w,s],{b!= 0,w> 0}]

FullSimplify[fr3[3][b,w,s].io[].fr3[0][b,w,s],{b!= 0,w< 0}]

FullSimplify[fr3[0][b,w,s].io[].fr3[4][b,w,s],{b!= 0,w≠ 0}]

FullSimplify[fr3[1][b,w,s].io[].fr3[1][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[1][b,w,s].io[].fr3[2][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[1][b,w,s].io[].fr3[3][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[1][b,w,s].io[].fr3[3][b,w,s],{b!= 0,w> 0}]

FullSimplify[fr3[1][b,w,s].io[].fr3[3][b,w,s],{b!= 0,w< 0}]

FullSimplify[fr3[1][b,w,s].io[].fr3[4][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[2][b,w,s].io[].fr3[2][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[2][b,w,s].io[].fr3[3][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[2][b,w,s].io[].fr3[3][b,w,s],{b!= 0,w> 0}]

FullSimplify[fr3[2][b,w,s].io[].fr3[3][b,w,s],{b!= 0,w< 0}]

FullSimplify[fr3[2][b,w,s].io[].fr3[4][b,w,s],{b!= 0,w!= 0}]

FullSimplify[fr3[3][b,w,s].io[].fr3[3][b,w,s],{ b∈ Reals, w∈ Reals, b ≠0,w ≠0}]

FullSimplify[fr3[3][b,w,s].io[].fr3[4][b,w,s],{ b∈ Reals, w∈ Reals,b ≠0,w ≠0}]

Again aborted after a longer time.

FullSimplify[fr3[3][b,w,s].io[].fr3[4][b,w,s],{ b∈ Reals, w∈ Reals, b ≠0,w >0}]

FullSimplify[fr3[3][b,w,s].io[].fr3[4][b,w,s],{ b∈ Reals, w∈ Reals, b ≠0,w <0}]

FullSimplify[fr3[4][b,w,s].io[].fr3[4][b,w,s],{ b∈ Reals, w∈ Reals, b ≠0,w ≠0}]

The scalar products of the  defined vectors of the Frenet frame are ok. Now we are going to calculate the derivation equations.

mtest =Table[fr3[i][b,w,s],{i,0,4}];

FullSimplify[Det[%]]

FullSimplify[Det[mtest],{b≠ 0, w≠ 0 }]

Obviously, this equals 1 for all w≠=0.

2.5.7. The Derivation Equations and the Curvatures

In this subsection we show that the frame fr3 satisfies the Frenet formulas, see [MDG], Example  3.1.3.  Furthermore we obtain explicit formulas for the Möbius curvatures.

FullSimplify[D[fr3[0][b,w,s],s]-fr3[1][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

The first Frenet formula is satisfied; since (Subscript[ω, 0]^0) = 0, the constructed frame of third order is the canonical frame.

FullSimplify[D[fr3[1][b,w,s],s].io[].fr3[0][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

FullSimplify[D[fr3[1][b,w,s],s].io[].fr3[4][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

It follows for the first Möbius curvature:

mk1[b_, w_] := (1 + b^4 - (-1 + b^4)*Cosh[2*w])/
   (2*Abs[(b + b^3)*Sinh[2*w]])

FullSimplify[D[fr3[1][b,w,s],s].io[].fr3[1][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

FullSimplify[D[fr3[1][b,w,s],s].io[].fr3[2][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

FullSimplify[D[fr3[1][b,w,s],s].io[].fr3[3][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

Aborted since no result after waiting some time. 
Interesting that the following proofs give the correct result:

FullSimplify[D[fr3[1][b,w,s],s].io[].fr3[3][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w >0}]

FullSimplify[D[fr3[1][b,w,s],s].io[].fr3[3][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w <0}]

Thus the second Frenet formula is satisfied. We calculate the second curvature:

FullSimplify[D[fr3[2][b,w,s],s].io[].fr3[3][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w >0}]

FullSimplify[D[fr3[2][b,w,s],s].io[].fr3[3][b,w,s], { b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w <0}]

For the second curvature it follows, since w≠0:

mk2[b_, w_] :=b/Sqrt[Abs[(b+b^3)*Cosh[w]*Sinh[w]]]

Controlled: OK!

FullSimplify[D[fr3[2][b,w,s],s].io[].fr3[4][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w >0}]

FullSimplify[D[fr3[2][b,w,s],s].io[].fr3[4][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w <0}]

FullSimplify[D[fr3[2][b,w,s],s].io[].fr3[1][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

FullSimplify[D[fr3[2][b,w,s],s].io[].fr3[2][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

FullSimplify[D[fr3[2][b,w,s],s].io[].fr3[0][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

The third Frenet formula is satisfied, too.

FullSimplify[D[fr3[3][b,w,s],s]+ fr3[2][b,w,s]*mk2[b,w],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

FullSimplify[D[fr3[3][b,w,s],s]+ fr3[2][b,w,s]*mk2[b,w],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w >0}]

FullSimplify[D[fr3[3][b,w,s],s]+ fr3[2][b,w,s]*mk2[b,w],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w <0}]

Plot[Sinh[w] ((Sqrt[-1+Cosh[4 w]])+(Sqrt[2]) Sinh[2 w]) +1, {w,-2,1},PlotStyle -> {Thick, Red}]

FullSimplify[Sinh[w] ((Sqrt[-1+Cosh[4 w]])+(Sqrt[2]) Sinh[2 w]) , w<0]

This equals zero, only Mathematica does not recognize it.

OK, the fourth Frenet formula is satisfied. We test the last one:

FullSimplify[D[fr3[4][b,w,s],s]- fr3[1][b,w,s]*mk1[b,w]-fr3[2][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w ≠0}]

FullSimplify[D[fr3[4][b,w,s],s]- fr3[1][b,w,s]*mk1[b,w]-fr3[2][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w >0}]

FullSimplify[D[fr3[4][b,w,s],s]- fr3[1][b,w,s]*mk1[b,w]-fr3[2][b,w,s],{ b∈ Reals, w∈ Reals, s∈ Reals,b ≠0,w <0}]

We check the orientation :

FullSimplify[Det[Table[fr3[i][b,w,s],{i,0,4}]],{b ≠0,w ≠ 0}]

Obviously, this equals 1 for w ≠ 0.

For  b, w≠0 we obtained the Frenet formulas for the curves of constant curvbatures, see [MDG] Example 3.1.3

Proposition. The isotropic-orthogonal frame fr3[i][b,w,s] is the Möbius-invariant Frenet frame of the curve represemted by fy[0][b,w,t] with the constant Möbius curvatures

mk1[b,w]

mk2[b,w]

The parameter s = t/lambda[b,w] is the natural conformal parameter of the curve. The curve is of hyperbolic type.

ftest[b_,w_]:= chB[mk1[b,w],mk2[b,w]]

FullSimplify[ftest[b,w],{ b∈ Reals, w∈ Reals,b ≠0,w ≠0}]

Plot3D[ftest[b,w], {b,.1,3},{w,.1,1}]

Reduce[ftest[b,w]== 0,{b,w},Reals]

Thus the test is ok, chB >0  for all parameters b,w ≠ 0, what can be shown by an elementary calculation.

2.6. Complete Systems of Representatives in the Hyperbolic Case

The family of curves of constant curvatures we constructed depends on two parameters b,w. We have seen at the end of the previous section that for all b,w ≠ 0 the condition chB[b,w]>0 is satisfied. Now we discuss the question whether the constructed family is a complete system of representatives, i.e. whether for any pair of curvatures k, h, h≠ 0, there exits a curve of our family with these curvatures.

The attempt to solve the completness equations under the assumption chB[h, k] > 0 directly remained without success

mk1[b,w]

mk2[b,w]

chB[k,h]

Assuming[chB[k,h]>0,Reduce[{mk1[b,w]==k,mk2[b,w] ==h},{b,w},Reals]]

Assuming[chB[k,h]>0,Reduce[{mk1[b,w]==k,mk2[b,w] ==h},{b},Reals]]

Therefore we test the completeness property choosing random numbers kk, hh and look on the contour plots

Clear[kk,hh];kk =Random[Real, {-.5,.5}];hh=Random[Real,{-.3,.3}];ContourPlot[{mk1[b,w]==kk,mk2[b,w] ==hh},{b,-10,10},{w,-5,5}]

Solutions exist if the corresponding contours intersect, and this is the case iff chB[kk, hh] >0:

chB[kk,hh]

kk

hh

If chB[kk,hh]>0  we solve the equations for the random values kk,hh of the curvatures

Table[ParametricPlot3D[hypccc[1/i,1][t],{t,-10,10},PlotRange ->All],{i,1,9}]

We insert the solutions b,w of the parameters in the formulas for the curvatures and control the results; they coincide with the randomly chosen values kk, hh:

mk1[-1.5975486149557903`,1.660937387895055`]

mk2[-1.5975486149557903`,1.660937387895055`]

The corresponding curve in the spherical model of the hyperbolic space is plotted:

hypccc[-1.5975486149557903`,1.660937387895055`][t]

ParametricPlot3D[hypccc[-1.5975486149557903`,1.660937387895055`][t],{t,-10,10},PlotRange ->All]

ParametricPlot3D[hypccc[-1.5975486149557903`,-1.660937387895055`][t],{t,-10,10},PlotRange ->All]

Try this procedure with random or arbitrary values of kk,hh!

Clear[kk,hh]

The geometric meaning of the conformal curvatures can be explored  evaluating mk1[b,w],mk2[b,w] and plotting the curves hypccc[b,w] for various values of the parameters b,w, e.g.

Plot[mk1[b,1], {b,-3,3}]

Plot[mk2[b,1], {b,-3,3}]

Table[ParametricPlot3D[hypccc[i,1][t],{t,-10,10},PlotRange ->All],{i,1,9}]

Show[%,PlotRange ->All]

Table[ParametricPlot3D[hypccc[1/i,1][t],{t,-10,10},PlotRange ->All],{i,1,9}]

Show[%,PlotRange -> All]

OK! All these tests run successfully.  For exploring  the shape of the curves in dependence on their curvatures one may constuct sequences of curves with given Möbius curvatures. For the hyperbolic case one has to consider values k,h with chB[k,h] > 0.

chB[k,h]

We plot curves with k = -2+i/5,  h = 1/2. First one has to find solutions {b,w}  of the curvature equations:

Table[{i, -2.+ i/5,FindInstance[{mk1[b,w] == -2. +i/5,mk2[b,w]==.5},{b,w},Reals]}, {i,1,10}]

results = %;

The Replace list is obtained by

repl = Table[results[[i,3]][[1]], {i,1,10}]

Of course all the values of chB are positive:

Table[chB[b,w]/.repl[[i]],{i,1,10}]

Table[{i,-2.+i/5,ParametricPlot3D[hypccc[b,w][t]/.repl[[i]],{t,-10,10},PlotRange ->All]},{i,1,10}]

%//TableForm

Show[Table[%%[[i,3]],{i,1,10}],PlotRange -> All]

2.7. The Elliptic Case chB<0

2.7.1. The Elliptic Curves of Constant Curvature

Since now chB < 0 a timelike unit vector, say stb[1], is invariant, and the 1-parametric subgroup lies in the isometry group of the elliptic space, modelled in the 4-dimensional Euclidean space  by the unit sphere.  By section 2.2, Case 1, we may assume that the orthogonal complement of stb[1] is invariant under cc[k,h]; it decomposes orthogonally in two orthogonal 2-subspaces in which the operator with respect to orthonornal coordinates has the standard form

ccell[a_,b_] :={{0,a,0,0},{-a,0,0,0},{0,0,0,b},{0,0,-b,0}}

ccell[a,b]//MatrixForm

ccell::usage = "ccell[a,b] is the normal form of an infinitesimal Lorentz transformation depending on the parameters a,b.";

Eigensystem[ccell[a,b]]

JordanDecomposition[ccell[a,b]]

%[[2]]//MatrixForm

We consider the 2-dimensional toral subgroups of the isometry group O[4] of the elliptic geometry

tor[a_,b_,u_,v_] := {{Cos[a*u],Sin[a*u],0,0},{-Sin[a*u],Cos[a*u],0,0},{0,0,Cos[b*v],Sin[b*v]},{0,0,-Sin[b*v],Cos[b*v]}}

A complete system of representatives  for the corresponding subgroups is given by

grell[a_,b_,t_] := tor[a,b,t,t]

grell[a,b,t]//MatrixForm

grell::usage = "grell[a,b,t] is the 4x4-matrix of a one-parametric subgroup of the orthogonal group O[4], the isometry group of the unit 3-sphere, depending on the parameters a,b.";

The orbit of an arbiraty point of the elliptic space (of radius 1)

ptell[u_,v_,w_]:= { Sin[w]*Cos[u]*Cos[v],Sin[w]*Cos[u]*Sin[v],Sin[w]*Sin[u],Cos[w]}

ptell[u,v,w]

Simplify[%.%]

ptell::usage = "ptell[u,v,w] is a parameter representation of the unit 3-sphere in the Euclidean 4-space.";

is the curve of constant curvature

curveellcc[a_,b_,u_,v_,w_][t_] := grell[a,b,t].ptell[u,v,w]

FullSimplify[curveellcc[a,b,u,v,w][t]]

FullSimplify[%.%]

curveellcc[a,b,0,0,w][t]

ellmgcc[a,b][t]tor[

ptell[0,1.,Pi/4]

ParametricPlot3D[sterproj[curveellcc[2,5,0,1.,Pi/4][t]],{t,0,6*Pi/3},PlotStyle -> {Red,Thick}]

tcurve1=%;

ParametricPlot3D[sterproj[tor[1,1,u,v].ptell[0,1.,Pi/4]],{u,0,2*Pi},{v,0,2*Pi}, PlotStyle -> Opacity[.4],Mesh -> None]

torus1= %;

Show[{%,tcurve1}]

Lemma.  The elliptic curves of constant curvatures grell[a, b, t].ptell[u, v, w] are isogonal trajectories of the meridians of the toral orbits tor[1,1, s,t].ptell[u, v, w].

confell[v_List] := Prepend[v,Sqrt[v.v]];
confell::usage = "confell[u_List] maps the n-dimensional hypersphere u.u= r^2  of the (n+1)-dimensional Euclidean vector subspace pssp[u,stb[1]]==0 onto the Moebius space (in pseudo-orthonormal coordinates) (n = dim -2).";

confell[stb[1,4]]

null[]

confell[null[]]

confell[vec[x,4]]

pssp[%,%]

Simplify[sphmap[confell[ptell[u,v,w]]]==ptell[u,v,w]]

confell[curveellcc[a,b,u,v,w][t]]

pssp[%,%]

sphmap[confell[curveellcc[a,b, u,v,w][t]]]

Simplify[%== curveellcc[a,b, u,v,w][t]]

2.7.2. The Frenet Frame of Second Order

We consider the special family of curves of constant curvature

ellcc[a_,b_,t_]:= curveellcc[a,1,0,0,b][t]

ellcc[a,b,t]

Their representatives as curves in Möbius geometry in isotropic-orthogonal coordinates are

ellmgcc[a_,b_][t_] = FullSimplify[transio[].confell[ellcc[a,b,t]]]

Simplify[%.io[].%,{a>0,b>0,t>0}]

Thus we redefine :

Clear[ellmgcc]; 
ellmgcc[a_, b_][t_] := {(1 - Cos[b]*Cos[t])/Sqrt[2], 
   Cos[a*t]*Sin[b], (-Sin[b])*Sin[a*t], 
   Cos[b]*Sin[t], (1 + Cos[b]*Cos[t])/Sqrt[2]}

frell1[a_,b_,t_] = Simplify[D[ellmgcc[a,b][t],t],{a>0,b>0,t>0}]

Simplify[%.io[].%,{a>0,b>0,t>0}]

felln[a_, b_] := 
  Sqrt[(1/2)*(1 + a^2 - (-1 + a^2)*Cos[2*b])]

frell[0][a_,b_,t_] := ellmgcc[a,b][t]/felln[a,b]

frell[0][a,b,t]

Simplify[%.io[].%]

D[frell[0][a,b,t],t]

Simplify[%.io[].%]

frell[1][a_, b_, t_] := 
  {(Cos[b]*Sin[t])/Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]], 
   -((Sqrt[2]*a*Sin[b]*Sin[a*t])/
     Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]]), 
   -((Sqrt[2]*a*Cos[a*t]*Sin[b])/
     Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]]), 
   (Sqrt[2]*Cos[b]*Cos[t])/
    Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]], 
   -((Cos[b]*Sin[t])/Sqrt[1 + a^2 - (-1 + a^2)*
        Cos[2*b]])}

We obtained a normed representative of the curve.  Now we are going to construct a frame of second order.

D[frell[0][a,b,t],{t,2}]

frell2[a_,b_,t_] := D[frell[0][a,b,x],{x,2}]/.x-> t

frell2[a,b,t]

Simplify[%.io[].%]

frell2n[a_, b_] := (-1 - a^4 + (-1 + a^4)*Cos[2*b])/
   (-1 - a^2 + (-1 + a^2)*Cos[2*b])

frella[4][a_,b_,t_]:= frell2[a,b,t] +frell[0][a,b,t]*frell2n[a,b]/2

frella[4][a,b,t]

FullSimplify[%.io[].%,{ a∈Reals,b a∈Reals,t a∈Reals,a≠0,b≠ 0}]

frell[4][a, b, t] := 
  {(Cos[b]*Cos[t])/Sqrt[1 + a^2 - (-1 + a^2)*
        Cos[2*b]] + ((-1 - a^4 + (-1 + a^4)*Cos[2*b])*
      (1 - Cos[b]*Cos[t]))/
     (2*Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]]*
      (-1 - a^2 + (-1 + a^2)*Cos[2*b])), 
   -((Sqrt[2]*a^2*Cos[a*t]*Sin[b])/
      Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]]) + 
    ((-1 - a^4 + (-1 + a^4)*Cos[2*b])*Cos[a*t]*
      Sin[b])/(Sqrt[2]*Sqrt[1 + a^2 - 
        (-1 + a^2)*Cos[2*b]]*(-1 - a^2 + 
       (-1 + a^2)*Cos[2*b])), 
   (Sqrt[2]*a^2*Sin[b]*Sin[a*t])/
     Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]] - 
    ((-1 - a^4 + (-1 + a^4)*Cos[2*b])*Sin[b]*
      Sin[a*t])/(Sqrt[2]*Sqrt[1 + a^2 - 
        (-1 + a^2)*Cos[2*b]]*(-1 - a^2 + 
       (-1 + a^2)*Cos[2*b])), 
   -((Sqrt[2]*Cos[b]*Sin[t])/
      Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]]) + 
    (Cos[b]*(-1 - a^4 + (-1 + a^4)*Cos[2*b])*Sin[t])/
     (Sqrt[2]*Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]]*
      (-1 - a^2 + (-1 + a^2)*Cos[2*b])), 
   -((Cos[b]*Cos[t])/Sqrt[1 + a^2 - (-1 + a^2)*
         Cos[2*b]]) + 
    ((-1 - a^4 + (-1 + a^4)*Cos[2*b])*
      (1 + Cos[b]*Cos[t]))/
     (2*Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]]*
      (-1 - a^2 + (-1 + a^2)*Cos[2*b]))}

Simplify[frell[0][a,b,t].io[].frell[0][a,b,t],{a>0,b>0,t>0}]

Simplify[frell[0][a,b,t].io[].frell[1][a,b,t],{a>0,b>0,t>0}]

Simplify[frell[0][a,b,t].io[].frell[4][a,b,t],{a>0,b>0,t>0}]

Simplify[frell[1][a,b,t].io[].frell[1][a,b,t],{a>0,b>0,t>0}]

Simplify[frell[1][a,b,t].io[].frell[4][a,b,t],{a>0,b>0,t>0}]

D[frell[0][a,b,t],t]== frell[1][a,b,t]

This is the frame of second order constructed in the general case in Lemma 6.1.7 in [MDG].
For the next step we need the third derivative

frell3[a_,b_,t_]:=D[frell[0][a,b,x],{x,3}]/. x-> t

frell3[a,b,t]

%.io[].%

FullSimplify[%]

frell3n[a_, b_] := (1 + a^6 - (-1 + a^6)*Cos[2*b])/
   (1 + a^2 - (-1 + a^2)*Cos[2*b])

Now we will find the norming factor, following (3.1.23) of [MDG]:

FullSimplify[(frell3n[a,b] -(frell2n[a,b])^2)^(-1/4)]

ellambda[a_, b_] := (((1 + a^2 - (-1 + a^2)*Cos[2*b])^2)/
    (((-a + a^3)*Sin[2*b])^2))^(1/4)

Controlled, ok!

The definition of fre[2][a,b,t] following proposition 3.1.8 of [MDG] is

fr3ella[2][a_,b_,t_]:=(frell[0][a,b,t]*(frell2[a,b,t].io[].frell3[a,b,t])+frell[1][a,b,t]*frell2n[a,b]+ frell3[a,b,t])*(ellambda[a,b])^2

FullSimplify[fr3ella[2][a,b,t]]

This leads to the definition

fr3ell[2][a_, b_, t_] := 
  {(a*Sign[a*(-1 + a^2)*Sin[2*b]]*Sin[b]*Sin[t])/
    Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]], 
   (Sqrt[2]*Cos[b]*Sign[a*(-1 + a^2)*Sin[2*b]]*
     Sin[a*t])/Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]], 
   (Sqrt[2]*Cos[b]*Cos[a*t]*Sign[a*(-1 + a^2)*
       Sin[2*b]])/Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]], 
   (Sqrt[2]*a*Cos[t]*Sign[a*(-1 + a^2)*Sin[2*b]]*
     Sin[b])/Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]], 
   -((a*Sign[a*(-1 + a^2)*Sin[2*b]]*Sin[b]*Sin[t])/
     Sqrt[1 + a^2 - (-1 + a^2)*Cos[2*b]])}

The  scalar square of the vector  fr3ell[2][a,b,t] is  1 iff   Sin[2*b] ≠ 0 && a^2 ≠ 1&&a≠0:

FullSimplify[fr3ell[2][a,b,t].io[].fr3ell[2][a,b,t],{a≠0,b≠0,t>0}]

In the following we assume Sin[2*b] ≠ 0 && a^2 ≠ 1&&a≠0. Indeed in these cases  ellambda becomes infinite:

ellambda[1,b]

ellambda[-1,b]

ellambda[a, Pi/2]

ellambda[0,b]

We set

fr3ell[0][a_,b_,t_]:= frell[0][a,b,t]/ellambda[a,b]

fr3ell[4][a_,b_,t_] := frell[4][a,b,t]*ellambda[a,b]

fr3ell[1][a_,b_,t_] := frell[1][a,b,t]

Under these conditions  we may define the Frenet frame of the third order, mentioned in [MDG], Proposition 3.1.8; the necessary isotropic-orthogonal relations are fulfilled. We remark that t here is an arbitrary normed parameter, not necessarily a natural one.
 Test of the relations:

FullSimplify[fr3ell[0][a,b,t].io[].fr3ell[0][a,b,t],Sin[2*b]≠0&&a^2≠1]

FullSimplify[fr3ell[0][a,b,t].io[].fr3ell[1][a,b,t],Sin[2*b]≠0&&a^2≠1]

FullSimplify[fr3ell[0][a,b,t].io[].fr3ell[2][a,b,t],Sin[2*b]≠0&&a^2≠1]

FullSimplify[fr3ell[0][a,b,t].io[].fr3ell[4][a,b,t],Sin[2*b]≠0&&a^2≠1]

FullSimplify[fr3ell[1][a,b,t].io[].fr3ell[1][a,b,t],Sin[2*b]≠0&&a^2≠1]

FullSimplify[fr3ell[1][a,b,t].io[].fr3ell[2][a,b,t],Sin[2*b]≠0&&a^2≠1]

FullSimplify[fr3ell[1][a,b,t].io[].fr3ell[4][a,b,t],Sin[2*b]≠0&&a^2≠1]

FullSimplify[fr3ell[2][a,b,t].io[].fr3ell[2][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

FullSimplify[fr3ell[2][a,b,t].io[].fr3ell[4][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

FullSimplify[fr3ell[4][a,b,t].io[].fr3ell[4][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

We have to find the last vector fr3ell[3][a,b,t]. We calculate

-FullSimplify[transio[].psCross[transoi[].fr3ell[0][a,b,t],transoi[].fr3ell[1][a,b,t],transoi[].fr3ell[2][a,b,t],transoi[].fr3ell[4][a,b,t]],{ b∈ Reals, a∈ Reals, t∈ Reals,a ≠0,Sin[2*b]≠0&&a^2≠1}]

fr3ell[3][a_, b_, t_] := 
  {-((Sqrt[2]*(Cos[b] - a^2*Cos[b] + a^2*Cos[t])*
      Sign[a*(-1 + a^2)*Sin[2*b]]*Sin[b])/
     (-1 - a^2 + (-1 + a^2)*Cos[2*b])), 
   -((2*Cos[b]*Cos[a*t]*Sign[a*(-1 + a^2)*Sin[2*b]])/
     (-1 - a^2 + (-1 + a^2)*Cos[2*b])), 
   (2*Cos[b]*Sign[a*(-1 + a^2)*Sin[2*b]]*Sin[a*t])/
    (-1 - a^2 + (-1 + a^2)*Cos[2*b]), 
   (2*a^2*Sign[a*(-1 + a^2)*Sin[2*b]]*Sin[b]*Sin[t])/
    (-1 - a^2 + (-1 + a^2)*Cos[2*b]), 
   (Sqrt[2]*((-1 + a^2)*Cos[b] + a^2*Cos[t])*
     Sign[a*(-1 + a^2)*Sin[2*b]]*Sin[b])/
    (-1 - a^2 + (-1 + a^2)*Cos[2*b])}

Control os the scalar products:

FullSimplify[fr3ell[3][a,b,t].io[].fr3ell[0][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

FullSimplify[fr3ell[3][a,b,t].io[].fr3ell[1][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

FullSimplify[fr3ell[3][a,b,t].io[].fr3ell[2][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

FullSimplify[fr3ell[3][a,b,t].io[].fr3ell[3][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

FullSimplify[fr3ell[4][a,b,t].io[].fr3ell[3][a,b,t],Sin[2*b]≠0&&a^2≠1&&a≠0]

Lemma. The vectors fr3ell[i][a,b,t], i= 0,...,4,  form the positively oriented Frenet frame of third order of the  curve of constant Möbius curvatures represented by the normed representative frell[0][a,b,t], where

a != 0, a^2 != 1, and  Sin[2 b] != 0

is supposed. This frame is a special case of the frames constructed in Proposition 3.1.8 in [MDG].

We check the orientation:

orell=Table[fr3ell[i][a,b,t],{i,0,4}];

FullSimplify[Det[orell],Sin[2*b]≠0&&a^2≠1&&a≠0]

2.7.3. Frenet Formulas  and Möbius Curvatures

Obviously, the vectors fr3ell[i][a,b,t} are the uniquely defined Frenet frame of  third order of the curves of constant curvatures, see example 3.1.3 in [MDG].

We introduce the natural parameter s = t/ellambda[a,b], setting t = s*ellambda{a,b]

ellambda[a,b]

nfr3ell[j_][a_,b_,s_] := fr3ell[j][a,b,t ]/. t-> s*ellambda[a,b]

nfr3ell[4][a,b,s]

Simplify[%.io[].%]

D[nfr3ell[0][a,b,s],s]-nfr3ell[1][a,b,s]

-D[nfr3ell[1][a,b,s],s].io[].nfr3ell[4][a,b,s]

FullSimplify[%,a≠0&& a^2≠1&& Sin[2*b] ≠ 0]

Thus we obtain for the first Möbius curvature of the curve

mcurvell1[a_, b_] := -((1 + a^4 - (-1 + a^4)*Cos[2*b])/
    (2*Abs[a*(-1 + a^2)*Sin[2*b]]))

FullSimplify[D[nfr3ell[1][a,b,s],s] - nfr3ell[4][a,b,s] - nfr3ell[0][a,b,s]*mcurvell1[a,b],a≠0&& a^2≠1&& Sin[2*b] ≠ 0]

Thus the second Frenet formula is satisfied, and mcurvell1[a,b] is the first constant curvature of the curve. The next calculation yields the second curvature:

dfre3[a_,b_,s_] := D[nfr3ell[2][a,b,x],x]/. x->s

FullSimplify[dfre3[a,b,s].io[].nfr3ell[3][a,b,s],a≠0&& a^2≠1&& Sin[2*b] ≠ 0]

mcurvell2[a_, b_] := a/((-a + a^3)^2*Cos[b]^2*Sin[b]^2)^(1/4)

Controlled, ok!

FullSimplify[dfre3[a,b,s]-nfr3ell[3][a,b,s]*mcurvell2[a,b] -nfr3ell[0][a,b,s],a≠0&& a^2≠1&& Sin[2*b] ≠ 0]

Thus the third Frenet formula is satisfied, and the second Möbius curvature of our curve is  given by mcurvell2[a,b].

FullSimplify[D[nfr3ell[3][a,b,s],s] + nfr3ell[2][a,b,s]*mcurvell2[a,b],a≠0&& a^2≠1&& Sin[2*b] ≠ 0]

Obviously, also the first component vanishes. Thus the fourth Frenet formula is fulfilled.

FullSimplify[D[nfr3ell[4][a,b,s],s] - nfr3ell[2][a,b,s] - nfr3ell[1][a,b,s]*mcurvell1[a,b],a≠0&& a^2≠1&& Sin[2*b] ≠ 0]

Proposition. The vectors nfr3ell[i][a,b,s], i= 0,...,4,  form the canonical Frenet frame (of third order) of the  curve of constant Möbius curvatures represented by the normed representative frell[0][a,b,s], s the natural conformal parameter,  where

a != 0, a^2 != 1, and  Sin[2 b] != 0

is supposed. This frame is a special case of the frames described in example 3.1.3 in [MDG]. The coefficients k1,k2 in the derivation equations are the Möbius invariant constant curvatures

mcurvell1[a,b]

mcurvell2[a,b]

2.7.4. Curves with the Exceptional Values for a,b

In this subsection we consider the curvatures and the curves for a = 0, ±1, Sin[2 b]=0. In all these cases the theory is not applicable.  The curves are  M-flat, i.e. locally  Möbius equivalent to circles. The curvatures are Infinity or indeterminate.  The natural parameter does not exist since

FullSimplify[ellambda[a,b]]

becomes infinite for the exceptional values of the parameters. We consider the corresponding curves in the 3-sphere:

ellcc[a,b,t]

ellcc[0,b,t]

ellcc[a,Pi/2,t]

ellcc[a,-Pi/2,t]

All these curves are circles, e.g.

bb=Random[];ParametricPlot3D[sterproj[ellcc[0,bb,t]],{t,0,2*Pi}]

ellcc[1,b,t]

bb=Random[];ParametricPlot3D[sterproj[ellcc[-1,bb,t]],{t,0,2*Pi}]

Clear[bb]

2.7.5.  Completeness of the Representing Family

The Möbius invariant curvatures of the curves of our family as functions of the parameters a,b are complicated enough:

Plot3D[mcurvell1[a,b],{a,-5,5},{b,0,2*Pi},PlotPoints -> 100]

Plot3D[mcurvell2[a,b],{a,-5,5},{b,0,2*Pi},PlotPoints -> 100]

We try  to solve the equations with Mathematica

{mcurvell1[a,b]==k,mcurvell2[a,b]==h}

Clear[a,b,k,h]

Solve[{-(1 + a^4 - (-1 + a^4)*Cos[2*b])== k*2*Abs[a*(-1 + a^2)*Sin[2*b]],  
   a^4 == h^4*((-a + a^3)^2*Cos[b]^2*Sin[b]^2)}, 
  {a, b}]

aborted after waiting a long time.

Reduce[{-(1 + a^4 - (-1 + a^4)*Cos[2*b])== k*2*Abs[a*(-1 + a^2)*Sin[2*b]],  
   a^4 == h^4*((-a + a^3)^2*Cos[b]^2*Sin[b]^2)}, 
  {a, b},Reals]

solu[k_,h_] = N[%];

This expression is hardly to handle. For numerical arguments k,h we obtain solutions:

kk= -5*Random[]; hh= Random[];chB[kk,hh]

If chB[kk,hh]>0, we obtain solutions with  a = 0 only;  the curves are Möbius equivalent to circles

solu[kk,hh]

We have to consider only such  values kk,hh, for which chB[kk,hh] < 0:

chB[k,h]

hh= RandomReal[{.1,3}];kk = RandomReal[ {-1/.02,-1/2*9}];chB[kk,hh]

solu[kk,hh]/.C[1]-> 0

We have to consider only the non-exceptional values a, b with Sin[2*b] ≠ 0 && a^2 ≠ 1&&a≠0

N[Sin[2*1.968032347270327`]]

We  plot the corresponding curve using stereographic projection:

ParametricPlot3D[sterproj[ellcc[1.1787809730903098`,2.7592000817232822`,t]], {t,-20,20},PlotStyle -> {Thick,Red},PlotRange -> All]

The curve is lies on an torus:

ParametricPlot3D[sterproj[tor[1.1787809730903098`,2.7592000817232822`,s,t].ptell[0,0,2.7592000817232822`]],{s,0,2*Pi},{t,0,2*Pi},PlotRange -> All,PlotPoints -> 100]

Show[{%,Out[228]},PlotRange -> All]

Clear[a,b,k,h,kk,hh]

Therefore we have chosen another way to see, or at least make it likely, that our family is complete.  We  take two value k,h at random and show that a solution exists.  Repeating this many times we think that it is always possible to find a curve of our family with given values k, h as their curvatures.

In the elliptic case the characteristic fulfills chB[k,h]<0 , we control it:

chB[k,h]

FullSimplify[chB[mcurvell1[a,b],mcurvell2[a,b]], a^2≠ 1&& a≠ 0&&b≠ 0]

The sign of this expression is defined by the sign of the numerator

ftes[a_, b_] := -1 - a^4 + (-1 + a^2)^2*
   2*Cos[b]^2*Sin[b]^2 + (-1 + a^4)*Cos[2*b]

Plot3D[ftes[a,b], {a, 0,20},{b,0,2*Pi}]

FindInstance[ftes[a,b]>0,{a,b},Reals]

Reduce[ftes[a,b]==0,{a,b},Reals]

We conclude that ftes<0  and also chB{mcurvell1[a, b], mcurvell2[a, b]}<  0   is satisfied for all non-exceptional values of a,b and vanishes for the exceptional values only.  The inequality chB[k,h] < 0 i mplies for the curvatures k < -1/h^2.  Always if one chooses two random real numbers satisfying this inequality one finds  common points of the corresponding contours for the two curvatures as functions of a, b. That means there exist curves of our family having the given values kk, hh, as their Möbius curvatures:

hh = RandomReal[{-5,5}];kk = RandomReal[{-100/hh^2,-1/hh^2}];{kk,hh,chB[kk,hh]}

Here are the contours of the curvature functions of a,b, corresponding to the values kk,hh:

ContourPlot[{mcurvell1[a,b]==kk,mcurvell2[a,b]==hh}, {a,0,10},{b,-Pi/2,Pi/2}]

Their intersection points correspond to the solutions. To obtain the numerical values of the parameters we use FindRoot in the near of an intersection point:

FindRoot[{mcurvell1[a,b]==kk,mcurvell2[a,b]==hh},{a,0.7},{b,1.3}]

ab = {a,b}/.%

Control Test :

Chop[{mcurvell1[ab[[1]],ab[[2]]],mcurvell2[ab[[1]],ab[[2]]]}-{kk,hh}]

ParametricPlot3D[sterproj[ellcc[ab[[1]],ab[[2]],t]],{t,0,25}, PlotStyle -> {Red,Thick},PlotRange -> All]

toral = %;

ParametricPlot3D[sterproj[tor[ab[[1]],1,u,v].ptell[0,0,ab[[2]]]], {u,0,2*Pi/ab[[1]]}, {v,0,2*Pi},PlotPoints -> 50,PlotRange -> All]

Show[{%,toral}]

Clear[kk,hh]

We summarize
Propostion.  The toral curves ellcc[a,b,t]  with non-exceptional parameters a,b in the 3-sphere are a complete system of representatives for the non M-flat curves of constant curvatures in the Möbius geometry and in the  spherical geometry. The curves are orbits of the point ptell[0,0,b] under the action of the 1-parametric group grell[a,1,t]. Their Möbius curvatures are

{mcurvell1[a,b],mcurvell2[a,b]}

Remark.  Distinct solutions ab as intersection points of the contoure kk, hh can give conformallyequivalent, but not iso,etric curves.

2.8.  Transformation between the Euclidean and the Möbius Space

In this subsection we define a function giving a standard representing isotropic vector to any point of the Euclidean space, and its inverse function. The considerations are valid in any dimension.  "standard" means tha the first componen of the isotropic vecor with respect to the fixed isotropic-orthogonal coordinate system equals 1, or  that the vector is stb[dim]. These maps will be applied in the next two sections devoted to the lines and circles as orbits of  1-parametric subgroups.

confeuklid::usage = "confeuklid[ulist] yields the standard isotropic vector of the (n*2)-dimensional pseudo-Euclidean space in isotropic-orthogonal coordinates representing the point with orthonormal coordinates u of the n-dimensional Euclidean space.";

This definition works in all dimensions.  We find a "normed representative" solving the equations

Solve[{vec[x].io[].vec[x]== 0, vec[x].io[].stb[5]== -1},vec[x]]

confeuklid[v_List]:=  Module[{n},
If[Not[Head[v]===List], Print["False argument: ",v];Return[]];
n=Length[v];
If[v.v===Infinity, Return[stb[n+2,n+2]]];
Append[Prepend[v,1],v.v/2]]

confeuklid[vec[x,3]]

{Infinity,0,0}

confeuklid[%]

confeuklid[{Infinity,Infinity}]

%.io[4].%

The inverse map is given by

euklid::usage = "euklid[ulist] is the point of the Euclidean space corresponding to the isotropic vector u; u must be given in isotropic-orthogonal coordinates; it is the inverse of confeuklid.";

euklid[v_] :=Module[{n},
If[Not[Head[v]===List], Print["False argument: ",v];Return[]];
n=Length[v];
If[(Chop[N[v.io[n].v]]!= 0.),Print[v," is not isotropic!"];Return[]];
If[N[v[[1]]]==0., Return[Table[Infinity,{n-2}]]];
Return[Take[Take[v/v[[1]],4],-3]]]

euklid[stb[1]]

euklid[stb[5]]

euklid[Sin[0]]

euklid[confeuklid[vec[x,3]]]

euklid[stb[5]*a]

confeuklid[euklid[stb[5]*a]]

%.io[].%

2.9. Lines. The Conformal Representation of the Translation Group

sphmap[iob[4]]

sterproj[%]

transl[a_List]:={stb[1,5],Prepend[stb[1,4],a[[1]]],Prepend[stb[2,4],a[[2]]],Prepend[stb[3,4],a[[3]]],Append[Prepend[a,a.a/2],1]}

transl[vec[a,3]]//MatrixForm

euklid[transl[vec[a,3]].confeuklid[vec[x,3]]]

Clearly, these matrices form a 3-dimensional abelian subgroup:

transl[vec[a,3]].transl[vec[b,3]]== transl[vec[a,3] + vec[b,3]]

Simplify[%]

The lines are orbits of 1-parametric translation groups.

ParametricPlot3D[euklid[transl[{1,1,1}*t].confeuklid[null[3]]],{t,-5,5}]4.5

We show that the 3-dimensional group of all translations is the maximal abelian subgroup containing any 1-parametric group of translations.  By formula  (1.1.11), Proposition 3, of [MDG] we obtain the conformal representation of the translation group in isotropic orthonormal coordinates if we choose  λ=1, A = Identity and a as the translation vector

The corresponding Lie subalgebra is generated by the matrices

For[i = 1,i<dim-1,i++, vv[i]= D[transl[vec[a,dim-2]],a[i]]/.a[i]->0]

vv[3]//MatrixForm

This leads to the general definition

tr::usage = "tr[i,d;dim] is the i-th basis element of the Lie subalgebra of the Lie algebra of the Moebius group in dimension d-2, corresponding to the subgroup of translations; the matrices are expressed in isotropic-orthogonal coordinates.";

tr[i_,d_:dim]:= Module[{b = nullmatrix[d]},
b[[i+1]] = stb[1,d];b[[d]] = stb[i+1,d]; Return[b]]

tr[1] ==vv[1]

Lemma.  The Lie subalgebra corresponding to the translation group is a maximal abelian Lie subalgebra.

 Indeed, we solve

Solve[{tr[1].iomatrix[c]-iomatrix[c].tr[1] == nullmatrix[],
tr[2].iomatrix[c]-iomatrix[c].tr[2] == nullmatrix[],
tr[3].iomatrix[c]-iomatrix[c].tr[3] == nullmatrix[]},vec[c,10]]

(iomatrix[c]/.%[[1]])== tr[1]*c[8]+ tr[2]*c[9]+ tr[3]*c[10]

q.e.d.

The orbits of the 1-parametric subgroups are the lines:

Simplify[transl[vec[a,3]*t] == MatrixExp[t*Sum[tr[i]*a[i],{i,1,3}]]]

transl[vec[a,3]*t].confeuklid[vec[x,3]]

euklid[%]

testtt[[1]] +testtt[[2]]

2.10. Circles. The Conformal Representation of the Rotation Group.

2.10.1. The Rotation Group and its Lie Algebra Represented in  O[1,4], o[1,4].

By formula (1.1.11) of [MDG] the  rotation group can be embedded into the Möbius group as the group of matrices in pseudo-orthonormal (or isotropic orthogonal)  coordinates

rot[t_] := {stb[1],{0, Cos[t], -Sin[t],0,0},{0,Sin[t], Cos[t],0,0},stb[4],stb[5]}

rot[t]//MatrixForm

transio[].rot[t].transoi[]//MatrixForm

We show that rot[t]  generates the usual rotation in the Euclidean space, using the transformations euklid, confeukl:

?euklid

?confeuklid

eurot[x_,y_,z_,t_] :=euklid[rot[t].confeuklid[{x,y,z}]]

eurot[x,y,z,t]

and this is the usual rotation in the x,y-plane.

The generating element of the Lie algebra of the rot subgroup in isotropic-orthogonal and in pseudo-orthonormal coordinates is

larot = {null[],-stb[3],stb[2],null[],null[]}

larot//MatrixForm

Tests in pseudo- orthonormal and in isotropic-orthogonal coordinates

Transpose[larot].psogram[]+psogram[].larot== nullmatrix[]

Transpose[larot].io[]+io[].larot== nullmatrix[]

Now we find all elements of the pseudo-orthogonal  Lie algebra o[1,4] commuting with larot:

Solve[larot.iomatrix[c]-iomatrix[c].larot == nullmatrix[],vec[c,10]]

Thus the Lie subalgebra of all elements commuting with larot now is given by:

commrot =iomatrix[c]/. %[[1]]

commrot//MatrixForm

We set

crot[1]= commrot/.{c[3]-> 1,c[4]->0,c[5]->0,c[10] -> 0}

%//MatrixForm

crot[2]= commrot/.{c[3]-> 0,c[4]->1,c[5]->0,c[10] -> 0}

%//MatrixForm

crot[3]= commrot/.{c[3]-> 0,c[4]->0,c[5]->1,c[10] -> 0}

%//MatrixForm

crot[3] == -larot

crot[4]= commrot/.{c[3]-> 0,c[4]->0,c[5]->0,c[10] -> 1}

%//MatrixForm

Obviously we have crot[3] = -larot.  The Lie subalgebra is not abelian:

crot[1].crot[2] -crot[2].crot[1] == crot[1]

crot[1].crot[4]-crot[4].crot[1] == -crot[2]

crot[2].crot[4]-crot[4].crot[2] ==crot[4]

It follows
Lemma.  The derived algebra of the Lie subalgebra of all elements commuting with larot is the subalgebra  with the basis crot[1], crot[2], crot[4];  it is not abelian. 

Indeed,these elements are linearely independent:

Solve[crot[1]*x+crot[2]*y+crot[4]*z == nullmatrix[],{x,y,z}]

2.10.2.  Properties of crot[1] and the Corresponding Subgroup.

The  1-parametric subgroup generated by crot[i] is given by the matrix in io- coordinates:

grot[i_][t_] := MatrixExp[crot[i]*t]

or in p-o coordinates by

pseugrot[i_][t_] := transoi[].grot[i][t].transio[]

pseugrot[1][t]//MatrixForm

pseugrot[2][t]//MatrixForm

pseugrot[3][t]//MatrixForm

pseugrot[4][t]//MatrixForm

The transformation generated in the Euclidean model  space is then

eucrot[i_][x_,y_,z_,t_] := euklid[grot[i][t].confeuklid[{x,y,z}]]

Simplify[eucrot[1][x,y,z,t]]

eucrot[1][1,1,1,t]

ParametricPlot3D[eucrot[1][1,1,1,t],{t,-20,20},PlotRange -> All]

Limit[eucrot[1][x,y,z,t],t-> Infinity]

Limit[eucrot[1][x,y,z,t],t-> -Infinity]

Let X.vx =vx*a, vx an eigenvector of X to the eigenvalue a. Then vx is also an eigenvector of MatrixExp[X] to the eigenvalue Exp[a]. In particular, the  fixed points of the  one-parametric subgroup MatrixExp[X*t] acting on the Möbius space correspond to the isotropic eigenvectors  of X. Thus we explore

eigsys[i_] :=Eigensystem[crot[i]]

Now we consider crot[1]:

crot[1]//MatrixForm

eigsys[1]

JordanDecomposition[crot[1]]

%[[2]]//MatrixForm

The isotropic vector stb[5] generates the Jordan cell to the eigenvalue 0:

crot[1].stb[5]

crot[1].stb[4]

crot[1].stb[1]

NullSpace[crot[1]]

This is an isotropic  subspace which has only one isotropic direction, spanned by stb[1], and the uniquely defined fixed point is the origin:

euklid[stb[1]]

Of course, any vector of this 3-dimenional isotropic subspace remains fixed under the action of grot[1][t]:

grot[1][t].{x,y,z,0,0}

In particular, the spacelike vectors stb[2],  stb[3] remains fixed.  There orthogonal complement is a 3-dimensional pseudo-Euclidean subspace, representing a circle, appearing here as apart of the half z-axis:

euklid[grot[1][t].transoi[].stb[5]]

ParametricPlot3D[pseugrot[1][t].transoi[].stb[5], {t,-5,0}]

ParametricPlot3D[pseugrot[1][t].transoi[].stb[5], {t,0,5}]

euklid[stb[5]]

The upper half of the z-Axis is the orbit of the infinite point;  the axis is passed twice, the infinite point belongs to its orbit for t = 0. .

Thus the transformation group is not conformal in our Euclidean model. Its orbits in this picture are the origin, open segments of the  z-axis without the origin including the infinite point , and for a general point x not in the z-axis the circle through x tangent to the z-axis in the origin, giving a nice picture of the action of this transformation group eucrot[1][x,y,z,t]:

euklid[(-stb[5])]

euklid[grot[1][t].(-stb[5])]

A bit strange, in spite of this result ParametricPlot3D reflects the change of the sign:

ParametricPlot3D[grot[1][t].(-stb[5]), {t,0,5},PlotRange -> All]

The origin is a fixed point of the action of the group grot[1][t], described by the function eucrot[1]

Simplify[eucrot[1][0,0,0,t]]

ParametricPlot3D[eucrot[1][0,0,-1,t], {t,-5,5}]

In reality, not in the picture, the origin does not belong to the orbit. We have

Simplify[eucrot[1][0,0,-1,t]]

The orbit runs through infinity for the zero of the denominator, thus the image appears as two branches, joined at infinity:

Plot[2/(-2 + t), {t, -2, 4}]

For t -> ±Infinity the whole space will be contracted to the origin:

Limit[eucrot[1][x,y,z,t],t-> Infinity]

Limit[eucrot[1][x,y,z,t],t-> -Infinity]

eucrot[1][Cos[i*2*Pi/20],Sin[i*2*Pi/20],-1,t]

Table[ParametricPlot3D[eucrot[1][Cos[i*2*Pi/20],Sin[i*2*Pi/20],-1,t], {t,-20,20}, Axes -> False,PlotRange -> All],{i,1,20}];

Show[%,PlotRange -> All]

pic1 = %;

Show[Graphics3D[{Red,PointSize[0.02],Point[{0,0,0}]}]]

orig = %;

ParametricPlot3D[{0,0,z},{z, -2,2}, Axes -> False, PlotStyle -> Black]

zax= %;

Show[{pic1,orig,zax},Boxed -> False]

orbits1= %;

Export["orbits1.jpg",orbits1]

2.10.3. crot[2], crot[3], and crot[4] Generate a subgroup of the Euclidean Conformal Group

First we compare  the  1-parametric subgroups defined in the last subsection:

grot[1][t]//MatrixForm

grot[2][t]//MatrixForm

grot[3][t]//MatrixForm

grot[4][t]//MatrixForm

One sees, that grot[i][t], i = 2,3,4, leave the vector stb[5] invariant, which corresponds to the infinite point of the Euclidean space.
As we have shown in the last susection, the origin is the fixed point of grot[1][t]; comparing the matrix  with formula (1.1.11) of [MDG] one identifies it with the element h(A, va, λ) with A = IdentityMatrix[3], va = {0,0,t}, λ= 1. The other groups belong to the conformal Euclidean group:

eucrot[2][x,y,z,t]

This is the group of central dilations.

eucrot[3][x,y,z,t]

This is the group of rotations inthe planes parallel to the x,y-plane.

eucrot[4][x,y,z,t]

This is the group of translation in the direction of the z-axis. The action of these groups can easily be interpreted using cylinder coordinates.  Since crot[3] commutes with crot[2] and with crot[4] we obtain again two 2-dimensional subgroups of the conformal Euclidean group, whose orbits are the cylinders with the z-axis as the central line), and the z_axis for the origin

ParametricPlot3D[euklid[grot[4][s].grot[3][t].confeuklid[{1,0,0}]], {s, -5,5},{t,0,2*Pi}]

ParametricPlot3D[euklid[grot[4][s].grot[3][t].confeuklid[{0,0,0}]], {s, -5,5},{t,0,2*Pi}]

ParametricPlot3D[euklid[grot[2][s].grot[3][t].confeuklid[{1,0,0}]], {s, -5,5},{t,0,2*Pi}]

euklid[transoi[].grot[2][s].grot[3][t].confeuklid[{1,0,0}]]

Also crot[2], crot[4]  generate a group, which is not abelianm compare the commutator rules in subsection 2.10.1. Its orbits are halfplanes bordering (not containing)  the z-axis:

ParametricPlot3D[euklid[grot[4][s].grot[2][t].confeuklid[{1,0,0}]], {s, -5,5},{t,-3,3}]

euklid[grot[4][s].grot[2][t].confeuklid[{-1,0,0}]]

euklid[grot[4][s].grot[2][t].confeuklid[{x,y,z}]]

euklid[grot[2][s].grot[4][t].confeuklid[{x,y,z}]]

If we commute the factors we get the same orbit.

ParametricPlot3D[euklid[grot[2][s].grot[4][t].confeuklid[{-1,0,0}]], {s, -5,5},{t,-3,3}]

Further examples and applications we leave to the reader.

3. Dupin Cyclides

The Dupin cyclides are the orbits of the two-parametric Abelian subgroups of the Möbius space,  see [MGV].  In section 3.1  we start with  the element cc[k,h] of the Lie algebra and  complete it to a maximal  Abelian  Lie subalgebra  of the Lie algebra of the Möbius group. In section 3.2 we consider the corresponding two-dimensional Abelian subgroups and apply the classification  obtained in chapter 2. In each case we plot a corresponding two-dimensional orbit and a curve of constant curvatures k, h lying in it.

3.1. Two-Parametric Abelian Subgroups of the Möbius Group

We first  will find the symmetry relation for the elements of the Lie algebra in isotropic-orthogonal coordinates. In pseudo-orthonormal coordinates the elements of the Lie algebra correspond to the matrices

psomatrix[c_] := {{0,c[1],c[2], c[3],c[4]},
{c[1],0,c[5],c[6],c[8]},
{c[2],-c[5],0,c[7],c[9]},
{c[3], -c[6],-c[7],0,c[10]},
{c[4],-c[8],-c[9],-c[10],0}}

psomatrix::usage = "psomatrix[c] is the matrix of the general element of the Lie algebra o(1,4) in pseudo-orthonormal coordinates with the parameters c[1],...,c[10].";

psomatrix[c]//MatrixForm

psogram[]:= Table[pssp[stb[i],stb[j]],{i,1,dim},{j,1,dim}]

psogram::usage ="psogram[] is the Gram matrix of the pseudo-orthonormal scalar product of index 1 and dim = 5 in pseudo-orthonormal coordinates.";

psogram[]//MatrixForm

Test of psomatrix[c]:

Transpose[psomatrix[c]].psogram[]+psogram[].psomatrix[c]

iomatrtest[c_] := transio[].psomatrix[c].transoi[]

iomatrtest[c]//MatrixForm

In this result we rename   the elements üf the matrix preserving its symmetry:

{{-c[4], c[1], 
    c[2], c[3], 0}, {c[8], 
    0, c[5], c[6], c[1]}, 
   {c[9], -c[5], 0, c[7], 
    c[2]}, 
   {c[10], -c[6], -c[7], 0, 
    c[3]}, 
   {0, c[8], 
    c[9],
     c[10], c[4]}}

Thus we define

iomatrix::usage = "iomatrix[c] is the matrix of the general element of the Lie algebra o(1,4) in isotropic-orthogonal coordinates with the parameters c[1],...,c[10].";

iomatrix[c_] := {{-c[4], c[1], c[2], c[3], 0}, 
   {c[8], 0, c[5], c[6], c[1]}, {c[9], -c[5], 0, 
    c[7], c[2]}, {c[10], -c[6], -c[7], 0, c[3]}, 
   {0, c[8], c[9], c[10], c[4]}}

iomatrix[c]//MatrixForm

Test of iomatrix:

io[]//MatrixForm

Test of iomatrix:

Transpose[iomatrix[c]].io[] + io[].iomatrix[c]

Now we find all the elements of o(1,4) commuting with cc[k,h] using isotropic-orthogonal coordinate]:

cc[k,h]//MatrixForm

Solve[cc[k,h].iomatrix[b]-iomatrix[b].cc[k,h]==nullmatrix[], vec[b,10]]

solv[k_,h_][u_,v_] = (iomatrix[b]/.%[[1]])/.{b[8]-> u,b[9]-> v}

sol1[k_,h_] = Simplify[%/.{u-> 1,v->0}]

sol2[k_,h_]=Simplify[%%/.{u-> 0,v->1}]

We see

sol1[k,h]==cc[k,h]

and define cca[k,h] to be sol2[k,h]:

cca[k_, h_] := {{0, 1, -h^2 - k, 0, 0}, 
   {0, 0, 0, -h, 1}, {1, 0, 0, h^3 + 2*h*k, 
    -h^2 - k}, {0, h, (-h)*(h^2 + 2*k), 0, 0}, 
   {0, 0, 1, 0, 0}}

cca[k,h]//MatrixForm

?cc

cca::usage = "cca[k,h] completes the element cc[k,h] to the basis of the 
maximal abelian Lie subalgebra of the Lie algebra o[1,4], 
written in isotropic orthogonal coordinates.";

Simplify[cca[k,h].cc[k,h]-cc[k,h].cca[k,h]]

abelian2D[k_, h_][u_, v_] := cc[k,h]*u +cca[k,h]*v

abelian2D::usage="abelian2D[k,h][u,v] is a parameter representation of the 2-dimensional maximal Abelian Lie subalgebra abelian2D generated by the element cc[k,h] of the Lie algebra o[1,4] written in isotropic-orthonormal coordinates.";

Proposition. We  consider the pseudo-orthogonal Lie algebra o[1,4] in isotropic-orthonormal coordinates. Then the maximal dimension of a commutative Lie subalgebra containing cc[k,h]  is 2.  Any such subalgebra is conjugated to an abelian2D algebra of a certain element cc[k,h] with the parameter representation abelian2D[k,h][u,v].

3.2 The Dupin Cyclides as Orbits of 2-Dimensional Commutative Subgroups

abeliangr2D[k_,h_][u_,v_] := MatrixExp[abelian2D[k,h][u,v]]

kk=Random[]; hh = Random[]; 
Chop[Simplify[abeliangr2D[kk,hh][u,v].abeliangr2D[kk,hh][u1,v1] -
abeliangr2D[kk,hh][u+u1,v+v1]]]

How may this happen? Our computer has 16 GB of RAM. Besides of system processes no other applications are running.

The definition is useful for numeric calculations:

Symbolically, also  with respect to the parameters only, Mathematica may not control the commutativity of the group in a reasonable time. Numerically we get the expected result:

kk=Random[]; hh = Random[]; 
Chop[Simplify[abeliangr2D[kk,hh][.1,1.5].abeliangr2D[kk,hh][.2, .3] -
abeliangr2D[kk,hh][.3,1.8]]]

testtt=Table[kk=Random[]; hh = Random[]; u=Random[]; u1=Random[]; v=Random[]; v1=Random[];
Chop[Simplify[abeliangr2D[kk,hh][u,v].abeliangr2D[kk,hh][u1,v1] -
abeliangr2D[kk,hh][u+u1,v+v1]]],{1000}];

Sum[testtt[[i]],{i,1,1000}]

Clear[kk,hh,u,u1,v,v1]

dupin[k_,h_][u_,v_]:= sterproj[sphmap[transoi[].Transpose[abeliangr2D[k,h][u,v]][[1]]]]

Also for the ParametricPlot3D-commands our computer, a Dell  OPTIPLEX 755 with 4 GB RAM, was to weak to  perform the Plot commands. We succeeded on a Workstation with 16 GB RAM and an Intel i7.870 processor and the graphic card ENGTX465/2DI/1GD5 / NVIDIA GeForce GTX465 / 1280MB /

We consider the  spherical type k = -2, h = 1.5, plot the curve and the cyclide with these parameters, and join the plots:

chB[-2,1.5]

ParametricPlot3D[dupin[-2,1.5][u,v],{u,0,2*Pi},{v,0,2*Pi}, Mesh -> None, Axes -> False, Boxed -> False, PlotPoints -> 100, PlotStyle -> Opacity[.3]]

dupcBneg = %;

ParametricPlot3D[eucurvecc[-2,1.5][t],{t,-19,19},Axes -> False, Boxed -> False, PlotPoints -> 100,PlotStyle -> {Thick, Blue},PlotRange -> All]

curveBneg = %;

Show[{dupcBneg, curveBneg}]

dccBneg=%;

Export["dccBneg.jpg",dccBneg]

The bmp-export creates much larger files, the factor is almost 30.

Export["dccBneg.bmp",dccBneg]

Now we consider the Euclidean case chB[k,h] = 0:

Solve[chB[k,h]==0, k]

zerof[h_] := -1/(2*h^2)

ParametricPlot3D[dupin[zerof[1.3],1.3][u,v],{u,-35,35},{v,0,2*Pi}, Mesh -> None,Axes -> False, Boxed -> False,  PlotPoints -> 100,PlotStyle -> Opacity[.3],PlotRange -> All]

dupcBzero=%;

ParametricPlot3D[eucurvecc[zerof[1.3],1.3][t],{t,-19,19},Axes -> False, Boxed -> False, PlotPoints -> 100,PlotStyle -> {Thick, Blue},PlotRange -> All]

dccBzero=%;

Show[{dupcBzero, dccBzero}]

dccBzero = %;

Export["dccBzero.jpg",dccBzero]

Export["dccBzero.gif",dccBzero]

zerof[1.3]

Limit[dupin[zerof[1.3],1.3][u,v], u->Infinity]

Limit[dupin[zerof[1.3],1.3][u,v], u->-Infinity]

ParametricPlot3D[sphericalreflection[dupin[zerof[1.3],1.3][u,v],{0,0,1.838477631085023`},1],{u,0,5},{v,0,2*Pi}, Mesh -> None,Axes -> False, Boxed -> False,  PlotPoints -> 70,PlotStyle -> Opacity[.3],PlotRange -> All]

zz1 = %;

ParametricPlot3D[sphericalreflection[eucurvecc[zerof[1.3],1.3][t],{0,0,1.838477631085023`},1],{t,0,9},Axes -> False, Boxed -> False, PlotPoints -> 100,PlotStyle -> {Thick, Blue},PlotRange -> All]

hel1=%;

Show[{zz1,hel1}]

zzhel = %;

Export["zzhel.jpg",zzhel]

We consider the hyperbolic case choosing  values k,h with chB[k,h]>0:

Plot3D[chB[k,h],{k,-3,5},{h,-3,4}]

chB[-.2,.5]

ParametricPlot3D[dupin[-.2,.5][u,v],{u,-15,15},{v,0,2*Pi}, Mesh -> None,Axes -> False, Boxed -> False, PlotPoints -> 100, PlotStyle -> Opacity[.3],PlotRange -> All]

dupcBpos = %;

ParametricPlot3D[eucurvecc[-.2,.5][t],{t,-30,30},Axes -> False, Boxed -> False, PlotPoints -> 100,PlotStyle -> {Thick, Blue},PlotRange -> All]

dccBpos =%;

Show[{dupcBpos,dccBpos}]

dccBpos =%;

Export["dccBpos.jpg",dccBpos]

We consider another Example of the hyperbolic case:

chB[1,1]

ParametricPlot3D[dupin[1,1][u,v],{u,-15,15},{v,0,2*Pi}, Mesh -> None,Axes -> False, Boxed -> False, PlotPoints -> 100, PlotStyle -> Opacity[.3],PlotRange -> All]

dupcBpos1 = %;

ParametricPlot3D[eucurvecc[1,1][t],{t,-30,30},Axes -> False, Boxed -> False, PlotPoints -> 100,PlotStyle -> {Thick, Green},PlotRange -> All]

dccBpos1 =%;

Show[{dupcBpos1,dccBpos1}]

dccBpos1 =%;

Export["dccBpos1.jpg",dccBpos1]

3.3. The Euclidean Realization of the Hyperbolic Curves of Constant Curvatures

As shown in subsection 2.3.1, last Proposition,   in the hyperbolic case we have two real isotropic eigenvectors to real non zero eigenvalues.  The corresponding points of the Möbius space are fixed points of the 1-parametric transformation group gr[k,h]. Therefore the complement of such a fixed point is invariant under these transformations too. Taking it as the conformal model of the Euclidean space the orbits of the non fixed points of this complement are  Euclidean realizations of the hyperbolic curves of constant curvatures.  In general they are not helices and don't have constant Euclidean curvatures. An example of this kind are the isogonal trajectories of the generators of a circular conus which is a Dupin cyclide, too.

The spiral groups of the Euclidean space are 1-parametric groups of conformal transformations depending on one parameter a, defined by

gd[a_,t_]:={{Cos[t],-Sin[t],0},{Sin[t],Cos[t],0},{0,0,1}}*Exp[a*t]

FullSimplify[gd[a,t].gd[a,s]== gd[a,t+s]]

The 3D-spirals are defined as their orbits for b≠0:

gdcc[a_,b_][t_] := gd[a,t].{b,0,1}

gdcc[a,b][t]

For a, b ≠ 0 they are non flat curves with varying Euclidean curvature and torsion:

Simplify[curvature[gdcc[a,b]][t]]

Simplify[torsion[gdcc[a,b]][t]]

ParametricPlot3D[gdcc[.1,.5][t], {t,-30,3},PlotRange -> All]

ParametricPlot3D[gdcc[.1,.5][t], {t,-30,3},Axes -> False, Boxed -> False, PlotRange -> All, PlotStyle -> {Thick }]

consp = %;

Here is the parameter  representation  of a circular cone depending on the parameter b

conus[b_, u_, v_] := {b*v*Cos[u], b*v*Sin[u], v}

ParametricPlot3D[conus[.5,u,v],{u,0,2*Pi},{v,0,1.4}, Mesh -> None, Axes -> False, Boxed -> False, PlotStyle -> {Opacity[.2],Blue}, PlotRange -> All]

con1 = %;

Here is a parameter representation of the spiral cylinder:

gsp[a_,b_][t_,v_]:= {b (E^(a t)) Cos[t],b (E^(a t)) Sin[t],v*(E^(a t))}

ParametricPlot3D[gsp[.1,.5][t,s],{t,-30,3},{s,0,1},Mesh-> None, Axes -> False, Boxed -> False, PlotPoints ->100, PlotStyle -> {Opacity[.4],Red}]

spsf = %;

Show[{con1,consp,spsf}]

sp3D= %;

Export["sp3D.jpg",sp3D]

We find the maximal abelian subgroup gda[a, s, t] containing gd[a]:

gda[a_,s_,t_]:={{Cos[t],-Sin[t],0},{Sin[t],Cos[t],0},{0,0,1}}*Exp[a*s]

Simplify[gda[a,s,t].gda[a,s1,t1]== gda[a,s+s1,t+t1]]

Besides of the fixed points its orbits are the circular cones, being Dupin cyclides:

ParametricPlot3D[gda[.1,s,t].{.5,0,1},{s,-30,3},{t,0,2*Pi}]

We consider the 2-dimensional abelian Lie subalgebra of o[1,4], in isotropic orthogonal coordinates  defined by

ldio[a_,c_] :={{-a,0,0,0,0},{0,0,-c,0,0},{0,c,0,0,0},{0,0,0,0,0},{0,0,0,0,a}}

ldio[a,1]//MatrixForm

The following  1parametric subgroup corresponds to the spiral group of the Euclidean space:

gdio[a_,t_] =MatrixExp[ldio[a,1]*t]

%//MatrixForm

Indeed, we have:

euklid[gdio[a,t].confeuklid[{b,0,1}]]

%==gdcc[a,b][t]

Eigenvalues[ldio[a]]

NullSpace[ldio[a]]

The 1-parametric subgroup is of hyperbolic type, since the fixed vector is spacelike. 
In the subnotebook Spirals3D.nb is shown that the spiral cylinder is an orbit of a 2-dimensional solvable Lie subalgebra containing  ldio[a].
It follows:
Proposition. The 3D-spiral gdcc[a,b] is the intersection of two homogeneous surfaces of the Möbius space, a spiral cylinder and a circular cone.

References

[BT] W. Blaschke, G. Thomsen.  Volesungen über Differentialgeometrie III.  Differentialgeometrie der Kreise und Kugeln. Verlag Springer. Berlin 1929. (This book is available in the WEB: http://www.gbv.de/dms/goettingen/494341041.pdf)

[G06] Alfred Gray, Simon Salamon, Elsa Abbena. Modern Differential Geometry of Curves and Surfaces with Mathematica.
Third ed. CRC Press. 2006.

[G94] Alfred Gray. Differentialgeometrie. Klassische Theorie in moderner Darstellung. (Übersetzung aus dem Amerikanischen H. Gollek).
Spektrum Akademischer Verlag, Heidelberg.Berlin.Oxford. 1994.

[H-J] Udo Hertrich - Jeromin. Introduction to Möbius Differential Geometry.  London
Mathematical Society Lecture Notes Series, vol. 300, Cambridge University Press,
Cambridge, UK, 2003. (A review of this book (by Thomas E. Cecil) with some hints to the literature is published in BULLETIN (New Series) OF THE AMERICAN MATHEMATICAL SOCIETY. Volume 42, Number 4, Pages 549–554. S 0273-0979(05)01067-0. Article electronically published on July 1, 2005)

[Ma] A. I. Maltzev. Fundaments of Linear Algebra (Russian), Moscou 1956.

[ECG] Rolf Sulanke. The Fundamental Theorem for Curves in the n-Dimensional Euclidean  Space. 2009. On my homepage.

[OS3] A. L. Onishchik,  R. Sulanke. Projective and Cayley-Klein Geometries. Springer-Verlag. Berlin,Heidelberg. 2006
(German version on my homepage).

[MGII] R. Sulanke. Submanifolds of the Möbius space II. Frenet formulas and curves of constant curvatures. Math. Nachr. 100 (1981), 235-247.

[MGV] R. Sulanke.  Möbius geometry V.  Homogeneous surfaces in the Möbius space. 
Coll. Math. Soc. J. Bolyai 46. Topics in Differential Geometry. Debrecen 1984, 1141-1154.

[MDG] R.  Sulanke. Möbius Differential Geometry. (Only curve theory,  on my homepage).

[lox]  R. Sulanke. loxodromes-nb. Mathematica notebook. ( On my homepage.)

http : // www - irm.mathematik.hu - berlin.de/~sulanke/Notebooks/eigsyset.nb

http : // www - irm.mathematik.hu - berlin.de/~sulanke/Notebooks/logspir.nb

Homepage

http://www2.mathematik.hu-berlin.de/~sulanke