Curves in the Möbius Space

by

Rolf Sulanke

1. Version started March 6, 2012
4.Version finished September 25,2019
Tested with Mathematica versions 8.0.1,  11.3,  12.0

Preface

In this notebook we develop Mathematica tools for the Möbius differential geometry of  curves. We construct Modules for the calculation of their Möbius invariants: the natural parameter, the conformal curvatures and  the conformal Frenet frame for curves inthe  3-dimensional Möbius space. Frenet formulas for curves in the  Möbius space are deduced. They are applied to the calculation and graphical presentation of osculating spheres and circles. We express the natural conformal parameter  by  Euclidean invariants and the conformal curvatures by the coordinates of a representative of the curve in the Euclidean 3-space.  A short presentation of Euclidean curve theory is given in my paper [ECG] which together with a corresponding notebook EuCurves.nb  may be downloaded from my homepage.  To any generally curved curve in the Möbius n-sphere belongs a  so called anti-curve uniquely and equivariantly defined by the last vector of the isotropic-orthogonal Frenet frame. The calculations and examples illustrate and complete the presentation of the subject in my  yet not finished book [mdg], where one finds the general theory and more bibliographical dates. The two-dimensional case has been treated very detailed in my Mathematica notebook [mdg2D].

The notebook is designed for interactive work. Access to s. Wolfram’s  program Mathematica is a necessary condition for  using it. Some experience in using Wolfram’s programming language is recommended.  An unexperienced user could learn this language working with the notebook using the tools collected in the Help menu. Before starting to evaluate the notebookk one has to prepare  a working directory as described in the  next Section Initialization. Then the  work  always begins calling the menu item Evaluation/Evaluate Initialization Cells.  Information about a built-in  Mathematica symbol one gets calling  ?Symbol. Symbols and functions of  Wolfram Language  are detailed explained in the accompanying Help tool: Select the symbol and press F1 to read it, Example: Evaluate the next cell

?Function

Click the Link  “Local” or ”Web” to learn more.  I recommend to use the Web. The functions and symbols introduced in the loaded packages are liste in Section 1. Other more specific functions are introduced in Initialization Cells of the notebook; they are explained in the context. Section 2 containes  concepts of pseudo-Euclidean linear algebra necessary for treating differential geometry of submanifolds intheMöiusspace. Section 3 is the most important part of the notebook;  the curve theory in the 3-dimensional Möbius space is developed here.  
In the actual 4-th version of the notebook the Section 4  about curves of constant Möbius  curvatures has been added. It containes a revised version of the now obsolete notebook  [ccc].  Depending on  the conformal constant curvatures  each generally curved curve of constant curvatures has been assigned one of the following types: Euclidean, hyperbolic, or elliptic. They  are Möbius equivalent to the curves of constant metric curvatures in the geometry of their type. Section 5 gives some interesting examples.  It can be enlarged  investigating the conformal igeometry of curves contained in A. Gray’s package CURVES.m, see Subsection 1.8.

Finally I wish to express my sincere gratitude to the Mathematical Institute of the Humboldt University for giving me as a retired member  access to use the software and the website of the Institute.  In particular I thank Dr. J. Gehne and Mrs. H. Pahlisch for their help  in solving some technical problems. Also I thank 
S.. Wolfram,  M. Trott and the colleagues of Wolfram’s Technical Support Team for their interest and help in overcoming certain difficulties during my work applying Mathematica to differential geometry.

Keywords

Möbius group,  generally curved  curves, Möbius invariant natural parameter,  Möbius invariant curvatures,  anti-curve, Frenet frame,  Frenet formulas, osculating circles, osculating spheres,  isotropic-orthogonal coordinates, pseudo-orthonormal coordinates, Minkowski  space, curves of constant Möbius curvatures, one-parametric subgroups of the Möbius group.

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 under 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,  mspher.m, mcirc.m, moeb2.m, eudiffgeo.m, CURVES.m.
These packages are included into the zip-file moebpack.zip on my homepage. Before initializing the notebook copy all these packages into your working directory.

Insert the path of your working directory into the  appropriate of the next cells in this subsection, e.g.

For Windows:

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

Directory[]

For Linux:

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

Directory[]

Now give the cell corresponding to your  operating system the properties "Cell Evaluatable" and "Initialization cell" (Menu Cell/Cell properties), and inactivate the property “Cell Evaluatable” for the  cells corresponding to the other operating system. If this is done, save the notebook. Then every 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, first do the following two steps:

1. Activate Evaluation/Evaluate Initialization from the menu.

Needs["moeb2`"]

Needs["CURVES`"]

2. Set the dimension and the index:

By default this is done as follows. In this notebook we will  consider curves in  3-dimensional  space  forms.  Therefore we set the dimension dim and the index ind  of the vector space as follows:

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

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;

Important remark. The global constants dim > 0 and ind ≥ 0 appear in many functions as default arguments of the dimension and the index; without fixing it as  integers sometimes error messages will be created, and the functions will not work. The order in which the two steps of the initialization are carried out is deciding: In case you defined dim and ind already before loading the packages, they will be fixed for all the imported functions as the default value of these constants.  Defining dim and  ind  after the packages are loaded makes it possible to change them any time, if wanted or necessary.

$Assumptions

Most of our variables and functions are considered in the real domain.  Therefore we make the following default assumptions:

?$Assumptions

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

1.  Lists 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`*

1.5. Symbols in the Package mspher.m

?mspher`*

1.6. Symbols in the Package circ.m

?mcirc`*

1.7. Symbols in the Package moeb2.m

?moeb2`*

1.8. Symbols in Alfred Gray’s Package CURVES.m

Evaluate the next cell to see a catalogue of curves, programmed in Alfred Gray’s package:

?CURVES`*

1.9. Symbols in the Global Context

Evaluate the next cell to see the definitions of all symbols valid in the current Global Context:

?Global`*

2. Pseudo-Euclidean Linear Algebra

The package neuvec.m contains interesting tools enhancing Mathematica  with concepts  of pseudo-Euclidean linear algebra. In this chapter we describe some of these tools and introduce some new functions which we need in Möbius differential geometry.

2.1. Test of some Functions of neuvec.m

dim

?vec

vec[x,3]

vec[x]

?dual

dual[vec[x]]

ind

The pseudo-Euclidean scalar product used in this notebook is

?pssp

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

vec[x].dual[vec[y]]

??ide

ide[]

pssp[ide[],ide[]]

dual[vec[x]]

??normalize

normalize[vec[x]]

normalize[null[]]

normalize[{1,0,0,0,1}]

?stb

stb[4]

The matrix of the scalar product of the standard basis is

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

psgram[]//MatrixForm

?ch

ch[stb[1]]

ch[null[]]

ch[{}]

ch[{1}]

ch[{0,1}]

ch[{1,0}]

ch[{2,1,1,1}]

ch[{1,0,0,1}]

ch[{1,0,Cos[t],Sin[t]}]

normalize[{1,0,Cos[t],Sin[t]}]

ch[{0,a,b,c}]

ch[{a,0,0,0}]

Clearly, for an undefined general vector we get

ch[vec[x]]

Isotropic vectors appear with probability zero:

Table[ch[randomv[]], {i,100}]

We estimate the probabilities Pneg, Ppos for a random vector to be timelike or  spacelike,  resp.:

a1000 = Table[ch[randomv[]],{1000}];neg=0;For[ i=1,i<1001,i++,If[a1000[[i]] == -1, neg= neg+1]];
pos=0;For[ i=1,i<1001,i++,If[a1000[[i]] == 1, pos=pos+1]];Print["Pneg = ",N[neg]];Print["Ppos = ",N[pos]];neg+pos

Table[normalize[randomv[]], {i,100}];

Table[pssp[%[[i]],%[[i]]],{i,100}]

orthonorm[Table[randomv[],{i,5}]]

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

Chop[%]

orthonorm[Table[randomv[],{i,6}]];

Table[Chop[pssp[%[[i]],%[[j]]]],{i,dim},{j,dim}]//MatrixForm

?indexorder

indexorder[%%]

Table[Chop[pssp[%[[i]],%[[j]]]],{i,dim},{j,dim}]//MatrixForm

indexorder[{stb[2],stb[1] +stb[4],stb[3],stb[1]-stb[4]}]

?psfilter

?chsort

psfilter[{stb[2],stb[1] +stb[4],stb[3],stb[1]-stb[4]}]

orthonorm[{stb[2],stb[1] +stb[4],stb[3],stb[1]-stb[4]}]

psfilter[%]

indexorder[%%]

?orthopair

orthopair[stb[1]]

orthopair[stb[2]]

orthopair[stb[1] +stb[2]]

orthopair[stb[1] +2*stb[2]]

aa = randomv[]; orthopair[aa]

Table[pssp[%[[i]],%[[j]]],{i,2},{j,2}]//MatrixForm

orthopair[{1,1,0, Cos[t],Sin[t]}]

?pr

pr[stb[4]+stb[3], vec[x]]

pssp[stb[3]+stb[4],%]

pr[stb[1]+2stb[3], vec[x]]

pssp[stb[1]+2stb[3],%]

Simplify[%]

pr[vec[x], vec[x]]

pr[vec[x], vec[y]]

Simplify[pssp[vec[x],%]]

?psCross

psCross[stb[1],stb[3],stb[3],stb[4]]

psCross[stb[1],stb[2],stb[3],stb[4]]

psCross[stb[1]+stb[2],stb[3],stb[4],stb[5]]

Det[{stb[1]+stb[2],stb[3],stb[4],stb[5],vec[x]}]

Simplify[% == pssp[vec[x],%%]]

?pscross

pscross[{stb[1],stb[2],stb[3],stb[4]}]

pscross[{stb[1]+stb[2],stb[3],stb[4],stb[5]}]

2.2. Isotropic-Orthonormal  Bases

In the following  we use often the scalar product in isotropic-orthogonal coordinates, introduced  with some related constructs in the package moeb2.

?iosp

iosp[vec[x],vec[y]]

Context[iob]

?iob

iob[0]

% ==transoi[].stb[1]

Table[pssp[iob[i],iob[j]],{i,0,dim-1},{j,0,dim-1}]//MatrixForm

io[]//MatrixForm

transio[]  transforms pseudo-orthonormal coordinates into isotropic-orthonormal:

?transio

transio[]//MatrixForm

iob[4]

transio[].iob[4]

transoi is the inverse of transio :

transio[].transoi[]//MatrixForm

transio[].iob[4]

transoi[].stb[1]

%==iob[0]

?io

iosp[vec[x],vec[y]]== vec[x].io[].vec[y]

Table[iosp[stb[i],stb[j]],{i,1,dim},{j,1,dim}]==io[]

?ioCross

Simplify[ioCross[vec[x],vec[y],vec[u],vec[v]]== transio[].psCross[transoi[].vec[x],transoi[].vec[y],transoi[].vec[u],transoi[].vec[v]]]

Remark that calculating psCross the pseudo-orthonormal coordinates are used, and for  ioCross the isotropic-orthogonal coordinates.

transio[].psCross[transio[].iob[0],transio[].iob[1],transio[].iob[3],transio[].iob[4]]

transoi[].%

ioCross[transio[].iob[1],transio[].iob[2],transio[].iob[3], transio[].iob[4]]==transio[].psCross[iob[1],iob[2],iob[3],iob[4]]

transio[].psCross[iob[1],iob[2],iob[3],iob[4]]

%==-transio[].iob[4]

2.3. Conformal Embeddings of Simply Connected Space Forms

2.3.1. Spheres of Radius r

Let u be a radius vector of the point of the hypersphere u.u=r^2 in the Euclidean vector space of dimension dim -1.  Then an isotropic representative  of this point is

confsph[u_List]:= stb[1,Length[u]+1]*Sqrt[u.u] + Prepend[u,0]

confsph::usage = "confsph[u_List] maps the Euclidean n-space into the isotropic cone of the pseudo-Euclidean (n+1)-space of index 1 (in pseudo-orthogonal coordinates); the  hypersphere u.u = r^2 is mapped to the intersection of the isotropic cone with the Eucldean hyperplane x{1] = r.";

confsph[stb[4,4]]

confsph[stb[1,4]*3]

confsph[vec[x,4]]

confsph[null[4]]

cfsph[u_,v_,r_:1] := confsph[r*{Cos[u]*Cos[v],Cos[u]*Sin[v],Sin[u]}]

cfsph::usage ="cfsph[u,v,r:1] represents the point with geographic coordinates u,v of the sphere of radius r as an isotropic  representative of a point of the Moebius sphere.";

?cfsph

cfsph[u,v]

Simplify[cfsph[u,v,r],r>0]

Simplify[pssp[%,%]]

transio[] transforms the pseudo-orthonormal coordinates into the isotropic orthonormal ones:

iocfsph[u_,v_,r_:1]:=transio[4].cfsph[u,v,r]

os =Simplify[iocfsph[u,v,r],r>0]

FullSimplify[%.io[4].%]

Conversely, transoi[] transforms the isotropic orthonormal coordinates into the  pseudo-orthonormal ones:

Simplify[transoi[4].os]

The following linear combination reproduces the pseudo-orthonormal representation:

Simplify[Sum[iob[j,4]*os[[j+1]],{j,0,dim -2}]]

2.3.2. The Euclidean Space

We assume that the {x,y,z} are orthonormal Cartesian coordinates in the Euclidean space. Considering the Euclidean model with respect to isotropic-orthonormal  coordinates we defined in the package moeb2.m  the embedding function

?confeuklid

confeuklid[{x,y,z}]

Simplify[iosp[%,%]]

The inverse of confeuklid is

?euklid

euklid[confeuklid[{x,y,z}]]

In pseudo-orthogonal coordinates the isotropic representative of an Euclidean point is obtained with the transformation transoi[]:

transoi[].confeuklid[{x,y,z}]

Simplify[pssp[%,%]]

Calculating the differential of the embedding confeuklid one gets

dx[i_] :=D[confeuklid[vec[x,3]], x[i]]

dx[3]

dxx[t_] := Sum[dx[i]*t[[i]],{i,1,3}]

Simplify[iosp[dxx[vec[t,3]],dxx[vec[s,3]]]]

It follows (see also the formula for (ds^2) on p.9, section 1.2 of [mdg]):

Lemma. The  embedding confeuklid of the Euclidean n-space into the isotropic hypercone is an isometry.

In particular, the isotrop-Euclidean scalar product of the images of two tangent vectors of the model in the pseudo-Euclidean vector space may be replaced by the Euclidean scalar product of the vectors itself.

2.3.3. The Hyperbolic Space

We consider the pseudo-Euclidean model of the n-dimensional hyperbolic space: the upper 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.

The embedding as a half-hypersphere into the Möbius space is defined by the representing isotropic vector

?confhyp

confhyp[{Cosh[t], Sinh[t]}]

Simplify[pssp[%,%]]

?stepro

stepro[confhyp[{Cosh[t], Sinh[t]}]]

Plot[Coth[t/2],{ t,-5,5}]

Consider the pseudo-Euclidean hyperplane H  in the (n+1)-dimensional Minkowski  space V spanned by the origin and the first n vectors of a pseudo-orthogonal basis. Then confhyp is the inversion of the projection of the region of the isotropic cone of V defined by (Subscript[x, n+1]) ≥ 0 into H.  It is not a real point for e.g. (u^2)-(v^2)-(w^2)< 0:

confhyp[{u,v,w}]

pssp[%,%]

confhyp[{t,u}]

pssp[%,%]

pr[stb[3,3],%%]

?pr

Here is a parameter representation of the hyperbolic plane in the Möbius sphere:

hyp2D[t_,u_,r_:1] := stb[1]*Sqrt[r^2 + t^2] +stb[2]*t*Cos[u] +stb[3]*t*Sin[u] -stb[4]*r

hyp2D::usage ="hyp2D[t,u,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); t,u are polar coordinates.";

hyp2D[t,u,r]

transio[].%

%.io[].stb[1]

Simplify[%%.io[].%%]

2.3.4.  The  Map sphmap

In the following we need a function mapping the isotropic hypercone of dimension n+1 onto the n-sphere:

?sphmap

sphmap[{1,Cos[u]*Cos[v],Sin[u]*Cos[v],Sin[v]}*r]

FullSimplify[%.%]

ParametricPlot3D[%%,{u,0,2*Pi},{v,-Pi/2,Pi/2},PlotStyle->Opacity[0.2],Boxed -> False, Axes->False,Mesh -> None]

sph1 = %;

sph1::usage = "sph1 is a transparent graphic of the unit sphere.";

Here is the Möbius model of the hyperbolic plane as a hemisphere:

ParametricPlot3D[sphmap[hyp2D[t,u]],{u,0,2*Pi},{t,0,10},PlotRange -> All]

3. Curves in the Möbius Space

In this chapter we give a systematic presentation of the differential geometry of curves in the 3-dimensional Möbius space, see also [mdg].

3.1 Isotropic Representatives of Euclidean Curves

dim = 5;

Let{x,y} and {x,y,z} be orthonormal Cartesian coordinates in the Euclidean plane or the Euclidean space.

curve3D[t_] :={x[t],y[t],z[t]}

curve2D[t_] := {x[t],y[t]}

Often it is convenient to assume that t coincides with the Euclidean arc length parameter of the curve. Then the following assumptions assu are true:

assu[c_][t_] :=(c'[t].c'[t]== 1&&c'[t].c''[t]==0&&-c'[t].c'''[t]==c''[t].c''[t]&&
-c'[t] .Derivative[4][c][t]==3*c'''[t].c''[t])

?assu

Simplify[assu[curve3D][t]]

?circle3D

For shortness we define

Clear[rcircle];rcircle[r_:1][t_] := circle3D[0,0,0,0,-Pi/2,r][t]

rcircle[r][t]

FullSimplify[assu[rcircle[r]][t]]

FullSimplify[assu[rcircle[5]][t]]

FullSimplify[assu[rcircle[]][t]]

The only essential condition of assu  is the first; the other are obviously obtained by repeated derivation of the first.  Unfortunately, Mathematica doesn’t regard this automatically:

FullSimplify[assu[curve3D][t],curve3D'[t].curve3D'[t]==1]

So one has to require the necessary relations explicitly.

The standard isotropic representative of an Euclidean point in isotropic-orthogonal coordinates  is

?confeuklid

confeuklid[{x,y,z}]

iosp[%,%]

The inverse to confeuklid is the map

?euklid

euklid[confeuklid[{x,y,z}]]

Now we consider the standard isotropic representative of a curve in an Euclidean space:

?mgcurve

mgcurve[c_][t_]:=confeuklid[c[t]]

mgcurve[curve3D][t]

For shortness we set

mgcurve3D[t_]= mgcurve[curve3D][t]

Simplify[%.io[].%]

The rules for mgcurve[cu][t] corresponding to assu[cu][t] (completed with the isotropy condition) are

ASSU[cu_][t_]:=cu[t].io[].cu[t]==0&&cu'[t].io[].cu'[t]==1&&cu[t].io[].cu'[t]==0&&cu'[t].io[].cu''[t]==0&&cu[t].io[].cu''[t]==-1&&cu[t].io[].(∂_({t,3}))cu[t]==0&&cu'[t].io[].(∂_({t,3}))cu[t]+cu''[t].io[].cu''[t]==0&&cu'[t].io[].(∂_({t,4}))cu[t]==-3 cu''[t].io[].(∂_({t,3}))cu[t]

Indeed :

FullSimplify[ASSU[mgcurve3D][t],assu[curve3D][t]]

FullSimplify[assu[curve3D][t],ASSU[mgcurve3D][t]]

A parameter representative of a curve cu[t] in the isotropic cone,

iosp[cu[t],cu[t]]==0

is said to be normed if

iosp[cu'[t],cu'[t]]==1

Of course, the standard representative isn’t normed:

FullSimplify[iosp[mgcurve3D'[t],mgcurve3D'[t]]==1]

It is normed  iff  t is the arc length parameter of the corresponding Euclidean curve:

FullSimplify[iosp[mgcurve3D'[t],mgcurve3D'[t]]==1,curve3D'[t].curve3D'[t]==1]

Often we use the assumption

css =assu[curve3D][t]

This assumption implies

FullSimplify[ASSU[mgcurve3D][t],css]

These rules are not confirmed by Mathemathica, if only the arc length condition is assumed:

FullSimplify[ASSU[mgcurve3D][t],curve3D'[t].curve3D'[t]==1]

in spite of the fact that  ASSU[mgcurve3D][t]  is  True in this case.

For a general regular parameter representation one may use  the following normed representative:

nmgcurve[c_][t_]:=mgcurve[c][t]/Sqrt[c'[t].c'[t]]

nmgcurve::usage = "nmgcurve[c][t] is a normed isotropic representative of the curve c[t] in the Euclidean n-space contained in the isotropic hypercone of the pseudo-Euclidean (n+2)-space in isotropic-orthonormal coordinates.";

nmgcurve[curve3D][t]

satisfying

FullSimplify[ASSU[nmgcurve[curve3D]][t]]

For shortness we set

nmgcurve3D[t_]:= nmgcurve[curve3D][t]

Obviously, if t is the arc length of c[t] we have

FullSimplify[nmgcurve3D[t] ==mgcurve[curve3D][t], curve3D'[t].curve3D'[t]==1]

Also nmgcurve represents the curve:

euklid[nmgcurve3D[t]]

Example. Helix. Here is the parameter representation of a helix:

?helixunitspeed

helixus[a_,b_][s_]=helixunitspeed[a,b][s]

The parameter t is the arc length of the helix:

Simplify[assu[helixus[a,b]][t]]

Its isotropic representative is:

Simplify[mgcurve[helixus[a,b]][t]]

Simplify[%.io[].%]

Its tangent vector is a unit vector orthogonal to the isotropic representative:

Simplify[D[%%,t].io[].D[%%,t]]

Simplify[D[%%%,t].io[].%%%]

Here the standard representative is normed:

FullSimplify[ASSU[mgcurve[helixus[a,b]]][t]]

For the helix with its `physical` parameter representation

helix[a,b][t]

the standard representative doesn’t satisfy ASSU:

FullSimplify[ASSU[mgcurve[helix[1,2]]][t]]

since it isn`t normed. The normed representative satisfies ASSU:

FullSimplify[ASSU[nmgcurve[helix[1,2]]][t]]

■

3.2. A Special 2nd Order Frame

3.2.1. Definition of the Frame

Now we construct a special moving frame mfre2[i][c][t], i= 0,...,4, adapted to the osculating spaces

(Subscript[B, i])[t]:= span[c[t],c'[t],...,(c^((i)))[t]],

for i=0,1,2  of the isotropic representative c[t] of the curve, see also Lemma 3.1.7 and formulas (15), (16), p. 58, of [mdg].  The general assumption is

Assumption. The vector function c[t] is a normed standard isotropic representative of the curve c[t]:

ASSU[c][t]==  True

We start with

mfre2[0][c_][t_]:=  c[t]

and the tangent vector

mfre2[1][c_][t_]:= c'[t]

The next vector is the uniquely defined isotropic vector such that 
{mfre2[0][c][t], mfre2[1][c][t], mfre2[4][c][t] }  is an isotropic orthonormal basis of the 2-nd order osculating space  (Subscript[B, 2])[t]:

mfre2[4][c_][t_]:= c''[t]+c[t]*iosp[c''[t],c''[t]]/2

In these and the following definitions of the frame vectors we use implicitly the normed condition; thus we don’t have to restrict to curves with arc length parameter t.The standard isotropic representative of a curve in the Euclidean 3-space is

nmgcurve3D[t]

We show  the relations of an isotropic orthonormal basis of the second order osculating space  (Subscript[B, 2])[t]:

FullSimplify[iosp[mfre2[0][nmgcurve3D][t],mfre2[0][nmgcurve3D][t]]==0]

FullSimplify[iosp[mfre2[0][nmgcurve3D][t],mfre2[1][nmgcurve3D][t]]==0]

FullSimplify[iosp[mfre2[0][nmgcurve3D][t],mfre2[4][nmgcurve3D][t]]]

FullSimplify[iosp[mfre2[1][nmgcurve3D][t],mfre2[1][nmgcurve3D][t]]]

FullSimplify[iosp[mfre2[1][nmgcurve3D][t],mfre2[4][nmgcurve3D][t]]]

FullSimplify[iosp[mfre2[4][nmgcurve3D][t],mfre2[4][nmgcurve3D][t]]]

We complete this basis to an isotropic-orthonormal moving frame of the curve by choosing mfre2[2],mfre2[3] as smooth orthonormal basis of the orthogonal complement of the osculating spaces (Subscript[B, 2])[t] . In Proposition 3.1.8, p. 59, of [mdg] a special moving frame of 3rd order for a curve without 2-flat points has been defined. We take the formula for the vector (Subscript[𝔠, 2])  as given in the Proposition to define the vector mfre2[2] of a frame of second order:

mfre2[2][c_][t_]:=Module[{fra,u},fra[u_]:=c[u]*iosp[c''[u],c'''[u]] + c'[u]*iosp[c''[u],c''[u]]+ c'''[u];
fra[t]/Sqrt[iosp[fra[t],fra[t]]]]

Timing[FullSimplify[mfre2[2][nmgcurve3D][t]]]

Mathematica 12.0 needed 519 s  for this simplification, Mathematica v.8.01 needed 130 s only!
OK. We define the last vector of the frame using

?iocross

mfre2[3][c_][t_]:= -iocross[{mfre2[0][c][t],mfre2[1][c][t],mfre2[2][c][t],mfre2[4][c][t]}]

mfre2::usage = "For the  isotropic curve c[t] in the isotropic cone of a 5-dimensional Minkowski space satisfying iosp[c'[t],c'[]]==1 the vectors {mfre2[i][c][t]},i = 0,..,4, are a special moving isotropic orthonormal frame of 2nd order of c[t] in the 5-dimensional Minkowski space.";

Timing[FullSimplify[Table[iosp[mfre2[i][nmgcurve3D][t],mfre2[j][nmgcurve3D][t]],{i,0,4},{j,0,4}],TimeConstraint-> Infinity]]

Mathematica v. 8.0.1 needed  4646 s = 78 min  to obtain the confirming result, Mathematica v. 12.0 needed  16254.4 s = 271 min !

If t is assumed to be the Euclidean arc length the used time is shorter:

Timing[FullSimplify[Table[iosp[mfre2[i][mgcurve3D][t],mfre2[j][mgcurve3D][t]],{i,0,4},{j,0,4}],css, TimeConstraint-> Infinity]]

Mathematica v. 8.0.1 needed  10 s o obtain the confirming result, Mathematica v. 12.0 needed 11.4514 s.

Timing[FullSimplify[Det[{mfre2[0][nmgcurve3D][t],mfre2[1][nmgcurve3D][t],mfre2[2][nmgcurve3D][t],mfre2[3][nmgcurve3D][t],mfre2[4][nmgcurve3D][t]}],TimeConstraint-> Infinity]]

Mathematica v. 8.0.1 needed  2324.26 s = 39 min to obtain the result 1.
Mathematica 12.0 needed 8905.63 s = 148 min.

Timing[FullSimplify[Det[{mfre2[0][nmgcurve3D][t],mfre2[1][nmgcurve3D][t],mfre2[2][nmgcurve3D][t],mfre2[3][nmgcurve3D][t],mfre2[4][nmgcurve3D][t]}],css,TimeConstraint-> Infinity]]

Mathematica v. 8.0.1 needed  2346.46 s = 39 min to obtain the result 1.
Mathematica 12.0 needed 7585.03 = 126 min.

Proposition.  Let curve3D[t] be a generally curved  regular curve in the Euclidean 3 - space without 2-flat points. The frame {mfre2[i][nmgcurve3D][t]} is an isotroic orthonormal, positively oriented moving frame of the normed  isotropic representative nmdgcurve3D[t], adapted to the osculating spaces, see [mdg],(3.1.2),p. 53:
(Subscript[B, 0])[t] = [mfre2[0][c][t]];           (Subscript[B, 1])[t] = [mfre2[0][c][t], mfre2[1[c][t]];
  (Subscript[B, 2])[t] = [mfre2[0][c][t], mfre2[1[c][t]],  mfre2[4][c][t]];
  (Subscript[B, 3])[t] = [mfre2[0][c][t], mfre2[1[c][t]],  mfre2[4][c][t], mfre2[2][c][t]]. ■

Remark. The statement about   (Subscript[B, 3])[t] is clear by the definition of mfre2[2][c][t]. Moreover, the vector  mfre2[2][c][t] is uniquely defined  up to sign  as the unit normal vector of    (Subscript[B, 2])[t]  in   (Subscript[B, 3])[t] . The condition

iosp[mfre2[4][c]'[t],mfre2[2][c][t]]>0

defines it uniquely. Of course, then also mfre2[3][c][t] is uniquely defined.

Timing[FullSimplify[ iosp[mfre2[2][nmgcurve3D][t],mfre2[4][nmgcurve3D]'[t]],TimeConstraint->Infinity]]

Mathematica v. 8.0.1 needed 97 s  to obtain the result 1.
Mathematica 12.0 needed 349 s.

Timing[FullSimplify[ iosp[mfre2[1][nmgcurve3D][t],mfre2[4][nmgcurve3D]'[t]],css,TimeConstraint->Infinity]]

Mathematica v. 8.0.1 needed 2  s  for this calculation.
Mathematica 12.0 needed 2.7 s.

Timing[FullSimplify[ iosp[mfre2[2][nmgcurve3D][t],mfre2[4][nmgcurve3D]'[t]],css,TimeConstraint->Infinity]]

Mathematica v. 8.0.1 needed  39 s  for this calculation.
Mathematica 12.0 needed 576 s.

Timing[FullSimplify[ iosp[mfre2[3][nmgcurve3D][t],mfre2[4][nmgcurve3D]'[t]],css,TimeConstraint->Infinity]]

Mathematica v. 8.0.1 needed 572  s == 9.5 min  for this calculation.
Mathematica 12.0 needed 1542 s = 25.7 min.

3.2.2. Examples

We consider some examples to control the effectivity of the definition of the frame.

Example 1. Helix.

mghelixus[a_,b_][t_]:= mgcurve[helixus[a,b]][t]

FullSimplify[ASSU[mghelixus[a,b]][t]]

FullSimplify[Table[iosp[mfre2[i][mghelixus[a,b]][t],mfre2[j][mghelixus[a,b]][t]],{i,0,4},{j,0,4}],{a>0,b>0}]//MatrixForm

FullSimplify[Det[{mfre2[0][mghelixus[a,b]][t],mfre2[1][mghelixus[a,b]][t],mfre2[2][mghelixus[a,b]][t],mfre2[3][mghelixus[a,b]][t],mfre2[4][mghelixus[a,b]][t]}],{a>0,b>0}]

OK. We obtained an isotropic-orthonormal positively oriented moving frame. Now we calculate the frame vectors:

FullSimplify[mfre2[0][mghelixus[a,b]][s]]

FullSimplify[mfre2[1][mghelixus[a,b]][s]]

FullSimplify[mfre2[2][mghelixus[a,b]][t],{a>0,b>0}]

FullSimplify[mfre2[3][mghelixus[a,b]][t],{a>0,b>0}]

FullSimplify[mfre2[4][mghelixus[a,b]][t],{a>0,b>0}]

The parameter t of the helixus curve is the Euclidean arc length:

FullSimplify[helixus[a,b]'[t].helixus[a,b]'[t]]

We test the same for the helices with the usual parameter:

?helix

helix[a,b][t]

nmghelix[a_,b_][t_]= FullSimplify[nmgcurve[helix[a,b]][t]]

with arbitrary parameter t.

FullSimplify[Table[iosp[mfre2[i][nmghelix[a,b]][t],mfre2[j][nmghelix[a,b]][t]],{i,0,4},{j,0,4}],{a>0,b>0}]//MatrixForm

FullSimplify[Det[{mfre2[0][nmghelix[a,b]][t],mfre2[1][nmghelix[a,b]][t],mfre2[2][nmghelix[a,b]][t],mfre2[3][nmghelix[a,b]][t],mfre2[4][nmghelix[a,b]][t]}],{a>0,b>0}]

OK. We obtained an isotropic-orthonormal positively oriented moving frame. Now we calculate the frame vectors:

FullSimplify[mfre2[0][nmghelix[a,b]][t]]

FullSimplify[mfre2[0][mghelixus[a,b]][t]]

FullSimplify[mfre2[1][nmghelix[a,b]][t]]

FullSimplify[mfre2[1][mghelixus[a,b]][t],{a>0,b>0}]

FullSimplify[mfre2[2][nmghelix[a,b]][t],{a>0,b>0}]

FullSimplify[mfre2[2][mghelixus[a,b]][t],{a>0,b>0}]

FullSimplify[mfre2[3][nmghelix[a,b]][t],{a>0,b>0}]

FullSimplify[mfre2[3][mghelixus[a,b]][t],{a>0,b>0}]

Also for this general representation of the helix the calculations run fast  and confirmed the statement about the moving frame.

■
Example 2. Circles.

Circles considered as space curves are

rcircle[r][t]

Circles are very special curves: they are orbits of a rotation group, being a subgroup of the orthogonal and the Möbius group. In the Möbius geometry all circles are locally equivalent; remember that lines in Möbius geometry are not defined; under stereographic projection lines are the circles containing the projection center: the “North pole”. Circles and lines are characterized as curves all of its points are 2-flat, see [mdg]pp. 50 -> 52, Proposition 3.1.3. We show that all points of a circle are 2-flat:
Consider

cir[t_] =Simplify[nmgcurve[rcircle[r]][t],r>0]

MatrixRank[{cir[t],cir'[t],cir''[t]}]

MatrixRank[{cir[t],cir'[t],cir''[t],cir'''[t]}]

The property

%==%%

shows the 2 - flatness.
We  test the definition of the frame vectors of  a circle:

FullSimplify[mfre2[0][cir][s],r>0]

FullSimplify[iosp[%,%]]

FullSimplify[mfre2[1][cir][s],r>0]

FullSimplify[iosp[%,%]]

FullSimplify[mfre2[4][cir][t],r>0]

FullSimplify[iosp[%,%]]

FullSimplify[iosp[mfre2[0][cir][t],mfre2[4][cir][t]],r>0]

Since circles are the special class of curves all of their points are  2-flat (or of type (Subscript[A, 2]^0)  (see [mdg], p. 56), the next two vectors aren’t defined:

FullSimplify[mfre2[2][cir][t],r>0]

FullSimplify[mfre2[3][cir][t],r>0]

■
Example 3. Elliptical Helix.

ellhel[a_,b_][t_]:={a*Cos[t],Sin[t],b*t}

ParametricPlot3D[ellhel[2,1][t],{t,-4*Pi,4*Pi}]

mgellhel[a_,b_][t_]=FullSimplify[nmgcurve[ellhel[a,b]][t]]

Now we calculate the frame vectors:

frehe[0]=FullSimplify[mfre2[0][mgellhel[2,1]][t]]

frehe[1]=FullSimplify[mfre2[1][mgellhel[2,1]][t]]

frehe[4]=FullSimplify[mfre2[4][mgellhel[2,1]][t]]

FullSimplify[mfre2[2][mgellhel[2,1]][t],TimeConstraint-> Infinity]

Mathematica 8.0.1 needed 5 s for this calculation, Mathematica 12 used 10 s.

frehe[2]=%;

Timing[FullSimplify[mfre2[3][mgellhel[2,1]][t],TimeConstraint -> Infinity]]

frehe[3]=%[[2]];

frehe[4]

Timing[FullSimplify[Table[iosp[frehe[i],frehe[j]],{i,0,4},{j,0,4}],TimeConstraint->Infinity]]

Mathematica 8.0.1 needed1.3  s for this calculation, Mathematica 12 needed 14 s.

Timing[FullSimplify[Det[{frehe[0],frehe[1],frehe[2],frehe[3],frehe[4]}],TimeConstraint->Infinity]]

Mathematica 8.0.1 needed 110 s for this calculation, Mathematica v. 12: ....? after more than 10 hours without result!
OK. We obtained an isotropic-orthonormal positively oriented moving frame. ■

3.2.3.  The Derivation Equations of the Frame mfre2[i}[mgcurve3D][t]

We check the derivation equations (17), Lemma 7, p. 58 of [mdg].

nmgcurve3D[t]

FullSimplify[iosp[%,%]]

FullSimplify[D[mfre2[0][mgcurve3D][t],t]== mfre2[1][mgcurve3D][t]]

FullSimplify[D[mfre2[0][nmgcurve3D][t],t]]

FullSimplify[iosp[%,%]]

It follows:  nmgcurve3D][t] is a normed isotropic representative of

euklid[nmgcurve3D[t]]

By the definition one has

FullSimplify[D[mfre2[0][nmgcurve3D][t],t]== mfre2[1][nmgcurve3D][t]]

FullSimplify[D[mfre2[1][nmgcurve3D][t],t]==- mfre2[0][nmgcurve3D][t]*iosp[mfre2[0][nmgcurve3D]''[t],mfre2[0][nmgcurve3D]''[t]]/2+mfre2[4][nmgcurve3D][t]]

Thus the first two equations of (17) are confirmed.  Under the assumption css the last equation may be specialized to

FullSimplify[D[mfre2[1][nmgcurve3D][t],t]== - mfre2[0][nmgcurve3D][t]*((curvature[curve3D][t] )^2)/2+mfre2[4][nmgcurve3D][t],css]

with the Euclidean

?curvature

Remark. Without the assumption css the last equation  isn’t true! Test it:

FullSimplify[D[mfre2[1][nmgcurve3D][t],t]+ mfre2[0][nmgcurve3D][t]*((curvature[curve3D][t] )^2)/2-mfre2[4][nmgcurve3D][t]]

FullSimplify[%,css]

In particular, it follows :

Timing[FullSimplify[iosp[D[mfre2[1][nmgcurve3D][t],t],mfre2[2][nmgcurve3D][t]]]]

Timing[FullSimplify[iosp[D[mfre2[1][nmgcurve3D][t],t],mfre2[3][nmgcurve3D][t]]]]

Mathematica v. 8 needed 526 s, v.12  1866 s=  31 min.

Timing[FullSimplify[iosp[D[mfre2[2][nmgcurve3D][t],t],mfre2[0][nmgcurve3D][t]]]]

Timing[FullSimplify[iosp[D[mfre2[3][nmgcurve3D][t],t],mfre2[0][nmgcurve3D][t]]]]

The last two calculation aren’t necessary since by the product rule one calculates instead e.g.

Timing[FullSimplify[iosp[D[mfre2[0][nmgcurve3D][t],t],mfre2[3][nmgcurve3D][t]]]]

and this results simpler using

D[mfre2[0][nmgcurve3D][t],t]== mfre2[1][nmgcurve3D][t]

and the pseudo-orthogonality of the frame. It follows

Lemma 1. For the special moving frame mfre2[i]n[ngcurve3D][t] the differential  of the tangent vector mfre2[1][mgcurve3D][t] is a linear combination of the vectors mfre2[0][mgcurve3D][t] and mfre2[4][mgcurve3D][t]. Therefore we have (Subscript[ω, 1]^2) = (Subscript[ω, 1]^3)=0. These conditions characterize the moving frames of second order.
Proof see [mdg],  formula (3.1.2), p.53, and the two equations above . ■
Thus the special frame mfre2[i][c][t] is of the second order.

To calculate the other coefficients of the structure form we apply the symmetry formulas (23), p.18 of [mdg].I t follows

ω[1,2]==-ω[2,1]==ω[1,3]== -ω[3,1]== 0.

Summarizing we formulate

Proposition. The matrix of {ω[j,i]} of the Frenet formulas of second order  of a regularly curved curve in the Möbius 3-space

mfre2[i][mgcurve3D]'[t] == Sum[mfre2[j][nmgcurve3D][t]*ω[j,i],{j,0,4}]

is the second order structure form

(Subscript[ω, 2]) =  Table[ω[k,i], {k,0,4},{i,0,4}]/.{ω[0,0]-> 0,ω[0,4]-> 0,ω[1,1]-> 0,ω[1,2]-> 0,ω[1,3]-> 0,ω[2,0]-> 0,ω[2,1]-> 0,ω[2,2]-> 0,ω[3,0]-> 0,ω[3,1]-> 0,ω[3,1]-> 0,ω[3,2]-> -ω[2,3],ω[3,3]-> 0,ω[4,0]-> 0,ω[4,2]-> 0,ω[4,3]-> 0,ω[4,4]-> 0,ω[1,0]-> (Subscript[ω, 1]),ω[4,1]-> (Subscript[ω, 1]),ω[1,4]->ω[0,1],ω[2,4]->ω[0,2],ω[3,4]->ω[0,3]}//MatrixForm

with

(Subscript[ω, 1])= ω[1,0]

ω[i,j ]:= iosp[mfre2[i][nmgcurve3D][t],mfre2[j][nmgcurve3D]'[t]]

for  i= 1,2,3, j=0,1,2,3,4,

ω[0j ]:=- iosp[mfre2[4][nmgcurve3D][t],mfre2[j][nmgcurve3D]'[t]]

for j =1,2,3,4,

ω[4,j ]:=- iosp[mfre2[0][nmgcurve3D][t],mfre2[j][nmgcurve3D]'[t][]

for j =1,2,3,4,

Timing[FullSimplify[ iosp[mfre2[3][nmgcurve3D][t],mfre2[2][nmgcurve3D]'[t]],TimeConstraint->Infinity]]

After more than 7 h Mathematica v. 8.0.1 left the program without a result or message.
Mathematica v.  12: Aborted without result after 3 h.

Timing[FullSimplify[ iosp[mfre2[3][nmgcurve3D][t],mfre2[2][nmgcurve3D]'[t]],css,TimeConstraint->Infinity]]

Mathematica 12.0 needed 10057 s = 167 min to get an explicit large formula.

3.3.  The Natural Parameter

All the coefficients of the derivation equations of a moving frame depend on the parameter t of the parameter representation of the curve. Under a parameter transformation (schematically)

s=f[t], (OverHat[𝔠])[i][s] =  𝔠[i][f[t]]

they change as

(OverHat[ω])[i,j][s]=ω[i,j][f[t]]*f'[t]:

(OverHat[ω])[i,j] =iosp[ ((d (OverHat[𝔠])[i])/ds), (OverHat[𝔠])[j][s]] =iosp[((d𝔠[i])/dt),𝔠[j][f[t]]]*f'[t]

To get Frenet type formulas with invariant coefficients we have to find a canonical parameter.  In [mdg] we defined the parameter function lambda to obtain the natural conformal  (or Möbius) parameter s by ds = dt/lambda,  see formulas (3.1.23-24), p.59, “Liebmann’s formula”, where lambda is

lambda::usage = "ds = dt/lambda[repr][t] is the differential of the natural conformal (or Moebius) parameter of a curve without 2-flat points in the Moebius space isotropically represented by the normed representation repr[t].";

Clear[c,t,lambda];lambda[c_][t_] :=(D[c[t],{t, 3}].io[].D[c[t],{t,3}]-(D[c[t],{t, 2}].io[].D[c[t],{t, 2}])^2)^(-1/4)

For shortness we set for the normed representative of mgcurve3D[t] of

curve3D[t]

lambda3D[t_]=FullSimplify[lambda[nmgcurve3D][t]]

We prove another  identity  expressing lambda3D[t] by Euclidean invariants of the curve.  Consider  the Euclidean Frenet frame of  curve3D[t], t the arc length parameter:

?frenet

Clear[eufre];eufre[i_][t_]:=FullSimplify[ frenet[curve3D][t][[i]],css]

eufre[1][t]

eufre[2][t]

eufre[3][t]

Timing[FullSimplify[D[curve3D[t],{t,3}].D[curve3D[t],{t,3}]-(curvature[curve3D][t])^4 - (D[curvature[curve3D][t],t])^2-(curvature[curve3D][t]*torsion[curve3D][t])^2,css,TimeConstraint-> Infinity]]

Resullt : Mathematica  8.0.1: {121.625,0}, Mathematica 12.0: {530.507,0}.
Since

Simplify[(curvature[curve3D][t])^4 == (curve3D''[t].curve3D''[t])^2,css]

we obtain

Timing[FullSimplify[lambda3D[t] ==((D[curvature[curve3D][t],t])^2 + (curvature[curve3D][t]*torsion[curve3D][t])^2)^(-1/4),css,TimeConstraint-> Infinity]]

Mathematica v. 8.0.1 needed 1341 s to confirm this identity; 
Mathematica 12.0:  1637 s.
We summarize

Proposition 1.  Let curve3D[t] be a smooth regular curve without 2-flat points in the Euclidean space. Then there exists a uniquely up to an integration constant defined Möbius-invariant parameter s obtained as the integral

s[t] = ∫(1/(lambda3D[t]))\[DifferentialD]t,

lambda[t] the function defined above using the normed isotropically ortnonormal parameter representation nmgcurve3D[t].  If t  is the Euclidean arc length of the curve the function lambda[t] can be expressed by the Euclidean invariants of the curve, the curvature k[t] and the torsion κ[t] as functions of the arc length t:

Liebmann´s Formula:lambda3D[t]= (((k'[t]^2 + k[t]^2*κ[t]^2))^(-1/4)). ■

This is formula (27) in [mdg], p. 61, which goes back to H. Liebmann, and can be found also in the book of T. Takasu, see the hints in [mdg].

In the book W. Blaschke, G. Thomsen [BT] , § 25, p.108,  one finds the following formula for the differential of the Möbius parameter s of a plane curve with the isotropic representative  x[t], t an arbitrary parameter:

dS=dt (Sqrt[((Abs[(Det[(Det({x,x',x'', Derivative[3][x]})])])/((pssp(x', x'))^2))])

The parameter S has been found by G. Pick and is known under the name Pick's invariant.  One easily checks that dS does not depend on the choice of the representative  or the parameter representation.  We define now a similar expression for curves in the Euclidean 3-space.

dS3D::usage = "dS3D[c][t] is the derivative of the natural conformal parameter of a curve without 2-flat points in the Euclidean 3-space, with the normed isotropic representatives c[t] in isotropic-orthogonal coordinates. The 2-flat points yield singularities of dS3D[c][t].";

Clear[c,dS3D,c,t];dS3D[c_][t_] := Module[{x,s,mm,fS},
If[Not[Length[c[t]]==5],Print["Incorrect argument!"];Return[]];
x[s_] = transoi[].c[s];
mm[s_] =pscross[Table[D[x[s],{s,i}],{i,0,3}]];
fS[s_] = Sqrt[pssp[mm[s],mm[s]]];
Return[Sqrt[fS[t]]]]

Timing[FullSimplify[dS3D[nmgcurve3D][t],css,TimeConstraint->Infinity]]

Timing[FullSimplify[(dS3D[nmgcurve3D][t])^4 - (1/lambda[nmgcurve3D][t])^4, TimeConstraint-> Infinity]]

Since both functions are positive, we conclude:
Proposition 2. Under the assumptions of Proposition 1 the differential of the Möbius parameter can be expressed by

dS3D[nmgcurve3D][t] == 1/lambda[nmgcurve3D][t].   ■

cy[s_]:= curve3D[f[s]]

yy[s_ ]=nmgcurve[cy][s]

Timing[FullSimplify[dS3D[yy][s], f'[s]>0]]

FullSimplify[%[[2]]/(dS3D[nmgcurve3D][t]/.t->f[s])]

Summarising we formulate:
Proposition 3. Under the assumption of Proposition 1 the natural  conformal parameter s of the space curve cy[t] can be calculated by each the formulas

s[cy_][t_] = ∫(1/(lambda[nmgcurve[cy]][t]))\[DifferentialD]t,

s[cy_][t_] = ∫dS3D[nmgcurve[cy]][t]\[DifferentialD]t.

As an indefinite integral  the function s[cy[[t] is defined uniquely up to an additive constant. The natural conformal parameter is invariant under Möbius transformations and under parameter transformations with f’[t]>0, changing its sign under transformations with f’[t]<0. The integrands are densities satisfying

dS3D[nmgcurve[cy]][t]== (1/(lambda[nmgcurve[cy]][t])). ■

Remark. The last  formula shows that the natural parameter doesn’t depend  neither on the  parameter representation nor on a chosen frame in the 5-dimensional pseudo-Euclidean vector space. ■

Example.  Helix:

FullSimplify[(dS3D[nmgcurve[helix[a,b]]][t])]

FullSimplify[1/lambda[nmgcurve[helix[a,b]]][t]]

■
Example.  Circle. For a circle the natural conformal parameter can’t be defined; we obtain

dS3D[mgcurve[rcircle[]]][t]

Simplify[1/lambda[mgcurve[rcircle[]]][t]]

MatrixRank[Table[D[mgcurve[rcircle[]][t],{t,i}],{i,0,3}]]

MatrixRank[Table[D[mgcurve3D[t],{t,i}],{i,0,3}]]

■
Points of a regular curve for which the corresponding rank is less than 4 are named M-flat (or 2-flat). It can be shown that a curve all of its points are 2-flat is Möbius equivalent to a part of a circle, see [mdg] Proposition 3.1.3, p. 52. A curve is said to be generally curved (or of  type (Subscript[A, 2])), if none of its points is 2-flat. In the following we mostly assume that the considered curves are generally curved; 2-flat points must be excluded.

3.4. A Special Third Order Frame

3.4.1.  A  Moving Frame of  Third Order

We start with the special frame of second order {mfre2[i][c][t]}defined in Subsection 3.2. It is adapted to the osculating spaces, see Proposition 3.2.3 above, and   the vectors mfre2[2[c][t]],  mfre2[3][c][t] span the orthogonal complement of  (Subscript[B, 2])[t], and mfre2[2[c][t]]is the normal vector of (Subscript[B, 2])[t] in (Subscript[B, 3])[t] uniquely defined up to sign. All other adapted frames are related to the special frame by the decomposition

ad2[a_,b_][0][c_][t_]:= mfre2[0][c][t]/a;
ad2[a_,b_][1][c_][t_]:= mfre2[0][c][t]*b/a + mfre2[1][c][t];
ad2[a_,b_][4][c_][t_]:= mfre2[0][c][t]*(b^2)/(2*a) + mfre2[1][c][t]*b + mfre2[4][c][t]*a ;
ad2[a_,b_][2][c_][t_]:= mfre2[2][c][t];
ad2[a_,b_][3][c_][t_]:=  mfre2[3][c][t]

This definition coincides with the transformation rule of second order frames, compare with matrix (3.1.4),  p. 55, or (3.1.6), p. 56 of [mdg], with changed notations: a -> b,  lambda -> a.  We test the orthogonality relations:

Timing[FullSimplify[Table[iosp[ad2[a,b][i][nmgcurve3D][t],ad2[a,b][j][nmgcurve3D][t]],{i,0,4},{j,0,4}],a>0,TimeConstraint-> Infinity]]

Mathematica 8.0 .1 needed 4845 s =  1 h 21  min to confirm the relations.
Mathematica 12.0 needed 21768 s = 213 min = 3 h 33 min.

Timing[FullSimplify[Det[Table[ad2[a,b][j][nmgcurve3D][t],{j,0,4}]],a>0,TimeConstraint-> Infinity]]

Mathematica v. 8.0 .1 needed 2367 s =  38min to calculate the result 1,
Mathematica 12.0 needed 8973 s = 150 min = 2 h 30min.

Since the structure group (Subscript[H, 2]) ⊂(Subscript[H, 1]) of second order is characterized as a subgroup of (Subscript[H, 1]) by 
(Subscript[b, 2]) = (Subscript[b, 3 ])= 0, compar  the matrices on pp.54, 55 of [mdg],  we have to find canonical values of the coefficients

ω[k,0]=-iosp[(Subscript[d𝔠, k]),(Subscript[𝔠, 4])] = iosp[(Subscript[d𝔠, 4]),(Subscript[𝔠, k])], k= 2, 3.

We calculate

Timing[FullSimplify[iosp[D[ad2[a,b][4][nmgcurve3D][t],t],ad2[a,b][3][nmgcurve3D][t]],TimeConstraint->Infinity]]

Mathematica 8.0 .1 needed  595 s for this result.

The coefficient  ω[3,0] doesn’t depend on a,b; it equals 0 for all values a,b. To obtain the canonical value ω[2,0]=1 we define the frame (see Proposition 3.1.8, p.59 of [mdg]):

Clear[mfre3];
mfre3[0][c_][t_]:= mfre2[0][c][t]/(lambda[c][t]);
mfre3[1][c_][t_]:= mfre2[1][c][t];
mfre3[2][c_][t_]:= mfre2[2][c][t];
mfre3[3][c_][t_]:= mfre2[3][c][t];
mfre3[4][c_][t_]:= mfre2[4][c][t]*(lambda[c][t])

Of course, this frame is isotropic-orthonormal:

Timing[FullSimplify[Table[iosp[mfre3[i][nmgcurve3D][t],mfre3[j][nmgcurve3D][t]],{i,0,4},{j,0,4}],TimeConstraint-> Infinity]]

Mathematica v. 8.0.1 needed 4915 s = 1 h 22 min for this calculation.
The frame is positively oriented:

Timing[FullSimplify[Det[{mfre3[0][nmgcurve3D][t],mfre3[1][nmgcurve3D][t],mfre3[2][nmgcurve3D][t],mfre3[3][nmgcurve3D][t],mfre3[4][nmgcurve3D][t]}],TimeConstraint-> Infinity]]

Mathematica v. 8.0.1 needed 2513 s = 42 min for this calculation.

To test  that this file is of third order we calculate

Timing[FullSimplify[iosp[D[mfre3[4][nmgcurve3D][t],t],mfre3[2][nmgcurve3D][t]],TimeConstraint->Infinity]]

Mathematica v. 8.0.1 needed 3407 s = 56 min for this calculation.

Timing[FullSimplify[iosp[D[mfre3[4][nmgcurve3D][t],t],mfre3[3][nmgcurve3D][t]],TimeConstraint->Infinity]]

Mathematica v. 8.0.1 needed 1817 s = 30 min for this calculation.

Thus we proved
Lemma.  {mfre3[i][nmgcurve3D][t]}, i=0,...,4, is a special isotropic-orthonormal frame of third order of the curve  nmgcurve3D][t]. ■

In the next Subsection we calculate  the  coefficients ω[i,0], i = 2, 3,  for some examples.

3.4.2.  Examples

We use the function

?nmgcurve

to consider some examples. For an arbitrary  regular curve

curve3D[t]

one obtains

nmgcurve[curve3D][t]

It is a normed isotropic representative since it satisfies

FullSimplify[ASSU[nmgcurve[curve3D]][t]]

Example 1.  The Helix

ParametricPlot3D[helix[2,1][t],{t,-6,6}]

nmghel[t_]:=nmgcurve[helix[2,1]][t]

FullSimplify[ASSU[nmghel][t]]

Timing[FullSimplify[-iosp[D[mfre3[2][nmghel][t],t],mfre3[4][nmghel][t]],TimeConstraint->Infinity]]

The parameter invariant coefficient is obtained  by multiplication with 
dt/ds = lambda[nmghel][t]:

FullSimplify[lambda[nmghel][t]]

thus it equals 1.

Timing[FullSimplify[-iosp[D[mfre3[4][nmghel][t],t],mfre3[3][nmghel][t]],TimeConstraint->Infinity]]

Ok.

■
Example 2 E lliptical Helix.

ellhel[a_,b_][t_]:={a*Cos[t],Sin[t],b*t}

ParametricPlot3D[ellhel[2,1][t],{t,-4*Pi,4*Pi}]

nmgellhel[a_,b_][t_]=FullSimplify[nmgcurve[ellhel[a,b]][t]]

Timing[FullSimplify[iosp[D[mfre3[4][nmgellhel[2,1]][t],t],mfre3[2][nmgellhel[2,1]][t]],TimeConstraint->Infinity]]

FullSimplify[%[[2]]*lambda[nmgellhel[2,1]][t]]

Timing[FullSimplify[-iosp[D[mfre3[4][nmgellhel[2,1]][t],t],mfre3[3][nmgellhel[2,1]][t]],TimeConstraint->Infinity]]

Ok.

Example 3. A general Parabola

parabol[n_][t_] := {t,t^n,1}

ParametricPlot3D[parabol[5][t],{t,-1,1}]

nmgparabol[n_][t_]:= nmgcurve[parabol[n]][t]

nmgparabol[5][t]

FullSimplify[ASSU[nmgparabol[5]][t]]

Timing[FullSimplify[iosp[D[mfre3[4][nmgparabol[5]][t],t],mfre3[2][nmgparabol[5]][t]],TimeConstraint->Infinity]]

FullSimplify[%[[2]]*lambda[nmgparabol[5]][t]]

Timing[FullSimplify[-iosp[D[mfre3[4][nmgparabol[5]][t],t],mfre3[3][nmgparabol[5]][t]],TimeConstraint->Infinity]]

Ok.

Example 4. ast3d

?ast3d

ast3d[n,a,b][t]

ParametricPlot3D[ast3d[1,1,1][t] ,{t,0,2*Pi}]

nmgast3d[t_]=FullSimplify[ nmgcurve[ast3d[1,1,1]][t],t>0]

Timing[FullSimplify[iosp[D[mfre3[4][nmgast3d][t],t],mfre3[2][nmgast3d][t]],t>0,TimeConstraint->Infinity]]

Mathematica 12.0 needed 9221 s =  154 min to obtain this result.
Mathematica8.0.1 needed 7727s =  30 min to obtain this result.

FullSimplify[%[[2]]*lambda[nmgast3d][t],t>0,TimeConstraint->Infinity]

Timing[FullSimplify[-iosp[D[mfre3[4][nmgast3d][t],t],mfre3[3][nmgast3d][t]],TimeConstraint->Infinity]]

Mathematica8.0.1 needed 7739 s =  30 min to obtain this result, Mathematica 12.0 needed 9157 s = 153 min.. ■

3.5. TheMöbius-Geometric Frenet Frame for Curves in the Möbius Space

3.5.1. Frenet Frame and Conformal Curvatures

The transformation formulas on p. 62, [mdg]show that in case n=3 there is only one free parameter  a in the structure group (Subscript[H, 3]) of the third order frame bundle. By E. Cartan’s method we have to consider the transformation rule of the coefficient (Subscript[ω, 0]) = (Subscript[ω, 0]^0). This has been done there and leads to equation (30):
  a = (Subscript[c, 0])==- iosp[dmfre3[0]’,mfre3[4]].  We calculate

Timing[FullSimplify[iosp[D[mfre3[0][nmgcurve3D][t],t],mfre3[4][nmgcurve3D][t]],TimeConstraint->Infinity]]

If it is assumed that t is the Euclidean arc length of the curve one gets a simpler formula:

Timing[FullSimplify[iosp[D[mfre3[0][nmgcurve3D][t],t],mfre3[4][nmgcurve3D][t]],css,TimeConstraint->Infinity]]

In the general case we define the transformation coefficient a as the function

ha[c_][t_]:=- iosp[D[mfre3[0][c][t],t],mfre3[4][c][t]]*lambda[c][t]

We define the Möbius-geometric Frenet frame  of a curve in the Möbius  space  using its normed isotropic representative:

frefr::usage = "If c[t] is a normed isotropic representative of a generally curved curve in the Moebius-3-space the vector function frefr[i][c][t] is the i-th vector, i = 0,...,4, of the canonical Moebius-geometric Frenet frame of the curve (in isotropic-orthogonal coordinates).";

frefr[0][c_][t_] :=mfre3[0][c][t];

frefr[1][c_][t_] :=mfre3[0][c][t]*ha[c][t]+ mfre3[1][c][t];

frefr[2][c_][t_] :=mfre3[2][c][t];

frefr[3][c_][t_]:=mfre3[3][c][t];

frefr[4][c_][t_] :=(mfre3[0][c][t] )*((ha[c][t])^2)/2+  mfre3[1][c][t]*ha[c][t]+  mfre3[4][c][t];

We try to check the basic properties of the frame:

Timing[FullSimplify[Table[iosp[frefr[i][nmgcurve3D][t],frefr[j][nmgcurve3D][t]],{i,0,4},{j,0,4}],TimeConstraint-> Infinity]]

FullSimplify: Aborted after more than 6 h without result (Mathematica v. 8.0.1. But the isotropic orthogonality of the Frenet frame  frefr  follows immediately  from this property of the frame mfre3.

Timing[FullSimplify[Det[{frefr[0][nmgcurve3D][t],frefr[1][nmgcurve3D][t],frefr[2][nmgcurve3D][t],frefr[3][nmgcurve3D][t],frefr[4][nmgcurve3D][t]}],TimeConstraint-> Infinity]]

Aborted without result (Mathematica v. 8.0.1). But from the definition of the Frenet frame  frefr it  follows immediately  Det[frfre...] == Det[mfre3...]. Below we shall demonstrate these properties calculating the frame for some examples.

3.5.2. The Frenet Formulas of Möbius Geometry

Now we consider the derivation equations of the Frenet frame, see Example 3.1.3, p. 63 of [mdg].  The natural conformal parameter s needs not to be calculated explicitly.The derivations using the natural conformal parameter s lead to the factor lambda[c][t] since

dt/ds = lambda[c][t].

Abbreviating we had  set

FullSimplify[lambda3D[t] == lambda[nmgcurve3D][t]]

The Möbius-geometric  Frenet formulas:
(schematically, as functions of the natural conformal parameter s; ‘ means the derivation by s,  see Example 3.1.3, p. 63 of [mdg] )

(Subscript[frefr, 0])' == (Subscript[frefr, 1])
(Subscript[frefr, 1])' == (Subscript[frefr, 0])*k1 + (Subscript[frefr, 4])
(Subscript[frefr, 2])' == (Subscript[frefr, 0]) + (Subscript[frefr, 3])*k2
(Subscript[frefr, 3])' == - (Subscript[frefr, 2])*k2
(Subscript[frefr, 4])' == (Subscript[frefr, 1])*k1 + (Subscript[frefr, 2])

In [mdg] is proved:

Proposition 1.  The Möbius-geometric Frenet formula for regular curves without 2-flat points in the Euclidean space are satisfied.  Such a curve is defined up to Möbius equivalence  by its Möbius curvatures k1, k2 as functions of the natural conformal parameter s. The  Frenet Frame depends  equivariantly on the considered curve, and the conformal curvatures are a complete  system of Möbius-geometric invariants for the class of generally curve curves in the Möbius space. ■

The conforma l curvatures or Möbius curvatures are the  coefficients k1, k2 in the Frenet formulas. The simplest  definitions are

kk1[c_][t_] :=- (D[frefr[1][c][t],t].io[]. frefr[4][c][t])*lambda[c][t];

kk2[c_][t_] :=(D[frefr[2][c][t],t].io[]. frefr[3][c][t])*lambda[c][t];

Sometimes one gets the curvature faster using the following Modules:

Clear[k1,k2]

k1::usage = "k1[c][t] (also kk1[c][t]) is the first Moebius curvature of a curve in the Moebius space represented by a normed isotropic representation c[t] in isotropic orthogonal coordinates.";

k1[c_][t_] := Module[{ff1,dff1,ff4,la,s},
ff1[s_] = FullSimplify[frefr[1][c][s],Element[s,Reals],TimeConstraint->Infinity];
dff1[s_] = FullSimplify[D[ff1[s],s],Element[s,Reals],TimeConstraint->Infinity];
ff4[s_] =
 FullSimplify[frefr[4][c][s],Element[s,Reals],TimeConstraint->Infinity];
la[s_] =
 FullSimplify[lambda[c][s],Element[s,Reals],TimeConstraint->Infinity];
-iosp[dff1[t],ff4[t]]*la[t]]

k2::usage = "k2[c][t] (also kk2[c][t]) is the second Moebius curvature (or Moebius torsion) of a curve in the Moebius space represented by a normed isotropic representative c[t] in isotropic orthogonal coordinates.";

k2[c_][t_] := Module[{ff2,dff2,ff3,la,s},
ff2[s_] = FullSimplify[frefr[2][c][s],Element[s,Reals],TimeConstraint->Infinity];
dff2[s_] = FullSimplify[D[ff2[s],s],Element[s,Reals],TimeConstraint->Infinity];
ff3[s_] =
 FullSimplify[frefr[3][c][s],Element[s,Reals],TimeConstraint->Infinity];
la[s_] =
 FullSimplify[lambda[c][s],Element[s,Reals],TimeConstraint->Infinity];
iosp[dff2[t],ff3[t]]*la[t]]

Warning. The calculation of the curvatures with  any of the given programs  may be very time consuming , even perhaps impossible depending on the considered curve. Sometimes one has to develop varients, e.g. Simplify instead of FullSimplify, or a step by step procedure to obtain a result. See the examples in Section5. ■

The verification of the Frenet formulas for a general curve mgcurve3D[t] is very time-consuming.  We shall verify them calculating some Examples t the end ofthis notebook. Applying the Frenet formulas we prove now a statement giving a geometric interpretation of the curvature k2 analogously  to the corresponding interpretation of the torsion in Euclidean geometry:

Proposition 2. A generally curved curve  without 2-flat points in the Möbius space (S^3) lies on a 2-dimensional subsphere (or plane) if and only if its second curvature is zero: k2[t] == 0 for all values of t.

Proof.  The assumption implies  by thefourth  Frenet formula

frefr[3][nmgc][t]== 𝔠3 == constant.

𝔠3   is a spacelike unit vector defining a 2-sphere whose points are represented by its isotropic representatives 𝔵 satisfy the equations

iosp[𝔠3, 𝔵]== 0,   iosp[𝔵, 𝔵] ==0.

Obviously, these equations are satisfied by 𝔵 = frefr[0][nmgc][t] ==nmgc[t], the isotropic representative of the curve. Thus the curve lies on the 2-sphere defined  by 𝔠3; remember

FullSimplify[frefr[0][nmgcurve3D][t]== nmgcurve3D[t]/lambda3D[t]]

Now assume that the curve belongs to a 2 - sphere. Without restriction of generality we may assume that this sphere is the x,y- plane in the Euclidean space, and the considered curve has the parameter representative

Clear[cu]; cu[t_]={cx[t],cy[t],0};

We calculate

Timing[FullSimplify[k2[nmgcurve[cu]][t],TimeConstraint->Infinity]]

and this proves Proposition 2. ■

We finish this section considering a simple example:

3.5.3. Example. Helix

In this subsection we consider the parameter representation of a general helix with the Euclidean  arc  length parameter:

?helixus

helixus[a,b][t]

Simplify[assu[helixus[a,b]][t]]

mgcurve[helixus[a,b]][t]

Timing[FullSimplify[Table[iosp[mfre3[i][mgcurve[helixus[a,b]]][t],mfre3[j][mgcurve[helixus[a,b]]][t]],{i,0,4},{j,0,4}],TimeConstraint-> Infinity]]

Timing[FullSimplify[Det[{frefr[0][mgcurve[helixus[a,b]]][t],frefr[1][mgcurve[helixus[a,b]]][t],frefr[2][mgcurve[helixus[a,b]]][t],frefr[3][mgcurve[helixus[a,b]]][t],frefr[4][mgcurve[helixus[a,b]]][t]}],{a>0,b>0,t>0},TimeConstraint-> Infinity]]

Timing[FullSimplify[iosp[D[frefr[4][mgcurve[helixus[a,b]]][t],t],frefr[2][mgcurve[helixus[a,b]]][t]],{a>0,b>0,t>0},TimeConstraint->Infinity]]

FullSimplify[lambda[mgcurve[helixus[a,b]]][t],{a>0,b>0,t>0},TimeConstraint->Infinity]

Thus we get as expected

FullSimplify[%%[[2]]*%,{a>0,b>0,t>0},TimeConstraint->Infinity]

To calculate the Möbius Frenet formulas for the helix we begin with

Timing[FullSimplify[Table[lambda[mgcurve[helixus[a,b]]][t]*iosp[D[frefr[i][mgcurve[helixus[a,b]]][t],t],frefr[j][mgcurve[helixus[a,b]]][t]],{i,0,4},{j,0,4}],{a>0,b>0,t>0},TimeConstraint->Infinity]]

Thus the matrix of these coefficients is

frhelixus[a_,b_] =Transpose[%[[2]]]

frhelixus[a,b]//MatrixForm

To obtain the matrix of the Frenet formula we remember

(Subscript[ω, 1]^0) ==-iosp[frefr[1]',frefr[4]] == - (a/(2 b))

(Subscript[ω, 1]^4) ==-iosp[frefr[1]',frefr[0]] == 1

(Subscript[ω, 2]^0) ==-iosp[frefr[2]',frefr[4]] == 1

(Subscript[ω, 2]^4) ==-iosp[frefr[2]',frefr[0]] ==0

(Subscript[ω, 3]^0) ==-iosp[frefr[3]',frefr[4]] == 0

(Subscript[ω, 3]^4) ==-iosp[frefr[3]',frefr[0]] == 0

Thus the matrix of the Frenet formulas is

(({{0, -(a/(2 b)), 1, 0, 0}, {1, 0, 0, 0, -(a/(2 b))}, {0, 0, 0, (Sqrt[(b/a)]), 1}, {0, 0, -(Sqrt[(b/a)]), 0, 0}, {0, 1, 0, 0, 0}}))

This coincides with the matrix of the Frenet formula Example 3.1.3, p.63 of [mdg] with the constant curvatures

FullSimplify[k1[mgcurve[helixus[a,b]]][t],{a>0,b>0,t>0},TimeConstraint->Infinity]

FullSimplify[k2[mgcurve[helixus[a,b]]][t] ,{a>0,b>0}]

(Subscript[k, 1]) == -a/(2 b),    (Subscript[k, 2]) == -(Sqrt[b/a]).

This  coincidence with Example 5.4 below. ■

3.6. Osculating Circles and Spheres

Systematically the concepts of osculating spheres and circles belong to Möbius geometry. Then they are equivariantly defined  under  Euclidean transformations a fortiori. We begin this section with the Euclidean definitions  of  these concepts. Then we construct Modules for then in the framework of Möbius geometry.

3.6.1. Euclidean Definition of the Osculating Circle and the Osculating Sphere

With  tools of  Euclidean differential geometry developed in the notebook [ECGnb] we construct a special helix with its osculating circle at the point t=0.

heli[t_] = helixus[1,1/3][t]

t is the arc length parameter

Simplify[D[heli[t],t].D[heli[t],t]]

ParametricPlot3D[heli[t],{t,-4,4},PlotStyle -> {Red,Thick}]

helipic=%;

heli[0]

pto=Graphics3D[{PointSize[.015],Point[heli[0]]}];

Show[{helipic,pto}]

ptoheli= %;

The constant curvature radius of heli is

rheli[t_] = Simplify[1/curvature[heli][t]]

kradius = %;

The curvature center may be expressed in the Frenet frame of Euclidean geometry

?frenet

Here are the centers of the osculating circles of  heli[t]:

cheli[t_] = Simplify[frenet[heli][t][[2]]*kradius+heli[t]]

The center at the point t=0 is

c0heli = cheli[0]

Here is a Module yielding a parameter representation of the osculating circle  of the curve c[t] at the current point t; the parameter of the circle is s:

Clear[c,t,s,oscircle];oscircle[c_][t_,s_]:=Module[{fr,rr,xx,v,u},
fr[v_]:=frenet[c][v];
rr[v_]=1/curvature[c][v];
xx[v_,u_]=c[v]+fr[v][[2]]*rr[v]+(fr[v][[1]]*Sin[u]-fr[v][[2]]*Cos[u])*rr[v];
xx[t,s]]

Simplify[oscircle[heli][t,s]]

We plot theosculating circle at the  point heli[0]

ParametricPlot3D[oscircle[heli][0,s],{s,0,2*Pi},PlotStyle->{Green,Thick}]

ochelic0=%;

Show[{ptoheli,ochelic0},PlotRange-> All]

osciheli0=%;

Clear[c0];c0[s_]=oscircle[heli][0,s]

eu3pts={c0[0],c0[Pi/2],c0[-Pi/2]}

radius3pts[{1,0,0},{-(1/9),((Sqrt[10])/3),((Sqrt[10])/9)},{-(1/9),-((Sqrt[10])/3),-((Sqrt[10])/9)}]

center3pts[{1,0,0},{-(1/9),((Sqrt[10])/3),((Sqrt[10])/9)},{-(1/9),-((Sqrt[10])/3),-((Sqrt[10])/9)}]

The Euclidean construction of the osculating sphere is given in [ECGnb] :

oscspherecenter::usage = "Let c[t] be a curve in the n-dimensional Euclidean space. Then oscspherecenter[c][t] yields the center of the osculating sphere of the curve at the point c[t]";

oscspherecenter[c_][t_]:=  Module[{fr ,rr,rr2,drr, cc, zz,v, s},
fr[v_] = frenet[c][v];
cc[v_] =curvatures[c][v];
rr[v_] = 1/cc[v][[1]];
drr[v_] = D[rr[s],s]/. s-> v;
rr2[v_] = 1/cc[v][[2]];
zz[v_] =c[v] + fr[v][[2]]*rr[v] +fr[v][[3]]*drr[v]*rr2[v];
zz[t]]

Simplify[oscspherecenter[heli][0]]

oscsphereradius::usage = "Let c[t] be a curve in the n-dimensional Euclidean space. Then oscsphereradius[c][t] yields the radius of the osculating sphere of the curve at the point c[t]";

oscsphereradius[c_][t_]:= Module[{rr,rr2,drr, cc,v, s},
cc[v_] =curvatures[c][v];
rr[v_] = 1/cc[v][[1]];
drr[v_] = D[rr[s],s]/. s-> v;
rr2[v_] = 1/cc[v][[2]];
Sqrt[rr[t]^2 +(rr2[t]*drr[t])^2]]

Simplify[oscsphereradius[heli][0]]

?sphere

oscsphere::usage = "Let c[t] be a curve in the n-dimensional Euclidean space. Then oscsphere[c][t,u,v] yields for each t a parameter representation of the osculating sphere of the curve at the point c[t], t fixed, u,0<= s<= 2Pi, v, -Pi/<=v>Pi/2, the sphere parameter.";

oscsphere[c_][t_,u_,v_]:= sphere[oscspherecenter[c][t],oscsphereradius[c][t]][u,v]

ParametricPlot3D[oscsphere[heli][0,u,v],{u,0,2*Pi}, {v,-Pi/2, Pi/2}, Mesh-> None, PlotStyle -> Opacity[.3]]

oscsph0 = %;

Show[{osciheli0,oscsph0}]

The next figure shows the helix, its osculating circle and sphere at the point heli[0], the center of the osculating sphere which in this case coincides with the center of the osculating circle, since the curvature is constant.

Show[{%,Graphics3D[{PointSize[.02],Point[{-1/(3*Sqrt[10]),0,0}]}]}]

oscpicheli0=%;

3.6.2.  Osculating Circles in Möbius Geometry

In Lemma 3.1.1, p.51 of [mdg] is shown that the subspaces (Subscript[B, k]) = span[c,c’,..., (c^((k)))](t),  k> 1,  are pseudo-Euclidean. Thus the subspace (Subscript[B, 2]) defines the osculating circle, and (Subscript[B, 3]) the osculating sphere at the point [c[t]] of a generally curved curve.  From the derivation equation of the Möbius Frenet frame we conclude:

(Subscript[B, 2])[] = span[frefr[0],frefr[1],frefr[4]]; (Subscript[B, 3])[] = span[frefr[0],frefr[1], frefr[2],frefr[4]];

We could use the Möbius Frenet frame to obtain Modules for the osculating objects, but it is faster to use arbitrary parameter representations.  Since the corresponding osculating elements are determined  by orthonormal bases of the complements, we define applying

?pscomplement

mdgoscircle[c_][t_][s_] := Module[{u,v0,c0,c1,c2,cc},
 v0[u_]:=invstepro[c[u]];
c0=v0[t];
c1 = (D[v0[u],u]/.u-> t);
c2 =( D[v0[u],{u, 2}]/.u-> t);
cc=pscomplement[{c0,c1,c2}];
circle2spv[cc[[1]],cc[[2]]][s]]

As a test of our Modules we will show that the osculating circle considered in the last subsection by Euclidean methods coincide with the osculating circle defined now, in terms of Möbius geometry, as expected.

oshel0[s_]=Simplify[mdgoscircle[heli][0][s]]

ParametricPlot3D[%,{s,0,2*Pi},PlotStyle -> {Thick,Green}]

oscihel0=%;

Show[{ochelic0,oscihel0},PlotRange -> All]

Show[{ptoheli,oscihel0},PlotRange -> All]

ptoscihel0=%;

OK!

ospt3=Simplify[{oshel0[0], oshel0[Pi/2], oshel0[-Pi/2]}]

Simplify[radius3pts[{0,-(Sqrt[(11/10)]),-((Sqrt[(11/10)])/3)},{-(11/9),0,0},{1,0,0}]]

Simplify[center3pts[{0,-(Sqrt[(11/10)]),-((Sqrt[(11/10)])/3)},{-(11/9),0,0},{1,0,0}]]

{(3/(Sqrt[10]))-((Sqrt[10])/3),0,0}

N[%[[1]]+1/(3*Sqrt[10])]

OK!

3.6.3.  Osculating  Spheres in Möbius Geometry

The osculating sphere of a curve in the Möbius space is determined by a spacelike vector nv orthogonal to  (Subscript[B, 3])[] = span[icu, icu’, icu’’,  icu’’’], icu any isotropic representative of the curve.

A Module determining such a vector for an arbitrary parameter representation c[t] of a Euclidean curve is

oscsphvec[c_][t_]:= Module[{v,tt,j,i,w},
v[0][tt_] = invstepro[c[tt]];
v[j_][tt_]:= D[v[0][tt],{tt,j}];
w[i_] := v[i][tt]/.tt-> t;
psCross[w[0],w[1],w[2],w[3]]]

?invstepro

nv = oscsphvec[heli][0]

pssp[%,%]

vradius[nv]

vcenter[nv]

These results coincide with those defined in subsection 3.6.1. OK!

euklidsphereplot3D[nv,-1,1,-1,1,Mesh-> None, PlotStyle-> Opacity[.3]]

moscsph0= %;

Show[{osciheli0,moscsph0,Graphics3D[{PointSize[.02],Point[{-1/(3*Sqrt[10]),0,0}]}]}]

This picture coincides with the figure constructed in subsection 3.6.1:

oscpicheli0

3.7. Anti-Curves

The last vector frefr[4] of the Frenet frame of a generally curved curve in the Möbius space is isotropic. Thus it represents a curve in the Möbius space, in general. We call it the anti-curve of the given curve.

3.7.1. Definition of the Anti-Curve

anticurve::usage ="If c[t]is the parameter representation of a generally curved curve in the Euclidean space, anticurve[c][t] is the curve in the Euclidean space represented by the last vector of the Möbius geometric Frenet frame of the curve.";

anticurve[c_][t_] :=euklid[frefr[4][nmgcurve[c]][t]]

antiheli[t_]=Simplify[anticurve[heli][t]]

ParametricPlot3D[antiheli[t],{t,-4,4},PlotStyle->{Thick,Blue}]

antihelpic = %;

Show[{helipic, antihelpic},PlotRange -> All]

dualhel= %;

In Section  4,4 this example is treated again. There it will be shown that the relation curve -> anti-curve is not involutive.

3.7.2. Conformal Curvatures of antiheli[t]

In this subsection we calculate the conformal curvatures of the antihelix for the special helix heli[t] and show that it is not conformally equivalent to the given helix. Arbitrary helices are considered in section 4.4 below.

heli[t]

Simplify[D[heli[t],t].D[heli[t],t]]

Simplify[k1[mgcurve[heli]][t]]

Simplify[k2[mgcurve[heli]][t]]

Of course, the anticurve of a curve of constant curvatures must be a curve of constant curvatures again.

s[t_] = arclength[antiheli][t]

antiheliN[t_] =antiheli[t*3/Sqrt[13]]

Simplify[D[antiheliN[t],t].D[antiheliN[t],t]]

Timing[FullSimplify[k1[mgcurve[antiheliN]][t],t>0,TimeConstraint-> Infinity]]

Mathematica v .12 .0 : Result  {1397.207824`,-(11/6)}

Timing[FullSimplify[k2[mgcurve[antiheliN]][t],t>0,TimeConstraint-> Infinity]]

antiantiheli[t_]= Simplify[anticurve[antiheliN][t]]

s[t_] = arclength[antiantiheli][t]

antiantiheliN[t_] =antiantiheli[t*11/Sqrt[157]]

Simplify[D[antiantiheliN[t],t].D[antiantiheliN[t],t]]

Timing[FullSimplify[k1[mgcurve[antiantiheliN]][t],t>0,TimeConstraint-> Infinity]]

Timing[FullSimplify[k2[mgcurve[antiantiheliN]][t],t>0,TimeConstraint-> Infinity]]

These calculations show that the relation curve -> anti-curve is not involutive  in the sense of Möbius geometry; repeating this construction will give a sequence of in general not Möbius equivalent curves.
The next table shows the Möbius curvatures of the curve, their anti- and anti-anticurve. The curvatures are constant, since the curves are helices and thus orbits of 1-parameter subgroups of the Möbius group.

curve 		    anticurve	      antianticurve

k1        -(3/2)                           -(11/6)                             -(139/66)

k2      -(1/(Sqrt[3]))                     -(Sqrt[(3/11)])                        -(Sqrt[(33/139)])

4. Curves of Constant Conformal Curvatures

In this section 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  4.1 we calculate these subgroups, what leads to  very large formulas, hardly to work with them manually.  Nevertheless, by the help of Mathematica we may classify and visualize the curves of constant curvatures as shown in the following  subsections. 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.

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

4.1.1.  The Matrix of the Frenet Equation with Constant Curvatures.

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

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

Clear[cc];
cc[k_,h_]:= {{0,1,0,0,0},{k,0,0,0,1},{1,0,0,h,0},{0,0,-h,0,0},{0,k,1,0,0}}

cc[k,h]//MatrixForm

frevec::usage = "frevec[t] is the formal vector whose components are the vectors of the Möbius geometric Frenet frame."

frevec[t_] :={fre[0][t],fre[1][t],fre[2][t],fre[3][t],fre[4][t]}

The derivative is

frevec'[t]

The Frenet formulas are a system of differential equations for the Frenet frame:

frevec'[t] ==cc[k,h].frevec[t]

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]

4.1.2. The Generating 1-Parameter Subgroup.

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

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

cc[k,h]//MatrixForm

with the start conditions

FullSimplify[(D[gr[k,h,t],t]/.t->0 )== cc[k,h]]

Remember:  We work in isotropic orthonormal coordinates; thus the standard basis is  isotropic-orthonormal:

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]]]

We verify the well known identity  d(e^At)/dt= A.(e^At) in our case A =cc[k,h]

Timing[FullSimplify[D[gr[k,h,t],t] -cc[k,h].gr[k,h,t], Element[k|h|t,Reals],TimeConstraint->Infinity]]

We conclude
Proposition.  The vectors

fre[k_,h_,i_][t_] := gr[k,h,t][[i+1]]

i = 0,...,4, are the solution of the Frenet differential equations with constant  curvatures k, h (matrix cc[k,h]]) .  In particular, the  vector fre[k,h,0][t] is a normed isotropic representative

Clear[curvecc];
curvecc[k_,h_][t_] :=fre[k,h,0][t]

of the  curve of  constant conformal curvatures k, h in the Euclidean  3-space:

eucc[k_,h_][t_]:= euklid[fre[k,h,0][t]]

The parameter t is the natural conformal parameter of the curve.

Proof. First we check that the frame is isotropically orthonormal:

Timing[FullSimplify[Table[iosp[fre[k,h,i][t],fre[k,h,j][t]],{i,0,4},{j,0,4}],Element[k|h|t,Reals],TimeConstraint->Infinity]]

Mathematica 12.0 needed  65 s to confirm the statement. Here is an example of a curve of constant conformal curvature:

u=-((5/2)^2)/4;v =-1/5;

chB[u,v]

ParametricPlot3D[eucc[u,v][t], {t,1,20},PlotRange->All]

Timing[FullSimplify[kk1[curvecc[u,v]][t]-u,Element[t,Reals],TimeConstraint-> Infinity]]

Timing[FullSimplify[Evaluate[kk2[curvecc[k,h]][t]]/.{k->u,h->v}-v,Element[t,Reals],TimeConstraint-> Infinity]]

Error? Unclear message!  The function itself is calculated correctly:

(kk2[curvecc[k,h]][t])/.{k->u,h->v}

Plot[Chop[%-v]+1,{t,-.5,5},PlotStyle-> {Thick,Red}]

The value v of  the curvature kk2 has been calculated correctly. Also for kk1:

kk1[curvecc[k,h]][t]/.{k->u,h->v}

FullSimplify[%]

after waiting some time.

Plot[Chop[%%-u]+1,{t,-.5,5},PlotStyle-> {Thick,Red}]

Clear[u,v]

The  calculated curvatures coincide with the parameters -u,-v of the curves. We want to show

Timing[FullSimplify[-iosp[D[fre[k,h,1][t],t],fre[k,h,4][t]]==k,Element[k|h|t,Reals],TimeConstraint->Infinity]]

Timing[FullSimplify[iosp[D[fre[k,h,2][t],t],fre[k,h,3][t]]== h,Element[k|h|t,Reals],TimeConstraint->Infinity]]

As a  consequence of the Frenet formulas these confirmations are trivial. The verification using the functions kk1,kk2 or k1,k2  for the curvatures is very time consuming. We leave the test to the interested user.  The next calculation shows that t is the natural conformal parameter:

Timing[FullSimplify[lambda[curvecc[k,h]][t],Element[k|h|t,Reals],TimeConstraint->Infinity]]

Mathematica 12.0 needed 44 s for this calculation. ■

4. 1.3. Visualization in the Euclidean Space. Examples

In this subsection we shall visualize the curves eucc[k,h][t] of constant curvatures k, h.

Example 1. The 0-loxodrome.

FullSimplify[eucc[0,0][t],Element[t,Reals]]

This is a plane curve. We plot

ParametricPlot[{((Sin[t]+Sinh[t])/(-Cos[t]+Cosh[t])),((Sin[t]-Sinh[t])/(Cos[t]-Cosh[t]))}, {t,.5,10},PlotRange ->All,PlotPoints -> 100]

ParametricPlot[{((Sin[t]+Sinh[t])/(-Cos[t]+Cosh[t])),((Sin[t]-Sinh[t])/(Cos[t]-Cosh[t]))}, {t,-10,-.5},PlotRange ->All,PlotPoints -> 100]

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

N[{((Sin[t]+Sinh[t])/(-Cos[t]+Cosh[t])),((Sin[t]-Sinh[t])/(Cos[t]-Cosh[t]))}/.t->0]

The curve starts at the point {-1,-1}, goes asymptotically from below to the x-axis to the “Point”{-∞,0},jumps to {∞,0}, returns asymptotically above the x-axis to the Point {1,1}.

?invsterproj

invsterproj[{((Sin[t]+Sinh[t])/(-Cos[t]+Cosh[t])),((Sin[t]-Sinh[t])/(Cos[t]-Cosh[t]))}]

FullSimplify[%]

ParametricPlot3D[%,{t,-10,10}, PlotRange ->All,PlotPoints -> 100,PlotStyle->{Thick,Red}]

ckh00=%;

Show[{sph1,ckh00}]

Its image under the inverse stereographic projection is a loxodrome.

Example 2. Changing the sign of h.

ParametricPlot3D[eucc[-5,1][t], {t,.06,6},PlotRange ->All,PlotPoints -> 100]

Changing the sign of h  reflects the curve :

ParametricPlot3D[eucc[-5,-1][t], {t,.06,6},PlotRange ->All,PlotPoints -> 100]

Example 3. . The Case h=0.

chB[k,0]

If  h = 0 we obtain plane curves, corresponding to loxodromes on the 2-sphere, see the notebook  [lox].

FullSimplify[eucc[k,0][t],Element[h|t,Reals]]

ParametricPlot3D[eucc[-6,0][t], {t,.2,10},PlotRange ->All,PlotPoints -> 100]

ParametricPlot3D[invsterproj[eucc[-6,0][t][[{1,2}]]],{t,-20,20},PlotRange -> All,PlotStyle -> Red]

Show[{sph1,%}]

4.2. Classification and Properties of the 1-Parameter Subgroups

4.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 representing system of the 1-parameter 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.";

Clear[v0];v0[k_,h_] := {-h,0,0,1,k*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], formula (2.2).

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

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

grchB1=%;

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

chB[0,h]

chB[k,0]

ParametricPlot3D[{0,t,1}, {t,-9,9},PlotStyle->{Blue,Thick}]

lb1=%;

ParametricPlot3D[{t,0,1}, {t,-10,10},PlotStyle->{Blue,Thick}]

lb2=%;

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,-.22},PlotStyle -> {Red,Thick}]

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

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

grchB2 =%;

Show[{grchB1, grchB2,lb1,lb2},PlotRange->All]

grchB3 =%;

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

chB[-5,-5]

chB[5,-5]

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.

4.2.2.  The Case h=0,k≠0

(See also Subsection 4.1.3,  Examples 1 and 3.) 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]

The curve is of hyperbolic type,and the curve is contained in the  2-sphere  or plane defined by iob[3]:

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

%== iob[3]

Reduce[{iosp[iob[3],{x0,x1,x2,x3,x4}]==0, iosp[{x0,x1,x2,x3,x4},{x0,x1,x2,x3,x4}]==0},{x0,x1,x2,x3,x4},Reals]

euklid[{x0,x1,x2,0,(x1^2+x2^2)/(2*x0)}]

This is the x,y-plane.
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:

FullSimplify[eucc[k,0][t],Element[k|t, Reals]]

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

ParametricPlot[Take[eucc[-8,0][t],2] ,{t,.1,10},PlotRange -> All,PlotPoints -> 200]

ParametricPlot[Take[eucc[-8,0][t],2] ,{t,-10,-.1},PlotRange -> All,PlotPoints -> 200]

ParametricPlot3D[invsterproj[Take[eucc[-8,0][t],2]] ,{t,-10,10},PlotRange -> All,PlotPoints -> 100,PlotStyle->{Red,Thick}]

Show[{%,sph1}]

4.3. The Eigensystem of cc[k,h]

4.3.1. The Definitions

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

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

eval[2.,3.]

This differs from

Eigenvalues[cc[2.,3.]]

eval[2,3]

N[%]

%==eval[2.,3.]

For the definition of eval the use of "Set" (=) is important; using "SetDelayed" (:=) would return a vector function which numerically evaluated would order  the eigenvalues depending on their values.

?Eigenvalues

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

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 space of index 1 exist two-dimensional neutral subspaces only, and in each orthogonal decomposition 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],Element[h,Reals]]

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 equivalent 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 Subsection 4.4 we discuss the Euclidean case in detail.

4.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] . 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]],chB[kk,hh]}],{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][[4]],eval[kk,hh][[5]],chB[kk,hh]},10^(-7)],{30}]//TableForm

Clear[kk,hh]

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

4.3.3. The Case h = 0

Simplify[eval[k,0]]

eval[0,0]

evec[0,0]

NullSpace[cc[0,0]]

eval[0,h]

evec[0,h]

4.4. Case 3, the Euclidean Case chB=0

4.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]]

For the eigenvalues  we obtain using the function eval

FullSimplify[eval[-1/(2*h^2),h],Not[h==0]&&Element[h,Reals]]

The direct calculation yields

FullSimplify[Eigenvalues[cc[-1/(2*h^2),h]],Not[h==0]&&Element[h,Reals]]

Plot[((Sqrt[1+(h^4)])/(Abs[h])), {h,-8,8}]

For the eigenvectors we obtain

FullSimplify[evec[-1/(2*h^2),h],Not[h==0]&&Element[h,Reals]]//MatrixForm

MatrixRank[%]

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

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

MatrixRank[%]

Symbolic calculation of the eigenvectors yields the correct result:

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

MatrixRank[%]

4.4.2. The Curves in the Euclidean Case

FullSimplify[fre[k,h,0][t],Element[k|h|t,Reals]]

FullSimplify[fre[-1/(2*h^2),h,0][t],Element[k|h|t,Reals]]

FullSimplify[iosp[%,%],Element[h|t,Reals]]

FullSimplify[euklid[%%],Element[h|t,Reals]]

Using this result we define

eucc0[h_][t_] := {((2 ((h^3) (1+(h^4)) t+(Sqrt[1+(h^4)]) Sin[(((Sqrt[1+(h^4)]) t)/h)]))/(h (2+(h^2) (1+(h^4)) (t^2)-2 Cos[(((Sqrt[1+(h^4)]) t)/h)]))),((2 (t+(h^4) t-h (Sqrt[1+(h^4)]) Sin[(((Sqrt[1+(h^4)]) t)/h)]))/(2+(h^2) (1+(h^4)) (t^2)-2 Cos[(((Sqrt[1+(h^4)]) t)/h)])),((h^3)/(-1+(((((1+(h^4)))^2) (t^2))/(-2 (h^2)+(1+(h^4)) (t^2)+2 (h^2) Cos[(((Sqrt[1+(h^4)]) t)/h)]))))}

ParametricPlot3D[eucc0[1/2][t], {t,.20,20},PlotRange -> All]

Limit[eucc0[h][t],t->Infinity]

Limit[eucc0[-h][t],t->Infinity]

Limit[eucc0[1/2][t],t->Infinity]

Limit[eucc0[1/2][t],t->-Infinity]

We define the limit point

limpt[h_]:= {0,0,1/h}

In our case

limpt[1/2]

A spherical reflection with the limit 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.

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

and obtain as  a conformally equivalent curve a helix :

?sphericalreflection

ParametricPlot3D[sphericalreflection[eucc0[1/2][t], {0,0,2},1] ,{t,-30,30},PlotRange -> All]

The general definition of this curve depending on h is

euccc[h_][t_] := sphericalreflection[eucc0[h][t], limpt[h],1]

ParametricPlot3D[euccc[1/5][t] ,{t,-10,10},PlotRange -> All]

Replacing h with -h reflects the helix and changes the sign of its torsion:

ParametricPlot3D[euccc[-1/5][t] ,{t,-10,10},PlotRange -> All]

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

?curvature

?torsion

FullSimplify[euccc[h][t],Element[h|t,Reals]&&Not[h==0], TimeConstraint-> Infinity]

Clear[euccc]; euccc[h_][t_]=%

curvature[euccc[h]][t]

FullSimplify[%,Element[h|t,Reals]&&Not[h==0], TimeConstraint-> Infinity]

FullSimplify[torsion[euccc[h]][t],Element[h|t,Reals]&&Not[h==0], TimeConstraint-> Infinity]

So it is proved:
Proposition. In the Euclidean caswe chB==0, h≠0, the curves of constant conformal curvatures depend on one parameter h only. Thei are Möbius equivalent to the curves of constant Euclidean curvatures, the helices with curvature (2/(Abs[h])) and torsion 2h.◼

Remember: The case h=0 has been treated in Examples 1, 3 of Subsubsection 4.1.3.

4.5. Case 2, the Hyperbolic Case chB>0

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

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 Minkowski space:

?pthyp3D

pthyp3D[u,v,w,r]

Simplify[pssp[%,%]]

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}]

To obtain the representatives directly we defined

?hyp3D

FullSimplify[hyp3D[u,v,w] - confhyp[pthyp3D[u,v,w]]]

?sphmap

?sphhyp3D

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}]

4.5.2. 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 Minkowski 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. Projecting the half-hypersphere stereographically from the North pole to the equatorial hyperplane, we obtain 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 upper 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 unit sphere.

4.5.3. The Hyperbolic Plane

dim = 4

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

?pthyp2D

pthyp2D[u,v,r]

Simplify[pssp[%,%]]

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

pthyp2D[u,0]

{D[pthyp2D[u,v],u],D[pthyp2D[u,v],v]}/. v->0

The points {u,0} of the parameter plane are mapped to the only singularity of the parameter representation hyp2d[u,v] of the surface. We calculate the coefficients of the first fundamental form induce by the pseudo-Euclidean scalar product:

pssp[D[pthyp2D[u,v,r],u],D[pthyp2D[u,v,r],v]]

Simplify[pssp[D[pthyp2D[u,v,r],u],D[pthyp2D[u,v,r],u]]]

Simplify[pssp[D[pthyp2D[u,v,r],v],D[pthyp2D[u,v,r],v]]]

A isotropic representative of pthyp2D[u,v,r] is obtained by

confhyp[pthyp2D[u,v,r]]

Simplify[pssp[%,%]]

Here is a parameter representation of the isotropic representatives:

?hyp2D

hyp2D[u,v,r]

Simplify[pssp[%,%]]

FullSimplify[hyp2D[u,v,r]/.{u->r*Sinh[w]}, Element[u|w|v,Reals]&&r>0]

FullSimplify[hyp2D[u,v,r]/.{u->r*Sinh[w]}, r>0]

FullSimplify[(confhyp[pthyp2D[u,v,r]])/.{v->w,u->v,Sqrt[r^2]->-r}, r>0]

%%==%

?sphhyp2D

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 = %;

We introduce two more  parameter representations of the hyperbolic plane.
Example 1.

pshyp2D[t_,w_,r_:1]:={Sqrt[r^2+t^2],t*Cos[w],t*Sin[w]}

ParametricPlot3D[pshyp2D[t,w],{t,0,2},{w,0,2*Pi}]

{D[pshyp2D[t,w,r],t],D[pshyp2D[t,w,r],w]}

{{(t/(Sqrt[(r^2)+(t^2)])),Cos[w],Sin[w]},{0,-t Sin[w],t Cos[w]}}

MatrixRank[%/.t->0]

pssp[D[pshyp2D[t,w,r],t],D[pshyp2D[t,w,r],w]]

Simplify[pssp[D[pshyp2D[t,w,r],t],D[pshyp2D[t,w,r],t]]]

Simplify[pssp[D[pshyp2D[t,w,r],w],D[pshyp2D[t,w,r],w]]]

◼
Example 2. The next example is singularity-free but not orthogonal.

p2hyp2D[u_,v_,r_:1]:= Prepend[{u,v},Sqrt[r^2 +u^2+v^2]]

p2hyp2D[u,v,r]

pssp[%,%]

ParametricPlot3D[p2hyp2D[t,w],{t,-2,2},{w,-2,2}]

{D[p2hyp2D[t,w,r],t],D[p2hyp2D[t,w,r],w]}

MatrixRank[%/.{t->0,w->0}]

pssp[D[p2hyp2D[t,w,r],t],D[p2hyp2D[t,w,r],w]]

pssp[D[p2hyp2D[t,w,r],t],D[p2hyp2D[t,w,r],t]]

pssp[D[p2hyp2D[t,w,r],w],D[p2hyp2D[t,w,r],w]]

◼

4.5.4. The Hyperbolic Curves of Constant Curvature

dim

In the hyperbolic case chB[k,h]>0 there exists a spacelike vector fixed under the transformation group gr[k,h,t]. we assume that this vector is the basis vector stb[5] of a pseudo-orthonormal basis of the pseudo-Euclidean vector space with  the scalar product pssp. Since also the orthogonal complement is fixed under the transformation group too, the group transformations restricted to this 4-dimensional pseudo-Euclidean vector space of index 1 spanned by the first four basis vectors leave the hyper-hyperboloids

pssp[vec[x,4],vec[x,4]] == -r^2

invariant and belong to the isometry group of the hyperbolic geometry. The eigenvectors  of the elements of the pseudo-orthogonal Lie algebra

?cchyp

cchyp[a,b]//MatrixForm

are two pairs: one of imaginary and one of real vectors, in  pseudo-orthonormal coordinates:

Eigenvalues[cchyp[a,b]]

Eigenvectors[cchyp[a,b]]

The corresponding 1-parametric subgroup is given by

?grhyp

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 up to Möbius equivalence as orbits of a 1-parametric  group grhyp[a,b,t] on the 3-sphere.  ■

4.5.5.  Visualisation in F. Klein’s Open Ball Model

A parameter representation of the hyper-hyperboloid representing the hyperbolic space is ?hyp3D[u,v,w] is

?pthyp3D

pthyp3D[u,v,w]

Simplify[pssp[%,%]]

The orbit of this point are defined by

Clear[ccchyp,a,b,u,v,w,t];ccchyp[a_,b_,u_,v_,w_,r_:1][t_]:= grhyp[a,b,t].pthyp3D[u,v,w,r]

ccchyp::usage = "ccchyp[a,b,u,v,w,r:1][t]is the orbit of the point pthyp3D[u,v,w,r] under the action of the subgroup grhyp[a,b,t] of the Möbius group." ;

ccchyp[a,b,u,v,w][t]

FullSimplify[pssp[%,%],Element[a|b|u|v|w|t,Reals]]

?confhyp

We will define an isotropic representative of the curve in pseudo-orthogonal coordinates:

FullSimplify[confhyp[ccchyp[a,b,u,v,w][t]]]

FullSimplify[pssp[%,%]]

?sphmap

FullSimplify[sphmap[confhyp[ccchyp[a,b,u,v,w][t]]],Element[a|b|u|v|w|t,Reals]]

FullSimplify[%.%]

Using stereographic projection we obtain an image of the curve in the open ball:

?sterproj

hyporbit[a_,b_,u_,v_,w_][t_]:=sterproj[sphmap[confhyp[ccchyp[a,b,u,v,w][t]]]]

hyporbit::usage = "hyporbit[a,b,u,v,w][t] is the orbit of the point with hyperbolic polar coordinates u,v,w in F.Klein's model of the hyperbolic 3-space under the action of the subgroup grhyp[a,b,t] of the Möbius group." ;

FullSimplify[hyporbit[a,b,u,v,w][t],Element[a|b|u|v|w|t,Reals]]

FullSimplify[%.%,Element[a|b|u|v|w|t,Reals]]

dist=%;

The image lies imn the unit ball; test it for arbitrary parameters:

Plot3D[dist/.{t->5,u->.1,v->-.5},{a,-2,2},{w,-3,3},PlotRange->All]

We plot some curves:

ParametricPlot3D[hyporbit[1,2,.2,.5,1][t],{t,-15,15},PlotStyle->{Red,Thick},PlotRange->All]

ParametricPlot3D[hyporbit[1,-2,.2,.5,1][t],{t,-15,15},PlotStyle->{Red,Thick},PlotRange->All]

Show[{%,%%,sph1}]

ParametricPlot3D[hyporbit[1,10,.2,.5,1][t],{t,-15,15},PlotStyle->{Red,Thick},PlotRange->All]

Show[{%,sph1}]

4.5.6. The Limit Points

In all the examples the curves  hyporbit[a,b,u,v,w][t]  run from the infinite point {-1,0,0} to the infinite  point {1,0,0}, or vice versa.  Remember that the image of the hyperbolic space is the open ball of radius 1, and the bounding hypersphere is the infinity of the hyperbolic space.
We test generally

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

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

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

Simplify[Limit[hyporbit[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[hyporbit[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) hyporbit[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]]

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}

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

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

TrigToExp[%]=={-Exp[a*-t],Exp[a*-t],0,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].

4.5.7. The Conformal Curvatures

To apply the conformal Frenet formulas and the formulas for the curvatures developed in Subsection 3.5.1 we need the isotropic representatives of the curves in isotropic orthonormal coordinates . 
We use the transformation

?transio

FullSimplify[transio[].confhyp[ccchyp[a,b,u,v,w][t]],Element[a|b|u|v|w|t,Reals]]

It is isotropic, but not normed:

FullSimplify[iosp[%,%],Element[a|b|u|v|w|t,Reals]]

FullSimplify[D[transio[].confhyp[ccchyp[a,b,u,v,w][t]],t],Element[a|b|u|v|w|t,Reals]]

FullSimplify[iosp[%,%],Element[a|b|u|v|w|t,Reals]]

A normalizing function not depending on t is

iofn[a_,b_,u_,v_,w_]:=Sqrt[(a^2) ((Cosh[w])^2)-(1/4) ((b^2) (-3+Cos[2 u])+2 ((Cos[u])^2) ((a^2)+((a^2)+(b^2)) Cos[2 v])) ((Sinh[w])^2)]

The wanted normed representative of the orbit is

ioccc[a_,b_,u_,v_,w_][t_] := transio[].confhyp[ccchyp[a,b,u,v,w][t]]/iofn[a,b,u,v,w]

FullSimplify[ioccc[a,b,u,v,w][t],Element[a|b|u|v|w|t,Reals]]

FullSimplify[iosp[%,%],Element[a|b|u|v|w|t,Reals]]

FullSimplify[D[ioccc[a,b,u,v,w][t],t],Element[a|b|u|v|w|t,Reals]]

FullSimplify[iosp[%,%],Element[a|b|u|v|w|t,Reals]]

FullSimplify[ASSU[ioccc[a,b,u,v,w]][t],Element[a|b|u|v|w|t,Reals]]

The conformal curvatures of the curve are the constants

FullSimplify[kk1[ioccc[1,b,u,Pi/4,w]][t],Element[a|b|u|v|w|t,Reals]]

Using this result we define

fk1[b_, u_, w_] = 
  (Abs[Sinh[w]]*((-1 + b^4)*
      (-3 + Cos[2*u]) + 
     4*Csch[w]^2)*Sign[b + b^3])/
   (Sqrt[2]*b*(1 + b^2)*
    Sign[5 - 3*b^2 + 3*(1 + b^2)*
       Cosh[2*w] - 2*(1 + b^2)*
       Cos[2*u]*Sinh[w]^2]*
    Sqrt[(-3 + Cos[2*u])*
      (-5 - 3*Cosh[2*w] + 
       2*Cos[2*u]*Sinh[w]^2)])

FullSimplify[kk2[ioccc[1,b,u,Pi/4,w]][t],Element[a|b|u|v|w|t,Reals]]

Using this result we define

fk2[b_,u_, w_] = ((2^(3/4)) b)/(√(5-3 (b^2)+(1+(b^2)) Cos[2 u]-(1+(b^2)) (-3+Cos[2 u]) Cosh[2 w]) (((((((b+(b^3)))^2) (-3+Cos[2 u]) ((Sinh[w])^2) (-5-3 Cosh[2 w]+2 Cos[2 u] ((Sinh[w])^2)))/(((10-6 (b^2)+6 (1+(b^2)) Cosh[2 w]-4 (1+(b^2)) Cos[2 u] ((Sinh[w])^2)))^2)))^(1/4)))

FullSimplify[chB[fk1[b,u,w],fk2[b,u,w]],Element[b|u|w,Reals]&&Not[b==0]&&Not[w==0]]

This expression is positive for all parameters b,u,w with w≠0. Remember w=0 is a singularity of the parameter representation pthyp3D[u,v,w] and we have

To test the positivity run the next cells varying the parameters; the confirming result is 0.

Clear[postest,b,u,w,nn,n];postest [n_]:=Module[{nn=0,i,b,u,v,w},
 For[i=1,i<n,i++,b=RandomReal[{-5,5}];u=RandomReal[{0, 6.4}];w=RandomReal[{-8,8}];If[chB[fk1[b,u,w],fk2[b,u,w]]≤0, nn=nn+1]];nn]

postest[5000]

Plot3D[chB[fk1[b,.9,w],fk2[b,.9,w]],{b,-Pi,Pi},{w,-5,5},PlotRange->All]

Plot3D[chB[fk1[b,u,1],fk2[b,u,1]],{b,-4,4},{u,-5,5},PlotRange->All]

Plot3D[chB[fk1[1,u,w],fk2[1,u,w]],{u,-Pi,Pi},{w,-3,3},PlotRange->All]

Plot3D[fk1[2,u,w],{u,-Pi,Pi},{w,-3,3},PlotRange->All]

Plot3D[fk2[2,u,w],{u,-Pi,Pi},{w,-3,3},PlotRange->All]

Plot3D[fk1[b,Pi/4,w],{b,-5,5},{w,-3,3},PlotRange->All]

Plot3D[fk2[b,Pi/4,w],{b,-5,5},{w,-3,3},PlotRange->All]

Plot3D[fk1[b,u,1],{b,-5,5},{u,-Pi,Pi},PlotRange->All]

Plot3D[fk2[b,u,1],{b,-5,5},{u,-Pi,Pi},PlotRange->All]

Plot3D[fk1[b,u,1],{b,-5,5},{u,-6,6},PlotRange->All]

Plot3D[fk2[b,u,1],{b,-5,5},{u,-6,6},PlotRange->All]

4.6. Complete Systems of Representatives in the Hyperbolic Case

The family of curves of constant curvatures we constructed depends on three parameters b,u,w. We have seen at the end of the previous section that for all b,u,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, k≠0, h≠ 0, there exits a curve of our family with these curvatures.

The attempt to solve the  equations

k== fk1[b,u,w], h==fk2[b,u,w]

under the assumption chB[h, k] > 0 directly remained without success.

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[{fk1[b,Pi/3,w]==kk,fk2[b,Pi/3,w] ==hh},{b,-10,10},{w,-5,5}]

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

chB[kk,hh]

kk

hh

A solution in our case is b= -0.8853, w= 2.466

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:

fk1[-0.8449,Pi/3,-2.507]

fk2[-0.8449,Pi/3,-2.507]

The solution is up to a small error as expected. The corresponding curve is

ParametricPlot3D[hyporbit[1,-0.8449,Pi/3,Pi/4, -2.507][t],{t,-10,10},PlotRange ->All]

Show[{%,sph1}]

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 fk1[b,u,w],fk2[b,u,w] and plotting the curves hyporbit[1,b, u, ,Pi/4, w ][t] for various values of the parameters b,u,w, e.g.

Plot[fk1[b,Pi/3,1], {b,-3,3}]

Plot[fk2[b,Pi/3,1], {b,-3,3}]

Table[ParametricPlot3D[hyporbit[1,i,Pi/3,Pi/4,1][t],{t,-10,10},PlotRange ->All],{i,1,9}]

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

Table[ParametricPlot3D[hyporbit[1,1/i,Pi/3,Pi/4,1][t],{t,-10,10},PlotRange ->All],{i,1,9}]

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

OK! All these tests run successfully.  For exploring  the shape of the curves in dependence on their curvatures one may construct 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[{fk1[b,Pi/4,w] == -2. +i/5,fk2[b,Pi/4,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[fk1[b,Pi/3,w],fk2[b,Pi/3,w]]/.repl[[i]],{i,1,10}]

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

%//TableForm

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

Show[{%,sph1},PlotRange->All,Boxed->False,Axes->False]

4.7. The Elliptic Case chB<0

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

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]]

We consider the 2-dimensional torus 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

grell[a,b,t]//MatrixForm

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

?ptell

ptell[u,v,w]

Simplify[%.%]

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]

To visualize it we define

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

ParametricPlot3D[ellorbit[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

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]]

4.7.2. Isotropic Representatives and Conformal Curvatures

Now we will calculate the conformal curvature of the curves

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

An isotropic  representative in isotropi 0rthonormal coordinates is

iocurveellccc[a_,b_,u_,v_,w_][t_]:=transio[].Prepend[curveellcc[a,b,u,v,w][t],1]

iocurveellccc[a,b,u,v,w][t]

FullSimplify[iosp[%,%]]

The curve itself is returned by

FullSimplify[sphmap[transoi[].%%]]

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

The representative isn’t normed:

FullSimplify[D[iocurveellccc[a,b,u,v,w][t],t],Element[a|b|u|v|w|t,Reals]]

FullSimplify[iosp[%,%],Element[a|b|u|v|w|t,Reals]]

A  normalizing function is

ioellfn[a_, b_, u_, w_] = 
  Sqrt[(1/4)*(a^2 + 3*b^2 - 
     (a - b)*(a + b)*(Cos[2*w] - 
       2*Cos[2*u]*Sin[w]^2))]

Here is a normed representative:

iocurveellccn[a_,b_,u_,v_,w_][t_]:= iocurveellccc[a,b,u,v,w][t]/ioellfn[a,b,u,w]

iocurveellccn[a,b,u,v,w][t]

FullSimplify[iosp[%,%]]

FullSimplify[sphmap[transoi[].%%]]

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

FullSimplify[D[iocurveellccn[a,b,u,v,w][t],t],Element[a|b|u|v|w|t,Reals]]

FullSimplify[iosp[%,%]]

Now we may calculate the curvatures:

FullSimplify[kk1[iocurveellccn[a,b,Pi/4,v,w]][t],Element[a|b|u|v|w|t,Reals]]

Using this result we define

kf1ell[a_, b_, w_] = 
  (-a^4 - 3*b^4 + (a^4 - b^4)*
     Cos[2*w])/(2*Sqrt[2]*
    Abs[a*(a - b)*b*(a + b)*Sin[w]]*
    Sqrt[3 + Cos[2*w]])

FullSimplify[kk2[iocurveellccn[a,b,Pi/4,v,w]][t],Element[a|b|u|v|w|t,Reals]]

Using this result we define

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

The curvatures are constant, and the elliptic type of the curve is confirmed:

FullSimplify[chB[kf1ell[a,b,w],kf2ell[a,b,w]],Element[a|b,Reals]]

4.8. Complete Systems of Representatives in the Elliptic Case

The family of curves of constant curvatures we constructed depends on five parameters a, b,u,v,w. For the calculation of their conformal curvatures we fixed the parameter u= Pi/4 only. The curvatures don’t depend on v. We have seen at the end of the previous section that for all a,b,v,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, k≠0, h≠ 0, with chB[k,h]< 0 there exits a curve of the family with these curvatures.

The attempt to solve the  equations

Assuming[chB[k,h]<0,Solve[{k== kf1ell[a,b,w], h==kf1ell[a,b,w],a≠0,b≠0},{a,b,w},Reals]]

under the assumption chB[h, k] < 0 directly remained without success.

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

Clear[kk,hh];kk =Random[Real, {-3,0}];hh=Random[Real,{-1/Sqrt[-kk],Sqrt[-kk]}];chB[kk,hh]

In case of chB[kk,hh] ≥ 0 repeat evaluating the last cell up to obtaining chB[kk,hh] < 0. Then evaluate

ContourPlot[{kf1ell[a,1,w]==kk,kf2ell[a,1,w] ==hh},{a,-5,10},{w,-5,5}]

Solutions exist if the corresponding contours intersect, and this is the case if chB[kk, hh] <0; use Ctrl D to get the tools menu and choose the tool +  to find the coordinates of the intersecion point.

kk

hh

A solution in our case is

aa=0.2285; bb=1; ww=1.816;

b=0.812We 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:

kf1ell[aa,bb,ww]

kf2ell[aa,bb,ww]

The solution is up to a small error as expected. The corresponding curve is

ParametricPlot3D[ellorbit[aa,bb,Pi/4,Pi/3,ww][t],{t,0,10*Pi},PlotStyle -> {Red,Thick},PlotRange->All]

cccabw=%;

ParametricPlot3D[sterproj[tor[aa,bb,u,v].ptell[Pi/4,Pi/3,ww]],{u,0,10*Pi},{v,0,10*Pi}, PlotPoints-> 50,PlotStyle -> Opacity[.2],Mesh -> None,Boxed->False,Axes->None]

Show[{%,cccabw}]

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

Clear[kk,hh,aa,bb,ww]

The geometric meaning of the conformal curvatures can be explored  evaluating  kf1ell[a,b,w], kf2ell[a,b,w] and plotting the curves ellorbit[a,b, Pi/4, ,Pi/3, w ][t] for various values of the parameters a, b,,w, e.g.

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

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

Plot[chB[kf1ell[b,1,1],kf2ell[b,1,1]], {b,-3,3}]

ellpic[aa_,bb_,ww_]:=Module[{kf1,kf2,chb,ellc,elltor},
kf1=N[kf1ell[aa,bb,ww]];
Print["kf1ell = ",kf1];
kf2=N[kf2ell[aa,bb,ww]];
Print["kf2ell = ",kf2];
chb = N[chB[ kf1,kf2]];
Print["chB = ",chb];
If[chb≥0, Print["No elliptic character!"];Return[]];
ellc=ParametricPlot3D[ellorbit[aa,bb,Pi/4,Pi/3,ww][t],{t,-10,10},PlotRange ->All,PlotStyle->{Red,Thick}];
elltor =ParametricPlot3D[sterproj[tor[aa,bb,u,v].ptell[Pi/4,Pi/3,ww]],{u,0,2*Pi},{v,0,2*Pi}, PlotStyle -> Opacity[.2],PlotPoints ->50,Mesh -> None,Boxed->False,Axes->None,PlotRange->All];
Show[{ellc,elltor},PlotRange->All,Boxed->False,Axes->None]]

ellpic[3,15,1]

or experimenting evaluating step by step the following cells with the wanted parameters,e. g.

aa=1;bb=15; uu=Pi/4;vv=Pi/3;ww=1;

{aa,bb,uu,vv,ww}

{N[kf1ell[aa,bb,ww]], N[kf2ell[aa,bb,ww]],chB[N[kf1ell[aa,bb,ww]],N[kf2ell[aa,bb,ww]]]}

ParametricPlot3D[ellorbit[aa,bb,uu,vv,ww][t],{t,-10,10},PlotRange ->All,PlotStyle->{Red,Thick}]

ParametricPlot3D[sterproj[tor[aa,bb,u,v].ptell[uu,vv,ww]],{u,0,2*Pi},{v,0,2*Pi}, PlotStyle -> Opacity[.2],PlotPoints ->50,Mesh -> None,Boxed->False,Axes->None]

Show[{%,%%},Boxed->False,Axes->None]

Clear[aa,bb,uu,vv,ww,kk,hh]

OK! All these tests run successfully.  For exploring  the shape of the curves in dependence on their curvatures one may construct sequences of curves with given Möbius curvatures. For the elliptic case one has to consider values k,h with chB[k,h] < 0. Insert the wanted values kk,hh of the curvatures, e. g.

kk=-1.;hh= -1.5;{kk,hh,N[chB[kk,hh]]}

If chB[kk,hh] ≥ 0, choose better appropriate values kk,hh.

FindInstance[{kf1ell[a,b,w] == kk ,kf2ell[a,b,w]==hh},{a,b,w},Reals]

%[[1]]

Insert the values:

cccu[t_]=ellorbit[a,b,Pi/4,Pi/3,w][t]/.%;ParametricPlot3D[cccu[t],{t,-1,1},PlotRange ->All,PlotStyle->{Red,Thick}]

We plot curves with  kf1ell[aa,bb,ww]]= -2-i/5,  kf2ell[aa,bb,ww]] = 1/2. First one has to controll the character of the corresponding curves:

Table[1+(.5^2)*(-3.-i/5), {i,6,10}]

All the curves are elliptic. One has to find solutions {b,w}  of the curvature equations:

Table[{i, -2.- i/5,FindInstance[{kf1ell[a,b,w] == -2. -i/5,kf2ell[a,b,w]==.5},{a,b,w},Reals]}, {i,6,10}]

results = %;

The Replace list is obtained by

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

Of course all the values of chB are positive:

Table[chB[kf1ell[a,b,w],kf2ell[a,b,w]]/.repl[[i]],{i,1,5}]

Table[{i,-2.-i/5,ParametricPlot3D[ellorbit[a,b,Pi/4,Pi/3,w][t]/.repl[[i]],{t,-1,1},PlotRange ->All]},{i,1,5}]

5. Further Examples

5.1. Example. The Ellipse

We consider the ellipse depending on the parameter a as a 3D- curve:

ellipse3D[a_][t_] := {a*Cos[t],Sin[t],0}

ellipse3D[a][t]

D[ellipse3D[a][t],t]

The Euclidean arc length parameter is

Integrate[Sqrt[(a*Sin[t])^2+(Cos[t])^2],t]

ss[a_][t_]=%;

ff[a_][s_] :=InverseFunction[ss[a]][s]

ff[a][0]

The ellipse as a function of its arc length is obtained as

Clear[par];par[a_][s_] := {a*Cos[ff[a][s]],Sin[ff[a][s]],0}

par[2][s]

Considering the ellipse in the case a=2 the length of the ellipse is

so =ss[2][2*Pi]

N[%]

ParametricPlot3D[ellipse3D[2][t],{t,0,2*Pi},PlotStyle -> {Red,Thick}]

grellip = %;

Here is a vertex of the ellipse:

par[2][so]

D[par[a][t],t]

Indeed, t is the arc length:

Simplify[%.%,t>0]

The Euclidean curvature of the ellipse is

?curvature

Clear[kk];kk[a_][t_] :=curvature[ellipse3D[a]][t]

kk[a][t]

The torsion is zero, of course:

torsion[ellipse3D[a]][t]

Simplify[kk[2][t]]

Plot[Evaluate[kk[2][t]],{t,0,2*Pi}]

5.1.1 The M öbius Geometric Curvatures of Ellipse3D

Now we try to find the Möbius geometric curvature k1[t] of the Ellipse (with a=2). We use the function kk1; the calculation using k1 has been aborted  without result after a long time.

Timing[FullSimplify[kk1[mgcurve[par[2]]][s],s>0,TimeConstraint-> Infinity]]

k1 as a function of the Euclidean arc length is

Clear[fk1];fk1[s_] = %[[2]]

and as a function of the standard parameter u:

ell2k1[u_] = fk1[s]/.InverseFunction[ss[2]][s]->u

Plot[ell2k1[u],{u,0,2*Pi}]

Plot[fk1[s],{s,0,so}]

The conformal curvature remains  undefined at the vertices:

Evaluate[fk1[so/2]]

The vertices are 2 - flat points :

ellcu[t_]:=mgcurve[ellipse3D[a]][t]

MatrixRank[{ellcu[t], ellcu'[t], ellcu''[t], ellcu'''[t]}]

MatrixRank[{ellcu[t], ellcu'[t], ellcu''[t], ellcu'''[t]}/.t->Pi/2]

MatrixRank[{ellcu[t], ellcu'[t], ellcu''[t]}/.t->Pi/2]

The second conformal curvature is zero, of course

Simplify[kk2[mgcurve[par[2]]][s]]

5.1.2. The Anti-Elipse

Now we consider the anti-ellipse as a 3D-curve and compare the result with that contained for plane curves in [mdg2D]. We consider the case a=2.

Timing[FullSimplify[anticurve[par[2]][t],TimeConstraint->Infinity]]

anticu[u_] =  %[[2]]/.InverseFunction[ss[2]][t]-> u

antiell = %;

Show[{grellip,%},PlotRange -> All,Axes -> False]

dualell= %;

Here is the anticurve of the Ellipse with a=2 calculated in the notebook mdgCurves2D.nb as a plane curve embedded in the 3-space with third component z=0:

anticu2[u_] = 
  {(285*Cos[u] - 
     378*Cos[3*u] + 
     52*Cos[5*u] + 
     57*Cos[7*u])/(122 - 
     90*Cos[2*u] - 
     63*Cos[4*u] + 
     30*Cos[6*u] + 
     9*Cos[8*u]), 
   ((-31 - 47*Cos[2*u] + 
      115*Cos[4*u] + 
      3*Cos[6*u])*Sin[u])/
    (122 - 90*Cos[2*u] - 
     63*Cos[4*u] + 
     30*Cos[6*u] + 
     9*Cos[8*u]), 0};

ParametricPlot3D[anticu2[t],{t,0,2*Pi},PlotStyle -> {Thick,Green},PlotRange -> All]

antiell2 = %;

Show[{grellip,antiell2},PlotRange -> All,Axes -> False]

The picture  coincides with that constructed in [mdg2D] for plane curves.

Plot[Chop[(anticu2[t]-anticu[t]).(anticu2[t]-anticu[t])]+1,{t,0,2*Pi},PlotStyle-> {Green, Thick}]

5.2. Example Elliptic Helices

An isotropic representative of a torus is

tor5D[b_][t_,u_] := {(1 - Cos[b]*Cos[t])/Sqrt[2], 
   Cos[u]*Sin[b], (-Sin[b])*Sin[u], 
   Cos[b]*Sin[t], (1 + Cos[b]*Cos[t])/Sqrt[2]}

tor5D[b][t,u]

Simplify[iosp[%,%]]

Here is thecorresponding torus:

ParametricPlot3D[euklid[tor5D[2][u,v]],{u,0,2*Pi},{v,0,2*Pi},Mesh-> False, PlotStyle ->Opacity[.4]]

torus1 = %;

We define an isotropic representative of an elliptic helix being an orbit of a 1-parametric subgroup of elliptic type:

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]}

ellmgcc[a,b][t]

Simplify[iosp[%,%]]

Here is its Euclidean picture:

ellhelix[a_,b_][t_]:= euklid[ellmgcc[a,b][t]]

ellhelix[a,b][t]

ParametricPlot3D[ellhelix[.3,2][t],{t,0,6*Pi/.3},PlotStyle->{Thick,Green}]

tknot1 = %;

Show[{torus1,tknot1},Axes->False, Boxed -> False]

tknot1pic = %;

Simplify[D[ellmgcc[a,b][t],t]]

Simplify[iosp[%,%]]

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

cun[a_,b_][t_] := ellmgcc[a,b][t]/cn[a,b]

Simplify[ASSU[cun[a,b]][t]]

Simplify[k1[cun[a,b]][t], t>0]

%/. {a->.3, b-> 2}

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

Simplify[k2[cun[a,b]][t], t>0]

%/. {a->.3, b-> 2}

fk2ellhel[a_, b_] := 
  (a*Sign[a*(-1 + a^2)*Sin[2*b]]^2)/
   (Sqrt[Abs[a - a^3]]*
    Sqrt[Abs[Cos[b]*Sin[b]]])

FullSimplify[chB[fk1ellhel[a, b],fk2ellhel[a, b]],Element[a|b,Reals]&&Not[a==1]&&Not[a==1]&&Not[a==0]&&Not[b==0]&&Not[b==Pi]]

Plot3D[(1-((((Csc[b])^2)+(a^4) ((Sec[b])^2))/(((-1+(a^2)))^2))),{a,-4*Pi,4*Pi},{b,-6*Pi,6*Pi}]

Clearly, all the curves are of constant conformal curvatures and of elliptic type.

?anticurve

Simplify[frefr[4][cun[a,b]][t],t>0]

cu4[a_,b_][t_] = %;

antiellhelix[a_,b_][t_] = FullSimplify[euklid[%%], t>0]

ParametricPlot3D[antiellhelix[.3,2][t],{t,0,6*Pi/.3}, PlotStyle->{Red,Thick}]

antiknot1 = %;

Show[{tknot1pic,antiknot1},PlotRange -> All]

antiknot1pic = %;

Assuming[(kx1< 0)&&(chB[kx1,kx2]< 0),Solve[{kx1 ==fk1ellhel[a, b],kx2==fk2ellhel[a, b]},{a,b},Reals]]

There exist solutions  under all possible conditions nfor kx1,kx2.
A randomized test: Evaluate the next cell:

Clear[kx1,kx2,a,b];
kx1=RandomReal[{-5,0}];kx2=RandomReal[{-4,4}];N[chB[kx1,kx2]]

If  the result is less 0, evaluate the next cell; other wise repeat the evaluation of the last cell.

ContourPlot[{fk1ellhel[a, b]==kx1,fk2ellhel[a, b]==kx2},{a,-5,5},{b,-8,8}]

The contour lines intersect: every intersection yields a solution {a,b} of the equations

fk1ellhel[a, b]==kx1,fk2ellhel[a, b]==kx2

Another, more precise way to find a solution is

FindInstance[{fk1ellhel[a, b]==kx1,fk2ellhel[a, b]==kx2},{a,b},Reals]

We conclude:
The elliptic helices ellmgcc[a, b][t]  are a complete system of  the curve of constant curvatures of elliptic type.
Prove that these curves are the isogonal trajectories of the circle families generating the torus.

5.3. Example Torusknot

?torusknot

torusknot[a,b,c][p,q][t]

torusknot[2,1,1][2,3][t]

ParametricPlot3D[torusknot[2,1,1][2,3][t],{t,0,3*Pi},PlotStyle -> {Thick, Green}]

kn1 = %;

torus[a_,b_][u_,bv_] := {Cos[u] (a+b Cos[v]),(a+b Cos[v]) Sin[u],b Sin[v]}

ParametricPlot3D[torus[2,1][u,v],{u,0,2*Pi},{v,0,2*Pi}, PlotStyle-> Opacity[.3], Mesh -> False]

tor1=%;

Show[{tor1,kn1},Boxed->False,Axes->None]

torkn1 = %;

We calculate the Cosine of the intersection angle of the curve with the parameter lines (the generating circles) of the torus.

tang[t_]=D[torusknot[2,1,1][2,3][s],s]/.s-> t

dtorusv[u_,v_] = D[torus[2,1][u,v],v]

Simplify[Norm[%%]]

torusknot[2,1,1][2,3][t]

torus[2,1][u,v]

ftest[t_] =Simplify[dtorusv[2*t,3*t].tang[t]/Norm[tang[t]]]

Plot[ftest[t],{t,0,3*Pi}]

A. Gray’s curves torusknot are not torus helices, and therefore not curves of constant conformal curvatures, since they don’t intersect the generating circles of the torus under a constant angle.

cu[t_] = Simplify[nmgcurve[torusknot[a,b,c][p,q]][t]]

Simplify[iosp[%,%]]

Simplify[D[cu[t],t]]

Simplify[iosp[%,%]]

Timing[FullSimplify[ASSU[cu][t],Element[a|b|c|p|q|t,Reals]&&Not[a==0]&&Not[b==0],TimeConstraint->Infinity]]

cu[t] is anormed isotropi representative of the torusknot. We specialize

cus[t_] = Simplify[cu[t]//. {a-> 2, b-> 1,c->1,p-> 2,q-> 3}]

kk1[cus][t]

Timing[FullSimplify[%,t>0,TimeConstraint->Infinity]]

Mathematica 12.0 : Aborted without result after 4 h.
Mathematica 8.0.1 : Aborted without result after 3 h.

The simplifications of this expression, of kk1 and kk2 were so time consuming that they have been aborted without results after some hours.  The following graphics have been created very fast without problem. They show the Möbius geometric curvatures of the considered torus knot:

Plot[Evaluate[kk1[cus][t]],{t,0,3*Pi}]

Plot[Evaluate[kk2[cus][t]],{t,0,3*Pi}]

The conformal curvatures are not constant, as expected, since the curve is not isoclinic, as shown above.  For the anticurve we plot

?anticurve

ParametricPlot3D[Evaluate[euklid[frefr[4][cus][t]]],{t,0,3*Pi},PlotStyle -> {Thick,Red},PlotRange -> All]

antitorkn1 =%;

Show[{antitorkn1,torkn1 },Boxed->False,Axes->False]

5.4. The Helix, its Curvatures and Anticurves

In this Subsection  we will calculate the conformal curvatures and  the anti-anticurve for a helix with arbitrary parameters a, b. Remember that t is the arc length of helixus. Remember that  the helices have been considered very often in this notebook as an example in special situations. Here we calculate their Möbius invariants not using the earlier results.

cu[t_] =helixus[a,b][t]

Simplify[assu[cu][t]]

mgcu[t_] = FullSimplify[mgcurve[cu][t]]

Simplify[ASSU[mgcu][t]]

FullSimplify[k1[mgcu][t]]

FullSimplify[k2[mgcu][t],t>0]

mgcuu[t_]=FullSimplify[frefr[4][mgcu][t]]

Here is a parameter representation of the anticurve:

cuu[t_] =FullSimplify[euklid[%]]

To obtain a normed representative of the anticurve we calculate

D[mgcuu[t],t]

FullSimplify[iosp[%,%]]

and normalize the isotropic representative

mgcuun[t_] = FullSimplify[mgcuu[t]/Sqrt[%],a>0&&b>0]

D[mgcuun[t],t]

FullSimplify[iosp[%,%],a>0&&b>0]

Now we calculate the conformal curvatures of the anticurve:

FullSimplify[k1[mgcuun][t]]

FullSimplify[k2[mgcuun][t]]

FullSimplify[chB[-(((a^2)+2 (b^2))/(2 Abs[a b])),-((a b)/(((((a^2) (b^2)))^(1/4)) (Sqrt[(a^2)+2 (b^2)])))],(a>0)&&(b>0)]

cuu[t] is the anticurve of cu[t]; it is a helix too. We now calculate the anticurve of cuu[t]

anticuu[t_] = FullSimplify[frefr[4][mgcuun][t]]

FullSimplify[iosp[%,%], a>0&&b>0]

FullSimplify[iosp[D[anticuu[t],t],D[anticuu[t],t]], a>0&&b>0]

The anti - anticurve has the normed representative

anticuun[t_] = anticuu[t]/Sqrt[%]

FullSimplify[iosp[D[%,t], D[%,t]], a>0&&b>0]

Here are its conformal curvatures:

Timing[FullSimplify[kk1[anticuun][t], a>0&&b>0,TimeConstraint-> Infinity]]

Timing[FullSimplify[kk2[anticuun][t], a>0&&b>0,TimeConstraint-> Infinity]]

FullSimplify[chB[-(((a^4)+6 (a^2) (b^2)+4 (b^4))/(2 (a^3) b+4 a (b^3))),-(Sqrt[((a b ((a^2)+2 (b^2)))/((a^4)+6 (a^2) (b^2)+4 (b^4)))])],(a>0)&&(b>0)]

The anticurve of a helix is a helix again. It isn’t Möbius equivalent to the given helix, in general.
Remark. The anticurve of a curve with constant conformal curvatures is a curve with constant curvatures again. Prove it!

5.5. Example Horopter

?horopter

horopter[a, b][t]

ParametricPlot3D[horopter[5,1][t],{t,-10,10},PlotStyle->{Thick,Red},PlotRange->All]

horop = %;

nmgcurve[horopter[a,b]][t]

FullSimplify[%,{a>0,b==1,Element[t,Reals]}]

hor[a_][t_]=%

Simplify[ASSU[hor[a]][t]]

anticurve[horopter[a,1]][t]

FullSimplify[%,{a>0,Element[t,Reals]},TimeConstraint->Infinity]

Mathematica 12.0: Aborted after more than 4 h without Result.
Mathematica 8.0; Result after 22 min.

Continued with Mathematzica 8.0:

antihorop[a_][t_]=%;

Length[antihorop[a][t]]

ParametricPlot3D[antihorop[5][t],{t,-10,10}, PlotStyle-> {Thick,Green}]

antihor= %;

Show[{antihor,horop},PlotRange -> All]

Limit[antihorop[a][t],t-> Infinity]

Now we calculate the conformal curvatures of a horopter.

Timing[FullSimplify[kk1[hor[a]][t],{ a>0,Element[t,Reals]},TimeConstraint->Infinity]]

fk1hor[a_][t_] =%[[2]];

Plot[fk1hor[5][t],{t,-10,10}]

Limit[fk1hor[a][t],t-> Infinity]

Timing[FullSimplify[kk2[hor[a]][t],{ a>0,Element[t,Reals]},TimeConstraint->Infinity]]

fk2hor[a_][t_] =%[[2]];

Plot[fk2hor[5][t],{t,-10,10}]

Limit[fk2hor[a][t],t-> Infinity]

5.6. Example. A Conical Spiral

The conical spirals have the parameter representation

Clear[ss,a,r];conspir[a_,r_][t_]:={t*r*Cos[a*t],t*r*Sin[a*t],t}

The cosine of the angle under which the curve intersects the generating lines (rulings) of the cone is not constant:

tangent[conspir[2,1]][t]

alpha[t_] :=(tangent[conspir[2,1]][t].conspir[2,1][t])/Sqrt[conspir[2,1][t].conspir[2,1][t]]

Simplify[alpha[t]]

Plot[alpha[t],{t,-3,3}]

ParametricPlot3D[conspir[2,1][t],{t,0,6*Pi},PlotStyle -> {Red,Thick}]

spir = %;

ParametricPlot3D[{Cos[t],Sin[t], 1}*s,{t,0,2*Pi},{s,0,19},Mesh-> None, PlotStyle -> Opacity[.5]]

con = %;

Show[{con,spir},PlotRange -> All]

csp[t_] = Simplify[conspir[2,1][t]]

FullSimplify[nmgcurve[csp][t],t>0]

mnmgcsp[t_]=%;

Simplify[ASSU[mnmgcsp][t]]

Timing[FullSimplify[kk1[mnmgcsp][t],t>0]]

fk1csp[t_]=%[[2]];

Plot[fk1csp[t],{t,0,10}]

Timing[FullSimplify[kk2[mnmgcsp][t],t>0]]

Mathematica 8.0.1 needed 1756 s = 29 min to get the  result.

fk2csp[t_]=%[[2]];

Plot[fk2csp[t],{t,0,10}]

The conformal curvatures of the conical spiral are not constant, this curve is not an orbit of a 1-parametric subgroup of the Möbius group.  The orbital spirals are considered in the next section.
Now we calculate the ANTICURVE OF THE CONICAL SPIRAL.

euklid[frefr[4][mnmgcsp][t]]

antispiral[t_] = Simplify[%,t>0]

ParametricPlot3D[antispiral[t], {t,0,6*Pi}, PlotStyle->{Thick,Green}]

antispir =%;

Show[{con,spir,antispir},PlotRange -> All]

5.7. Example. An Orbital Spiral

The conical spirals are not orbits since its conformal curvatures aren’t constant.  To get the orbital spirals  we consider a subgroup of the conform Euclidean group

spmatrix[b_,t_] :={{Cos[t], -Sin[t],0},{Sin[t],Cos[t],0},{0,0,1}}*Exp[b*t]

The next cell confirms the group property:

Simplify[spmatrix[b,t].spmatrix[b,s]== spmatrix[b,s+t]]

Solving the equation

Reduce[Evaluate[spmatrix[b,t].{x,y,z}][[2]]==0,t,Reals]

one shows that any orbit intersects the coordinate plane  y = 0. Thus we get all orbits choosing as starting point a point of this plane.

spmatrix[b,t].{a,0,c}

It can be shown that these curves coincide with the so-called Concho spirals.

Clear[ss,a,b,c,t,spirorbit];spirorbit[a_,b_,c_][t_]:={a*Exp[t*b]*Cos[t],a*Exp[t*b]*Sin[t],c*Exp[t*b]}

Test the shape of the spiral orbit inserting distinct values of the parameters a,b,c in the next command and evaluate the cell:

We consider now the special

ospiral[t_] = spirorbit[1,1/10,1][t]

ParametricPlot3D[ospiral[t],{t,-1,6*Pi},PlotStyle -> {Thick,Red}]

ospir = %;

Here is the cone generated by the orbit:

ParametricPlot3D[{Cos[t],Sin[t], 1}*Exp[.1*s],{t,0,2*Pi},{s,-10,6.3*Pi},Mesh-> None, PlotStyle -> Opacity[.6]]

con = %;

Show[{con,ospir}]

conospir = %;

The cosine of the angle under which the curve intersects the generating lines (rulings) of the cone is constant;  therefore the curves are not congruent and  not Möbius equivalent to the conical spirals considered in the last subsection.

tangent[ospiral][t]

alpha[t_] :=(tangent[ospiral][t].ospiral[t])/Sqrt[ospiral[t].ospiral[t]]

Limit[alpha[t], t-> 0]

FullSimplify[%== alpha[t]]

A normed isotropic representative of  ospiral[t] is

nmgospiral[t_] = Simplify[nmgcurve[ospiral][t],t>0]

Simplify[ASSU[nmgospiral][t]]

Timing[FullSimplify[kk1[nmgospiral][t],t>0]]

k1ospiral=%[[2]]

Timing[FullSimplify[kk2[nmgospiral][t],t>0]]

k2ospiral=%[[2]]

The conformal curvatures of ospiral[t] are constant,as expected. 
Now we calculate the orbital antispirals:

Timing[FullSimplify[euklid[frefr[4][nmgospiral][t]],t>0]]

antiospiral[t_]=%[[2]]

ParametricPlot3D[antiospiral[t],{t,-1,6*Pi}, PlotStyle->{Thick,Green}]

antiospir=%;

Show[{con,ospir,antiospir}]

nmgantispiral[t_]=Simplify[nmgcurve[antiospiral][t],t>0]

Timing[FullSimplify[kk1[nmgantispiral][t],t>0]]

k1antiospiral=%[[2]]

Timing[FullSimplify[kk2[nmgantispiral][t],t>0]]

k2antiospiral=%[[2]]

The conformal curvatures of the antiospiral are constant, obviously it is an orbital spiral again. Since the curvatures differ from those of ospiral[t]:

N[k1antiospiral- k1ospiral]

N[k2antiospiral- k2ospiral]

these orbital spirals arn’t Möbius equivalent.

References

[BT] W. Blaschke, G. Thomsen.  Volesungen über Differentialgeometrie III.  Differentialgeometrie der Kreise und Kugeln. Verlag Springer. Berlin 1929.

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

[ECG] Rolf Sulanke. The Fundamental Theorem for Curves in the n-Dimensional Euclidean  Space. 2009. Download.

[ECGnb] Rolf Sulanke. Euclidean  Curve Theory. Mathematica  notebook. 2009. Download.
See also the  Introduction to Euclidean Differential Geometry.

[OS3] A. L. Onishchik, R. Sulanke. Projective and Cayley-Klein Geometries. Springer-Verlag. Berlin,Heidelberg. 2006

[mdg2D] Rolf Sulanke. Curves in the Möbius Plane. Mathematica notebook. 2018.  
Download .

[mdg] Rolf Sulanke. Möbius Differential Geometry I.  Download.

{lox] R. Sulanke. Loxodromes. A Mathematica Notebook. On my homepage.

[ccc] R. Sulanke.  Curves of Constant Curvatures in Möbius Geometry.  Mathematica notebook, 2011. Download. On my homepage.
Warning. This notebook is obsolete. Don’t open this notebook as a subnotebook of mdgcurves3D.nb: mismatch of definitions!

[MGII R. Sulanke.  Submanifolds of the Möbius Space II. Frenet Formulas and Curves of  Constant Curvatures. Math. Nachr. 100 (1981),235-237. Download.

[MGIV] R. Sulanke.  Submanifolds of the Möbius Space IV. Conformal Invariants of Immersions into Spaces of Constant Curvatures. Potsdamer Forschungen, Reihe B,H. 43,21 -26. 1984. Download.

Homepage

http://www2.mathematik.hu-berlin.de/~sulanke