Pairs of Subspheres in (S^3)

by

Rolf Sulanke

April 14, 1999, revised May 31, 1999, December 7, 2000

Summary

This notebook describes the Moebius invariants for pairs of subspheres in (S^3), or, by stereographic projection, in the euclidean 3-space . The most important cases, pairs of spheres and pairs of circles, are treated in the notebooks mspheres.nb and mcircles.nb, some procedures of which are needed in the present notebook. In section 2 pairs consisting of a sphere and a circle are considered; they are characterized up to Möbius equivalence by a single invariant invsc. Certain expressions of invsc in terms of euclidean invariants of the pairs are deduced. Section 3 treats pairs consisting of a sphere and a point pair; remember that point pairs are 0-spheres. Their mutual position is described again by a single invariant named invspp. In section 4 pairs of 1-spheres and 0-spheres, i.e. circles and point pairs, are considered; their mutual position depends on two invariants: the eigenvalues of a double projection, see [4]. Finally, section 5 treats point quadruples as pairs of  0-spheres, and in section 6 the geodesics in the space of  0-spheres (= point pairs) are considered. The last section imports  ThreeScript and MathGL3d, which can be applied for animations of the created 3D-graphics. 
For differential geometry with Mathematica in the euclidean 3-space see Alfred Gray [1].
For the concepts of Möbius geometry applied here see my preprint [4].

A systematic description of the circle space is contained in the diploma paper of Uwe May [3].

Some tools for working in the pseudo-orthogonal Lie algebra we took from [5]

References

[1] Gray, Alfred. Modern Differential Geometry of Curves and Surfaces. CRC PRESS, 1993 (German translation: Spektrum Akademischer Verlag 1994)

[2] Kuska, Jens-Peer. http://phong.informatik.uni-leipzig.de/ ~kuska/mview3d.html.
[3] May, Uwe. Der Raum der Kreise in der Sphäre. Diplomarbeit, Humboldt-Universität, Berlin, 1993

[4] Sulanke, R. Möbius invariants for pairs ((Subscript[S, 1]^m), (Subscript[S, 2]^l)) of spheres in the Möbius space (S^n). http://xxx.lanl.gov/abs/math.MG/9902131

[5] R.Sulanke,R. Lie Algebras. http://www.mathsource.com/cgi-bin/msitem?0210-845.

Keywords:

pseudo-euclidean geometry,  Moebius geometry, rank of a matrix, random matrix, 3D-circles, invariants of pairs of subspheres (arbitrary dimensions), double projection, stationary angles, eigenspheres, point pairs as 0-spheres, associated spheres,  point quadruples, throws, geodesics in the space of 0-spheres,  Killing form, MathGL3d.

Address

sulanke@mathematik.hu-berlin.de

The author will be very thankful for hints, corrections, comments.

Initialization

The needed packages

Before initializing the present notebook ensure that the packages
euvec.m
pseuvec.m
mspher.m
mcirc.m
and the master package init.m are in your working directory. These packages are contained in the item "Spheres".
 For the present notebook the package spiralsf.m is not needed.

3D graphics, animations

In the notebook command lines using ThreeScript, or MVShow3D appear. They may used for 3D-representations and animations of Mathematica Graphics3D objects. To apply them you must have the necessary software on your computer. Look in the last section.

For Windows

For the commands in this subsection:
DO NOT CONFIRM THE EVALUATION OF THE INITIALIZATION CELLS !!!

If the result of the following command

Directory[]

does not coincide with the working directory, e.g. "C:\Eigene Dateien\mymath\spheres.v4", containing the needed packages, insert the Path of your working directory in the next command line and activate it first, without calling the initialization:

SetDirectory["C:\\Eigene Dateien\\mymath\\spheres4"]

If you want  that all commands contained in the packages of the item "Spheres" are available, activate

Get["init.m"]

Now: Activite Kernel/Evaluation/Evaluate Initialization from the menu!

For Linux (and other  systems: not tested!)

For the next command:
DO NOT CONFIRM THE EVALUATION OF THE INITIALIZATION CELLS !!!

If you want to use the package euvec.m only, remove the file init.m  from the working directory and carry out the next command.

Needs["euvec`"]

Now: Activite Kernel/Evaluation/Evaluate Initialization from the menu!

1 Preliminaries

1.1 Pseudo-euclidean vector algebra and other prerequisites

The dimension dim of the underlying vector space and the index  ind of the (non-degenerate, symmetric) scalar product are now defined by

dim  =  5;  ind  =  1;

because in this notebook the 3-dimensional sphere is treated as the elliptical hyperquadric in the four-dimensional projective  space, which belongs to the five-dimensional real vector space. You can change these constants only before starting the evaluation of the initialization cells  by changing this command line.. But remember that these constants enter in almost all of the treated concepts; therefore they should be defined before using the packages.

The matrix of the scalar products of any orthonormal basis of the pseudo-euclidean vector space is

MatrixForm[Table[pssp[stb[i],  stb[j]], {i, 5}, {j, 5}]]

Terminology: Spheres are usual 2-dimenional spheres if we consider the 3-dimensional spherical geometry; in this notebook spheres are hyperspheres for all dimensions. We prefer the three-dimensional case since we can imagine this geometry and represent the configurations graphically.

1.2 The usages

After a package has been loaded you can get information about the  listed concepts in the usual way, e.g.

?orthonorm

Context[orthonorm]

For getting the usage and the complete definition, enter e.g.

?? spt

Since the names are prepended by the ContextNames the definition obtained in this way are hard to read. Therefore you will find some of them below in the original form in unevaluable cells.  It is recommended to look in the packages.

Symbols in mcirc.m

Here you can get information about the commands which are defined in mcirc.m:

\(TableForm[{"adaptsplframe", "center", "posvec", "radius", "center3pts", "circle2spv", "circle3D", "circle3pts", "circlefamily", "circleplane", "circlespacevectors", "control", "gencircle", "plotcircle2spv", "plotcircle3D", "plotcircle3pts", "plotgencircle", "posvec3pts", "pp", "ppdet", "pptr", "pscomplement", "radius3pts", "threepoints", "tube", "unitvec", "vspace"}]\)

To get the usages activate the next cell!

\(\({\(?"adaptsplframe"\), \(?"center"\), \(?"posvec"\), \(?"radius"\), \(?"center3pts"\), \ \(?"circle2spv"\), \ \(?"circle3D"\), \(?"circle3pts"\), \(?"circlefamily"\), \(?"circleplane"\), \(?"circlespacevectors"\), \ \(?"control"\), \ \(?"gencircle"\), \ \ \ \(?"plotcircle2spv"\), \(?"plotcircle3D"\), \ \(?"plotgencircle"\), \(?"plotcircle3pts"\), \(?"posvec3pts"\), \ \(?"pp"\), \(?"ppdet"\), \ \(?"pptr"\), \(?"pscomplement"\), \(?"radius3pts"\), \(?"threepoints"\), \ 
\ \(?"tube"\), \ \(?"unitvec"\), \ \(?"vspace"\)};\)\)

Symbols in euvec.m

\(TableForm[{"cross", "hyperplane", "invsterproj", "dotnorme", "esorthonorm", "innerprod", "normed", "print", "neglect", "nul", "ortho1", "orthobase", "orthoerg", "orthoframe", "outzero", "randomv", "rank", "renorm", "smoothing", "sphere", "sphereplot3D", \ "subsphere", "subspheremf", "sphereplot3D", "sphericalreflection", "stb", "sterproj", "tg4frame", "unit", "vec"}]\)

To get the usages activate the next cell!

\(\({\(?"cross"\), \(?"hyperplane"\), \(?"invsterproj"\), \(?"dotnorme"\), \(?"esorthonorm"\), \(?"innerprod"\), \(?"normed"\), \(?"print"\), \(?"neglect"\), \(?"nul"\), \(?"ortho1"\), \(?"orthobase"\), \(?"orthoerg"\), \(?"orthoframe"\), \(?"outzero"\), \(?"randomv"\), \(?"rank"\), \(?"renorm"\), \(?"smoothing"\), \(?"sphere"\), \(?"subsphere"\), \(?"subspheremf"\), \(?"sphereplot3D"\), \(?"sphericalreflection"\), \(?"stb"\), \(?"sterproj"\), \(?"tg4frame"\), \(?"unit"\), \(?"vec"\)};\)\)

?? invsterproj

Symbols in pseuvec.m

\(\(\(TableForm[{"ch", "dual", "ide", "normalize", "orthonorm", "orthopair", "pr", "psCross", "pscross", "psfilter", "pssp"}]\)\(\ \)\)\)

To get the usages activate the next cell!

\(\({\(?"ch"\), \(?"dual"\), \(?"ide"\), \(?"normalize"\), \(?"orthonorm"\), \(?"orthopair"\), \(?"pr"\), \(?"psCross"\), \(?"pscross"\), \(?"psfilter"\), \(?"pssp"\)};\)\)

?psfilter

?? pscross

?? psCross

Symbols in mspher.m

\(\(\(TableForm[{"confinv", \ "gencos", \ "invstepro", \ "planev", \ "plotsphere", 
"euklidsphere", \ "pstg5frame", \ "euklidsphereplot3D", \ "vradius", \ "vcenter", \ "spacevec", 
"sphvec", \ "spt", "spunit", \ "stepro"}]\)\(\ \)\)\)

To get the usages activate the next cell!

\(\({\(?"confinv"\), \ \(?"gencos"\), \ \(?"invstepro"\), \ \(?"planev"\), \ \(?"plotsphere"\), 
\(?"euklidsphere"\), \ \(?"pstg5frame"\), \ \(?"euklidsphereplot3D"\), \ \(?"vradius"\), \ \(?"vcenter"\), \ \(?"spacevec"\), 
\(?"sphvec"\), \ \(?"spt"\), \(?"spunit"\), \ \(?"stepro"\)};\)\)

?? spunit

1.3 Some tools

A general vector, random vectors

vec[x_,  n_:  dim]  :=  Table[x[i],  {i,  n}]

vec[Sin]

N[%]

randomv[n_:  dim]  :=  Table[Random[], {i,  n}]

randomv[]

Rank of a matrix, random matrices

We shall consider the mutual position of a circle and a sphere in the 3-space or the 3-sphere and the corresponding Möbius invariants. Denote by S = S(vn), vn a spacelike unit vector, the sphere and by C = C(cn1,cn2) the circle corresponding to the euclidean subspace spanned by the orthonormal pair cn1,cn2. We have C ⊂ S iff rank(vn,cn1,cn2) < 3.

\(rank[m_]\  := \ 
      Module[{\ di\  = \ Length[m[\([1]\)]], \ nsp}, 
		nsp\  = \ 
            NullSpace[m]; 
		di\  - \ Length[nsp]] /; 
        MatrixQ[m]\)

rank[{stb[1],  stb[3],  stb[4]}]

rank[{stb[1],  stb[1],  stb[4]}]

rank[{{Cos[t], Sin[t]}, {-Sin[t], Cos[t]}}]

Timing[rank[IdentityMatrix[10^3]]]

randommatrix[k_, l_]  :=  Table[randomv[l],  {k}]

randommatrix[2, 3] // MatrixForm

Timing[rank[randommatrix[100, 200]]]

Finding orthogonal pairs

The following definition is given in pseuklid.m:

?orthopair

Examples:

orthopair[{0.5, 0.5, 1, 0, 0}]

Working with floating point numbers may give approximate results only:

orthopair[{0.5, 0.5, 1, 1, 1}]

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

Here is an exact solution:

orthopair[{1/2, 1/2, 1, 1, 1}]

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

orthopair[stb[1]]

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

Control of orthonormality

If necessary,  one can apply the following control:

?control

control[v_List, w_List,  prod_:  pssp] := 
      Simplify[(((prod[v, v] - 1))^2) + 
          prod[v, w]^2 + (((prod[w, w] - 1))^2)]

If all is correct the result must be 0, or numerically very small. If the result depends on a parameter, integrate!

EXAMPLE:

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

control[%[[1]], %[[2]]]

control[stb[1],  stb[5]]

(va  =  randomv[];  Print[va, ", ",  ch[va]]; 
      vb  = orthopair[va]; 
      Print[vb]; 
control[vb[[1]],  
        vb[[2]]])

Remove[va,  vb]

The default scalar product is pssp; you may use another scalar product inserting it as second argument:

{{Cos[t], Sin[t],  0, 0},  stb[2, 4]}

control[%[[1]], %[[2]],  Dot]

{{Cos[t], Sin[t],  0, 0},  stb[3, 4]}

control[%[[1]], %[[2]],  Dot]

Smoothing

The following function makes an almost zero  number to be zero; the sensibility can be regulated by the optional second argument, whose default value is (10^(-10)); for the difference to Chop see the remark in the notebook eusphere.nb.

smoothing[a_, b_:  10^-10] := 
        Module[{c = a}, If[b == 1, Return[c], If[Abs[c] < b, c = 0]];  
          c];

2 Spheres and circles

2.1 The invariant invsc

Definition of invsc

By the general theory, the pair (S(vn), C(cn1,cn2)), S(vn) the sphere corresponding to the spacelike unit vector vn, C(cn1,cn2) the circle defined by the euclidean 2-space spanned by the orthonormal vectors cn1,cn2,  is defined up to Möbius equivalence by a single invariant:

invsc[vn_, cn1_, cn2_] :=  
      pssp[vn,  cn1]^2  +   pssp[vn,  cn2]^2

Obviously, this invariant is independent of the choice of the generating vectors (vn normed, cn1,cn2 orthonormal):

fct[t_]  :=  
      invsc[vec[x],  
        stb[3] *Cos[t]  +  stb[4]*Sin[t], - stb[3]*Sin[t]  +  
          stb[4]*Cos[t]]

Simplify[fct[t]  - fct[0]]

As circle we have chosen here the "standard circle" grc1 defined by stb[3], stb[4]:

Show[grc1]

that is not a restriction of generality, since the Möbius group acts transitively on the manifold of all circles. The formula for invsc makes sense for arbitrary vectors vn = vec[x]; it defines an invariant of the subspaces defined by vn, and cn1,cn2,  only if the vector vn can be normalized (cn1,cn2 assumed to be orthonormal). If vn is timelike, it defines a hyperbolic 3-dimensional linear complex of spheres: This are all the spheres corressponding to spacelike unit vectors orthogonal to vn. Generally, invsc[vn, cn1,cn2] = 0 if and only iff all spheres containing the circle C(cn1,cn2) belong to the linear sphere complex defined by vn. For isotropic vectors vn = vec[x] only the vanishing of invsc is an invariant property. Let p denote the point of (S^3) defined by the isotropic vector vn. Then we have
invsc[vn, cn1,cn2] = 0 <==> p ∈ C.
One easily proves that the Möbius group acts transitively on each of the manifolds of pairs
{(p, C) |  p ∈ C},  {(p, C) |  p ∈ (S^3) \  C}.
(Exercise: Show this using pseudo-orthogonal linear algebra.)

Clear[fct]

2.2 Examples

Inclusion: rank 2

Clearly, we always have rank[{vn,cn1,cn2}] ≥ 2.  Any two pairs (C, S) with C ⊂ S are Möbius equivalent, and this inclusion takes place iff  rank[{vn,cn1,cn2}] = 2, and then we have invsc[vn,cn1,cn2] = 1. Indeed, we have rank[{vn,cn1,cn2}] = 2 iff vn is contained in the span of cn1, cn2. Then vn must be spacelike, and being   normed it follows invsc[vn,cn1,cn2] = 1. The spheres corresponding to

vn = cn1*Cos[t] + cn2*Sin[t]

form the bundle of spheres through the circle; this is a spacelike geodesic in the space of all spheres, see mspheres.nb, section 5.3.

Table[
      euklidsphereplot3D[N[{0, 0, Cos[k*Pi/10],  Sin[k*Pi/10], 0}], -1, 
        0, -1, 1],  {k, 10}]

Show[%]

Show[{%, grc1}]

Tangent pairs

The condition  invsc[vn,cn1,cn2] = 1 does not be sufficient for the inclusion of the circle into the sphere. From  the results in [4] it follows: If

rank[{vn,cn1,cn2}] =3,   and    invsc[vn,cn1,cn2] = 1

the circle is tangent to, but not contained in the sphere.

1. Example

vmm = { .5, 0, 1, 0,  .5}

pssp[vmm, vmm]

euklidsphereplot3D[vmm]

Show[{%, grc1}]

testgr = %

vcenter[vmm]

vradius[vmm]

invsc[vmm, stb[3], stb[4]]

MVShow3D[testgr,  MVLineTubeSize  ->  0.03]

2. Example

spacevec[2*Cos[t],  2*Sin[t], 0, 1]

Simplify[%]

invsc[{2 Cos[t], 2 Sin[t], 0, 1, 2}, stb[3], stb[4]]

rank[{{2 Cos[t], 2 Sin[t], 0, 1, 2}, stb[3], stb[4]}]

Table[
      euklidsphereplot3D[N[{2*Cos[k*Pi/5], 2*Sin[k*Pi/5], 0, 1, 2}]],  {k, 
        10}]

Show[%]

Show[{%, grc1}]

tangex =  %

MVShow3D[tangex,  MVLineTubeSize  ->  0.03]

Intersecting pairs

We assume now rank[vn,cn1, cn2] = 3. The sphere S and the circle C are intersecting in a 0-sphere (two points) iff the orthogonal complement of span[vn,cn1, cn2] is pseudo-euclidean, and this is the case iff 
 invsc[vn, cn1, cn2] < 1.

In the next section we shall see that in this case one has
Cos[α]^2 =  invsc[vn, cn1, cn2],

where α denotes the intersection angle. Consider the standard unit circle and the halfspheres

Table[
      invsc[stb[2]*Cos[k*Pi/20] + stb[4]*Sin[k*Pi/20], stb[3], stb[4]],  {k, 
        3, 8}]

N[%]

Table[
      euklidsphereplot3D[
        N[stb[2]*Cos[k*Pi/20] + stb[4]*Sin[k*Pi/20]], -1, 0, -1, 
        1],  {k, 3, 8}]

Show[%]

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

tgr1  =  %

MVShow3D[tgr1,  MVLineTubeSize  ->  0.03]

We try another example: We fix the unit sphere and vary the circle:

Table[
      invsc[stb[4], stb[3]*Sin[k*Pi/20]  +  stb[4]*Cos[k*Pi/20],  
        stb[2]*Sqrt[2] + stb[5]],  {k, 1, 10}]

N[%]

Table[
      plotcircle2spv[stb[3]*N[Sin[k*Pi/20]] +  stb[4]*N[Cos[k*Pi/20]],  
        stb[2]*N[Sqrt[2]] + stb[5]],  {k, 1, 10}]

Show[%]

tgrc10  =  %

euklidsphereplot3D[stb[4]]

grs1  =  %

Show[{grs1, tgrc10}]

tgrscc  =  %

MVShow3D[tgrscc,  MVLineTubeSize  ->  0.01]

Orthogonal intersections

The standard unit circle intersects the "sphere" x = 0 orthogonally:

invsc[stb[1], stb[3], stb[4]]

Generally, any sphere corresponding to a spacelike unit vector of the orthogonal complement to [cn1, cn2], here the space spanned by stb[1], stb[2], stb[5], intersects the circle grc1 orthogonally. 
We consider the  spheres S(stb[1]Cosh[t] + stb[5]*Sinh[t]):

invsc[stb[1] Cosh[t]  +  stb[5]*Sinh[t], stb[3], stb[4]]

Table[
      euklidsphereplot3D[stb[1] Cosh[t]  +  stb[5]*Sinh[t]], {t,  0,  
        2,  0.5}]

extab  =  %

Table[Show[{extab[[i]],  grc1}],  {i, 1, 5}]

Show[%]

Show[{extab[[5]], grc1}]

gs2  =  %

sphex  =  euklidsphereplot3D[{1, 1, 0, 0, 1}]

Show[{grc1,  sphex}]

MVShow3D[Out[115],  MVLineTubeSize  ->  0.02]

The set of all the spheres intersecting  a given circle orthogonally is a 2-dimensional sphere family, corresponding to the hyperboloid of spacelike unit vectors of the orthogonal complement of cn1,cn2: a linear sphere congruence.

Disjoint pairs

We consider the spheres S(stb[3]Cosh[t] + stb[5]*Sinh[t]). Obviously, for t = 0 the standard circle grc1 is contained in the corresponding "sphere", the x,y-plane:

euklidsphereplot3D[stb[3]]

Show[{%, grc1}]

For t ≠ 0 any sphere S(stb[3]Cosh[t] + stb[5]*Sinh[t]) is disjoint to the unit circle, because of invsc > 1:

invsc[stb[3] Cosh[t]  +  stb[5]*Sinh[t], stb[3], stb[4]]

invsc[stb[3] Cosh[2. ]  +  stb[5]*Sinh[2. ], stb[3], 
      stb[4]]

euklidsphereplot3D[stb[3] Cosh[2. ]  +  stb[5]*Sinh[2. ]]

Show[{%, grc1}]

gs2  =  %

Show[gs2,  PlotRange  ->  All]

All cases (of rank 3) in one example

With the next example we can reach all possible values of the invariant

invsc[stb[1]*Cosh[t]  +  stb[5]*Sinh[t],  
      stb[2]*Cosh[s]  +  stb[5]*Sinh[s],  stb[4]]

rank[{stb[1]*Cosh[t]  +  stb[5]*Sinh[t],  
        stb[2]*Cosh[s]  +  stb[5]*Sinh[s],  stb[4]}]

We construct an intersecting pair:

euklidsphereplot3D[stb[1] Cosh[1/2]  +  stb[5]*Sinh[1/2]]

gs1  =  %

plotcircle2spv[stb[2]*Cosh[1/2]  +  stb[5]*Sinh[1/2],  
      stb[4]]

gc1  =  %

Show[{gc1, gs1}]

invsc[stb[1]*Cosh[1/2]  +  stb[5]*Sinh[1/2],  
      stb[2]*Cosh[1/2]  +  stb[5]*Sinh[1/2],  stb[4]]

N[%]

Now a disjoint pair:

euklidsphereplot3D[stb[1] Cosh[3/2]  +  stb[5]*Sinh[3/2]]

gs4  =  %

plotcircle2spv[stb[2]*Cosh[3/2]  +  stb[5]*Sinh[3/2],  
      stb[4]]

gs3  =  %

Show[{gs3, gs4}]

gs2  =  %

invsc[stb[1]*Cosh[3/2]  +  stb[5]*Sinh[3/2],  
      stb[2]*Cosh[3/2]  +  stb[5]*Sinh[3/2],  stb[4]]

N[%]

Now we construct a tangent pair; all tangent pairs are Möbius equivalent: Give a direct proof!

ct  =  ArcSinh[1]

N[ct]

Sinh[ct]

invsc[stb[1]*Cosh[ct]  +  stb[5]*Sinh[ct], 
      stb[2]*Cosh[ct]  +  stb[5]*Sinh[ct],  stb[4]]

rank[{stb[1]*Cosh[ct]  +  stb[5]*Sinh[ct], 
        stb[2]*Cosh[ct]  +  stb[5]*Sinh[ct],  stb[4]}]

euklidsphereplot3D[stb[1]*Cosh[ct]  +  stb[5]*Sinh[ct]]

gt1  =  %

plotcircle2spv[stb[2]*Cosh[ct]  +  stb[5]*Sinh[ct],  
      stb[4]]

gt2  =  %

Show[{gt1, gt2}]

gt3 =  %

Apply MathGL3d (see the end of the notebook) or a similar animation program for visualizing the situations.

MVShow3D[gt3,  MVLineTubeSize  ->  0.03]

invsc[stb[1]*Cosh[t]  +  stb[5]*Sinh[t],  
      stb[2]*Cosh[s]  +  stb[5]*Sinh[s],  stb[4]]

For s =0 or t = 0 we have orthogonal intersections:

t= 0:

euklidsphereplot3D[stb[1]]

gi0  =  %

euklidsphereplot3D[stb[1]*Cosh[3/2]  +  stb[5]*Sinh[3/2]]

gi1  =  %

s= 0:

plotcircle2spv[stb[2], stb[4]]

gi2  =  %

Show[{gi1, gi2}]

gt2  =  %

Show[{gi0, gi2}]

euklidsphereplot3D[stb[1]*Cosh[1/2]  +  stb[5]*Sinh[1/2]]

gi1  =  %

Show[{gi1, gi2}]

gt2  =  %

2.3 Euclidean interpretation of invsc

A general formula

The spacelike vector defining a sphere with given center and radius is

?spacevec

sv  = spacevec[x, y, z, r]

pssp[%, %]

Simplify[Together[%]]

The adapted frame of the arbitrary circle is

?circlespacevectors

cv  =  circlespacevectors[X, Y, Z, U, V, R]

We  calculate

Simplify[invsc[sv,  cv[[1]],  cv[[2]]]]

The vector vd =

{x, y, z}  -  {X, Y, Z}

is the radius vector of the centers, and vn =

unit[2][{U, V}]

is the position vector: a unit normal vector of the plane of the circle. Therefore we can express the conformal invariant invsc as a function of the euclidean positioning entities vd,vn, r, R:

invscfct[vd_List,  vn_List,  r_, 
        R_]  := 
((vd . vd  - r^2  - R^2)/(2*r*
                  R))^2  + ((vd . vn)/r)^2

In euclidean terms, the radii r, R, the distance of the centers d = Sqrt[vd.vd], and the angle
 phi,  d Cos[phi] = vd.vn, 0 <= phi < Pi, 
between the postion vector vn and the radiusvector of the centers vd are a complete invariant system of the pair of non-oriented circle with a non-oriented sphere. In these terms the conformal invariant invsc can be expressed as

euklidinvsc[d_, r_, R_, 
        phi_]  :=  ((d^2  - r^2  - R^2)/(2*r*
                  R))^2  +  ((d*Cos[phi])/r)^2

euklidinvsc[d, r, R, phi]

As far as I know,  this expression of the conformal invariant of a sphere and a circle is new; at least I have not found it in the literature. The result is a good example of a symbolic calculation in Mathematica with the tools developed in the item "Spheres". The first term is the square of the conformal invariant of the given sphere with the sphere through the circle, having the same center and radius as the circle, see section 4.1 in the notebook mspheres.nb (related with H. S. M. Coxeter's "inversive distance"):

confinv[r, R, d]

The second term measures the influence of the angle between the position vector and the radius vector of the centers; d*Cos[phi] is the length of the projection of this radius vector onto the normal of the circle plane through the circle's center. From our expression euklidinvsc one recognizes immediately that invsc vanishes if and only iff the circle intersects the sphere orthogonally: The tangents of the circle at the intersection points are the radial lines from the center of the sphere to these points.

Evaluation

Since any circle is Moebius equivalent to the standard circle grc1, given by stb[3], stb[4],  we reach all possible values of the invariant by

invsc[spacevec[x, y, z, r], stb[3],  stb[4]]

what coincides with

invscfct[{x, y, z}, {0, 0, 1},  r,  1]

Since m = {x,y,z} is the center of the sphere, and d = Sqrt[m.m] the distance of the centers, we may simplify this formula as follows:

fctinv[d_,  r_, 
        z_]  :=   ((1  +  r^2  - d^2)^2  +  4*z^2)/(4*
            r^2)

fctinv[d, r, z]

Clearly, this is not a Möbius invariant of the arbitrary sphere with an arbitrary circle: alle the spheres are compared with the standard circle grc1. Therefore it is not invariant e.g. against dilatations, which are Möbius transformations. In spite of this the function may be applied to study how the invariant invsc depends of the euclidean invariants. Here the sphere has radius 1, its center is on the z-axis at d = z:

Plot[fctinv[d, 1, d],  {d,  0, 10}]

Plot[fctinv[d, 1, d],  {d,  0, 3}]

Here the circle is contained in the unit sphere (as equator, what is not essential):

fctinv[0, 1, 0]

Now the unit sphere has the center in distance d from the origin (the circle's center):

Plot[fctinv[d, 1, 0],  {d,  0, 3}]

For d = Sqrt[2] we have orthogonal intersection of circle and sphere:

fctinv[Sqrt[2], 1, 0]

In the following picture only the values Abs[z] ≤ d are to consider:

Plot3D[fctinv[d, 1, z], {d, 0, 2}, {z, 0, 1}]

Circles with center on the x-axis

The circle with Radius R, center at X on the x-axis and position vector

unit[2][{u, v}]

corresponds to the euclidean 2-space  spanned by

circlespacevectors[X, 0, 0, u, v, R]

vspuv  =  %;

invsc[spacevec[x, 0, 0, r], vspuv[[1]],  
      vspuv[[2]]]

Simplify[%]

This function can be used to study the depence of invsc from the position vector of the circle:

fctinvscuv[x_, X_, r_, R_, u_, v_]  = %

Since all the unit circle with center at the origin are contained in the standard unit sphere we obtain the constant 1 for

Plot3D[
      fctinvscuv[0, 0, 1, 1, u, v],  {u, 0, 2*Pi},  {v, -Pi/2, 
        Pi/2}]

Next we consider the standard unit sphere and circles with radius 1, center {3/2,0,0}, and arbitrary position vector:

Plot3D[
      fctinvscuv[0, 3/2, 1, 1, u, v],  {u, 0, 2*Pi},  {v, -Pi/2, 
        Pi/2}]

Plot3D[
      fctinvscuv[0, 3/2, 1, R, Pi/4, v],  {v, -Pi/2, Pi/2},  {R, 0.5, 
        1}]

Now we turn the unit circle with center {3/2, 0, 0} around the parallel to the y-axis through the center:

fctinvscuv[0, 3/2, 1, 1, 0, v]

Plot[fctinvscuv[0, 3/2, 1, 1, 0, v],  {v, -Pi/2, Pi/2}]

Here are the tangent cases:

Solve[(1/4) ((1/16) + 9 Cos[v]^2) == 1, v]

N[ArcCos[((Sqrt[7])/4)]]

The minimum is

fctinvscuv[0, 3/2, 1, 1, 0, Pi/2]

The intersection angle in this position (circle is contained in the x,y-plane) is

N[ArcCos[1/8]]

In degrees:

%*180/Pi

plotcircle3D[1.5, 0, 0, 0,  Pi/2,  1]

Show[{grc1,  %}]

Plane and circle

If the sphere S of the pair (S,C) appears as an euclidean plane with an equation in Hesse's normal form

{vec[x, 3] . {a, b, c}  ==  
        p,  {a, b, c} . {a, b, c}  ==  1}

its characterizing spacelike vector in the 5-space is

?planev

pn  = planev[a, b, c, p]

We consider again

cv  =  circlespacevectors[X, Y, Z, U, V, R]

and  calculate

Simplify[invsc[pn,  cv[[1]],  cv[[2]]]]

The term d = -p+a X+b Y+c Z is the distance of the center of the circle to the plane, and the expression

Cos[α] = a Cos[U] Cos[V]+b Cos[V] Sin[U]+c Sin[V]

defines the angle α between the given plane and the plane of the circle. Therefore we get for the Möbius invariant of the pair (P,C) of the plane S = P and the circle the expression in euclidean terms

planecircleinvsc[d_, R_, 
        alpha_]  :=  (d/R)^2  + (Cos[alpha])^2

It is easy to transfer the geometric consideration we did in the case (sphere, circle) to the pairing (plane, circle).

Clear[cv, pn, x]

The combinations (plane,  line), (sphere, line) we leave to the interested reader...

3 Spheres and point pairs

3.1 Point pairs as 0-spheres

An adapted frame

A point pair can be represented by a pair of isotropic vectors, which define a pseudo-euclidean 2-space, or its orthogonal complement, an euclidean 3-space in the 5-dimensional pseudo-euclidean vector space. We shall constuct for any pair (a,b) of distinct points in the 3-space, i.e. a  0-sphere, an pseudo-orthonormal frame (c[[i]]) in the pseudo-euclidean 5-space such that
a = stepro[c[[4]] + c[[5]]],   b  = stepro[c[[4]] - c[[5]]].
Such a frame we call adapted to the 0-sphere; of course, it is not uniquely defined. 
Here is a variable point in the euclidean 3-space:

point[a_]  :=  Table[a[i],  {i, 1, 3}]

A corresponding isotropic vector is

invstepro[point[a]]

Simplify[pssp[%, %]]

pssp[invstepro[point[a]], invstepro[point[b]]]

Simplify[Together[%]]

This expression corresponds to the following euclidean invariant of the vector pair

euinv[a_List, 
        b_List]  :=  -2 (a - b) . (a - 
                  b)/((1  +  a . a)*(1  +  b . b)) /; 
        Length[a] ==  Length[b]

euinv[point[a], point[b]]

euinv[stb[1, 3], stb[2, 3]]

pointt[a_]  :=  invstepro[point[a]]

pssp[pointt[a]  +  pointt[b],  pointt[a]  -  pointt[b]]

Simplify[Together[%]]

pssp[pointt[a]  +  pointt[b],  pointt[a]  +  pointt[b]]

Simplify[Together[%]]

%  -  2*euinv[point[a], point[b]]

Simplify[Together[%]]

pssp[pointt[a]  -  pointt[b],  pointt[a]  -  pointt[b]]

Simplify[Together[%]]

%  +  2*euinv[point[a], point[b]]

Simplify[Together[%]]

These formulae lead to the following procedure, which defines an adapted pseudo-orthogonal frame of the 5-space   to two given points in the 3-space:

\(psframepp[a_List, b_List]\  := \ 
      Module[{eu, \ 
          m1 = \ Table[nul[], {dim\  - 2}], 
			m\  = \ 
            Table[nul[], {2}]}, 
		If[\((Length[a] != \ 
                dim\  - 2)\) || \ \((Length[b]\  != \ 
                dim\  - \ 2)\) || \((a == \ 
                b)\), \ 
				Print["Incorrect arguments!"]; 
          Return[]]; 
		eu\  = 
          4 \((a - b)\) . \((a - 
                    b)\)/\((\((1\  + \ a . a)\)*\((1\  + \ b . b)\))\); 
	
        m[\([1]\)]\  = \ \((invstepro[a]\  - \ invstepro[b])\)/Sqrt[eu]; 

        m[\([2]\)] = \ \((invstepro[a]\  + \ invstepro[b])\)/Sqrt[eu]; 

        m1\  = \ orthonorm[
            NullSpace[{dual[m[\([1]\)]], dual[m[\([2]\)]]}]]; 	

        Join[m1, m]]\)

Examples

psframepp[{1, 1, 1}, {0, 0, 0}]

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

psframepp[randomv[3], randomv[3]]

Table[smoothing[pssp[%[[i]], %[[j]]]], {i, 1, 5}, {j, 1, 5}] // 
      MatrixForm

psframepp[{1, 1, 1}, {1, 1, 1}]

psframepp[{1, 1, 1}, nul[]]

psframepp[{-t, 0, 0}, {t, 0, 0}]

Simplify[%,  t > 0]

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

Simplify[%,  t > 0]

Simplify[psframepp[{a, b, c}, {x, 0, z}]];

stepro[%[[4]] - %[[5]]]

stepro[%%[[4]] + %%[[5]]]

Random test

psid  = dual[IdentityMatrix[5]]

% // MatrixForm

\(\((a\  = \ randomv[3]; b\  = \ randomv[3]; 
	Print[{a, b}]; 

      mat\  = \ Timing[psframepp[a, b]]; 

      Print[mat[\([1]\)], MatrixForm[mat[\([2]\)]]]; 
	
      mbt\  = \ Table[
          pssp[mat[\([2, i]\)], mat[\([2, j]\)]], {i, 5}, {j, 5}]; 
	
      smoothing[mbt\  - \ psid])\)\)

{stepro[mat[[2, 4]]  +  mat[[2, 5]]],  
      stepro[mat[[2, 4]]  -  mat[[2, 5]]]}

Remove[a, b, mat,  mbt]

3.2 The invariant invspp and the mutual position

The definition

If a, b are two points of the 3-space, then the corresponding euclidean 3-subspace of the pseudo-euclidean 5-space is

Clear[a, b]; 
    vspacepp[a_List,  b_List]  :=  
      Module[{psf}, 
psf  =  
          psframepp[a, b]; 
If[psf  == Null,  
          Return[Null]]; 
Take[psf, 3]]

Let the spacelike unit vector n define the sphere, and the orthonormal vectors b ={ b[[1]], b[[2]], b[[3]] }span the subspace of the point pair. Then, see [4],  the only invariant describing the mutual position is

invspp[n_, b_]  :=  Sum[pssp[b[[i]],  n]^2, {i, 3}]

The point pair belongs to the sphere iff

pcr[n_, b_List]  :=  
      pscross[{b[[1]], b[[2]], b[[3]], n}]

equals nul[].

Examples

b1  =  vspacepp[{-1, 0, 0}, {1, 0, 0}]

pcr[stb[4],  b1]

Example 1

We compare the point pair {{x,0,0}, {0,y,0}} with the unit sphere, defined by stb[4]; the invariant is

fctinvpp[x_, y_]  :=  
      invspp[stb[4],  vspacepp[{x, 0, 0}, {0, y, 0}]]

Simplify[vspacepp[{x, 0, 0}, {0, y, 0}],  x > 0 && y > 0]

For x=y=1 both points lie on the sphere:

pcr[stb[4],  vspacepp[stb[1, 3], stb[2, 3]]]

fctinvpp[1, 1]

Now only the point stb[1,3] belongs to the sphere:

pcr[stb[4],  vspacepp[stb[1, 3], nul[3]]]

The vector product yields an isotropic vector, and the invariant equals 1:

fctinvpp[1, 0]

Plot[fctinvpp[x, 0],  {x, -2, 2}]

More generally it follows from [4] that for Abs[x] > 1 the sphere separates the points, and the invariant is < 1; for Abs[x] < 1 vice versa.

Plot[fctinvpp[x, 0],  {x, 1/2, 2}]

fctinvpp[x, 0]

We calculate  the function

fctinvpp[x, y]

This simple function yields the invariant

invfct[x_, 
        y_]  :=  (1 +  x^2*y^2)/(x^2  +  y^2)

Plot3D[invfct[x, y], {x, 0.7, 1.5}, {y, 0.7, 1.5}]

Solve[x^2  + y^2  == 1  + x^2*y^2, y]

Plot[1  +  smoothing[invfct[x, 1] - 1], {x, 0. , 1.5}]

Sphere separates the points:

invfct[1/2, 1.5]

Sphere does not separate points:

invfct[5, 1.5]

Remove[invfct]

Example 2

Now we consider a point pair on the x-axis, an calculate the invariant with the standard unit sphere:

fctinvpp[x_, y_]  :=  
      invspp[stb[4],  vspacepp[{x, 0, 0}, {y, 0, 0}]]

For x=-y=1 both points lie on the sphere:

pcr[stb[4],  vspacepp[stb[1, 3], -stb[1, 3]]]

Now only the point stb[1,3] belongs to the sphere:

pcr[stb[4],  vspacepp[stb[1, 3], nul[3]]]

The vector product yields an isotropic vector, and the invariant equals 1:

fctinvpp[1, 0]

This case can be interpreted as a 0-sphere tangent to the unit sphere.

Plot[fctinvpp[x, 0],  {x, -2, 2}]

More generally it follows from [4] that for Abs[x] > 1 the sphere separates the points, and the invariant is < 1; for Abs[x] < 1 vice versa.

Plot[fctinvpp[x, 0],  {x, 1/2, 2}]

fctinvpp[x, 0]

We calculate  the function

fctinvpp[x, y]

This simple function yields the invariant of the point pair and the unit sphere:

invfct[x_, y_]  :=  (x*y  - 1)^2/(x - y)^2

Plot3D[invfct[x, y], {x, 0.1, 1.2}, {y, 1.3, 2. }]

Solve[x*y - 1  == x - y, y]

Plot[1  +  smoothing[invfct[x, 1] - 1], {x, 0. , 1.5}]

Sphere separates the points:

invfct[1/2, 1.2]

Sphere does not separate points:

invfct[1.2, 1.5]

Remove[invfct]

Example 3

Now we consider the arbitrary sphere with the corresponding spacelike vector

vs  =  spacevec[x, y, z, r]

and the point pair {{-t,0,0}, {t,0,0}}. We calculate the invariant

invspp[vs, vspacepp[{-t, 0, 0},  {t, 0, 0}]]

Simplify[%,  t > 0]

We simplify further and define the following  function:

fctinv[t_, x_, y_, z_, r_] :=(4*t^2*(y^2 + z^2) + 
(-r^2 - t^2 + x^2 + y^2 + z^2)^2)/(4*r^2*t^2)

fctinv[t, 0, 0, 0, t]

The terms entering in the function

fctinv[t, x, y, z, r]

have very simple euclidean interpretations: r and t are the radii of the spheres, d = (Sqrt[(x^2) + (y^2) + (z^2)]) is the distance of their centers, and   (t^2) ((y^2) + (z^2)) is the square of the surface of the triangle formed by the point pair and the center of the sphere:

cross[{{x, y, z}, {2*t, 0, 0}}]/2

% . %

Simplify[fctinv[t, 0, 0, z, Sqrt[z^2  + t^2]]]

Now we take the point pair with t = 1 and the unit sphere S1 with center {1,0,0}:

fctinv[1, 1, 0, 0, 1]

Point pair and sphere are interlaced: any sphere through the point pair intersects the sphere S1. We shall calculate the intersection angle between the sphere S1 and any sphere through the point pair. The spacelike vectors of this sphere bundle  form the unit sphere in

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

vn[u_, v_]  :=  
      stb[2]*Cos[u]*Cos[v]  +  stb[3]*Cos[u]*Sin[v]  + 
        stb[4]*Sin[u]

The space vector of S1 is

spacevec[1, 0, 0, 1]

The following function gives the cosinus of the intersection angle:

ftest[u_, v_]  := 
      pssp[{1, 0, 0, -(1/2), (1/2)}, vn[u, v]]

ftest[u, v]

Thus, the maximum of ftest[u,v] is 1/2, and this is the square root of the "eigenvalue", which is in this case simply the invariant invspp. For the intersection angle we have

angle[u_]  :=  ArcCos[-Sin[u]/2]

Plot[angle[u]*180/Pi,  {u, -Pi/2, Pi/2}]

Plot[angle[u]*180/Pi,  {u, -Pi, Pi}]

The minimal angle is

angle[-Pi/2]*180/Pi

ArcCos[1/2]

It will be reached for the  unit sphere

vn[-Pi/2,  v]

The maximal angle is

angle[Pi/2]*180/Pi

and this is again the unit sphere, only with the other orientation:

vn[Pi/2, v]

This is the sphere of smallest (positive) radius containing the two points:

vn[u, v]

vcenter[vn[u, v]]

vradius[vn[u, v]]

Simplify[%]

vradius[vn[-Pi/2, v]]

vradius[vn[Pi/2, v]]

Table[N[vcenter[vn[k*Pi/8, Pi/2]]], {k,  -4, 4}]

Table[N[vradius[vn[k*Pi/8, Pi/2]]], {k,  -4, 4}]

Table[N[angle[k*Pi/8]*180/Pi], {k,  -4, 4}]

Remember: negative sphere radius and positive sphere radius correspond to opposite orientations of the sphere; let the radius be a vector pointing to or away of the center. Therefore appear the complementary angles under the negative orientation of the radius.

Table[
      euklidsphereplot3D[vn[k*Pi/8, Pi/2],  -1, 0, -1, 
        1], {k, -4, 4}]

Show[%]

tgr1  = %

euklidsphereplot3D[{1, 0, 0, -(1/2), (1/2)}]

Show[{tgr1, %}]

tgr2  =  %

Show[
      Graphics3D[{PointSize[0.04], Point[{-1, 0, 0}], 
          Point[{1, 0, 0}]}]]

Show[{tgr2, %}]

tgr3  =  %

Apply MathGL3d, Appearance Wire Frame, to look at these graphics.

Orthogonality

We remark that the invariant in  example 1 is always greater zero; for y = 0 it tends to zero for x ->∝ . The point pair {nul[3], ∝} has the property that all spheres through these points (i.e.all planes through the origin), and all circles through these points (i.e. all  lines through the origin) intersect the unit sphere orthogonally. We shall now construct a finite example for this situation.

nspx  = vspacepp[nul[3],  stb[1, 3]*2]

orthospheres[u_, v_] :=  
      stb[2]*Cos[u]*Cos[v] + stb[3]*Cos[u]*Sin[v]  + 
        nspx[[1]]*Sin[u]

dnspx = Table[dual[nspx[[i]]],  {i, 3}]

NullSpace[dnspx]

orthonorm[%]

ocase  =  %

Table[
      Simplify[Together[pssp[ocase[[i]], ocase[[j]]]]], {i, 2}, {j, 
        2}]

ovec[t_]  :=  
      ocase[[1]]*Sinh[t]  +  ocase[[2]]*Cosh[t]

invspp[ovec[t],  nspx]

Simplify[Together[%]]

pssp[ovec[t],  ovec[t]]

Simplify[Together[%]]

Obviously, ovec[t], t ≥ 0, corresponds to all the spheres with the property, that all spheres orthospheres[u,v] through {0,0,0}, {2,0,0} intersect them orthogonally:

pssp[orthospheres[u, v],  ovec[t]]

Simplify[%]

We show that the point pair {0,0,0}, {2,0,0} is in inversion with respect to any of the spheres ovec[t].

vcenter[ovec[t]]

Simplify[%]

vradius[ovec[t]]

Simplify[%]

?sphericalreflection

sphericalreflection[
      nul[3], {((Cosh[t] + Sinh[t])/(-Cosh[t] + 2 Sinh[t])), 0, 
        0},  ((Sqrt[3])/(-Cosh[t] + 2 Sinh[t]))]

Simplify[%]

Thus we have the following proposition, which generalizes the situation described at the beginning of this subsection (give a precise proof!): 
PROPOSITION. Let S1 be a sphere, and {p1,p2} a point pair in inversion with respect to this sphere. Then all the spheres through {p1, p2} intersect S1 orthogonally, and converselly, if all spheres containing the two points meet a sphere S1 orthogonally, then the points are in inversion with respect to S1.

pts  =  {Point[nul[3]], Point[{2, 0, 0}]}

Show[Graphics3D[{RGBColor[1, 0, 0], PointSize[0.05], pts}]]

ex1  =  %

euklidsphereplot3D[ovec[0]]

ex2  =  %

Show[{ex1, ex2}]

ex12  =  %

Table[
      euklidsphereplot3D[orthospheres[k*Pi/8,  Pi/2], 0, 1, -1, 1], {k, 
        0, 4}]

Show[%]

ex3  =  %

Show[{ex1, ex2, ex3}]

ex123  =  %

Apply MVShow3D with the option MVPointSphereSize -> 0.8, see the last section; use Appearance: wire frame.

MVShow3D[ex123,  MVPointSphereSize  -> 1.8]

The three spheres through the points corresponding to the vectors of nspx are the x,y-plane, the x,z-plane and

euklidsphereplot3D[nspx[[1]], -1, 1, -1, 1, 
      PlotPoints  ->  50]

ex4  =  %

Two circles through the points are

{plotcircle2spv[nspx[[1]], nspx[[2]]],  
      plotcircle2spv[nspx[[1]], nspx[[3]]]}

Show[%]

ex5  =  %

Show[{ex1, ex2, ex5}]

ex125  =  %

Apply MVShow3D with the options MVPointSphereSize -> 1.4, MVLineTubeSize -> 0.02, see the last section; use Appearance: wire frame.

MVShow3D[ex125,  MVPointSphereSize  -> 1.4,  
      MVLineTubeSize  ->  0.02]

More circles:

pssp[orthospheres[u, v], orthospheres[u + Pi/2, v]]

Simplify[%]

Table[
      plotcircle2spv[orthospheres[0, k*Pi/10], 
        orthospheres[Pi/2, k*Pi/10]], {k, -10, 10, 
        2}]

Show[%]

ex6  =  %

Show[{ex1, ex2, ex6}]

ex126  =  %

MVShow3D[ex126,  MVPointSphereSize  -> 1.4,  
      MVLineTubeSize  ->  0.02]

4 Circles and point pairs

4.1 The invariants

As very detailed described in the notebook mcircles.nb, a circle in the 3-sphere or in the euclidean 3-space can be defined by a 2-dimensional euclidean subspace of the pseudo-euclidean 5-space. Let p1, p2, p3 be three pairwise distinct points in the euclidean 3-space. Their preimages under the stereographic projection define uniquely a circle on the 3-sphere, and the corresponding isotropic vectors span a pseudo-euclidean 3-space, the orthogonal complement of which is the euclidean subspace we ask for. An orthonormal base of this space is given by vspace[p1,p2,p3], e.g. the standard unit circle:

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

grc1  = plotcircle2spv[stb[3],  stb[4]]

Let b ={b1,b2,b3} be an orthonormal basis corresponding to the point pair {a1,a2}, e.g.

blist  =  vspacepp[{0, -1, 0}, {1, 1, 0}/Sqrt[2]]

Then the condition that the circle containes both points is pcr[n1,b] = pcr[n2,b] = nul[],what is trivial in our special case:

pcr[stb[3], blist]

pcr[stb[4], blist]

The condition that at least one of the points a1,a2 belongs to the circle through the 3 points p1,p2,p3 coincides with the condition that all the five points belong to a sphere; i. e.

incid[a1_, a2_, b1_, b2_, b3_]  :=  
      Det[{invstepro[a1], invstepro[a2], invstepro[b1], invstepro[b2], 
          invstepro[b3]}]

vanishes, e.g.

incid[{0, 3, 0}, {1, 1, 0}/Sqrt[2], {1, 0, 0},  {-1, 0, 0},  {0, 
        1, 0}]

Clear[a, b]

Let a = {a[[1]], a[[2]]} be an orthonormal basis of the euclidean 2-space defining the circle C, and b = {b[[1]], b[[2]], b[[3]]}  an orthonormal basis of the euclidean 3-space defining the point pair {p0, p1}.

The matrix of the double projection whose eigenvalues are the Möbius invariants of the pair (see [4]) is

ppcpp[a_List, b_List]  := 
      Table[Simplify[
          Sum[pssp[b[[k]], a[[i]]]*pssp[b[[k]], a[[j]]], {k, 
              3}]], {i, 2}, {j, 2}]

Its eigenvalues are the  generalized cosinus squares of the stationary angles, and the spheres corresponding to the  eigenvectors we call eigenspheres.

4.2 Examples

Here only one point lies on the circle:

ppcpp[vspace[{1, 0, 0},  {-1, 0, 0},  {0, 1, 0}], 
      vspacepp[{0, 3, 0}, {1, 1, 0}/Sqrt[2]]]

Here both points belong to the circle

ppcpp[vspace[{1, 0, 0},  {-1, 0, 0},  {0, 1, 0}], 
      vspacepp[{0, 1, 0}, {1, 1, 0}/Sqrt[2]]]

The invariants are the same! But the following ranks differ

\(\(\(rank[{invstepro[{1, 0, 0}], invstepro[{\(-1\), 0, 0}], 
        invstepro[{0, 1, 0}], invstepro[{0, 3, 0}], 
        invstepro[{1, 1, 0}/Sqrt[2]]}]\)\(
\)\)\)

\(\(\(rank[{invstepro[{1, 0, 0}], invstepro[{\(-1\), 0, 0}], 
        invstepro[{0, 1, 0}], invstepro[{0, 1, 0}], 
        invstepro[{1, 1, 0}/Sqrt[2]]}]\)\(
\)\)\)

This example shows that the eigenvalues of ppcpp do not suffice to distinguish the two cases; in addition the dimension rank -2 of the smallest sphere containing the pair must be considered.
In the following example the pair belongs to the plane  ( = sphere) z= 0, we again do not have "general position"; one has  the varying invariant (1/Abs)[x]^2, and the constant 1:

\(fctppcpp[x_] := 

      ppcpp[vspace[{1, 0, 0}, \ {\(-1\), 0, 0}, \ {0, 1, 0}], 
        vspacepp[{0, 0, 0}, {x, 0, 0}]]\)

fctppcpp[x]

For Abs[x]^2 < 1 the circle in this sphere does not separate the points, for Abs[x]^2>1 it does, and for Abs[x]^2=1 the point belongs to the circle; separate has a meaning, of course , only within the sphere z=0. The situation here is the same as in subsection 3.2, only one dimension less.
Now we consider circle and point pair in general position:

\(\(\(rank[{invstepro[{1, 0, 0}], invstepro[{\(-1\), 0, 0}], 
        invstepro[{0, 1, 0}], invstepro[{0, 0, 0}], 
        invstepro[{0, 0, z}]}]\)\(
\)\)\)

\(fctgenppcpp[z_] := 

      ppcpp[vspace[{1, 0, 0}, \ {\(-1\), 0, 0}, \ {0, 1, 0}], 
        vspacepp[{0, 0, 0}, {0, 0, z}]]\)

fctgenppcpp[z]

ppz  =  %

Det[ppz]

Eigenvalues[ppz]

Eigenvectors[ppz]

The geometric interpretation is the following: There exists a sphere, containing the unit circle and being "orthogonal to the 0-sphere" (what means that?: see 3.2, Orthogonality); the other eigenvalue is the maximum of the Möbius invariant of two spheres, one  containing the circle, the other the point pair, and these spheres are disjoint, since the invariant is > 1. Since the double projection is an endomorpism of

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

we have the eigensphere to the eigenvalue 0

ppz . {z, 1}

ev1[z_]  :=  (stb[3]  +  stb[4]*z)/Sqrt[1 + z^2]

vcenter[ev1[z]]

vradius[ev1[z]]

Simplify[%,  z > 0]

euklidsphereplot3D[ev1[1]]

gev1  =  %

The projection of this eigenvector in

vspacepp[{0, 0, 0}, {0, 0, z}]

vpp[
        z_]  :=  {{0, 0, (z/Abs)[z], -(1/Abs)[z], (1/Abs)[z]}, {0, 1, 
          0, 0, 0}, {1, 0, 0, 0, 0}}

Table[pssp[vpp[z][[i]],  ev1[z]],  {i, 3}]

Therefore, the projection is null[5], and the eigensphere gev1 intersects any sphere containing the point pair orthogonally.

prev1[z_]  :=  
      Sum[pssp[vpp[z][[i]],  ev1[z]]*vpp[z][[i]],  {i, 
          3}]

prev1[z]

The other eigensphere is given by

Simplify[Together[ppz . {-1/z, 1}]]

stb[4]*(-(1/(z Abs[z]^2)) - (z/Abs)[z]^2) +  
      stb[3]*((1/Abs)[z]^2 + ((z^2)/Abs)[z]^2)

Simplify[Together[%]]

ev2[z_]  :=  (stb[3]  - stb[4]/z)/Sqrt[1  +  1/z^2]

The projection of this eigenvector in vspacepp[{0,0,0},{0,0,z}] is

prev2[z_]  :=  
      Sum[pssp[vpp[z][[i]],  ev2[z]]*vpp[z][[i]],  {i, 
          3}]

prev2[z]

Simplify[%,  z > 0]

For z > 0 this coincides with

prev2pos[
        z_] :=  {0, 0, Sqrt[1 + z^2]/z, -Sqrt[1 + z^2]/z^2, 
          Sqrt[1 + z^2]/z^2} /; z > 0

and for z < 0 we obtain

Simplify[prev2[z],  z < 0]

prev2pos[
        z_] :=  {0, 0, -Sqrt[1 + z^2]/z, 
          Sqrt[1 + z^2]/z^2, -Sqrt[1 + z^2]/z^2} /; z < 0

prev2pos[1]

prev2pos[-1]

For  z = 1 we have the eigensphere

euklidsphereplot3D[ev2[1]]

gev2  =  %

The normalized projection of ev2[1]  and the corresponding sphere are

projev2  =  normalize[prev2[1]]

euklidsphereplot3D[projev2]

gev3  =  %

The generalized cosinus is the square root of the eigenvalue

pssp[projev2,  ev2[1]]

This is the maximal value of the generalized cosinus for any pair of spheres, one containing the standard unit circle and the other containing the point pair {nul[3], {0,0,1}.

pts  =  {Point[nul[3]], Point[{0, 0, 1}]}

Show[Graphics3D[{RGBColor[1, 0, 0], PointSize[0.05], pts}]]

gev4  =  %

Show[{grc1, gev2, gev3, gev4}]

grevmax  =  %

With the option MVPointSphereSize -> 0.8,MVLineTubeSize -> 0.03 using MathGl3d with wire frame (see last section) one gets a nice visualization of the situation .

MVShow3D[grevmax
, MVPointSphereSize -> 0.8,  
      MVLineTubeSize  ->  0.01]

Joining the "minimal" eigensphere gev1 one obtains the complete picture

Show[{gev1, grevmax}]

grevmaxmin  =  %

MVShow3D[grevmaxmin
, 
      MVPointSphereSize -> 0.8,  MVLineTubeSize  ->  0.01]

Remove[ppz, pts, projev2, prev2pos, prev2, ev1, ev2, prev1, vpp, 
      fctgenppcpp, fctppcpp]

4.3 Two associated spheres belonging to a pair {(Subscript[S, 1]^1), (Subscript[S, 2]^0)}

Each pair {C, {p0, p1}} of a circle C and a 0-sphere {p0, p1} defines, in general,  two spheres, containing  {C, p0} and {C, p1}, respectively.  We call them the associated spheres of the pairing. If one of the points belong to the circle the corresponding sphere remains indetermined. Let us consider the general case, that none of the two points is contained in the circle. If {cn1, cn2} is a basis of the euclidean subspace defining the circle C, then the spacelike vector defining the sphere through C and a point p is given by the cross product as follows:

?pscomplement

gesph[cn1_, cn2_, 
        p_]:=Module[{vc}, 
vc  = 
          pscomplement[cn1, cn2]; 
vc  =  
          AppendTo[vc, invstepro[p]]; 
pscross[
          vc]]

Obviously, gesph yields the null vector nul[5] iff p∈ C,  e.g.

gesph[stb[3],  stb[4],  {0, 1, 0}]

Example 1

In the last example of section 4.2 we have cn1 = Stb[4], cn2 = stb[3], p1 = nul[3], p2= {0,0,z}. We find

vn1  =  gesph[stb[4], stb[3],  nul[3]]

Clearly, this is the x,y-plane:

euklidsphereplot3D[stb[3]]

grvn1  =  %

The other sphere is

vn2[z_]  :=  gesph[stb[4], stb[3], {0, 0, z}]

Together[vn2[z]]

pssp[%, %]

Simplify[Together[%]]

vradius[vn2[z]]

Simplify[%]

vcenter[vn2[z]]

Simplify[%]

Specializing to the case z=1 :

vn2[1]

This is the standard unit sphere:

euklidsphereplot3D[stb[4]]

grvn2  =  %

Show[{grvn1, grvn2, gev4}]

Here the spheres intersect orthogonally. We remark that zero is the smaller eigenvalue of our pair {C, (S^0)}. For the cosinus of the intersection angle for variable z we obtain (Remember: vn2[z] is a spacelike unit vector for all values of z):

pssp[vn1, vn2[z]]

Together[%]

Remove[vn1, vn2]

Example 2

Clear[x, y, z]

We consider the pair consisting of the standard unit circle C:

Show[grc1]

and the point pair {nul[3], {x,y,z}}.

vpp[x_, y_, z_]  := vspacepp[{0, 0, 0}, {x, y, z}]

vpp[x, y, z]

Simplify[%,  
      x ∈  Reals && y ∈  Reals && 
        z ∈  Reals]

Simplifying by hand gives for x > 0:

vpp[x_, y_, 
        z_]  :=  {{1, 0, 0, -(x/((x^2) + (y^2) + (z^2))), 
          (x/((x^2) + (y^2) + (z^2)))}, {0, 0, 
          1, -(z/((x^2) + (y^2) + (z^2))), 
          (z/((x^2) + (y^2) + (z^2)))}, {0, 1, 
          0, -(y/((x^2) + (y^2) + (z^2))), 
          (y/((x^2) + (y^2) + (z^2)))}}

vpp[x, y, z]

Table[pssp[%[[i]],  %[[j]]], {i, 3},  {j, 3}]

The matrix defining the invariants of {C, {nul[3], {x,y,z}} is

pcfct[x_, y_, z_]  := ppcpp[{stb[3], stb[4]}, vpp[x, y, z]]

pcfct[x, y, z]

Eigenvalues[%]

Simplify[%]

Factor[
      (x^4) + (y^4) + 2 (y^2) (-1 + (z^2)) + (((1 + (z^2)))^2) + 
        2 (x^2) (-1 + (y^2) + (z^2))]

F[x_, y_, z_]  =  %;

Simplify[F[x, y, z]  -  (1 - x^2 - y^2 - z^2)^2]

Since
 (d^2) = (x^2) + (y^2) + (z^2)
\(\ is\ the\ square\ of\ the\ distance\ of\ the\ two\ points\ we\ may\ write\ down\ the\ eigenvalues\ in\ the\ form\)

ev1[d_, 
        z_] :=  (1  +  d^2  -  
            Sqrt[(1 - d^2)^2  +  4*z^2])/(2*d^2)

ev2[d_, 
        z_] :=  (1  +  d^2  +  
            Sqrt[(1 - d^2)^2  +  4*z^2])/(2*d^2)

For the intersection angle of the two spheres {C, nul[3]}, {C,{x,y,z}} we calculate the cosinus

cosfct[x_, y_, z_] := 
      pssp[gesph[stb[3],  stb[4],  nul[3]], 
        gesph[stb[3],  stb[4],  {x, y, z}]]

cosfct[x, y, z]

We want to epress this cosinus by the eigenvalues. For this purpose we calculate

(ev2[d, z] - ev1[d, z])^2

Simplify[%]

ev2[d, z]*ev1[d, z]

Simplify[%]

For eliminating z we put d^2 = X and consider

Eliminate[{(e2 - e1)^2*X^2 == (1 - X)^2  +  4*z^2, 
        e1*e2*X^2 ==  X  -  z^2},  z]

Solve[%,  X]

ev1[d, z]  +  ev2[d, z]

Simplify[Together[%]]

Since X = d^2 must be non negativ, the only solution is

X -> (1/(-1 + e1 + e2))

Returning to the expression cosfct[x,y,z] we calculate

cosfct[x, y, z]

(X  -  1)/(X  + 1) /. 
      X  ->   1/(e1  +  e2  -  1)

Simplify[Together[%]]

This is the expression we asked for. By a Möbius transform any pairing of a circle and a point pair not contained in the circle can be brought in the position that the circle coincides with the standard unit circle C and one of the points coincides with the center nul[3] of C.  Since under a Möbius transform the eigenvalues and the intersection angle between the associated spheres remain invariant, we proved:
PROPOSITION. Let (S^1) be an arbitrary circle (or a line) and (S^0) = {p0, p1} a point pair disjoint to (S^1). Then the cosinus of the intersection angle α of the associated spheres is defined by the eigenvalues e1,e2 of the pairing {(S^1), (S^0)} according to the formula

Cos[α]  =  ((2 - e1 - e2)/(e1 + e2))

To control our calculations we verify

Simplify[
      Together[-((-2 + e1 + e2)/(e1 + e2)) /. {e1  ->  
              ev1[d, z],  e2  ->  ev2[d, z]}]]

Examples

If one of the points belong to the circle, the formula yields 0, and this is the case for all points with d = 1:

Off[Set::write]

Simplify[cosfct[Cos[t],  Sin[t], 0]]

Simplify[cosfct[Cos[t]*Cos[s],  Sin[t]*Cos[s], Sin[s]]]

If (S^0) degenerates to a  single, "double counting" point, both spheres coincide; thus we obtain α = 0:

Simplify[cosfct[0, 0, 0]]

Plot[ ArcCos[cosfct[0, 0, z]]*180/Pi,  {z,  0,  10}]

ArcCos[cosfct[0, 0, 1]]*180/Pi

5 Point quadrupels

5.1 A complete invariant system

A complete invariant system

We consider pairs of  0-spheres, i.e. point quadrupels {{a1,a2},{b1,b2}}. Since each point quadrupel belongs to a sphere, we could consider spherical Möbius geometry: dim = 2, but for later applications we shall consider the case dim = 3. Since the Möbius group of the sphere coincides with the broken linear transformations in one complex variable of the Riemannian sphere, and this is the projective complex line, the invariant of the quadrupel coincides with the complex cross ratio, the basic invariant of complex projective geometry. We are interested more in the real situation, for later application in differential geometry. Therefore we shall apply the general method of Möbius invariants for pairs of subspheres also in this lowest dimensional case. Since the cross ratio is a complex number we may expect to obtain two real invariants describing the mutual position of two point pairs in the Möbius space. 
Let {a_list, b_list} = {{a1,a2},{b1,b2}} be two point pairs in the  3-space. Then the corresponding double projection is defined as

\(ppptspp[a_List, \ b_List]\  := \ 
      Module[{av, \ bv, \ i, \ j, k}, 
		av\  = \ 
          vspacepp[a[\([1]\)], \ a[\([2]\)]]; 
	
        bv\  = \ vspacepp[b[\([1]\)], \ b[\([2]\)]]; 
If[
          av\  == \ Null || bv == Null, \ Return[]]; 
		Table[
          Sum[pssp[av[\([j]\)], bv[\([k]\)]]*
              pssp[av[\([i]\)], bv[\([k]\)]], {k, 3}], 
			{i, 3}, {j, 
            3}]]\)

The eigenvalues of this matrix and the rank

rk[a1_List,  a2_List,  b1_List,  b2_List] := 
      rank[Join[vspacepp[a1,  a2], vspacepp[b1,  b2]]]

are a complete invariant system for the möbius geometry of point pairs.

First examples

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

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

If the two point pairs coincide, we get the identity matrix:

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

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

vspacepp[{0, 1, 0},  {0,  1, 0}]

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

5.2 Throws

We say that the quadrupel is  a throw, if at least three of the four points are different. In this case we show that always one of the three eigenvalues equals 1. To this aim we assume without restriction of generality that all four points belong to the x,y-plane; by a Möbius transform we reach that three of the points are  unit points on the axes:

ppptspp[{{-1, 0, 0},  {1, 0, 0}}, {{x,  y, 0}, {0, 1, 
          0}}]

Simplify[%, x ∈  Reals && y ∈  Reals]

Therefore we may define

pppts[x_, 
        y_]  := {{1, 
          0, ((-1 + (x^2) + (y^2))/((x^2) + (((-1 + y))^2)))}, {0, 
          1, 0}, {((-1 + (x^2) + (y^2))/((x^2) + (((-1 + y))^2))), 
          0, (((x^2) + (((1 + y))^2))/((x^2) + (((-1 + y))^2)))}}

This coincides with our first example

pppts[0,  -1]

pppts[x, y]

Thus, {0,1,0} is eigenvector with eigenvalue 1, for all values of x,y:

% . {0, 1, 0}

vspacepp[{-1, 0, 0},  {1, 0, 0}] // MatrixForm

Transpose[%] . {0, 1, 0}

Thus, the eigenvector to the eigenvalue 1 defines the sphere which contains the four points:

euklidsphereplot3D[%]

Det[pppts[x, y]]

Eigenvalues[pppts[x, y]]

Simplify[%]

Four points on the standard unit circle

Simplify[pppts[Cos[t],  Sin[t]]]

Obviously, the eigenvalues are

Eigenvalues[%]

eigenv1[t_]  =  %;

WARNING!

Starting from the unsimplified matrix Mathematica may calculate wrong eigenvalues:

Eigenvalues[pppts[Cos[t],  Sin[t]]]

Simplify[%,  t ∈  Reals]

eigenv2[t_]  =  %;

Ftest[t_]  =  eigenv1[t] - eigenv2[t]

Plot[Ftest[t][[2]],  {t,  0,  2*Pi}]

Plot[Ftest[t][[3]],  {t,  0,  2*Pi}]

Obviously, the calculation of the eigenvalues of the unsimplified matrix leads to an incorrect result, as the appearance of the square roots show.

Continuation

For t = 0, Pi all the eigenvalues are 1 since the point pairs have a common point:

eigenv1[Pi]

eigenv1[0]

Since for t = Pi/2 the second point pair degenerates to one point, we here get a singularity:

eigenv1[Pi/2]

It follows: for all values of t the multiplicity of the eigenvalue 1 is at least 2.

Four points in general position

Eigensystem[pppts[0, 0]]

Eigenvectors[pppts[0, 0]]

The corresponding eigenspheres are

bvv  =  vspacepp[{-1, 0, 0},  {1, 0, 0}]

Clear[ev1, ev2, ev3]

ev1  =  Transpose[bvv] . {1, 0, 1}/Sqrt[2]

ev2  =  Transpose[bvv] . {0, 1, 0}

ev3  =  Transpose[bvv] . {-1, 0, 1}/Sqrt[2]

pts  =  {Point[nul[3]], Point[{1, 0, 0}], Point[{-1, 0, 0}], 
        Point[{0, 1, 0}]}

Show[Graphics3D[{RGBColor[1, 0, 0], PointSize[0.05], pts}]]

grepts  =  %

{euklidsphereplot3D[ev1], euklidsphereplot3D[ev2], 
      euklidsphereplot3D[ev3]}

Show[%]

gresph  =  %

Show[{grepts, gresph}]

gre1  =  %

MVShow3D[gre1
, MVPointSphereSize -> 0.8,  
      MVLineTubeSize  ->  0.03]

6 Geodesics in the space of 0-spheres

6.1 Introduction

A 2-point curve is a curve in the 6-dimensional space of all 0-spheres. This space is pseudo-Riemannian symmetric of rank two. The geodesics of the space are orbits of certain 1-parameter subgroups of the Möbius group.   As in all reductive spaces, the geodesics through an element C are the orbits of certain  one-parameter subgroups exp(At) C, t ∈ Reals,  of the Möbius group, where in our case C is defined to be the point pair

{stepro[stb[4]  -  stb[5]], stepro[stb[4]  +  stb[5]]}

A denotes an element of the orthogonal complement of the isotropy algebra of C in the pseudo-orthogonal Lie algebra o(5,1); here orthogonality is defined by the Killing form  of the Lie algebra o(5,1). It would be interesting to investigate the relation between the pseudo-Riemannian geometry of the 0-sphere space and the point submanifolds more basically. But this may be the subject of another notebook. We emphasize that we do not give here a classification of all the geodesics with respect to the Möbius group. We only treat three simple cases of geodesics lying in a 2-sphere.

For the Killing form and some other constructs we import the package

<< liealg.m

This package is an shortened version of the package liealg.m contained in  MathSource, "Lie Algebras" [5].

The isotropy algebra and its orthogonal complement

A general square matrix of order n = dim  with coefficients a[i,j] is

matrix[a_,  n_:  dim]  :=  
      Table[a[i, j], {i, n},  {j, n}]

matrix[a]

In particular, we have the nullmatrix

nullmatrix[3]

The pseudo-orthogonal Lie algebra for dim = 5 and ind = 1 is the set of all matrices which fulfil the condition

MatrixForm[matrix[a] +  dual[Transpose[dual[matrix[a]]]]] ==  
      MatrixForm[nullmatrix[5]]

From this equation one sees that the Lie algebra has dimension 10 and consists of all matrices with the shape

a[i_, j_]  :=  0 /; i == j

a[j_, i_]  :=  -a[i, j] /; (i < j  &&  j < dim)

a[j_, i_]  :=  a[i, j] /; (i < j  &&  j == dim)

MatrixForm[matrix[a]]

The isotropy algebra of the point pair C = {o, ∝) is the four-dimensional Lie subalgebra of all matrices matrix[b] leaving the subspace spanned by {stb[4], stb[5]} fixed:

stepro[(stb[4] + stb[5])]

stepro[(stb[4] - stb[5])]

b[i_, j_]  :=  
      0 /; (i == 
              j || (i > 3 && j < 4) || (i < 4 && j > 3))

b[j_, 
        i_]  :=  -b[i, j] /; (i < j  &&  j < dim - 1)

b[j_, i_]  :=  b[i, j] /; (i == j  - 1 &&  j == dim)

MatrixForm[matrix[b]]

Its orthogonal complement wit respect to the Killing form is the 6-dimensional subspace of all matrices matrix[c], where the complementary set of coefficients is free, and the coefficients appearing in matrix[b] vanish:

c[i_, j_]  :=  
      0 /; ((i < 4 && j < 4) || (i > 3 && j > 3))

c[j_, i_]  :=  -c[i, j] /; (i < j  &&  j < dim)

c[j_, i_]  :=  c[i, j] /; (i < j  - 1 &&  j == dim)

MatrixForm[matrix[c]]

The Killing form restricted to the subspace of these matrices is

psokilling[matrix[c], matrix[c]]

Thus it is a 6-dimensional pseudo-euclidean vector space of index three. That this space is the orthogonal complement of the isotropy algebra follows easely; indeed:

psokilling[matrix[c], matrix[b]]

Here is the Killing form of an arbitrary element of the pseudo-orthogonal Lie algebra o(5,1):

psokilling[matrix[a], matrix[a]]

6.2 Spacelike geodesics

The following matrix function defines the 1-parameter subgroup exp[Uh*t], where Uh is an element of the Lie algebra o(5,1) orthogonal to the isotropy algebra of C and spacelike with respect to the Killing form of o(5,1) :

Uh  =  {{0, 0, 0, 0, 1}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 
          0, 0}, {1, 0, 0, 0, 0}}

psokilling[Uh, Uh]

Uh // MatrixForm

gUh[t_]   :=  MatrixExp[Uh t]

MatrixForm[gUh[t]]

stepro[(stb[4] - stb[5])]

vh1[t_] :=  Evaluate[gUh[t] . (stb[4] - stb[5])]

vh1[t]

pssp[%, %]

Simplify[Together[%]]

x0[t_]  :=  stepro[vh1[t]]

x0[t]

stepro[(stb[4] + stb[5])]

vh2[t_] :=  Evaluate[gUh[t] . (stb[4] + stb[5])]

x2[t_]  :=  stepro[vh2[t]]

x2[t]

Both points remain on the x-axis; the coordinate difference is

diffx[t_]  := Together[(x2[t]  -  x0[t])[[1]]]

diffx[t]

Plot[x0[t][[1]],  {t, 0, 10}, 
      PlotRange  ->  All]

Plot[x2[t][[1]],  {t, 0, 10}]

Plot[x2[t][[1]],  {t, 1, 5}]

diffx[t]

Plot[diffx[t],  {t,  .5, 5}]

Obviously, for t -> ∞, both points have the limit (1,0,0).

invstepro[{1, 0, 0}]

gUh[t] . %

stepro[%]

Thus, {1, 0, 0} is a fixed point of this transformation.

Clear[x]

The only fixed points on the x-axis are {1,0,0}, {-1,0,0}:

invstepro[{x, 0, 0}]

Solve[
      Uh . {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
            1} ==  
        k {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
            1}, {x, k}]

Uh . {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
        1}

We have the two solutions

Uh . {1, 0, 0, 0, 1}

Uh . {-1, 0, 0, 0, 1}

stepro[{1, 0, 0, 0, 1}]

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

6.3 Timelike geodesics

The following matrix function defines the 1-parameter subgroup exp[Ue*t], where Ue is an element of the Lie algebra o(n,1) orthogonal to the isotropy algebra of C and timelike with respect to the Killing form of o(n,1):

Ue  =  {{0, 0, 0, 1, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {-1, 
          0, 0, 0, 0}, {0, 0, 0, 0, 0}}

psokilling[Ue, Ue]

gUe[t_] := MatrixExp[Ue t]

ve1[t_]  :=  gUe[t] . (stb[4] - stb[5])

ve1[t]

Simplify[pssp[%, %]]

y1[t_]  :=  stepro[ve1[t]]

ve2[t_]  :=  gUe[t] . (stb[4] + stb[5])

ve2[t]

y2[t_] :=  stepro[ve2[t]]

y1[t]

y2[t]

Plot[((I (-1 + (E^(I t))))/(1 + (E^(I t)))), {t,  0, 
        10}]

Plot[((I (1 + (E^(I t))))/(-1 + (E^(I t)))), {t,  0, 
        10}]

Again we have two points running periodically over the x-axis (i.e. on the sphere: rotation on a meridian), with distance

distx2[t_]  := 
      Together[((I (-1 + (E^(I t))))/(1 + (E^(I t)))) - ((I (1 + (E^(I t))))/(-1 + (E^(I t))))]

Plot[distx2[t],  {t, 0, 10}]

Plot[distx2[t],  {t, 4, 5}]

Clear[x]

Obviously, there do not exist fixed points on the x-axis:

invstepro[{x, 0, 0}]

Solve[
      Ue . {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
            1} ==  
        k {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
            1}, {x, k}]

Ue . {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
        1}

6.4 Isotropic geodesics

The following matrix function defines the 1-parameter subgroup exp[U*t], where U is an element of the Lie algebra o(n,1) orthogonal to the isotropy algebra of C and isotropic with respect to the Killing form of o(n,1) :

U  = {{0, 0, 0, 1, 1}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {-1, 0, 
          0, 0, 0}, {1, 0, 0, 0, 0}}

psokilling[U,  U]

MatrixForm[U]

isotropugr[t_] :=  MatrixExp[U*t]

isotropugr[t] // MatrixForm

gh[t_] :=  isotropugr[t]

Simplify[
      Table[pssp[gh[t][[i]],  gh[t][[j]]], {i, 5}, {j, 
          5}]]

v1c[t_]  :=  gh[t] . (stb[4] - stb[5])

v2c[t_]  :=  gh[t] . (stb[4]  +  stb[5])

v1c[t]

v2c[t]

stepro[v1c[t]]

stepro[v2c[t]]

For this geodesic, the origin nul[3] remains fixed, and the infinite point moves with distance 1/t along the x-axis towards the origin. The origin is the only fixed point on the x-axis:

Clear[x]

invstepro[{x, 0, 0}]

Solve[
      U . {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
            1} ==  
        k {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
            1}, {x, k}]

U . {((2 x)/(1 + (x^2))), 0, 0, ((-1 + (x^2))/(1 + (x^2))), 
        1}

% /. x ->  0

gh[t] . {0, 0, 0, -1, 1}

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

7 ThreeScript, MathGL3d

If you want to generate *.ts files for animations outside of Mathematica, activate the next section. To use the animation program MathGL3d in this notebook, read and  activate section 7.2.

7.1 Threescript

The ThreeScript commands generate *.ts files appropriate  for certain animation programs. The freeware program  MathGL3d  created by Jens-Peer Kuska (for Windows95, Linux and other platforms) can be downloaded from [2].

Under Windows the commercial 3D-Animation programs MathLive and DynamicVisualizer are available. To produce .ts-files one

Needs["Graphics`ThreeScript`"]

?ThreeScript

The standard extension of these files is ts: "filename.ts" or "Path/filename.ts", e.g.

ThreeScript["isofam.ts",  isofam]

7.2 MathGL3d

The free animation program MathGL3d by Jens-Peer Kuska [2] can be used from a command line and within a Mathematica session. A new version of this program is in preparation. Jens-Peer Kuska has sent me a new startup file OpenGLViewer.m, and friendly permitted to add it to the item "Spheres". Replace the old file OpenGLViewer.m by this new OpenGLViewer.m. If you did this, changes of Mathematica's ParametricPlot3D, especially the sometimes disturbing generating of MeshGraphics3D objects, will not take place.
Establish the link to the current Mathematica session with the command:

Get["MathGL3d`OpenGLViewer`"]

If you want to close the link, enter

MVClose[]

The following command clears the Viewer window; this and other MathGL3d commands you may enter also with  palettes.

MVClear[];

MVShow3D[\[Placeholder], MVPolygonShading -> MVSmooth, 
      MVGrayBackground -> False, MVTexture -> None, 
      MVTextureMapType -> MVMeshUVMapping, 
      MVScaleTexture -> {1, 1}, 
      MVTranslateTextureTarget -> Automatic, 
      MVRotateTextureTarget -> Automatic, 
      MVScaleTextureTarget -> Automatic]

MVShow3D[gre1
, MVPointSphereSize -> 0.8,  
      MVLineTubeSize  ->  0.03]

MVShow3D[tgr1,  MVLineTubeSize  ->  0.03]

MVShow3D[tgr3, MVPointSphereSize -> 2.8]

MVShow3D[spsf6]

Options[MVShow3D]

MVClose[]