Elementary Möbius Geometry I

Points and Spheres

by Rolf Sulanke

Starting date  December 28, 2010
Finished  February 7, 2011
Revised December 15, 2011

Date[]

Introduction

In this notebook we apply Mathematica to create  tools for working in n-dimensional Möbius  geometry.  The three-dimensional  case is emphasized.   The calculations and examples illustrate and complete the presentation of the subject in our book [OS3], Section 2.7.  There one finds the foundations of elementary Möbius  geometry in terms of linear algebra; also hyperbolic and elliptic geometry as used in this notebook are contained there.  We intend to apply  the functions and modules developed here to Möbius differential geometry in future notebooks.

In the elementary context the Möbius group is defined to be the the group  of projective transformations leaving an elliptic hyperquadric  (S^n) of the (n+1)-dimensional real projective space invariant.  For dimension n≥2 the Möbius group coincides with the group of conformal transformations of the the n-sphere (S^n). This follows from Liouville's theorem proved in differential geometry. Thus the Möbius geometry coincides with the conformal geometry of the n-sphere ( with respect to its standard metric). In homogeneous coordinates {x(i)} the equation of the n-sphere as  a projective hyperquadric has the normal form (for n = 3)

-((x(1))^2)+((x(2))^2)+((x(3))^2)+((x(4))^2)+((x(5))^2)==0

In [OS3] it is proved that the Möbius group is isomorphic to the pseudo-orthogonal group (SuperPlus[ O(1,n+1))]), that is the group leaving the pseudo-orthogonal scalar product  of index 1 in the (n+2)-dimensional real vector space

pssp(vec(x),vec(y)):=-x(1) y(1)+x(2) y(2)+x(3) y(3)+x(4) y(4)+x(5) y(5)

and a time orientation invariant; these linear transformations generate the projective maps forming the Möbius group.  Therefore our consideration are based  on the linear algebra of  n-dimensional pseudo-Euclidean vector spaces of index 1, sometimes named Minkowski spaces. The tools enhancing Mathematica  for applications in this field are contained in the package neuvec.m, which needs the packages vectorcalc.m and euvec.m containing useful modules for working in elementary geometry and linear algebra.  A notebook “pseuklid.nb”  about pseudo-Euclidean geometry is contained in the packed files sphs4.tgz or sphs4.zip on my homepage, see [Spheres]. In Chapter 1 below the usages of the new Modules and Functions defined in the loaded packages and in the Global Context  can be seen after evaluating the initialialization cells of the notebook.

The Möbius group acts transitively on the Möbius space: the sphere (S^n) as a point manifold, and on the manifold of the k-dimensional subspheres. From the latter the case of the hyperspheres, k = n-1, is the simplest and most important. In this notebook we consider mainly the Möbius geometry as the geometry of the point manifold and the geometry of the manifold of hyperspheres, the spheres in case n=3.  A pseudo-orthonormal frame as the standard basis is  mostly appropriate if one treats subspheres; for the geometry of the point manifold the isotropic-orthonormal bases are often useful, because they may be better adapted to point configurations.  Both methods are described and applied in the notebook.

Chapter 2 contains the description of the Möbius space and the conformal models of the simply connected space forms. Besides of Euclidean geometry the hyperbolic geometry is presented in greater detail.  For the hyperbolic plane geometry  we created a special notebook, see [hyp2D]. There one finds the classification of quadrics in the hyperbolic plane.

The Chapters 3, 4, 5 may be considered as an extended update of the notebook  mspheres.nb in the collection [Spheres]. Chapter 3 describes the Möbius Geometry of  Spheres in pseudo-Euclidean termes.  The manifold of all oriented spheres is identified with the set of all spacelike unit vectors. This is the one-sheeted hyper-hyperboloid defined in the 5-dimensional pseudo-Euclidean vector space of index 1 by the equation

pssp[vec[x],vec[x]]==-((x[1])^2)+((x[2])^2)+((x[3])^2)+((x[4])^2)+((x[5])^2)==1

We remark that in Möbius geometry  planes are special spheres, more exactly, they are not defined. Considering the model of the Eucldean space as the complement of a distinguished “infinite” point in (S^n),  the planes are the Möbius geometric spheres containing this point. This is exactly as they appear under stereographic projection with the infinite point as North pole .  The stereographic projection is a conformal map of the not directly visible Möbius space (S^3) onto the usual Euclidean space  (E^3) often used in our Mathematica  code. 

In Chapter 4 we study the mutual position of two hyperspheres  up to Möbius equivalence.  It is characterized  by a single invariant, the “inversive distance” generalized angle or  the Coxeter invariant, which is well known as

coxeterinv[r1,r2,d]==((-(d^2)+(r1^2)+(r2^2))/(2 r1 r2))

Here r1, r2 denote the radii of the hyperspheres and d the distance of their centers. The Coxeter invariant  is an expression in Eucliden terms making no sense in Möbius geometry. We obtain a new derivation of the Coxeter invariant showing that it is a conformal invariant.

In Chapter 5 the geodesics of the sphere space are classified from an elementary viewpoint. There are three classes of geodesics corresponding to the types of the central hyperplanes whose intersections with the hyper-hyperboloid they are. In each of these classes the Möbius group acts transitively.  

In Chapter 6 we describe the Lie algebra of the Möbius group. We apply the Mathematica function MatrixExp  to pass to the Möbius group and consider some geometric groups as its subgroups. The considerations can be applied to visualize the actions of interesting 1-parametric subgroups on the Möbius space.

The notebook is the first of a series of notebooks about elementary Möbius geometry. The notebook emg2.nb sontaines the geometry of circles, and in the notebook emg3.nb the Möbius geometry of Subspheres (S^k), (S^l) with 0≤k≤l<3 is treated as far as the cases are not considered in the earlier notebooks of the series.

Copyright

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

Keywords

Möbius group,   space forms (conformal models),  isotropic cone, isotropic-orthogonal coordinates, pseudo-orthonormal coordinates, spherical reflections,   stereographic projection, pseudo-Euclidean space,  pseudo-orthogonal Lie algebra, hyperbolic space, spheres,  planes, angles, Coxeter invariant, geodesics of the sphere manifold

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, moeb.m.
You may download these and other packages from my Homepage .  From there you find all the packages mentioned above together with the code of the notebook in the file emg.tgz.
Before initializing the notebook ensure that these packages and the current notebook are laying in your working directory, which should be on the $Path of Mathematica on your Computerm, or

Insert the path of your working directory into the  appropriate of the next two cells,  e.g.

For Windows:

SetDirectory["C:\\Users\\Rolf Sulanke\\mymath\\emg"];

For Linux:

SetDirectory["~/mymath/emg"]

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

The Initialization

Before starting to work interactively with the notebook

Activite Evaluation/Evaluate Initialization from the menu.

The first command loads the packages mentioned above:

Needs["moeb`"]

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

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

?dim

dim =5;

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

ind =1;

Examples:

dim

?vec

vec[x]

?dual

dual[vec[x]]

ind

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

$Assumptions

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

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

$Assumptions

1.  List of Symbols and their Usages

In this Chapter 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 correctly, 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`*

plotgencircle[{0,0,0},3*stb[3,3]]

ptss=Graphics3D[Map[Point,{stb[1,3],stb[2,3],stb[3,3]}]]

plotcircle3pts[stb[1,3],stb[2,3],stb[3,3]]

Show[{%,ptss}]

1.3. Symbols in the Package neuvec.m

?neuvec`*

Options[orthonorm]

ide[]

ide[]*IdentityMatrix[dim]

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

%//MatrixForm

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

dual[vec[x,7]]

pssp[vec[x,7],vec[y,7],3]

1.4. Symbols in the Package mspher.m

?mspher`*

1.5. Symbols in the Package moeb.m

?moeb`*

1.5.  Symbols in the Global Context

Evaluate the next cell to get the actual list of the Global`*  symbols in the Global Context.

?Global`*

2. The Möbius Space and the Space Forms

In this Chapter we describe  the Möbius space and the Möbius group.  Furthermore we consider the Euclidean, spherical and hyperbolic geometries as subgeometries of Möbius geometry.

2.1. The Pseudo-Euclidean Model of the Möbius Space. The Möbius Group

The four - dimensional  projective space  is modelled by the 1-dimensional subspaces of a 5-dimensional vector space.   The equation

pssp[vec[x], vec[x]] == 0

(1)       -((x[1])^2)+((x[2])^2)+((x[3])^2)+((x[4])^2)+((x[5])^2)==0

where

vec[x]

denotes the homogeneous coordinates of the projective point x,  defines an elliptic hyperquadric, i.e. a 3-dimensional sphere.  In the underlying vector space  this equation defines the isotropic  hypercone the generators of which  are spanned by the isotropic vectors 
vec[x] ≠ o  solving the equation.  These 1-dimensional generators represent the points of this 3-sphere, which we identify with the Möbius space.  The Möbius group consists of all projective transformations preserving the hyperquadric.  It can be proved  that this group is represented by the pseudo-orthogonal group (SuperPlus[O[1,4] ]) of the pseudo-Euclidean vector space of index 1 preserving the scalar product  and the time orientation (see the end of this section).

Functions for working in pseudo-Euclidean vector spaces are contained in my notebook   pseuklid.nb and the Mathematica  package neuvec.m  imported by the initialization.  The scalar product pssp  in pseudo-orthonormal coordinates is

(2)        pssp[vec[x], vec[y]]   = -x[1] y[1] + x[2] y[2] + x[3] y[3] + x[4] y[4] + x[5] y[5]

The standard basis (stb[i]), i 0 1,...,5, is pseudo-orthonormal in this scalar product, that means, its Gram matrix has the shape

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

%==psgram[]

Now we are going to prove the characterization of the Möbius group mentioned above.  First we define: Two timelike vectors e,v  have the same time orientation, if

(3)       pssp[e, v] < 0.

Geometrically this means that the rays through the origin in the directions of e,v intersect the same sheet of the two-sheeted hyper-hyperboloid defined by the equation

pssp[vec[x],vec[x]]== -1

We prove that  (3) defines an equivalence relation in the set of all timelike vectors.  Clearly, it is reflexive and symmetric; we show the transitivity. Let pssp[e,v]<0 and pssp[e,w]<0. We decompose the timelike vectors orthogonally

v = e*(v^(0 )) + (v^1), pssp[e, (v^1)]=0,    w = e*(w^(0 )) +(w^1), pssp[e, (w^1)]=0,(v^(0 ))>0,(w^(0 ))>0 .

Without restriction of generality we assume pssp[e, e] = -1; e is a timelike unit vector. Now we calculate the scalar product. Since   (v^1),   (w^1) belong to an Euclidean subspace, namely the orthogonal complement of the vector e, we obtain applying the Cauchy inequality

pssp[v,w] = - (v^(0 ))*(w^(0 )) + (v^1).(w^1) ≤ - (v^(0 ))*(w^(0 )) + |(v^1)|.|(w^1)| .

Since v, w are timelike vectors, we have for the norm of the components

(v^(0 )) > |(v^1)|, (w^(0 )) > |(w^1)|,

and the relation  pssp[v,w] < 0 follows. Obviously, there exist exactly two equivalence classes, the time orientations, represented by ±e.
Now we prove

Proposition. The Möbius group, defined as the isotropy group of  the n-dimensional hyperquadric pssp[x,x]=0 under the action of the projective group, is isomorphic to the group (SuperPlus[O[1,n+1] ]) of pseudo-orthogonal, time orientation preserving  linear automorphismen of  the underlying (n+2)-dimensional real vector space.

Proof. Let pssp denote the pseudo-Euclidean scalar product  (2) (with 5 replaced by n+2) of index 1 such that the hyperquadric Q of the (n+1)-dimensional projective space is defined by (1), and let g:V⟶V be a linear automorphism of the underlying vector space generating a projective transformation preserving Q. The map g is defined up to a real factor c≠0.  We consider the pseudo-orthonormal basis (Subscript[e, i]) = stb[i] with the Gram matrix psgram[n+2], e.g.

psgram[5]//MatrixForm

We denote  (Subscript[b, i]) = g.(Subscript[e, i]), i = 1,...,n+2>2.  Multiplying g, if necessary, by -1, we get pssp[ (Subscript[e, 1]), g.(Subscript[e, 1])]<0; we show that g multiplied with an appropriate positive factor is pseudo-orthogonal and by this inequality  time orientation preserving too.  Since g preserves Q, the images of isotropic vectors must be isotropic.  Obviously the vectors  (Subscript[e, 1]) ± (Subscript[e, i]), i = 2,...,n+2, are isotropic. For their images it follows

pssp[(Subscript[b, 1])±(Subscript[b, i]), (Subscript[b, 1])±(Subscript[b, i])] = pssp[(Subscript[b, 1]), (Subscript[b, 1])]± 2pssp[(Subscript[b, 1]), (Subscript[b, i])]+pssp[(Subscript[b, i]), (Subscript[b, i])] = 0

Substracting the -equation from the +equation we obtain

pssp[(Subscript[b, 1]), (Subscript[b, i])] = 0 for i = 2,...,n+2,  and it follows, since n+2 ≥ 3 by Sylvester’s Inertia Law

pssp[(Subscript[b, i]), (Subscript[b, i])] =  - pssp[(Subscript[b, 1]), (Subscript[b, 1])] =: (c^(2 ))>0

It remains to show  pssp[(Subscript[b, i]), (Subscript[b, j])] = 0 for i,j = 2,..., n+2, i≠j. To this aim one calculates the scalar square of the images of the isotropic vectors

z(t) =(Subscript[e, 1]) + (Subscript[e, i])Cos[t] + (Subscript[e, j])Sin[t]; 0= pssp[g.z[t],g.z[t]] = 2pssp[(Subscript[b, i]), (Subscript[b, j])]Cos[t]Sin[t]

for all real t, what implies  pssp[(Subscript[b, i]), (Subscript[b, j])] = 0. Multiplying g by 1/c>0 we get a uniquely defined representative of the projective map in  the group (SuperPlus[O[1,n+1] ]). Clearly, each g ∈(SuperPlus[O[1,n+1] ]) generates a projective map leaving Q invariant, and the statement is proved.

2.2. Spherical Riemann Geometry as Subgeometry of the Möbius Geometry

A point of the Möbius space is represented by an isotropic vector;  proportional vectors represent the same point. Let vec[x] be   the vector of the pseudo-orthonormal coordinates of the point x. Since the vector is isotropic, we have

pssp[vec[x],vec[x]]== 0

Since a representing isotropic vector is not zero, we conclude

x[1]≠ 0,  ((x[2])^2)+((x[3])^2)+((x[4])^2)+((x[5])^2)≠ 0.

We norm the representative  of the point x in a given pseudo-orthonormal coordinate system requiring x[1] = 1; then the isotropy condition leads to the equation

((x[2])^2)+((x[3])^2)+((x[4])^2)+((x[5])^2) = 1, x[1]= 1,

and this is the equation of the unit hypersphere in the Euclidean hyperplane x[1]= 1 with center  stb[1], obtained as the intersection of this hyperplane with the isotropic cone.

??spt

For general points x≠o, o the origin, spt [x] is the result of the central projection of the point x into the hyperplane x[1] = 1.

spt[vec[x]]

In the inverse direction we defined

?conemap

conemap[{0,0,0}]

conemap[vec[y,4]]

Simplify[pssp[%,%]]

conemap[spt[vec[x]]]

spt[conemap[vec[y,4]]]

Lemma 1. The restriction of conemap onto the unit hypersphere in the n-dimensional Euclidean vector space  maps this (n-1)-sphere onto the manifold of ithe normed representative of  its points; it  is inverted by spt. Conversely, the restriction of spt onto this manifold is inverted by conemap.

A parameter representation of the unit 3-sphere is

?sph3D

sph3D[u,v,w]

Simplify[%.%]

The normed representatives of the points of the Möbius 3-space are parametrized  by

conemap[sph3D[u,v,w]]

Simplify[pssp[%,%]]

Obviously, the differential,  except the first component, which is zero, equals the differential of the parameter representation of the unit hypersphere.  We conclude

Lemma 2. The map conemap∘sph3D identifies the points of the unit 3-sphere with their normed representatives. The orthogonal transformations g∈O(4)⊂O(1,4) induce  isometries of the 3-sphere; O(4)  as a subgroup of the Möbius group is the isometry group of the 3-sphere, and the metric spherical geometry is a subgeometry of the Möbius geometry. 

The restriction of the action of O(1,4) to  O(4)  as constructed above yields the Möbius model of the spherical geometry.

Unfortunately,  the 3-sphere can not be “seen” directly. we get a conformal image using  stereographic projection:

?sterproj

?stepro

stepro[u]

stepro[vec[x]]

stepro[conemap[sph3D[u,v,w]]]

Of course, this is the same as

sterproj[sph3D[u,v,w]]

conemap[sph3D[u,v,Pi/2]]

stepro[conemap[sph3D[u,v,Pi/2]]]

conemap[sph3D[u,v,-Pi/2]]

stepro[conemap[sph3D[u,v,-Pi/2]]]

2.3.  A Conformal  Model of the Euclidean Space

An inverse of the map stepro restricted to the normed representation of the Möbius space is given by

?invstepro

invstepro[vec[x,3]]

This coincide with

conemap[invsterproj[vec[x,3]]]

Simplify[pssp[%,%]]

We will calculate the differential of invstepro to show that it is a conformal map.

?D

Sum[D[invstepro[vec[x,3]],x[i]]*s[i],{i,1,3}]

Simplify[Together[%]]

This leads to the definition

dinvstepro[x_, s_] := {0, (2*(-2*x[1]*(s[2]*x[2] + s[3]*x[3]) + 
      s[1]*(1 - x[1]^2 + x[2]^2 + x[3]^2)))/(1 + x[1]^2 + x[2]^2 + x[3]^2)^2, 
   (2*(-2*x[2]*(s[1]*x[1] + s[3]*x[3]) + s[2]*(1 + x[1]^2 - x[2]^2 + x[3]^2)))/
    (1 + x[1]^2 + x[2]^2 + x[3]^2)^2, 
   (2*(-2*(s[1]*x[1] + s[2]*x[2])*x[3] + s[3]*(1 + x[1]^2 + x[2]^2 - x[3]^2)))/
    (1 + x[1]^2 + x[2]^2 + x[3]^2)^2, (4*(s[1]*x[1] + s[2]*x[2] + s[3]*x[3]))/
    (1 + x[1]^2 + x[2]^2 + x[3]^2)^2}

Simplify[pssp[dinvstepro[x,s],dinvstepro[x,t]]]

It follows:

Lemma.  Let s,t be two tangential vectors of the Euclidean space at the point x. Then the pseudo-orthogonal scalar product of their images under the differential of invstepro satisfies the formula

pssp[dinvstepro[x,s],dinvstepro[x,t]]==  ((4 s.t)/(((1+x.x))^2))

Thus invstepro is conformal. The function and its image we name the conformal model of the Euclidean space.

invstepro[vec[x,3]]

2.4.  Isotropic-Orthonormal Coordinates

Since the isotropic vectors represent the points of the Möbius space it is often useful to consider another type of coordinates, namely the isotropic-orthonormal coordinates (shortly io-coordinates). The scalar products of the standard basis of the coordinate space with respect to these coordinates have the Gram matrix

io[]//MatrixForm

The first and the last vector of the standard basis of  such a coordinate system are isotropic. Thus the io-frames can be better adapted to point configurations. 
Assuming that vec[x], vec[y] are  the isotropic-orthogonal coordinates of  two vectors, their pseudo-Euclidean scalar product is

vec[x].io[].vec[y]

For the standard basis  of the coordinate space we obtain the required Gram matrix:

Table[stb[i].io[].stb[j],{i,5},{j,5}]==io[]

The isotropic vectors are characterized by

vec[x].io[].vec[x]== 0

The standard representatives of the isotropic vectors are obtained by norming the vector such that x[1] = 1;  since isotropic vectors don't vanish we have x[1]*x[dim]≠ 0,

The matrix

transoi[]//MatrixForm

transforms the isotropic-orthogonal coordinates into the pseudo-orthogonal coordinates of the same  vector

transoi[].vec[x]

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

Simplify[pssp[transoi[].vec[x],transoi[].vec[y]]]

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

Conversely, if vec[x], vec[y] are the pseudo-orthonormal coordinates of two vectors, then

transio[]//MatrixForm

defines the inverse coordinate transform. We set

iovx =transio[].vec[x]

iovy=transio[].vec[y]

These are their isotropic-orthonormal coordinates, and we have

Simplify[iovx.io[].iovy == pssp[vec[x],vec[y]]]

The transformation of the Gram matrices is given by

psgram[] == transoi[].io[].transio[]

Finally we mention

transio[]== Inverse[transoi[]]

transio[]== Transpose[transoi[]]

2.5. The Möbius  Model of the Euclidean Space  in Isotropic-Orthonormal Coordinates

The  conformal Euclidean model obtained by invstepro (Section 2.3)  differs from that obtained by

?confeuklid

?invstepro

confeuklid[vec[x,3]]

Simplify[%.io[].%]

The inverse to confeuklid is

?euklid

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

Since vec[x] is not isotropic, in general, the following resulte makes no sennse:

euklid[vec[x]]

stb[1], stb[5] are the isotropic vectors of en io-frame; as expected we obtain

euklid[stb[1]]

euklid[stb[5]]

confeuklid[euklid[vec[x]]]

If vec[x] is a standard isotropic coordinate vector (in io-coordinates) we get the vector back:

%/.x[1]->1

%.io[].%

Confeuklid yields the standard representative of the vector in isotropic-orthonormal coordinates, and invstepro gives the normed representative in pseudo-orthonormal coordinates:

invstepro[vec[x,3]]

Simplify[pssp[%,%]]

stepro[%%]

The maps stepro and euklid differ by a dilation only,thus they are conformally equivalent:

Simplify[stepro[transoi[].confeuklid[vec[x,3]]]]

Simplify[euklid[transio[].invstepro[vec[x,3]]]]

cfeu[x_] :=confeuklid[vec[x,3]]

cfeu[x]

We remark

vec[x].io[].stb[5]

and solve

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

vec[x]/.%[[1]]

A natural representation of the Euclidean space in the Möbius space with respect to isotropic -orthogonal coordinates is  confeuklid; it is the hyperparaboloid as the  intersection of the isotropic cone with the hyperplane x[1] = 1.  We calculate the differential:

dcfeu[x_,s_] := Sum[D[cfeu[x],x[i]]*s[i], {i,1,3}]

dcfeu[x,s]

Simplify[dcfeu[x,s].io[].dcfeu[x,t]]

Thus we see that cfeu preserves the scalar product of tangential vectors; it is an isometry.

Lemma. The  map  cfeu of the Euclidean space onto the hyperparaboloid described above is an isometry with respect to the induced metric; for two tangential vectors  s,t at the point x we have

s.t  == dcfeu[x,s].io[].dcfeu[x,t]

As  an  example we calculate the same in pseudo-ortogonal coordinates. We set

psoconfeu[x_] := transoi[].cfeu[x]

psoconfeu[x]

Sum[D[psoconfeu[x],x[i]]*s[i],{i,1,3}]

dpsoconfeu[x_,s_] = %;

pssp[dpsoconfeu[x,s],dpsoconfeu[x,t]]

Simplify[%]

2.6. Hyperbolic Geometry as  Subgeometry of Möbius Geometry

In this section we describe some elementary features of the hyperbolic geometry embedded into Möbius geometry.

2.6.1. The Hyperbolic Space

Hyperbolic geometry has its origin in the problem about parallel lines in the plane: Is the Parallel Axiom of Euclidean geometry:
Through any point x   outside a line A of the Euclidean plane there exists only one line B not intersecting A, 
then  named the parallel to A through x,  a consequence of the other axioms of Euclidean geometry? The answer, found by Bolyai, Lobatschewskij, and Gauß,  is  “No”: There exists a geometry, named hyperbolic geometry, in which all axioms of the Euclidean geometry with exception of the Parallel Axiom are valid,  and instead of the Parallel Axiom the following law is true:
Through any point x   outside a line A of the hyperbolic plane there exist at least two lines  not intersecting A. 

On the basis of the changed axiom system it has been possible to construct a geometry as rich as Euclidean geometry. The problem then was whether the axioms of  hyperbolic geometry would not lead to contradictions. By physical and philosophical reasons we are sure that  the system of    real numbers  is consistent.  A theory based on calculations with real numbers can be assumed to be consistent. Thus the solution of the consistence problem can be given by constructing a model of the hyperbolic geometry by analytic methods.  There exists several such models; we start here with the pseudo-Euclidean model, considering hyperbolic geometry as  a subgeometry of Möbius  geometry.  For more details and hints of the literature see Section  2.6 of our book [OS3].

The spherical geometry  can be “embedded” into the Möbius Geometry  considering the 3-sphere  as intersection of the isotropic cone with the Euclidean hyperplane pssp[vec[x], stb[1]] =1; the isometry group of the 3-sphere  is then the isotropy group of stb[1] in the Möbius group, namely the group O(4), preserving the intersecting hyperplane. Analogously, the  intersection of the pseudo-Euclidean hyperplane pssp[vec[x], stb[5]] = x[5] =1 with the isotropic cone defines a 3-dimensional two-sheeted hyper-hyperboloid serving as a model of the hyperbolic space; the subgroup of the Möbius group preserving this intersection is the pseudo-orthogonal group O(1,3) leaving the hyperplane invariant. In differential geometry it is proved that this group is the isometry group of the hyperbolic space.

Reduce[{pssp[vec[x],vec[x]]== 0,pssp[vec[x],stb[5]]==1},x[1],Reals]

The hyperplane x[5] = 1 orthogonal to the timelike basis vector stb{1] is  pseudo-orthogonal.  Thus to construct  the hyperbolic geometry  we may restrit to the 4-dimensional pseudo-Euclidean space of index 1 and set

dim = 4;

The equation of the two sheeted-hyper-hyperboloid then is

pssp[vec[x],vec[x]] == -1

The two sheets of the hyper-hyperboloid can be obtained as graphs of the function (with x = {x[2],x[3],x[4]} )

f[x_List] := Sqrt[1 + x.x]

The definitions is valid in any dimension. For the hyperbolic plane we have to consider the 3-dimensional pseudo-Euclidean space. The model of the plane can be plotted.

Plot3D[{f[vec[x,2]],-f[vec[x,2]]},{x[1],-12,12},{x[2],-12,12},PlotRange -> All,BoxRatios->{1,1 ,1.5}]

Since the radius vectors of  vec[x] of the points of the model are timelike,  its tangent spaces as its orthogonal complements are spacelike, and the pseudo-Euclidean geometry of the embedding  space induces on the model a Riemannian geometry.  The two sheets are congruent by the reflection x[1] ⟶ -x[1], and it suffices to consider one of the sheets. We take the lower sheet x[1]<0 with the induced Riemannian geometry as  the pseudo-Euclidean or isometric model of the hyperbolic space. We remark that by a famous theorem of  D. Hilbert  (1901)  there does not exist an isometric embedding of  the complete hyperbolic plane as a  surface of constant negative curvature in the 3-dimensional Euclidean space.

A useful parameter representation of the 3-dimensional hyperbolic space is obtained by

hyp3D[u_,v_,w_]= Prepend[sphere[{0,0,0},1][u,v]*Sinh[w],-Cosh[w]]

?hyp3D

hyp3D[u,v,w]

Simplify[pssp[%,%]]

pthyp3D[u,v,w]

Simplify[pssp[%,%]]

In arbitrary dimension we define

hypunit[n_][s_List] := Prepend[unit[n-1][Take[s,n-1]]*Sinh[s[[n]]],-Cosh[s[[n]]]]

?hypunit

hypunit[3][{u,v,w}]

coincides with

pthyp3D[u,v,w,1]

Simplify[%==%%]

Simplify[pssp[%%,%%]]

hypunit[2][{u,v}]

Now the plots a surface of revolution around the negative x1]-axis, x[1] the timelike coordinate:

ParametricPlot3D[hypunit[2][{u,v}],{u,0,2*Pi},{v,0,4}]

The pseudo-orthogonal scalar product of the pseudo-Euclidean vector space induces on this surface a Riemannian metric with constant negative curvature. The curvature must be constant since it is invariant with respect to the group O(1,3), and this group acts simply transitively on the manifold of all pseudo-orthonormal frames.

2.6.2.  Möbius Geometric Embedding  and F. Klein’s  Conformal Disk Model of the Hyperbolic Space

To get the embedding into the Möbius Space we return to the 5-dimensional pseudo.Euclidean space

dim = 5;

and consider the hyperbolic space  as the negative part of the solution

Solve[{pssp[vec[x],vec[x]]== 0,pssp[vec[x],stb[5]]==1},vec[x]]

We define as  the standard representation of the hyperbolic 3-space in the isotropic cone the 5-dimensional isotropic vectors

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

?confhyp

confhyp[vec[x,4]]

Indeed, this is the standard representative of a hyperbolic point if vec[x,4] is its timelike  coordinate  vector in the pseudoEuclidean 4-space.

pssp[%,%]

Particularly, we define for the parameter  representation of the hyperbolic 3-space

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

pthyp3D[u,v,w,r]

the corresponding representative

hyp3D[u,v,w,r]

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

%==hyp3D[u,v,w,r]

Simplify[pssp[%%,%%]]

The embediing into the Möbius space identified with the unit hypersphere of the 4-dimensional Euclidean space  is obtained by the projection spt

?spt

spt maps hyp3D[u,v,w] onto the open  lower half  of the unit hypersphere in the 4-dimensional Euclidean space:

spt[hyp3D[u,v,w,r]]

Simplify[%.%]

The map spt∘hyp3D we name the spherical model or the Möbius embedding of the hyperbolic space. We start at  a point with parameters {u,v,w} and consider

Limit[spt[hyp3D[u,v,w,r]], w-> Infinity]

This is a point of the equatorial sphere, which is the border of the spherical model. Thus, from the view point of Möbius geometry the hyperbolic geometry is the geometry induced on the inner points of one of the disks bordered by a fixed hypersphere by the isotropy subgroup O(1,3) of this disk under the action of the Möbius group.

Applying stereographic projection we map  this open half-3-sphere onto the open unit  disk of the 3-space:

hyp3D[u,v,w,r]

stepro[%]

Simplify[ %==sterproj[spt[hyp3D[u,v,w,r]]]]

stepro[hyp3D[u,u,w,r]]

Simplify[%.%,r>0]

Plot[%/.r->5,{w,-10,10}]

Table[ParametricPlot3D[stepro[hyp3D[t*Pi,0,w]],{w,-10,10},PlotStyle -> {Green,Thick}],{t,0,1,.1}]

Show[{%,sph1}]

It follows
Lemma. The map

hypdiskmod[u_,v_,w_] := stepro[hyp3D[u,v,w]]

with the singularity at  w=0

hypdiskmod[u,v,0] == {0,0,0}

is a conformal bijection of the pseudo-Euclidean isometric model of the hyperbolic space onto the inner points of the unit ball in the 3-dimensional Euclidean space. The map hypdiskmod we name the conformal disk model or F. Klein’s model of the hyperbolic space.

Proof. The above calculations show that the image belong to the unit ball. We show the conformity. First we calculate the induced Riemannian metric on the hyperbolic 3-space

hyp3D[u,v,w]

We calculate the coefficients of the induced 1. fundamental form, i.e. the Rieemannian metric:

d[1][u_,v_,w_] =Simplify[D[hyp3D[u,v,w],u]]

d[2][u_,v_,w_] =Simplify[D[hyp3D[u,v,w],v]]

d[3][u_,v_,w_] =Simplify[D[hyp3D[u,v,w],w]]

gg[u_,v_,w_] := Table[Simplify[pssp[d[i][u,v,w],d[j][u,v,w]]], {i,1,3},{j,1,3}]

The coefficient matrix is

gg[u,v,w]//MatrixForm

For the scalar product of the tangential vectors s,t we obtain the positive definite bilinear form

dss[u_,v_,w_][s_,t_] := Sum[gg[u,v,w][[i,j]]*s[i]*t[j],{i,1,3},{j,1,3}]

dss[u,v,w][s,t]

We neglect the singularity of the parameter representation for w= 0; this is allowed since the submanifold is homogeneous. 
Now we consider the image; for shortness we set

hdm[u_,v_,w_]:= hypdiskmod[u,v,w]

hdm[u,v,w]

Again we calculate the matrix of the first fundamental form :

hdmd[1][u_,v_,w_] =Simplify[D[hdm[u,v,w],u]]

hdmd[2][u_,v_,w_] =Simplify[D[hdm[u,v,w],v]]

hdmd[3][u_,v_,w_] =Simplify[D[hdm[u,v,w],w]]

hdmgg[u_,v_,w_] := Table[Simplify[hdmd[i][u,v,w].hdmd[j][u,v,w]], {i,1,3},{j,1,3}]

Here we are in the Euclidean space;  we have to use the Dot product. The coefficient matrix of the image  is

hdmgg[u, v, w] // MatrixForm

FullSimplify[hdmgg[u,v,w]*4*(Cosh[w/2])^4 -gg[u,v,w]]

The fundamental forms are proportional, thus the map is conformal. We show that the map is surjective.

Table[ParametricPlot3D[hdm[u,v,.5+i/5],{u,0,2*Pi},{v,-.5,Pi/2},PlotStyle->Opacity[1-i/10]],{i,2,5}]

Show[%,PlotRange -> All]

The images  of the coordinate surfaces w=const are concentric spheres with center o and radius

Simplify[hdm[u,v,w].hdm[u,v,w]]

tending to 1 for w -> ∞.

Limit[hdm[u,v,w], w-> Infinity]

Simplify[%.%]

This is an arbitrary point of the unit sphere. Thus the map is surjective. It is bijective; its inversion is

-invstepro[hdm[u,v,w]]*Cosh[w]

%== hyp3D[u,v,w]

Corollary.   The spherical model is conformal too.
Proof. It is related to the conformal disk model by a conformal stereographic projection.

Simplify[invsterproj[hypdiskmod[u,v,w]] ==spt[hyp3D[u,v,w]]]

We want to establish a parameterfree bijection between the pseudo-Euclidean and the conformal disk model of the hyperbolic space.

?confhyp

confmap[v_List] := stepro[confhyp[v]]

confmap[pthyp3D[u,v,w]]

%==hypdiskmod[u,v,w]

confmap[vec[x,4]]

confmap[vec[x,4]]//.x[1]->-Sqrt[1+((x[2])^2)+((x[3])^2)+((x[4])^2)]

Simplify[%.%]

We define the inverse map: For arbitrary points x∈ (E^3) with  x.x<1 we set

isomap[x_List] := Take[invstepro[x]*((1 +x.x)/(-1 + x.x)),4]

isomap[vec[x,3]]

Simplify[pssp[%,%]]

Now we show that confmap and isomap are inverse to each other. Indeed:

confmap[isomap[vec[x,3]]]

On the other hand, we have

Simplify[isomap[confmap[vec[x,4]]]//.x[1]->-Sqrt[1+((x[2])^2)+((x[3])^2)+((x[4])^2)]]

Simplify[pssp[%,%]]

Since isomap maps all points into the hyperbolic space with radius 1, it is the inverse of confmap for r = 1only:

Simplify[isomap[confmap[pthyp3D[u,v,w,r]]]== pthyp3D[u,v,w,r]/r,r>0]

In general, isomap composed with a delation  yields the inversion.

2.6.3.  Poincare´ Model of the Hyperbolic Space

We start with the spherical model of the hyperbolic space, the lower half-3-sphere  in the Euclidean 4-space

hyp3D[u,v,w]

spt[hyp3D[u,v,w]]

and consider the stereographic projection of the unit 3-sphere with the pole {1,0,0,0} onto the tangential space at the opposite point -{1,0,0,0}:

sterproj1[u_List] := Take[u/(1-u[[1]]),-Length[u]+1]

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

sterproj1[stb[1,4]Cos[t] +stb[2,4]*Sin[t]]

Limit [sterproj1[stb[1,4]Cos[t] +stb[2,4]*Sin[t]], t-> 0,Direction -> 1]

Limit [sterproj1[stb[1,4]Cos[t] +stb[2,4]*Sin[t]], t-> 0,Direction -> -1]

As any stereographic projection sterproj1 is conformal. We get again a conformal model of the hyperbolic space,  going back to  H. Poincare´,  applying sterproj1  to its spherical model; it is named the Poincare´ model :

poincare3D[u_,v_,w_] := sterproj1[spt[hyp3D[u,v,w]]]

Simplify[poincare3D[u,v,w]]

The image is the lower halfspace z<0:

Reduce[%[[3]]≥ 0,{u,v,w},Reals]

Thus th3 z-coordinats of all image pointsare negative.

Limit[poincare3D[u,v,w], w-> Infinity]

The border of the spherical model is transformed to the border of the Poincare model: x[3]  = 0.  Since stereograpic projection transforms sphere into spheres or planse, the border is the whole x,y-plane, and the image is the halfspace defined by z<0.  This can be controled by thefollowing calculations:

 Any point {x,y} of this plane can become such a limit.

Solve[{-((Cos[v] Sin[u])/(1+Cos[u] Cos[v])),-((Sin[v])/(1+Cos[u] Cos[v]))}=={x,y},{u,v}]

Simplify[{-((Cos[v] Sin[u])/(1+Cos[u] Cos[v])),-((Sin[v])/(1+Cos[u] Cos[v]))}/.%]

We construct the coordinate surfaces thrugh the point  poincare3D[0,0,1],

ParametricPlot3D[poincare3D[u,v,1],{u,-Pi,Pi}, {v,-Pi/2,Pi/2},PlotStyle-> Opacity[.2]]

couv=%;

ParametricPlot3D[poincare3D[u,0,w],{u,-Pi,Pi}, {w,0,5},Mesh->None, PlotStyle-> {Green,Opacity[.3]}]

couw=%;

ParametricPlot3D[poincare3D[0,v,w], {v,-Pi,Pi},{w,0,5},Mesh-> None,PlotStyle-> {Red,Opacity[.3]}]

covw=%;

ptco = Graphics3D[{PointSize[.02],Red,Point[poincare3D[0,0,1]]}]

Show[{couv,couw,covw,ptco}]

The images of the coordinate lines u=const, v= const, w variable are circle arcs through the singular point of the coordinate system

poincare3D[u,v,0]

ptsing= Graphics3D[{PointSize[.02],Red,Point[{0,0,-1}]}];

tending for w -> ±∞ orthogonally from below to the x,y-plane:

Table[ParametricPlot3D[poincare3D[Pi*t,Pi*s,w],{w,-10,10}],{t,0,1,.2},{s,0,1,.2}];

Show[{%,ptsing},PlotRange ->{{-3,3},{-5,5},{0,-5}}]

We calculate the limit of the tangent unit vector:

D[poincare3D[u,v,w],w]

www[w_] =Simplify[%/Sqrt[%.%]]

Limit[%,w-> Infinity,Direction -> 1]

At any rate, the limits are parallel to the z-axis, as easily may be calculated by hand.

Table[ParametricPlot3D[poincare3D[Pi/2,Pi*s,w],{w,-10,10}],{s,0,1,.2}];

Show[{ptsing,%}]

To get a parameterfree presentation of the hyperbolic space we set for any vector u

sterproj1[spt[confhyp[pthyp3D[u,v,w]]]]

poincare::usage = "If u is a point of the isometric model of the hyperbolic n-space then poincare[u] is the corresponding point ofthe Poincare model.";

"If u is a point of the isometric model of the hyperbolic n-space then poincare[u] is the corresponding point ofthe n-dimensional Poincare model.";

poincare[u_List] := sterproj1[spt[confhyp[u]]]

poincare[vec[x]]

Then the image of the hyperbolic space coincides with its Poincare` parameter representatoion:

Clear[u,v,w];poincare3D[u,v,w]

poincare[pthyp3D[u,v,w]]

%==%%

2.6.4.  Hyperbolic Lines  in the Hyperboliic Space

Any pseudo-Euclidean subspace of the (n+1)-dimensional pseudo-Euclidean vector space containes timelike unit vectors and therefore it intersects the quadric Q: pssp[vec[x],vec[x]] = -1, representing the hyperbolic n-space. The intersection Q⋂ (H^(k+1))  of the Quadrik with such a (k+1)-dimensional subspace  is itself a k-dimensional hyperbolic space modelled in (H^(k+1)).  We name it a hyperbolic k-plane, also a line for k=1, plane for k= 2, hyperplane for k = n-1. The 2-dimensional hyperbolic geometry is treated  in the notebook [hyp2D]. In this subsection we consider hyperbolic lines and planes in the hyperbolic 3-space. We remark that the group  O(1,n) acts transitively on the manifold of the m-dimensional pseudo-Euclidean subspaces. This is easily proved adapting pseudo-orthonormal frames to the subspaces.  Thus we start with the lines  in special position, that means intersections of Q with subspaces spanned by the basis vectors of the standard pseudo-orthonormal frame.

haxis[i_][t_] := -stb[1]*Cosh[t] + stb[i+1]*Sinh[t]+stb[dim]

haxis[1][t]

Simplify[pssp[haxis[1][t],haxis[1][t]]]

ax[i_][t_]:=stepro [haxis[i][t]]

ax[3][t]

ParametricPlot3D[{ax[1][t],ax[2][t],ax[3][t]},{t,-10,10},PlotStyle ->{Thick}]

axes = %;

sph1 =Graphics3D[{Opacity[.3],Sphere[{0,0,0}]}];

Show[{sph1,axes}]

The following module generates hyperbolic lines through two given points in the pseudo-Euclidean model of the hyperbolic n-space:

?hline

pthyp3D[u,v,w]

hline[%,%][t]

hline[stb[1,4],pthyp3D[Random[],Random[],1.]][t]

Simplify[Chop[pssp[%,%]+1]-1]

hypunit[2][{s,t}]

Simplify[pssp[%,%]]

hline[stb[1,3],hypunit[2][{u,v}]][t]

FullSimplify[pssp[%,%]]

hline[hypunit[2][{u1,v1}],hypunit[2][{u,v}]][t]

FullSimplify[%]

FullSimplify[pssp[%,%]]

FullSimplify[%,{t∈Reals,u∈Reals,v∈Reals,u1∈Reals,v1∈Reals}]

sres = %;

Mathematica has problems with FullSimplify: The result always should be -1. Thus we experiment with random numbers:

sres/.{u-> Random[], v->2* Random[],u1-> 3*Random[],v1 -> Random[]}

Try the next cell with various intervals for the random numbers; the result must always be zero:

att =Timing[Table[(sres/.{u-> Random[]*2*Pi, v->RandomReal[{-1.5,5.5}],u1-> Random[]*2*Pi,v1 -> RandomReal[{-1.5,5.5}]})+1,{10000}];
Sum[att[[i]],{i,1,10000}]]

Clear[att,u,v,u1,v1]

pic[nn_]:=Table[u=Random[]*2*Pi;v = RandomReal[{-1.5,1.5}]; w = Random[]*3;vv = pthyp3D[u,v,w];
u=Random[]*2*Pi;v = RandomReal[{-1.5,1.5}]; w = Random[]*3;ww = pthyp3D[u,v,w];
cl[i][t_]=confmap[hline[vv,ww][t]];Clear[u,v,w,vv,ww];
line[i]=ParametricPlot3D[cl[i][t],{t,-1000,1000},PlotRange-> All,PlotPoints -> 100,PlotStyle ->{Red,Thick}],{i,1,nn}]

pic[5]

lines =%;

Show[Flatten[{lines,axes,sph1}], Boxed-> False, Axes -> None]

In F. Klein’s conformal model the lines appear as circle arcs in the ball intersecting the “infinite”, the bounding sphere, orthogonally; also the lines through the center appear as special cases. Remember: all hyperbolic lines are congruent also in hyperbolic geometry!

We consider the behaviour of a random hyperbolic line  at infinity:

cl[3][t]

vv=Limit[%, t-> Infinity]

ww=Limit[%, t-> -Infinity]

Chop[%.%-1]

Chop[vv.vv-1]

Minors[{cl[1][t],D[cl[1][t],t]},2]

Limit[Chop[%], t -> Infinity]

Limit[Chop[%%], t -> -Infinity]

The tangent  directions tend to the radius vectors  of the limit points, what means the orthogonality at the infinite points of the lines to the bordering sphere, the  infinity.
Analogously we  obtain the images of the lines in Poincare´s  model

?confhyp

poincare[hline[-stb[1,4],pthyp3D[u,v,1]][t]]

%/.{u-> Random[]*2*Pi, v-> RandomReal[{-1.5,1.5}]}

The images of the lines are circle arc tending from below orthogonally to the x,y-plane:

ParametricPlot3D[%,{t,-10,10}]

2.6.5. Hyperbolic Lines in the Hyperbolic Plane

We consider the hyperbolic plane in F. Klein+s conformal disk model

hyp2D[u_,v_]:=hypunit[2][{u,v}]

hyp2D[u,v]

Simplify[pssp[%,%]]

confdisk2D[u_,v_] := confmap[hyp2D[u,v]]

confdisk2D[u,v]

Simplify[%.%]

centrhline[u_,v_][t_] :=confmap[hline[-stb[1,3],hyp2D[u,v]][t]]

pic2[n_] :=Table[u=Random[]*2*Pi; v=RandomReal[{0, 4}];
c2[i][t_]=ParametricPlot[confmap[hline[-stb[1,3],hyp2D[u,v]][t]],{t,-10,10}],{i,1,n}];

Clear[u,v];Show[pic2[30],AspectRatio-> 1,PlotRange -> All]

lines2= %;

Clear[u,v]

ucirc =Graphics[Circle[{0,0},1]];

Show[{lines2,ucirc}]

Clear[u,v];Limit[confmap[hline[-stb[1,3],hyp2D[u,v]][t]], t-> Infinity]

Chop[1-Simplify[%.%]]

The lines through the point {0,0,-1} appear as secants of the unit circle through the origin. In Poincare´s model they appear as semicircles through {0,-1} intersecting the x-axis orthogonally from below.

pic3[n_] :=Table[uu=Random[]*2*Pi; vv=RandomReal[{-Pi/2, Pi/2}];
c2[i][t_]=ParametricPlot[poincare[hline[-stb[1,3],hyp2D[uu,vv]][t]],{t,-10,10}],{i,1,n}]

pic3[5]

Show[%,PlotRange -> All]

Now we take a ramdom hyperbolic line as the hyperbolic line through two random points:

Clear[u,v,uu,vv];

diskline:=(u=Random[]*2*Pi; v=RandomReal[{0,5}];u1=Random[]*2*Pi; v1=RandomReal[{0, 5}];hli[t_]=hline[hyp2D[u,v],hyp2D[u1,v1]][t];ParametricPlot[Evaluate[confmap[hli[t]]],{t,-20,20},PlotRange -> All])

Table[diskline,{5}]

hlis=%;

Clear[u,v,u1,v1]

Show[{hlis,ucirc},PlotRange -> All]

Remark. Without the function Evaluate in the definition of diskline appear error messages only. Reason?

With probability 1 the origin {0,0} does not lie on diskline. We consider all lines through the origin intersecting the random line hli in a point hli[s] and calculate their limits for s -> ±∞:

diskline

hli[s]

ParametricPlot[Evaluate[confmap[hli[t]]],{t,-20,20},PlotRange -> All]

hypline =%;

Simplify[ hline[-stb[1, 3], hli[s]][t]]

Limit[%, s -> -Infinity]

hneg[t_] = %;

Simplify[ hline[-stb[1,3],hli[s]][t]]

hpos[t_]=Limit[%, s ->Infinity]

pssp[%,%]

Simplify[Chop[%+1]]

The images of the limit lines are

ParametricPlot[confmap[hpos[t]],{t,-10,10},PlotStyle-> {Red}]

ParametricPlot[Evaluate[confmap[hneg[t]]],{t,-10,10},PlotStyle-> {Red}]

par1 = {%,%%};

Show[{par1,hypline,ucirc},PlotRange -> All, Axes -> None]

Their are infinitely many lines through the origin not intersecting the line hypline; these are its parallels through the origin. They fill an angle bordered by the boundary parallels hpos, hneg. We show the images in the Poincare` model:

ParametricPlot[Evaluate[poincare[hpos[t]]],{t,-10,10},PlotStyle -> {Red,Thick}]

ParametricPlot[Evaluate[poincare[hneg[t]]],{t,-10,10},PlotRange -> All,PlotStyle -> {Blue,Thick}]

fig2 = {%,%%};

Show[fig2,PlotRange -> All]

ParametricPlot[Evaluate[poincare[hli[t]]],{t,-10,10},PlotRange -> All,PlotStyle ->Green]

fig3 = %;

Show[{fig2,fig3}, PlotRange -> All, Axes -> None]

2.6.6. Hyperbolic Planes in the Hyperbolic Space

A parameter representation of the hyperbolic plane is

Clear[u,v];hypunit[2][{u,v}]

Simplify[pssp[%,%]]

Three points in general position  in the hyperbolic space  span a hyperbolic plane.  To get a parameter representation of this plane in the isometric pseudo-Euclidean model we orthonormalize the vectors representing the points in such a way that the first vector is a timelike unit vector  with negative first component. The linear combination with the components of unit[2][u,v] yields the wanted parameter representation.  Here is a Module carrying out the described procedure:

?hplane3pts

hplane3pts[a_List,b_List,c_List][u_,v_]:= Module[{nn=Length[a],ww,www,uu,vv},
If[Length[b]≠ nn||Length[c]≠ nn, Print["Incorrect arguments!"];Return[]];
If[rank[{a,b,c}]<3, Print["Points are not in general position!"];Return[]];
ww = chsort[orthonorm[{a,b,c}]];
If[pssp[ww[[1]],ww[[1]]]≥ 0,Print["Plane is not hyperbolic!"];Return[]];
www[uu_,vv_]=ww[[1]]*Cosh[vv]+ww[[2]]*Cos[uu]*Sinh[vv]+ww[[3]]*Sin[uu]*Sinh[vv];
If[www[0,0][[1]]>0,Return[-www[u,v]],Return[www[u,v]]]]

For the coordinate planes we set

hplane[i_,j_,d_:4][u_,v_] :=-stb[1,d]*Cosh[v]+stb[i+1,d]*Cos[u]*Sinh[v]+stb[j+1,d]*Sin[u]*Sinh[v]

Here is the image of the coordinate planes in the confdormal disk model:

ParametricPlot3D[{confmap[hplane[1,2][u,v]],confmap[hplane[1,3][u,v]],confmap[hplane[2,3][u,v]]},{u,0,2*Pi},{v,0,7},PlotStyle -> {Red,Opacity[.7]},Mesh-> False, PlotRange -> All]

Show[{%,sph1}]

coords=%;

hplane[2,3][u,v]

The coordinate planes could also be generated using  hplane3pts:

hplane3pts[stb[1,4],stb[3,4],stb[4,4]][u,v]

confmap[%]

Simplify[%.%]

Now we take a random hyperbolic triangle choosing at random its vertices:

htriangle =Table[x=Random[]*2*Pi;y= RandomReal[{0,Pi/2}]; z = RandomReal[{1.5,2}];a[i] =pthyp3D[x,y,z],{i,1,3}]

Their images in the conformal disk model have the coordinates

Map[confmap,htriangle]

pts1= Graphics3D[{PointSize[Large],Map[Point,Map[confmap,htriangle]]}];Show[{pts1,coords}]

We plot the image of the random hyperbolic  plane containing the triangle:

hpl[u_,v_]=hplane3pts[a[1],a[2],a[3]][u,v];ParametricPlot3D[confmap[hpl[u,v]],{u,0,2*Pi},{v,0,7},PlotStyle->{Opacity[.6]},PlotRange -> All,PlotPoints -> 80]

randpl= %;

hplane1=Show[{randpl,pts1,coords}]

The image is the intersection of the unit ball with the sphere through the three points intersecting the boundary unit sphere orthogonally.

Here is the image of the coordinate planes in the  Poincare´ Model:

poincare[hplane[2,3][u,v]]

ParametricPlot3D[%,{u,0,2*Pi},{v,0,7}]

ParametricPlot3D[Evaluate[{poincare[hplane[1,2][u,v]],poincare[hplane[1,3][u,v]],poincare[hplane[2,3][u,v]]}],{u,0,2*Pi},{v,0,7},PlotStyle -> Opacity[.7],Mesh-> False]

coordsp=%;

htriangle =Table[x=Random[];y= RandomReal[{0,Pi/3}]; z = RandomReal[{1.2,2.3}];a[i] =pthyp3D[x,y,z],{i,1,3}]

The image of the random triangle in the Poincare´ model is

Map[poincare,htriangle]

ptsp= Graphics3D[{PointSize[Large],Map[Point,Map[poincare,htriangle]]}];Show[{pts1}]

hpl[u_,v_]=hplane3pts[a[1],a[2],a[3]][u,v];ParametricPlot3D[poincare[hpl[u,v]],{u,0,2*Pi},{v,0,7},PlotStyle->{Opacity[.6]},PlotPoints -> 80,PlotRange -> All]

hpp1=%;

The image of a hyperbolic plane in Poincare´s model  is a halfsphere, in particular a halfplane, intersecting the “infinite bordering plane” of the hyperbolic space orthogonally.

hplanep=Show[{hpp1,ptsp,coordsp}, PlotRange ->{{-1.5,1.5},{-1.5,1.5},{-1.5,0}}]

I recommend to vary the random parameter regions. You also could add the triangle sides.

3. Spheres

In this Chapter  we  establish the basic bijection between spheres (including planes as spheres of infinite radius) of the Euclidean 3-space (E^3) and one-dimensional Euclidean subspaces of the 5-dimensional pseudo-Euclidean vector space (V^5) of index 1. Any spacelike vector defines the orthogonal complement of its span, being a 4-dimensional pseudo-Euclidean subspace, the isotropic vectors of which correspond to the points of a sphere (S^2) contained in the Möbius space  (S^3). In the converse direction, the span of the isotropic vectors representing the points of such a sphere is a pseudo-Euclidean 4-space, defining its normal, an Euclidean 1-space. 
Remark: Center and radius are metric concepts.  From the viewpoint of Möbius geometry they serve as parameters only.

3.1. Spheres through Four Points and Corresponding Spacelike Vectors: vradius, vcenter, sphereplot3D

3.1.1. The Definitions of the Spacelike Vector Function sph4ptsvec

Given  four points of the Euclidean space (E^(3 ))in general position (i.e.  not belonging to a circle or a line), there exists a uniquely defined sphere or plane through these points. By the pseudo-Euclidean inverse stereographic projection invstepro we obtain the corresponding isotropic vectors, whose span must be a pseudo-Euclidean 4-space. Therefore their cross product pscross yields a spacelike vector orthogonal to the isotropic vectors, saying vec[nn]. Then the family of vectors vec[x] satisfying the equations

pssp[vec[x],vec[x]]== 0

pssp[vec[x],vec[nn]]== 0

are representing the sphere through the four points: to get the sphere one has to apply stepro on the solution.

The following Module contained in the package mspher.m yields an unnormed spacelike vector which we want to find:

dim = 5;

?sph4ptsvec

sph4ptsvec[p1_List,p2_List,p3_List,p4_List]:=Module[{v=null[5]},If[Length[p1]≠3||Length[p2]≠3||Length[p3]≠3||Length[p4]≠3,Print["An argument does not have the correct
dimension!"]Return[]]; 	v=Simplify[pscross[{invstepro[p1],invstepro[p2],invstepro[p3],invstepro[p4]}]];
If[v===null[5],Print["The points are not in general
position!"];Return[],Return[v],Return[v]]]

3.1.2. The Spacelike Vector  as a Function of Center and Radius of the Sphere: spherevec, hspherevector

Now, given a sphere with center{x,y,z} and radius r in (E^3), we choose four of its points, and apply the procedure sph4ptsvec. We obtain after some simplifications (see below) the formula

?spherevec

vn =spherevec[x,y,z,r]

Simplify[pssp[vn,vn]]

We demonstrate the developing of the procedure spherevec mentioned above. First we calculate the spacelike vector corresponding to the sphere with center {x,y,z}and radius r:

??sph4ptsvec

Simplify[sph4ptsvec[{x,y,z}+r*stb[1,3],{x,y,z}-r*stb[1,3],
		{x,y,z}+r*stb[2,3], {x,y,z}+r*stb[3,3]]]

%*(1+(r^2)-2 r x+(x^2)+(y^2)+(z^2)) (1+(r^2)+2 r x+(x^2)+(y^2)+(z^2)) (1+(r^2)+(x^2)+2 r y+(y^2)+(z^2)) (1+(r^2)+(x^2)+(y^2)+2 r z+(z^2))

%/(16r^3)

Simplify[pssp[{1-(r^2)+(x^2)+(y^2)+(z^2),2 x,2 y,2 z,-1-(r^2)+(x^2)+(y^2)+(z^2)}, 
		{1-(r^2)+(x^2)+(y^2)+(z^2), 2 x,2 y,2 z,-1-(r^2)+(x^2)+(y^2)+(z^2)}]]

Norming the obtained vector we  defined in the package mspher.m

spherevec[x_,y_,z_,r_] := { 1-(r^2)+(x^2)+(y^2)+(z^2), 2 x,2 y,2 z,-1-(r^2)+(x^2)+(y^2)+(z^2)}/(2*r)

spherevec[x,y,z,r]

Simplify[pssp[%,%]]

The result can easily be generalized to higher dimensions:

?hspherevector

dim = 10

vt =hspherevector[vec[x,8],r]

Simplify[pssp[%,%]]

vradius[vt]

vcenter[vt]

Instead of spherevec we may use

?hspherevector

hspherevector[{x,y,z},r]

Simplify[pssp[%,%]]

The result coincides with spherevec[x,y,z,r]:

Simplify[hspherevector[{x,y,z},r]== spherevec[x,y,z,r]]

dim = 5

Example: Using the module euklidsphereplot3D contained in mspher.m we plot the sphere with centre (0,0,10), and radius 2:

?euklidsphereplot3D

Evaluate e.g.

spherevec[0,0,10,2]

euklidsphereplot3D[spherevec[0,0,10,2]]

We use euklidsphereplot3D to plot spheres or planes. For a detailed discussion see subsection 3.3.

In Mathematica v .6 .0 there exists the built-in 3D Graphics primitive

?Sphere

Try

Graphics3D[Sphere[{0,0,10},2]]

In difference with our euklidsphereplot3D or the similar

?sphereplot3D

sphereplot3D[{0,0,10},2]

it does not introduce parameters on the sphere, and may not plot spherical quadrangles,triangles, or two-angles, e.g.

euklidsphereplot3D[{0,0,0,0,1},-1,-0.7,0.,.5]

Now we generate the unit sphere with center at the origin

gr1::usage="gr1 yields the 3D-Graphics of the unit sphere with center at the origin, with coordinate axes and box.";

gr1 = euklidsphereplot3D[spherevec[0,0,0,1]]

If the radius r=0 we get an error messages:

spherevec[x,y,z,0]

3.1.3. Some Tests. A Graphic Application.

We take two random points  and two points on axes in the Euclidean 3-space; they define a sphere:

?randomv

randomv[3]

pts = {5*randomv[3],stb[3,3],8*stb[2,3],-2*randomv[3]}

vn =sph4ptsvec[pts[[1]],pts[[2]],pts[[3]],pts[[4]]]

The resulting vector is spacelike:

pssp[%,%]

The following orthogonalities show that the points  lie on the sphere:

Table[pssp[invstepro[pts[[i]]],vn],{i,1,4}]

Chop[%]

A possible difference to zero has unavoidable numerical reasons.

Graphics3D[{PointSize[.02],Map[Point,pts]}]

ptsfig= %;

?euklidsphereplot3D

euklidsphereplot3D[vn,-1,1,-1,1, PlotStyle -> Opacity[.5], Mesh-> False]

sphfig=%;

Show[{sphfig, ptsfig}]

vradius[vn]

vcenter[vn]

The sphere of radius r with center {0,0,1}  has the spacelike vector

vt =sph4ptsvec[{0,0,1+r}, {0,0,1-r},{0,r,1},{r,0,1}]

Simplify[pssp[%,%]]

Simplify[pssp[vt,invstepro[{0,0,1+r}]]]

With r=2 we obtain

vt/.r-> 2

%*45/32

v4pts =Simplify[ normalize[vt],r>0]

%/.r->2

Here is the corresponding sphere

grsph1 = euklidsphereplot3D[{1/2,0,0,-1/2,1},-1 ,1,-1,1,PlotStyle -> Opacity[0.3]]

Now we generate  the 3DGraphics of the four points:

grpts1 = Graphics3D[{PointSize[0.02],Map[Point,{{0,0,3}, {0,0,-1},{0,2,1},{2,0,1}}]}];

We join the two graphics showing the points on the sphere:

gr2 =Show[{grpts1,grsph1}, Boxed -> False]

Remember that one may rotate a Graphics3D object by clicking with the left mouse button and moving the mouse.

3.1.4. Inversion of   hspherevector:  vradius, vcenter

?hspherevector

Clear[vn,x,y,z,r];vn =spherevec[x,y,z,r]

Simplify[pssp[vn,vn]]

Simplify[vn[[1]]-vn[[5]]]

From these formulas  it follows immediately

Proposition. The Euclidean sphere which corresponds to the spacelike unit  vector

vec[v]

with v[1] ≠ v[5]  is the sphere with center {x, y, z}, where

x = v[2]/(v[1]-v[5]);y = v[3]/(v[1]-v[5]);z = v[4]/(v[1]-v[5]);

and radius

r = 1/(v[1]-v[5]);

Remember that vn is normed: pssp[vn,vn] ==1. Thus we conclude for radius and center of the sphere corresponding to the spacelike unit vector v:

?vradius

vradius[wx_List]:=Module[{s,q,vx,d=Length[wx]},q=Simplify[pssp[wx,wx,d]];
If[q≤0,Print[wx," is not spacelike!"];Return[]];
vx=wx/Sqrt[q];
s=Simplify[vx[[1]]-vx[[d]]];
If[s===0,Return[Infinity],Return[1/s],Return[1/s]]]

From the proposition and this Module one sees that for the calculation  of the radius it is essential first to norm the argument. For the calculation of the center this is not necessary:

?vcenter

vcenter[wx_List]:=Module[{s,d=Length[wx],q},q=pssp[wx,wx,d,1];
If[q≤0,Print[wx," is not spacelike!"];Return[]];
s=Simplify[wx[[1]]-wx[[d]]];
If[s===0,Return[Infinity]];Return[Take[wx,{2,d-1}]/s]]

The following identity shows that vcenter, vradius together yield an inversion of hspherevector:

dim = 10

Simplify[hspherevector[vcenter[vec[x]],vradius[vec[x]]] == vec[x]/Sqrt[pssp[vec[x],vec[x]]]]

dim = 5

Corollary.  The sphere corresponding to the spacelike vector vec[v] contains the North Pole, i.e. the  pole {0,0,0,1} ∈ (S^3) of the stereographic projection,  iff v[1] = v[5], and this is the case iff the corresponding sphere is stereographically projected on a plane in (E^3).

The North Pole corresponds to the isotropic vector stb[1] + stb[5]:

spt[{1,0,0,0,1}]

The stereographic projection is Infinity:

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

This point belongs to the corresponding sphere iff

pssp[vec[v],{1,0,0,0,1}]== 0

is satisfied.  The planes are treated in section 3.2 below.

WARNINGS!
1. These definitions make sense for spacelike vectors only!

vcenter[{3,0,0,1,1}]

vradius[null[]]

2. If the corresponding sphere is a plane,  center and radius will become infinite:

vcenter[{a,p1,p2,p3, a}]

vradius[{a,p1,p2,p3, a}]

The meaning of negative radii we shall treat in the next subsection.

vradius[{1,0,0,1,3}]

3.1.5. Oriented Spheres

A negative radius yields the negatively oriented sphere.

Clear[x,y,z,r]

spherevec[x,y,z,-r]

vradius[%]

vcenter[%%]

For v[[1]] < v[[d]] the radius of the sphere becomes negative. Changing the sign of v one may always reach r > 0; the center is independent of the sign:

vcenter[spherevec[x,y,z,-r]] == vcenter[spherevec[x,y,z,r]]

vcenter[spherevec[x,y,z,-r]] == vcenter[-spherevec[x,y,z,r]]

The sign of the radius can be interpreted as the orientation of the sphere. If one considers the sphere corresponding to v as subsphere of (S^3) (that means: not carrying out the stereographic projection), the sphere divides the 3-sphere into two balls: the inner and the outer ball. Let us define the inner ball as the set of all points (= isotropic 1-spaces) w of the 3-sphere  (S^3) with pssp[v,w] > 0. Then changing the sign of v means permuting inner and outer ball. It follows that the spacelike unit vectors correspond bijectively to the oriented subspheres of  (S^3).

Simplify[Together[pssp[invstepro[{x,y,z}],spherevec[x,y,z,r]]]]

Simplify[Together[pssp[invstepro[{x,y,z}],spherevec[x,y,z,-r]]]]

It follows: In case r>0 the center belongs to the inner ball, and in case r<0 it belongs to the outer ball defined by the sphere.

3.1.6. Parameter Representation of the Sphere Corresponding to a sSpacelike Vector

Applying the standard Euclidean parameter representation of a sphere  we get immediately the parameter representation of the sphere corresponding to the spacelike  vector  vn:

?sphere

vn

sphere[vcenter[vn],vradius[vn]][u,v]

sphere[vcenter[vec[x]],vradius[vec[x]]][u,v]

This parameter representation coincides almost with the function

euklidsphere[vec[x]][u,v]

Simplify[(%/.{Pi*v/2 -> v,Pi*u-> u} )== Together[%%]]

The corresponding Plot-command is

?sphereplot3D

sphereplot3D[{0,0,0},1,0,2*Pi,-Pi/2,Pi/2,PlotStyle->Red]

The command

sphereplot3D[{0,0,0},1]

returns the same as

vn = spherevec[0,0,0,1];euklidsphereplot3D[vn]

If entering parameters, notice the distinct domains!

?euklidsphereplot3D

In difference to sphereplot3D the last command works for spacelike vectors of planes, too, e.g.

euklidsphereplot3D[stb[2]]

3.2. Planes

We shortly consider some special aspects of the correspondence between planes and their spacelike vectors, see the Corollary in section 3.1.

3.2.1. The Definition planevec

?planevec

The following Module  yields an unnormed spacelike vector which defines the hyperplane, fulfilling the equation w.x = p:. We take four points  belonging to the plane, one of them is Infinity, and form the spacelike vector of the "sphere" containing these points:

planev[w_List, p_] := Module[{v1,v2,v3,u4 =stb[1]+stb[5],
		u1,u2,u3},
		If[Length[w]!=3|| w ===null[3],
			Print[w, " is not a normal vector!"];Return[]];
		v1=w*p/w.w;
		If[w[[1]]===0,v2 =v1+stb[1,3];
			If[w[[2]]=== 0, v3 = v1 + stb[2,3],v3 ={0, p/w[[2]],0}],
			v2 = {p/w[[1]] - w[[2]]/w[[1]],1,0};
			v3 = {p/w[[1]] - w[[3]]/w[[1]],0,1}];
		u1= invstepro[v1];
		u2= invstepro[v2];
		u3= invstepro[v3];
pscross[{u1,u2,u3,u4}]]

The general evaluation with succeeding simplification

Simplify[planev[{x,y,z},h],{x,y,z}∈Reals]

%*((h^2 + 2*x^2 - 2*h*y + y^2)*(h^2 + x^2 + y^2 + z^2)*
       (h^2 + 2*x^2 - 2*h*z + z^2))

%/((8*x^3)*(-x^2-y^2-z^2+h*(y+z)))

Simplify[%]

finally leads to the following definition, contained in the package mspher.m:

planevec[a_,b_,c_, p_] := If[Not[a^2+b^2+c^2===0],
	Return[{p,a, b, c, p}],Print["Normal vector null is not h!"];Return[]]

The generalization to higher dimensions is obvious:

hplanevec[w_List,p_] := If[Not[w.w===0],vw = Flatten[{{p},w,{p}}];
	Return[vw],Print["Normal vector null is not admissible!"];Return[]]

Clearly, if we norm planevec[a,b,c,p] by

dotnorme[{a,b,c}]

{a,b,c}.{a,b,c}== 1

or, what means the same,

?normalize

normalize[{p,a,b,c,p}]

pssp[{p,a,b,c,p},{p,a,b,c,p}] == {a,b,c}.{a,b,c}

we have a bijection between the manifold of all oriented planes of the Euclidean 3-space and the manifold of all spacelike unit vectors v with the property v[[1]] =  v[[5]]. Usually one names an equation n.x == p with normed 3-vector n the Hesse normal form of the plane equation. The following module yields a parameter representation of the plane with this normal form, which we transfer into the 5-vector vc = {p,a,b,c,p}:

plane[vc_List][u_,v_] := Module[{q,p,w,ob},
q=pssp[vc,vc];
If[Length[vc] ≠ 5 || q≤0|| vc[[1]]≠ vc[[5]],Print[vc, " incorrect argument!"];Return[]]; 
w=vc/Sqrt[q];
p = w[[5]];
w = Take[w,{2,4}];
ob = orthocomplement[{w}];
Return[w*p + ob[[1]]*u + ob[[2]]*v]]

?orthocomplement

Here is the parameter representation of the plane corresponding to the spacelike vector {p,a,b,c,p}:

?plane

plane[{p,a,b,c,p}][u,v]

FullSimplify[%//.a^2+b^2+c^2-> 1]

We show that plane[{p,a,b,c,p}][u,v] is a solution of the equation defined by planevec[a,b,c,p]:

FullSimplify[ReplaceRepeated[pssp[invstepro[%],planevec[a,b,c,p]]//.a^2+b^2+c^2-> 1,MaxIterations -> Infinity]]

Strange: ReplaceRepeated did not the final obvious step

%/.a^2+b^2+c^2-> 1

3.2.2. Random Planes

Next we construct random planes:

randomplanev::usage = "v = randomplanev[a,b,n] is a random spacelike vector in the n-dimensional pseudo-Euclidean vector space of index 1 whose components have absolute values in the range {a,b}, and satisfy v[[1]] = v[[n]]; the default values are a=0,b=1,n=5. These vectors correspond to  hyperplanes in the Euclidean (n-2)-space.";

RandomReal[{0,1},4]

randomplanev[n_:5,min_:0,max_:1 ] := Module[{nv=RandomReal[{min,max},n-1], mv= null[n-1],i},
For[i=1,i<n,i++,mv[[i]] =(-1)^RandomInteger[]*nv[[i]]];PrependTo[mv,mv[[n-1]]]]

randomplanev[3]

randomplanev[5,.5,1]

prv =randomplanev[]

Clearly, this vector must be spacelike with probability 1.

pssp[prv,prv]

plane[prv][u,v]

The absolute value of the distance of the random plane corresponding to the vector v  to the origine is (remember the Hesse normal form):

p=\[LeftBracketingBar]v(5)\[RightBracketingBar]/(√(((v(2))^2)+((v(3))^2)+((v(4))^2)))

Since the absolute values of all the vomponents of v belong to the same range, the probability of  p ≤ 1 is high; and the probability for great distances is small; evaluate the next two cells several times:

m=1;Nm= 1000;z= 0;For[i=1,i≤Nm,i++, v[i] = randomplanev[];nn[i] =v[i][[5]]/ Sqrt[pssp[v[i],v[i]]];If[Abs[nn[i]]≤  m, z = z+1]];Print["probability = ",N[z/Nm]] ;Clear[m,z,Nm]

m=6;Nm= 10000;z= 0;For[i=1,i≤Nm,i++, v[i] = randomplanev[];nn[i] =v[i][[5]]/ Sqrt[pssp[v[i],v[i]]];If[Abs[nn[i]]>  m, z = z+1]];Print["probability = ",N[z/Nm]] ;Clear[m,z,Nm]

Play with other values of the border m, the number of tetsts Nm, and the condition in If[...]

To plot the random planes, evaluate :the next cells several times

euklidsphereplot3D[randomplanev[]]

Table[euklidsphereplot3D[randomplanev[]], {10}];
Show[%, PlotRange -> All]

3.2.3. The Plane through Three Points

Through three points in general position there exists exactly one plane in the Euclidean 3-space. The following Module gives a spacelike 5-vector corresponding to this plane:

spvplane3pts[p1_List,p2_List,p3_List]:= Module[{q1,q2,q3,vq, wrong},
If[Not[Length[p1]==3&&Length[p2]==3&&Length[p3]==3], Goto[wrong]];
q1 = invstepro[p1];q2= invstepro[p2];q3 = invstepro[p3];
vq = pscross[{q1,q2,q3,stb[1]+stb[5]}];
If[vq == null[5], Goto[wrong],Return[vq/Sqrt[pssp[vq,vq]]],Return[vq/Sqrt[pssp[vq,vq]]]];
Label[wrong];
Print["Incorrect arguments, or points are not in general position!."];
Return[]]

Examples.

spvplane3pts[null[3], stb[1,3], -stb[1,3]]

Evaluate:

vpl =spvplane3pts[null[3], stb[1,3], stb[2,3]];
euklidsphereplot3D[vpl, -3,3, -3,3]

Evaluate:

vpl =spvplane3pts[stb[3,3], stb[1,3], stb[2,3]]; Print["vpl =", vpl]; euklidsphereplot3D[vpl, -3,3, -3,3]

3.2.4. Planes through Three Random Points

?randomv

randomv[3]  is a random point in the “unit cube”  spanned by the unit vectors of the axes in the Euclidean 3-space:

?randomv

randomv[3]

We study the distribution of the random points in the unit cube, counting the number of points in different octants:

rpts =Table[randomv[3],{10000}];counter = null[10000]; For[i=1, i≤ 10000,i++, If[rpts[[i]][[1]]>0&&rpts[[i]][[2]]>0&&rpts[[i]][[3]]>0,counter[[i]]=1]];
N[Sum[counter[[i]],{i,1,10000}]/10000]

%*8

rpts =Table[randomv[3],{10000}];counter = null[10000]; For[i=1, i≤ 10000,i++, If[rpts[[i]][[1]]<0&&rpts[[i]][[2]]<0&&rpts[[i]][[3]]<0,counter[[i]]=1]];
N[Sum[counter[[i]],{i,1,10000}]/10000]

%*8

The theoretical probability for each octant is

N[1/8]

We show the point distribution:

grpts = Point /@ rpts;

Show[Graphics3D[grpts]]

A random plane as the plane through three random points:

pts = {randomv[3],2*randomv[3],-2*randomv[3]}

vt = spvplane3pts[pts[[1]], pts[[2]], pts[[3]]]

pssp[vt,vt]

pssp[vt,invstepro[pts[[1]]]]

plane[vt][u,v]

gpl = ParametricPlot3D[%, {u, -3,3}, {v,-3,3}];

Map[Point,pts]

gpts =Graphics3D[{PointSize[0.02],%}];

Show[{gpts,gpl}]

Clear[pts,gpl,gpts,vt,rpts,grpts]

Evaluate this subsubsection several times!

3.3. The Sphere or Plane Corresponding to a Spacelike Vector

We used the Module euklidsphereplot3D already very often. In this subsection we explain its definition.

3.3.1. The Definition of the Parameter Representation euklidsphere

?euklidsphere

euklidsphere[va_List][u_,v_]:=Module[{q},q=pssp[va,va];
If[q≤0,Print[va," is not spacelike!"];Return[]];
w=va/Sqrt[q];
If[w[[1]]==w[[5]],Goto[pla]];
Return[sphere[vcenter[w],vradius[w]][u*Pi,v*Pi/2]];
Label[pla];
p=w[[5]];
w=Take[w,{2,4}];
ob=orthocomplement[{w}];
Return[w*p+ob[[1]]*u+ob[[2]]*v]]/;Length[va]==5

Examples

euklidsphere[stb[5]][u,v]

euklidsphere[stb[4]][u,v]

euklidsphere[stb[1]][u,v]

euklidsphere[stb[2]][u,v]

euklidsphere[stb[3]][u,v]

Evaluate repeatedly the following cell; "almost surely" you will get a random halfsphere.

vrand = randomv[];ParametricPlot3D[euklidsphere[vrand][u,v], {u,0,1},{v, -1,1}]

Clearly, the probability for vrand[[4]] = vrand[[][5]] is zero, therefore planes do happen with probability zero. Furthermore remember, that the probability for a random vector in the 5-dimensional unit cube to be not spacelike is small; therefore the probability of error messages is small. Indeed, as already shown in the notebook pseuklid.nb, we have for the empirical probability nearly 6.2 %.

Timing[( nr = 0; For[i = 1, i≤ 100000,i++,If[ch[randomv[5]]< 1, nr = nr+1]]; N[nr/1000])]

The Module euklidsphereplot3D

Now it is easy to build the plot command for euklidsphere, contained in mspher.m:

?euklidsphereplot3D

euklidsphereplot3D[vn_List,u0_:-1,u1_:1, v0_:-1,v1_:1,opts___]:=ParametricPlot3D[Evaluate[euklidsphere[vn][u,v]],{u,u0,u1}, {v,v0,v1},opts]

3.4. Examples, Comparision of Sphere Plot Methods

3.4.1. Example: Equidistant Unit Spheres

To see the properties of the different methods to plot spheres evaluate the cells of this subsection. We shall show the picture of the unit spheres with centers at the points x = 0,3,6,9,12 of the x-axis by several methods.

?ColorFunction

?sphereplot3D

Timing[Table[sphereplot3D[{x,0,0},1,0,2*Pi,-Pi/2,Pi/2,PlotStyle -> {RGBColor[1,x/12,1-x/12],Opacity[(x+2)/15]},Mesh-> None], {x, 0, 12, 3}]]

sphtable1 = %[[2]];

Show[sphtable1]

Strange: In difference to v. 4.2 of Mathematica  Show produces in version 8 only the first member of the table; with the option 
PlotRange -> All the picture is correct:

Show[sphtable1,PlotRange -> All]

The next method seems to be a bit faster

Timing[Table[euklidsphereplot3D[spherevec[x,0,0,1],0,2*Pi,-Pi/2,Pi/2,PlotStyle -> {RGBColor[1,x/12,1-x/12],Opacity[(x+2)/15]},Mesh-> None], {x, 0, 12, 3}]]

sphtable2 = %[[2]];

Again the same situation:

Show[sphtable2]

Show[sphtable2,PlotRange -> All]

Now we use the built-in method to create spheres; of course, it is the fastest:

Timing[Table[Graphics3D[{RGBColor[1,x/12,1-x/12],Opacity[(x+2)/15],Sphere[{x,0,0},1]}],{x,0,12,3}]]

sphtable3 = %[[2]];

Show[sphtable3,Axes  -> True]

3.4.2. Example: The Spacelike Frame Vectors

Timing[Table[euklidsphereplot3D[stb[i]], {i,2, 5}]]

Show[%[[2]]]

3.4.3. Example : A Plane Bundle

Here we obtain some exemplars of the bundle of planes containing the y-axis:

Timing[Table[euklidsphereplot3D[stb[2]*Cos[i*Pi/5] + stb[4]*Sin[i*Pi/5]],
	{i, 1, 5}]]

Show[%[[2]]]

3.4.4. Evaluation Problems: Floating Point Numbers

WARNING!
By numerical reasons, the results may be distorted, or completely false. E.g. we met the following situation

vd[t_] := stb[5]*Cosh[t] +stb[1]*Sinh[t]

vd[t]

ch[%]

Of course, this vector is spacelike. But calculating with machine precision numbers we possibly obtain false results, e.g.

Table[ch[vd[t*10]],{t,0.1,4.1,0.5}]

The last5 reszults are False!

Precision[0.1]

Precision[vd[0.1]]

$MachinePrecision

Using rational numbers instead - they have arbitrary precision: -

{Precision[1/10],Precision[vd[1/10]]}

one gets the correct values:

Table[ch[vd[t*10]],{t,1/10,4+1/10,5/10}]

Analogously

Table[vradius[vd[t*10]],{t,0.1,4.1,0.5}]

Table[vradius[vd[t*10]],{t,1/10,4+1/10,5/10}]

Analogously:

Table[pssp[vd[t*10], vd[t*10]],{t,0.1,4.1,0.5}]

Table[pssp[vd[t*10], vd[t*10]],{t,1/10,4+1/10,5/10}]

Simplify[%]

Accuracy[Cosh[10]^2]

Accuracy[Cosh[10.]^2]

Cosh[10.]^2

N[Cosh[10]^2,50]

CONCLUSION:  Since e.g. ch[x]>0 and similar conditions appear as conditions in our Modules very often, it is recommended to use numbers of arbitrary precision and explicit simplifications in the commands and Modules. We show this with the graphical Module euklidsphereplot3D

Timing[Table[euklidsphereplot3D[vd[t]], {t,0.1,4.1,0.5}]]

Now we  make the spacelike unit vector vd[t] "longer", multiplying t by 10, and try again

Timing[Table[euklidsphereplot3D[vd[t*10]], {t,0.1,4.1,0.5}]]

The reason is that  the vectors seem to be isotropic; they are very near to the asymptotic (isotropic) cone, see the examples at the beginning of this subsection..

Now we apply the same Module: with rational parameters instead of machine-precision numbers, it works:

Timing[Table[euklidsphereplot3D[vd[t*10]], {t,1/10,4+1/10,5/10}]]

Applying ParametrcPlot3D to the evaluated function euklidsphere works also for machine-precision parameters, since then the spacelike conditions are not tested:

euklidsphere[vd[t*10]][u,v]

Timing[Table[ParametricPlot3D[%,{u,0,2}, {v,-1,1}], {t,0.1,4.1,0.5}]]

3.5. The Manifold of All Spheres, Random Spheres

3.5.1. The sphere manifold

Any (non oriented) sphere is represented by a pseudo-Euclidean subspace of dimension 4; the manifold of all spheres is the open orbit of pseudo-Euclidean 4-spaces under the action of the Möbius group.  Going to the orthogonal complements one finds that the spacelike unit-hypersphere, the hyper-hyperboloid

pssp[x,x]= -((x[1])^2)+((x[2])^2)+((x[3])^2)+((x[4])^2)+((x[5])^2)= 1		(H)

is a twofold covering of the manifold of all non-oriented spheres. Since with vec[x] also - vec[x] is a solution, we will identify the hyper-hyperboloid (H)  with the manifold of all oriented spheres, see section 3.1.  We immediately can write down a parameter representation of this hypersurface calculating

Prepend[unit[3][{s, t, u}], 0]*Cosh[v] + stb[1]*Sinh[v]

Simplify[pssp[%,%]]

?unit

unit[3][{s, t, u}]

The parameter representation of the hyperboloid (H) is defined in mspher.m:

?spunit

spunit[s,t,u,v]

Here we used unit[3][{s,t,u}], the parameter representation of the unit 3-sphere in the 4-dimensional Euclidean subspace orthogonal to stb[5], see euvec.m. Obviously, spunit can be generalized easily to arbitrary dimension.

spunit[4][{s,t,u,v}]

%== spunit[s,t,u,v]

spunit[2][{s,t}]

ParametricPlot3D[%,{s,0,2* Pi},{t,-2,2}]

spunit[5][{s,t,u,v,w}]

dim = 6;Simplify[pssp[%,%]]

dim = 5;

Now we may apply  the euklidsphere functions of  section 3.3 to  spunit[s,t,u,v], and obtain a parameter representation or plot of the corresponding sphere.

euklidspherefct[s_,t_,u_,v_][x_,y_]:=euklidsphere[spunit[s,t,u,v]][x,y]

and obtain e.g.

euklidspherefct[s,0,0,0][x,y]

spunit[Pi/4,Pi, Pi/4,0]

vradius[%]

vcenter[%%]

euklidsphereplot3D[spunit[Pi/4,Pi, Pi/4,0]]

euklidspherefct[Pi/4,Pi, Pi/4,0][x,y]

Here are the radius and the center of the stereographic projection of the sphere  as functions on the manifold H:

vradius[spunit[s,t,u,v]]

vcenter[spunit[s,t,u,v]]

In particular, for u = v = 0, one always obtains  planes through the origin:

plane[spunit[s,t,0,0]][x,y]

%/.{x-> 0, y->0}

Therefore commands like the following always create a set of planes through the origin:

Table[euklidsphereplot3D[spunit[2 π RandomReal[],(π RandomReal[])/2,0,0]],{10}]

Show[%]

3.5.2. A random spacelike unit vector

sprandomv := Module[{re, rs, rt,rv, i},
re[i_] := Sign[0.5 - Random[]];
rs[] := Random[]*2*Pi;
rt[i_] := Random[]*Pi/2;
rs[] := re[3]*Random[];
spunit[rs[],re[1]*rt[1], re[2]*rt[2], rs[]+2] ]

WARNING: The distribution of the random spacelike unit vector and the corresponding random sphere is not invariant under the action of the Möbius group! The corresponding random sphere is:

vte = sprandomv

pssp[vte,vte]

Timing[euklidsphere[vte][x, y]]

Timing[euklidsphereplot3D[sprandomv]]

Timing[Table[euklidsphereplot3D[sprandomv,0,Pi,0,Pi/2, Mesh-> None, PlotStyle-> {RGBColor[(i+1)/15,0.5,0],Opacity[(i+1)/15]}],{i,1,10}]]

Show[%[[2]],PlotRange -> All]

Clear[vte]

4. The Generalized Angle

In analogy with Euclidean geometry the generalized angle is defined by the help of the scalar product. It describes the basic invariant of two spheres.  More generally there exist  stationary angles between a k-sphere and an l-sphere forming a complete system of Möbius invariants for such pairs, see  [OS3], Section 2.7. The case of two circles in the 3-sphere are considered in the Mathematica notebook Elementary  Möbius Geometry II, and the remaining parings of subspheres of the three-dimensional Mobius space are  treated in the notebook Elementary Mobius Geometry III.

4.1. Definition. Cases. Coxeter Invariant

The considerations of this section are valid for hyperspheres in any dimension (with exception of plotting commands, of course). We consider two spheres, represented by the spacelike vectors v, w. Since the map v -> sphere[v] is equivariant, the generalized cosinus gencos of these vectors already yields a complete invariant system  in the space of oriented sphere pairs, as can be proved easily.

?gencos

gencos[v_List, w_List] := Simplify[pssp[v, w]/Sqrt[pssp[v,v] pssp[w,w]]]

We have to distinguish three cases: The linear hull of {v, w} can be 1) Euclidean, 2) pseudo-Euclidean, 3) isotropic. Here and in the following we assume that the spheres are distinct, i.e. the vectors v, w are linearly independent.

?spherevec

Clear[x,y,z,r,X,Y,Z,R]

spherevec[x,y,z,r]

Simplify[pssp[%,%]]

pssp[spherevec[x,y,z,r],spherevec[X,Y,Z,R]]

Simplify[Together[%]]

Since the distance square  (d^(2  )) of the centers of the spheres in the Euclidean space equals

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

we obtain the conformal invariant gencos of two spheres in terms of their Euclidean invariants:

coxeterinv[r1_, r2_, d_] := (r1^2 + r2^2 -d^2)/(2 r1 r2)

coxeterinv[r,R,d]

FullSimplify[pssp[spherevec[x,y,z,r],spherevec[X,Y,Z,R]]== coxeterinv[r,R, Sqrt[{x-X,y-Y,z-Z}.{x-X,y-Y,z-Z}]]]

If the spheres intersect this invariant is the cosinus of the intersection angle, defined as the angle between there normal vectors at the intersection points.  If they do not intersect the invariant

ArcCosh[coxeterinv[r,R,d]]

has been considered by H. S. M. Coxeter in [1], he called it the inversive distance of the spheres.

4.2. Intersecting Spheres

The spheres intersect in a circle (resp. (n-2)-sphere) iff v, w span an Euclidean subspace. Then gencos[v,w] obviously is the cosinus of the  usual angle between the vectors v, w, and this is valid iff -1 < gencos[v,w] < 1:

phi[v_, w_] := ArcCos[gencos[v,w]]

is the angle between the normal vectors (= radii vectors) of the spheres along the intersection. This follows easily from the cos-theorem using the  Coxeter formula of the last subsection.  The intersection is  the circle represented by the isotropic cone contained in the 3-dimensional pseudo-Euclidean complement of the vector subspace spanned by [v,w].

4.2.1. Example

Abbreviating we define

sphv[x_,r_] := spherevec[x,0,0,r]

vx = sphv[0, 1]

sphfct[u_] :=euklidsphereplot3D[sphv[u, 1.5],-1,1,-1,1, PlotStyle -> Opacity[0.3, Yellow]]

sphfct[1.2]

Clear[u]

obj[u_] :=Show[{gr1,sphfct[u]}, PlotRange -> All]

obj[0.9]

gencos[vx, sphv[0.9, 1.5]]

phi[vx, sphv[0.9, 1.5]]

%*180/Pi

Test it with other arguments of sphv!

wx= sphv[x, r]

gencos[vx, wx]

%/.r-> 1.5

Plot[%,{x,-3,3}]

The absolute value of this invariant equals 1 in the cases x = ±(1-r) or x = ±(1+r), and this means that the spheres are tangent to each other, see also section 4.4 .Let the following animation run slower, if the shown pictures are incomplete! Stop it before continuing to work with the notebook!

Animate[ obj[x],{x,-2.5,2.5,.1},AnimationRunning -> False]

The intersection angle is

angle[u_] = phi[vx, sphv[u, 1.5]]*180/Pi

Plot[angle[u],{u,-2.5,3.5},PlotRange -> All]

ang=%;

grang[u_]:=Graphics[{PointSize[.03],Red,Point[{u,angle[u]}]}]

The following animation shows a moving sphere with radius 1.5 intersecting the standard unit sphere for .5 < Abs{x[<1.5; the small red point on the graphindicates the corresponding intersection angle.

Animate[{Show[{ang,grang[x]}], obj[x]},{x,-2.5,2.5,.1},AnimationRunning -> False]

4.2.2. Intersecting planes

A simple example of symbolic calculations: let us take two general planes:

na= planevec[x,y,z,h]

pssp[na,na]

nb= planevec[X,Y,Z,H]

(pssp[na,nb])^2/(pssp[na,na]*pssp[nb,nb])

And this is the cos^2 of the intersection angle, if the planes are not parallel, and 1 else, as expected.  If the planes are parallel we have

nc =  planevec[x,y,z,k]

(pssp[na,nc])^2/(pssp[na,na]*pssp[nc,nc])

Parallel planes are tangent of each other at infinity.

4.3. Non-intersecting Spheres

If the linear hull[v, w] is pseudo-Euclidean, its othogonal complement is Euclidean, thus, it does not contain isotropic vectors, and the intersection of the spheres is empty. We consider

fct[x1_, r1_,x2_, r2_] := gencos[sphv[x1, r1], sphv[x2, r2]]

fct[x1,r1,x2,r2]

Since d = x1 - x2 is the Euclidean distance between the centers of the spheres, we obtain the conformal invariant of two spheres with radii r1, r2 and distance d of its centers as

?coxeterinv

More generally we derived this expression already in 4.1.

In the non-intersecting case one has Abs[coxeterinv[r1, r2, d]]>1, and vice versa.

coxeterinv[r1, r2, d]

4.3.1. Example

We have defined already he unit sphere with center {0,0,0} as the 3DGraphics gr1. It is generated by the spacelike vector:

vx = sphv[0,1]

Consider

ftest[x_, r_] := pssp[vx, sphv[x,r]]

ftest[x,r]

Plot[ftest[x,.3],{x,-2,2}]

Solve[ftest[x,.3]== 1, x]

Solve[ftest[x,.3]== -1, x]

euklidsphereplot3D[sphv[1.3,.3]]

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

The spheres are tangent to each other for x = ± 0.7, x = ± 1.3, they intersect for 1-r =  0.7 < |x| < 1.3 = 1+r, and do not intersect else.

4.4. Tangential Spheres

The spheres are tangent to each other at the common point, which corresponds to the isotropic vector of the linear hull[v,w], iff one has Abs[coxeterinv[r1, r2, d]]=1.
We have two subcases:

a)  d = |r1 + r2|

coxeterinv[r1, r2, r1 + r2]

Simplify[%]

We assume r1 = 1; consider the unit sphere with center {0,0,0}, corresponding to

vx = sphv[0,1]

and  the family of spheres with center {1+r,0,0} and radius r2 = r,  the spacelike vector of which are

sphv[1+r,r]

The common point of these spheres is obtained as the solution of

Solve[pssp[sphv[1+r, r]*u+sphv[2,1]*v,sphv[1+r, r]*u+sphv[2,1]*v]== 0,{u,v}]

Simplify[sphv[1+r, r]- sphv[2,1]]

Clearly, it is the point

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

as we know by construction. The Coxeter invariant of two  such spheres is

gencos[sphv[1+r,r], sphv[1+R,R]]

The spheres are tangent to each other lying in the same halfspace, as we shall demonstrate. On the other hand, the Coxeter invariant with one of thes spheres with the unit sphere is

gencos[vx, sphv[1+R,R]]

The invariant coxeterinv equals  -1; clearly these  two spheres are tangent to each other lying in distinct halfspaces, as we shall see.

Table[euklidsphereplot3D[sphv[1+r, r], 0,1], {r, 0.2, 0.6, 0.1}];

tangser =Show[%, PlotRange -> All]

halfsph1 =euklidsphereplot3D[spherevec[0,0,0,1],0,1];

Show[{halfsph1,tangser},PlotRange -> All]

b)  d = |r1  - r2|

coxeterinv[r1, r2, r1 - r2]

Simplify[%]

Now the invariant coxeterinv equals  1; clearly the spheres of the family are tangent to each other lying in the same halfspace, as we shall demonstrate.

sphv[1-r, r]

Simplify[2 r *%]

Also the Coxeter invariant with one of thes spheres with the unitsphere is

Simplify[coxeterinv[1, r, 1-r]]

Simplify[pssp[sphv[0,1],sphv[1-r, r]]]

Thus, the spheres of the family touch the oriented unit sphere from the inner side.

Table[euklidsphereplot3D[sphv[1-r, r],0,1], {r, 0.1, 0.5, 0.1}];

tangser2 =Show[%, PlotRange -> All]

tan2 =Show[{halfsph1,tangser2},PlotRange -> All]

The common point of all these spheres is again

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

Simplify[pssp[sphv[1-r, r],{1,1,0,0,0}]]

4.5. Intersection of a Sphere and a Plane

Now we consider the intersection of a plane with a sphere. For the conformal invariant of a sphere and a plane we calculate

spherevec[x,y,z,r]

Clear[X]; planevec[X,Y,Z,p]

pssp[%,%]

pssp[spherevec[x,y,z,r], planevec[X,Y,Z,p]]

gencos[spherevec[x,y,z,r], planevec[X,Y,Z,p]]

If plane and sphere really intersect, this is the cosinus of the intersection angle. In the general case it corresponds to the conformal invariant coxeterinv of two spheres. The plane is tangent to the sphere iff the absolute value of this expression equals one.

Example

For the intersection of a unit sphere with center at the origin and the plane x = p we obtain with

pla[p_] := planevec[1,0,0,p]

pla[p]

gencos[pla[p], spherevec[0,0,0,1]]

Aplane orthogonal to the x-axis with distance p to the origin is plotted by

plaf[p_]:=euklidsphereplot3D[pla[p]]

Here is a family of parallel planes together with the standard unit sphere:

plafam=Show[Table[plaf[p], {p,-1.5,1.5,.5}], PlotRange -> All];

grs1= euklidsphereplot3D[stb[5],-1,1,-1,1, Mesh-> None,PlotStyle -> Opacity[.4]];

plpic = Show[{plafam,grs1},PlotRange -> All]

For intersecting surfaces the intersection angle at a given intersection point is defined to be the angle of the normal vectors at this point; for intersecting spheres or planes it is constant along the intersection line or circle. In our case we calculate for Abs[p] ≤ 1

angle[p_]:=ArcCos[gencos[pla[p],stb[5]]]*180/Pi

Plot[angle[p],{p,-1,1}]

gr2=%;

gr3[p_] := Show[{gr2, Graphics[{Red,PointSize[.02],Point[{p,angle[p]}]}]}]

gr3[.6]

plaf[p_]:=euklidsphereplot3D[pla[p]]

Manipulate[{Show[{plaf[p],grs1},PlotRange -> All],angle[p],gr3[p]},{{p,0,"distance p"},-1,1},{p}]

5. Geodesics of the Sphere Manifold

5.1. Introduction

In subsection 3.5 we identified the space of oriented spheres with the hypersurface  H: pssp[x,x] = 1 of spacelike unit vectors in the pseudo-Euclidean vector space of index 1:  a "pseudo-hypersphere". Since the pseudo-orthogonal group O(1,4) acts transitively on the pseudosphere,  it is a pseudo-Riemannian symmetric space of constant scalar curvature. Since the origin as the center of H is fixed under the action  of  O(1,4) we define as in the  sphere geometry: The geodesics of  H are the intersections of the pseudo-hypersphere H with 2-planes through the center o. But now we  have three kinds of such planes: pseudo-Euclidean, Euclidean, and isotropic,  and the corresponding geodesics. We take the standard unit  sphere stb[5] as starting point of  the geodesics. To find the types of geodesic we may restrict to the linear hull[stb[1],stb[2]], as a subspace of the tangent space of this hyper-hyperboloid at stb[5]: look at the isotropy action, the action of the subgroup of the Möbius group preserving stb[5] on the tangential space of  H at stb[5]. Obviously, this is the usual standard action of the pseudo-orthogonal group O(1,3) on the 4-dimensional pseudo-Euclidean vector space of index 1. 
In the next subsection we interpret the three types of geodesics geometrically.

5.2. Timelike Geodesics

5.2.1. Definitions and general considerations

A timelike geodesics is the intersection of H with a pseudo-Euclidean plane, say, spanned by stb[1], stb[5]. This 2-plane contains two isotropic directions, i.e. points of the 3-sphere, represented by the isotropic vectors {1,0,0,0,±1}. The spacelike unit vectors of this plane are

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

{Sinh[t],0,0,0,-Cosh[t]}

They form a hyperbola in the x1,x5 plane:

ParametricPlot[{{Sinh[t],Cosh[t]},{Sinh[t],-Cosh[t]}},{t,-2,2}]

Because

{Sinh[-t],Cosh[-t]} == -{Sinh[t],-Cosh[t]}

it suffices to consider one branch of the oriented spheres. We get five spheres on this timelike geodesic:

grr= Show[Table[euklidsphereplot3D[{Sinh[t], 0, 0, 0, Cosh[t]},-1,1,-1,1,
PlotStyle -> Opacity[.1]],
{t, -1, 1, 1/2}],PlotRange ->All]

Obviously, this is the family of concentric spheres with center

vcenter[{Sinh[t],0,0,0,Cosh[t]}]

Let us consider the 1-parameter subgroup of the Möbius group:

g15[t_]:={{Cosh[t],0,0,0,Sinh[t]},stb[2],stb[3],stb[4],{Sinh[t],0,0,0,Cosh[t]}}

g15[t]//MatrixForm

The subgroup property is clear:

Simplify[g15[s].g15[t]== g15[s+t]]

Our geodesic is the orbit of the unit sphere under the action of this subgroup:

g15[t].stb[5]

D[%, t]

%/.t->0

The tangential vector of this geodesic at t=0 is stb[1]. Therefore the geodesic is timelike:

The Limit of the orbit  for t →±∝ are the asymptotes of the hyperbola, corresponding to the isotropic subspaces of the plane

Limit[{Sinh[t],0,0,0,Cosh[t]}/Sinh[t], t-> +Infinity]

Limit[{Sinh[t],0,0,0,Cosh[t]}/Sinh[t], t-> -Infinity]

The stereographical projections of the corresponding points in the 3-sphere are

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

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

For t-> ∝ the spheres contract to the "North Pole" {∞,∞,∞}, and for t-> -∝ to the origin {0,0,0}. Both points are in inversion with respect to the starting sphere of the geodesic, the unit sphere with center at the origin:

?sphericalreflection

sphericalreflection[{0,0,0},{0,0,0},1]

The linear hull of the defining isotropic vectors of the fixed points is the x1,x5- plane. All the spacelike vectors corresponding to spheres containing these points are orthogonal to this pseudo-Euclidean subspace, they belong in our case to the 3-space spanned by stb[i], i = 2,3,4. The geodesic consists of all spheres which intersect all the spheres through these two points  in an angle Pi/2.In our example the "spheres" through these points are the planes through the origin (under stereographic projection).Therefore  the geodesic is the set of all spheres with the origin as center, as seen before. We consider the family of planes through the center:

Clear[grr2]

aa=2Pi*Random[];grr2 = Show[Table[euklidsphereplot3D[{0,Cos[aa]*Cos[t],Cos[aa]*Sin[t],Sin[aa],0},-3,3,-3,3, PlotStyle -> Opacity[0.2, Green],Mesh-> None],{t,-1.1,1.1,1}],PlotRange -> All];

pto = Graphics3D[{PointSize[.03],Point[{0,0,0}]}]

grr3=Show[{pto,grr,grr2},PlotRange -> All]

Clear[aa]

The planes through the ceneter intersect all spheres of the geodesic orthogonally.

We remark that the two Limit points of the spherical timelike geodesic are fixed points under the action of the 1-parameter subgroup generating the geodesic:

g15[t].{1,0,0,0,1}

Simplify[%== {1,0,0,0,1}*Exp[t]]

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

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

The action of the Möbius group O(1,4) on the space H of spacelike unit vectors is transitive, and the action of the isotropy group of the standard unit sphere corresponding to stb[5] is equivalent to the action of O(1,3) on the 4-dimensional pseudo-Euclidean vector space of index 1. Therefore it follows

Proposition. The timelike geodesics in the space of spheres are Möbius-equivalent.  Any timelike geodesic through a given sphere is obtained as follows: Take a point outside the sphere, reflect it at the sphere, consider the bundle of all spheres through the  pair of inversive points obtained this way: The geodesic is the family of spheres orthogonal to all spheres of this bundle. The set of all timelike geodesics is a six-dimensional homogeneous space under the action of the Möbius group.

5.2.2. Another Example

We shall construct an example with two finite fixed points demonstrating the Proposition once more. Replacing stb[5] by stb[2] gives a Möbius equivalent, also again timelike geodesic. In the Euclidean picture, this geodesic starts at the "sphere" defined by stb[2], that is the y,z-plane. It is defined as the one-parameter sphere family corresponding to the spacelike vectors {Sinh[t],Cosh[t], 0, 0, 0}:

esf3D[t_] := euklidsphereplot3D[{Sinh[t],Cosh[t],0,0,0},-1,0,-1,1,Mesh-> None,PlotStyle -> Opacity[.3]]

tgr = Show[Map[esf3D,{-2,-1.5,-1,-0.5, 0.5, 1,1.5,2}], PlotRange -> All]

euklidsphereplot3D[stb[2], -2,2,-2,2];

tgr1 = Show[{tgr,%},PlotRange->All]

One sees that we obtained a one parameter family of pairwise non intersecting spheres,  containing the y,z-plane and contracting to two points, which correspond to the origin and the infinite point in our first example.These points are

{stepro[stb[1] +stb[2]],stepro[stb[1] -stb[2]]}

This can be shown using vcenter,vradius:

Limit[vradius[{Sinh[t],Cosh[t],0,0,0}],t -> Infinity]

Limit[vradius[{Sinh[t],Cosh[t],0,0,0}],t -> -Infinity]

Limit[vcenter[{Sinh[t],Cosh[t],0,0,0}],t -> Infinity]

Limit[vcenter[{Sinh[t],Cosh[t],0,0,0}],t -> -Infinity]

gp1 =Show[Graphics3D[{PointSize[0.03],Point[{-1.,0,0}],Point[{1.,0,0}]}]];

tgr2 = Show[{gp1,tgr1,tgr}, PlotRange -> All]

The points are not arbitrary; they are in inversion with respect to any sphere of the geodesic.

?sphericalreflection

Simplify[sphericalreflection[{-1,0,0},vcenter[{Sinh[t],Cosh[t],0,0,0}],vradius[{Sinh[t],Cosh[t],0,0,0}]]]

Consider all spheres through the two points: they cut the y,z-plane orthogonally. Since the geodesic is generated moving the starting sphere by a 1-parameter group of Möbius transformations  preserving these two points (the pseudo-orthogonal group of the subspace spanned by stb[1], stb[2]):

{{Cosh[t],Sinh[t],0, 0, 0},
{Sinh[t], Cosh[t],0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 1}}.{0,1,0,0,0}

{{Cosh[t],Sinh[t],0, 0, 0},
{Sinh[t], Cosh[t],0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 1}}.{1,1,0,0,0}

{{Cosh[t],Sinh[t],0, 0, 0},
{Sinh[t], Cosh[t],0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 1, 0},
{0, 0, 0, 0, 1}}.{1,-1,0,0,0}

all the spheres of the geodesic intersect the sphere bundle through the two points orthogonally, and therefore the geodesic is the family of orthogonal trajectories of the bundle. Here are two planes and a sphere through the two points:

tpl3 = euklidsphereplot3D[stb[3], -2,2,-2,2];

tpl4 = euklidsphereplot3D[stb[4], -2,2,-2,2];

tgr3=Show[{tpl3,tpl4,gr1}, PlotRange ->All];

tgr4 = Show[{tgr2,tgr3, gp1},PlotRange-> All]

Finally, here are two random spheres: sp1 contains the two  limit points of the previous example, and sp2 is a sphere of the geodesic:

sp1v ={0,0,3 RandomReal[],-2 RandomReal[],2 RandomReal[]};sp1=euklidsphereplot3D[sp1v,0,-1];
tt= RandomReal[];
sp2v={Sinh[tt],Cosh[tt],0,0,0};sp2=euklidsphereplot3D[sp2v,0,1];

pssp[sp1v,sp2v]

Show[{sp1,sp2,gp1},PlotRange -> All]

5.3. Spacelike Geodesics

The spacelike geodesic corresponding to the intersection of H with the linear hull[stb[2], stb[5]] is the circle
{0, Sin[t],  0, 0, Cos[t]}.

Remark. The circle defined by the spacelike geodesic is the Möbius “1-space” defined by the pseudo-Euclidean subspace spanned by stb[1], stb[3], stb[4]], the orthogonal complement of [stb[2], stb[5]]:

circ1yz=ParametricPlot3D[{0,Cos[t], Sin[t]},{t,0,2 π},PlotStyle -> Thickness[0.01]];

Show[{euklidsphereplot3D[stb[2]],euklidsphereplot3D[stb[5]],circ1yz} ]

Five spheres on this spacelike geodesic (again we plot halfspheres only):

spacege =Show[Table[euklidsphereplot3D[
{0,Sin[t],0,0,Cos[t]},-1,0,-1,1,PlotStyle -> Opacity[0.3]],
{t,-Pi/2+Pi/4,Pi/2,Pi/4}], PlotRange -> All];

These spheres intersect in the unit circle centered in o in the y,z-plane :

spacegec =Show[{spacege,circ1yz}, PlotRange -> All]

Since the isotropy group of a point of H acts transitively on the manifold of the spacelike tangential unit vectors it acts also transitively on the set of spacelike geodesics through that point. We conclude

Proposition. Any spacelike geodesic consists of all the spheres through a given circle. 
In the last example the common circle is defined by the 3-dimensional pseudo-Euclidean subspace being the orthogonal complement of  linearhull {stb[2], stb[5]}.  As a special case of a spacelike geodesic we get the bundle of planes through a line. Since the space of all circles is six-dimensional, we can state: 
Corollary. The space of all spacelike geodesics in the sphere space is a six-dimensional homogeneous space under the action of the Möbius group, equivariantly isomorphic to the space of all circles.

5.4. Isotropic Geodesics

An example of an isotropic geodesic through the unit sphere stb[5] is the intersection of the hyper-hyperboloid H with the isotropic plane through the origin, spanned by the vectors stb[5] and stb[1] +stb[2]. This is a generating line contained in H, with parameter representation  {t,t,0,0, 1}.
The starting sphere stb[5] (the unit sphere with centre o),  and any other sphere {t,t,0,0, 1} of this geodesic span the isotropic  linearhull[{0,0,0,0,1}, {1, 1, 0,0,0}], and therefore they all intersect in the uniquely defined common point

cpt ={1,1,0,0,0};
stepro[cpt]

Because spheres which intersect in exactly one point must have a common tangential plane at this point,  the isotropic geodesic under consideration is the 1-parameter family of spheres through the point {1,0,0} having there the same tangent plane as the unitsphere with centre o, and this is the plane intersecting the x-axis orthogonally. This tangent plane at this point corresponds to the spacelike vector

planevec[1,0,0,1]

and belongs to the geodesic. If vec[x] is a spacelike unit vector the corresponding sphere of which is tangent to the unit sphere at the point {1,0,0}, it must be a solution of the following system

Solve[{pssp[cpt,vec[x]]==0,
		pssp[stb[5],vec[x]]==1,
pssp[vec[x],vec[x]]== 1},
	vec[x]]

The only real solution is

vs= {t,t, 0,0,1}

gencos[vs,stb[5]]

pssp[vs,cpt]

It follows: The isotropic geodesic we constructed consists exactly of all spheres tangent to the unit sphere at the point {1,0,0}.

Here are 7 spheres on this isotropic geodesic:

isogeod1=Show[Table[euklidsphereplot3D[{t,t,0,0,1},0,1, -1,1,
PlotPoints-> 20],{t,-3.5,3.5, 1}],PlotRange -> All];

euklidsphereplot3D[{1,1,0,0,1},-2,2,-2,2];

isogeod = Show[{isogeod1,%},PlotRange -> All]

Another isotropic geodesic through the unit sphere in the linear hull under consideration is given by the spacelike vectors

{t,-t,0,0,1}

Show[Table[euklidsphereplot3D[{t,-t,0,0,1},-1,0, -1,1,
PlotPoints-> 20],{t,-3,3}], PlotRange -> All]

The geodesic consists of all spheres having at the common point

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

the plane parallel to the y,z-plane as its common tangential plane. By similar transitivity arguments as in the foregoing cases we conclude:

Proposition. Any isotropic geodesic through a given sphere S is the family of spheres through a given point x∈S tangent to S at x. Obviously, there exists a 2-parameter family of isotropic geodesics through S, corresponding to the points of the sphere. Their tangents at x correspond to the generators of the isotropic cone in the 4-dimensional pseudo-Euclidean tangent space of H at the spacelike unit vector representing S. The set of all isotropic geodesics is a five-dimensional homogeneous manifold under the action of the Möbius group.

6. The Möbius Group

As remarked in the Introduction already, the Möbius group consists of all time-orientation preserving elements of the pseudo-orthogonal group, denoted by   O(SuperPlus[(1,4)]), see [OS3]. Proposition 2.7.1.  In this Chapter we give two matrix representations of its Lie algebra and consider how some well known geometric groups are realized as subgroups of the Möbius group.

6.1. The Lie Algebra o(1.4) of the Möbius Group

Algebraically it is a group preserving the scalar product pssp. We will  find its Lie algebra.  Let

X=matrix[x]

be an arbitrary square  matrix of order 5 and consider the corresponding 1-parameter subgroup of the linear group:

MatrixExp[X*t]

The  scalar product pssp is invariant under he action of group[X,t] iff for all vectors vec[u], vec[v] we have

pssp[MatrixExp[X*t]vec[u],MatrixExp[X*t].vec[v]] == pssp[vec[u],vec[v]]

Considering the left side as a function of t only,  the condition means that it is constant, and this is equivalent to

Simplify[D[pssp[MatrixExp[X*t]vec[u],MatrixExp[X*t].vec[v]],t] == 0]

We shall apply the well known and easily to prove rule

D[MatrixExp[X*t],t]==X.MatrixExp[X*t]

We tested some of the commands in the not evaluatable cells; Mathematica could not deliver results in an acceptably  long time. Thus we assume the well known elementary result and set  t=0, then  inserting for the vectors the standard basis, we obtain the condition for  X to belong to the Lie algebra o(1,4) of the Möbius group:

equations =Table[pssp[X.stb[i],stb[j]]+pssp[stb[i],X.stb[j]]==  0,{i,1,dim},{j,1,dim}]

Solve[Flatten[equations], Flatten[matrix[x]],Reals]

matrix[x]/.%[[1]]

%//MatrixForm

It follows
Lemma. The Lie group O(1,4) and the corresponding Lie algebra o(1,4) are 10-dimensional. (In  general, the dimension of  O(k,n-k) is n(n-1)/2). The arbitrary element of o(1,4) has the parameter representation

la5[a1_,a2_,a3_,b1_,b2_,b3_,b4_,b5_,b6_,c_] :={{0,a1,a2,a3,c},{a1,0,-b1,-b2,-b3},{a2,b1,0,-b4,-b5},
{a3,b2,b4,0,-b6},{c,b3,b5,b6,0}}

or

la5@@vec[a,10]

%//MatrixForm

Finally we define (in moeb.m)

?psomatrix

psomatrix[a_] := psomatrix[vec[a,10]]

psomatrix[a_List] := Module[{n},
n = Length[a];
If[n< 10, Print["Wrong argument!"]; Return[]];
{{0,a[[1]],a[[2]],a[[3]],a[[10]]},{a[[1]],0,-a[[4]],-a[[5]],-a[[6]]},{a[[2]],a[[4]],0,-a[[7]],-a[[8]]},{a[[3]],a[[5]],a[[7]],0,-a[[9]]},{a[[10]],a[[6]],a[[8]],a[[9]],0}}]

psomatrix[a]//MatrixForm

psomatrix[vec[v]]

psomatrix[vec[b,10]]//MatrixForm

?psobas

psobas[i_] := psomatrix[stb[i,10]]

psobas[5]//MatrixForm

To control the result we test

Simplify[pssp[(psomatrix[a]).vec[x],vec[y]] + pssp[vec[x],psomatrix[a].vec[y]]]

In isotropic orthogonal coordinates the matrices of this Lie algebra are

transio[].psomatrix[a].transoi[]

%//MatrixForm

We transform the parameters:

vartrans = {a[10] -> c[10], a[1]/Sqrt[2] - a[6]/Sqrt[2] -> c[1], a[2]/Sqrt[2] - a[8]/Sqrt[2] -> c[2], a[3]/Sqrt[2] - a[9]/Sqrt[2] -> c[3], 
   a[1]/Sqrt[2] + a[6]/Sqrt[2] -> c[7], a[4] -> -c[4], a[5] -> -c[5],  
  a[2]/Sqrt[2] + a[8]/Sqrt[2] -> c[8], a[7] -> -c[6],
  a[3]/Sqrt[2] + a[9]/Sqrt[2] -> c[9]};

transio[].psomatrix[a].transoi[]/.vartrans

%//MatrixForm

This leads to the definition (in moeb.m)

iomatrix[c_]:=iomatrix[vec[c,10]];
iomatrix[c_List] := Module[{n},
n = Length[c];
If[n< 10, Print["Wrong argument!"]; Return[]];
{{-c[[10]],c[[1]], c[[2]], c[[3]], 0},  {c[[7]], 0, c[[4]], c[[5]], c[[1]]}, {c[[8]], -c[[4]], 0, 
    c[[6]], c[[2]]}, {c[[9]], -c[[5]], -c[[6]], 0, c[[3]]}, 
   {0, c[[7]], c[[8]], c[[9]], c[[10]]}}];

?iomatrix

iomatrix[c]//MatrixForm

We test the invariance property:

Simplify[Transpose[iomatrix[c]].io[]+io[].iomatrix[c]]

?iobas

iobas[7]//MatrixForm

The bilinear, but not associative operation in Lie algebras is the commutator; generally defined by

comm[x_,y_] := x.y-y.x

comm::usage = "comm[X,Y] is the commutator of the square matrices X,Y.";

comm[c,c]

comm[a,b]+comm[b,a]

Lemma. The commutator in any (linear) Lia algebra satisfies the Jacobi Identity:

Simplify[comm[comm[matrix[a],matrix[b]],matrix[c]] +comm[comm[matrix[b],matrix[c]],matrix[a]] + comm[comm[matrix[c],matrix[a]],matrix[b]] ]

6.2. Lines. The Conformal Representation of the Translation Group and the Dilation Group

We consider the special  element

iotransl[c_] := iotransl[vec[c,3]];iotransl[c_List] := iobas[7]*c[[1]] +iobas[8]*c[[2]]+iobas[9]*c[[3]]

iotransl[c]//MatrixForm

We shall see that this element  generates a 1-parameter translation group. Here is the corresponding subgroup

giotransl[c_,t_] := MatrixExp[iotransl[c]*t]

Simplify[giotransl[c,t]]

%//MatrixForm

In the Euclidean space this corresponds to the translation (OverVector[x]) ↦ (OverVector[x ])+ t.(OverVector[c]), indeed:

Simplify[euklid[giotransl[c,t].confeuklid[vec[x,3]]]]

This leads to the definition (set t=1):

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

transl[a]//MatrixForm

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

Clearly, these matrices form a 3-dimensional abelian subgroup isomorphic to theadditive vector group (ℝ^3):

Simplify[transl[a].transl[b]== transl[b].transl[a]]

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

The lines are orbits of the 1-parametric translation groups.

Table[ParametricPlot3D[euklid[transl[{1,1,1}*t].confeuklid[{1,i/2,0}]],{t,0,5}],{i,1,10}];

Show[%]

We show that the 3-dimensional group of all translations is the maximal connected abelian subgroup of the Möbius group containing any 1-parametric group of translations.  The  Lie subalgebra corresponding to the translation group is generated by the matrices

Table[iobas[i]//MatrixForm,{i,7,9}]

Lemma.  The Lie subalgebra corresponding to the translation group is a maximal abelian Lie subalgebra of 0(1,4).

 Indeed, we solve

Solve[{comm[iobas[7],iomatrix[c]] == nullmatrix[],
comm[iobas[8],iomatrix[c]] == nullmatrix[],
comm[iobas[9],iomatrix[c]] == nullmatrix[]},vec[c,10]]

(iomatrix[c]/.%[[1]])== iobas[7]*c[7]+ iobas[8]*c[8]+ iobas[9]*c[9]

q.e.d.

The following cells show the representation of the (central) dilation group  with center at the origin in isotropic orthogonal coordinates:

iobas[10]

MatrixExp[%*t]

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

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

The  rotation group can be embedded into the Möbius group as the group of matrices in pseudo-orthonormal (or isotropic orthogonal)  coordinates

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

rot[t]//MatrixForm

Being a 1 - parameter subgroup of the Möbius group we have

Simplify[rot[t] == MatrixExp[-iobas[4]*t]]

Similarly we obtain the rotations in the other coordinate planes :

MatrixExp[-iobas[5]*t]//MatrixForm

MatrixExp[-iobas[6]*t]//MatrixForm

The multiplication yields a parameter representation of a neighborhood of the unity of the orthogonal group  O(3) as a subgroup of the Möbius group :

Simplify[MatrixExp[-iobas[4]*u].MatrixExp[-iobas[5]*v].MatrixExp[-iobas[6]*w]]

%//MatrixForm

Simplify[transio[].%.transoi[]== %]

The natural embeddings of O(3) in pseudo-orthonormal  and isotropic orthonormal coordinates coincide.
We show that rot[t]  generates the usual rotation in the Euclidean space, using the transformations euklid, confeukl:

euklid[rot[t].confeuklid[vec[x,3]]]

This is the same as the Mathematica function

?RotationMatrix

%% == RotationMatrix[t,{0,0,1}].vec[x,3]

This is the subgroup of  rotations in the x,y-plane.  Obviously, the orbits of this group are fixed points or circles. 

We shall find all the Möbius transformations commuting with this rotations

For shortness we set

larot = -iobas[4]

larot//MatrixForm

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

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

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

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

commrot//MatrixForm

We set

crot[1]=iobas[3]

%//MatrixForm

crot[2]= iobas[4]

%//MatrixForm

crot[2] == -larot

crot[3]= iobas[9]

%//MatrixForm

crot[4]= iobas[10]

%//MatrixForm

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

comm[crot[1],crot[3]] //MatrixForm

% == -crot[4]

comm[crot[1],crot[4]]

%==crot[1]

comm[crot[3],crot[4]]

%== -crot[3]

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

Clearly, as basis elements they  are linearly independent. crot[3]  generates the translations parallel to the z-axis, and crot{4] corresponds to the (central) dilations, see subsection 6.2. These transformations commite with the rotations around the z-axis. We consider the remaining 1-parametric subgroup corresponding to crot[1] = iobas[3]:

iomatrix[c]//MatrixForm

g3[t_] := MatrixExp[iobas[3]*t]

g3[t]//MatrixForm

euklid[stb[5]]

g3[t] is not  an element of the conformal group of the Euclidean space, since the infinite point is not fixed:

g3[t].stb[5]

euklid[g3[t].stb[5]]

The preimage of the infinite point is

Solve[g3[t].vec[x] == y*stb[5],Append[vec[x],y]]

pp0 = vec[x]/.%[[1]]

Indeed:

g3[t].pp0

euklid[pp0]

Eigensystem[g3[t]]

JordanDecomposition[g3[t]]

%[[2]]//MatrixForm

The only eigenvalue is 1. We find the eigenvectors by

Solve[g3[t].vec[x] == vec[x], vec[x]]

Solve[{x,y,z,0,0}.io[].{x,y,z,0,0}== 0,{x,y,z}]

It  follows:
Lemma 2. The 1-parametric subgroup g3[t] of the Möbius group has only one fixed point, namely stb[1] ( in isotropic-orthonormal coordinates) with the Euclidean image

euklid[stb[1]]

The orbit of the infinite point is a pointed circle with the Euclidean image the z-axis  plus ∞ minus the origin o

euklid[g3[t].stb[5]]

Now we consider the Euclidean images of the general orbits  of g3[t]:

orb3[u_,v_,w_][t_] := euklid[g3[t].confeuklid[{u,v,w}]]

orb3[u,v,w][t]

orb3[0,-1,0][t]

ParametricPlot3D[orb3[0,-1,0][t], {t,-15,15},PlotRange -> All]

The origin is a fixed point:

orb3[0,0,0][t]

Again we see that it is the only real fixed point:

Solve[orb3[u,v,w][t]== {u,v,w},{u,v,w}]

Table[ParametricPlot3D[orb3[Cos[i*2*Pi/30],Sin[i*2*Pi/30],0][t], {t,-50,50},PlotRange -> All],{i,1,30}];

Show[%]

orb1 = %;

orb[r_] :=Table[ParametricPlot3D[orb3[r*Cos[i*2*Pi/30],r*Sin[i*2*Pi/30],0][t], {t,-50,50},PlotRange -> All, PlotStyle -> Red],{i,1,30}]

Show[orb[2]]

orb2 = %;

Show[{orb2,orb1}, Axes -> None]

Clearly the transformations g3[t] commute with the rotations around the z-axis.
The orbits are circles through the point {u,v,w} and the origin, tangent to the z-axis; the origin deleted.

Limit[orb3[u,v,w][t], t-> Infinity]

Limit[orb3[u,v,w][t], t-> -Infinity]

Norm[orb3[u,v,w][t]]

Simplify[%, {u>0,v>0,w>0,t>0}]

Solve[1 + t*w + (1/4)*t^2*(u^2 + v^2 + w^2) == 0, t]

orb3[0,0,w][-2/w]

?sphericalreflection

Simplify[sphericalreflection[euklid[g3[t].confeuklid[{u,v,w}]],{0,0,0},1]==
sphericalreflection[{u,v,w},{0,0,0},1]+{0,0,1} *t/2]

It follows;
Lemma 3.  The  action of g3[t] on the Eucldean space is conjugated to the translation   t3[t]: x ↦x+{0,0,1}t/2 by the spherical reflection at the unit sphere.

Proof. Indeed, denoting the spherical reflection

sphericalreflection[{u,v,w},{0,0,0},1]

by s, and defining

eugr3[t_ ][u_,v_,w_] :=  euklid[g3[t].confeuklid[{u,v,w}]]

the last proved identity can be written as

s∘eugr3[t] == t3[t]∘s

The map s is involutive; thus we obtain

eugr3[t] == s∘t3[t]∘(s^(-1))

6.4. The Conformal and isometry Groups of the Space Forms

In the following subsections we find the subgroups of the Möbius group leaving the embedded space forms invariant. More exactly speaking, we find their Lie  algebras as subalgebras of o(1,4).

6.4.1. The Conformal Euclidean Group

The Euclidean model is the complement of the point represented by the isotropic vector stb[5] of an isotropiic-orthogonal coordinate system:

iomatrix[c]//MatrixForm

euklid[stb[5]]

Solve[iomatrix[c].stb[5] == stb[5]*a,Prepend[vec[c,10],a]]

The solution is

(iomatrix[c]/.%[[1]])

%//MatrixForm

Proposition. The conformal Euclidean group is generated by the translations with the Lie algebra [iobasis[7],iobasis[8],iobasis[9]], the dilations generated by  iobasis[10],  and the rotations generated by  the Lie algebra o(3) = [iobasis[4],iobasis[5],iobasis[6]], composed with reflections at planes.

Remark. More exactly, we found the isotropy subgroup of the Euclidean space under the action of the Möbius group. In deifferential geometry it is proved that this group coincides with the group of all conformal bijections of the Euclidean space.

6.4.2. The isometry Groups of the 3-Sphere and the Hyperbolic Space

Now we consider  the psudo-orthogonal vector space with respectto apseudo-orthonormal basis. By the theorem of Liouville, the conformal group of the 3-sphere is the Möbius group; it is larger  than its isometry group. The isometry group of the 3-sphere consists of those conformal maps which preserve the scalar product on the 3-sphere in the vector space orthogonal to the timelike basis vector stb[1] (in pseudo-orthonormal coordinates). It is the orthogonal group O(4) contained as the isotropy group of the stb[1]-axis.

Analogously, the isotropy group of the spacelike axis spanned by stb[5] is the pseudo-Euclidean group O(1,3) acting as a subgroup of O(1,4) on  the orthogonal complement. The model of the hyperbolic 3-space  is the hyper-hyperboloid defined by

pssp[vec[x],vec[x]] == -r^2, pssp[vec[x], stb[5]]== 0

see Section 2.6.  The pseudo-orthogonal scalar product induces on this hypersurface a Riemannian metric of constant sectional curvature making it to a model of the hyperbolic space.  The isometry group of the hyperbolic space is the subgroup O(1,3)⊂ O(1,4).

6.5. A Moving Frame on the Sphere Manifold: pstg5frame

For future applications we construct a moving pseudo-orthonormal tangentially adapted 5-frame of the hypersurface (H), the model of the hyperbolic space,  using its parameter representation spunit. Tangentially adapted means tha the vectors v1,v2,v3,v4 of the frame belong to the tangential space of H at the vector v5 ∈ H.

pssp[vec[x],vec[x]] == 1

-((x[1])^2)+((x[2])^2)+((x[3])^2)+((x[4])^2)+((x[5])^2)==1                        (H)

?spunit

spunit[s,t,u,v]

Simplify[pssp[%,%]]

We calculate the partial derivatives of this parameter representation of H. Simplifying these vectors we defined in mspher.m the moving orthonormal tangentially adapted  5-frame of the spacelike unitsphere in the pseudo-Euclidean 5-space,  analogous to tg4frame:

?pstg5frame

?normalize

pstg1[s_,t_,u_,v_] := normalize[D[spunit[x, t,u,v],x]/.x -> s]

pstg1[s,t,u,v]

Simplify[%,{s,t,u,v}∈ Reals]

psfr2[s_,t_,u_,v_] := {0,-Sin[s], Cos[s], 0,0}

pstg2[s_,t_,u_,v_] := normalize[D[spunit[s, x,u,v],x]/.x -> t]

pstg2[s,t,u,v]

psfr3[s_,t_,u_,v_] := {0, -Cos[s]*Sin[t],-Sin[s]*Sin[t], Cos[t],0}

pstg3[s_,t_,u_,v_] := normalize[D[spunit[s, t,x,v],x]/.x -> u]

pstg3[s,t,u,v]

psfr4[s_,t_,u_,v_] := {0,-Cos[s] *Cos[t]*Sin[u],-Cos[t]*Sin[s]*Sin[u],- Sin[t]* Sin[u],Cos[u]}

pstg4[s_,t_,u_,v_] := normalize[D[spunit[s, t,u,x],x]/.x -> v]

pstg4[s,t,u,v]

psfr1[s_,t_,u_,v_] :={Cosh[v],Cos[s] Cos[t] Cos[u] Sinh[v],Cos[t] Cos[u] Sin[s] Sinh[v],Cos[u] Sin[t] Sinh[v],Sin[u] Sinh[v]}

psfr1[s,t,u,v]

Simplify[pssp[%,%]]

psfr5[s_,t_,u_,v_] :=spunit[s,t,u,v]

Now we build the matrix of the obtained vectors psfri, i = 1,...,5:

ps5frame[s_,t_,u_,v_] :={psfr1[s,t,u,v],psfr2[s,t,u,v],psfr3[s,t,u,v],psfr4[s,t,u,v],psfr5[s,t,u,v]}

ps5frame[s,t,u,v]

Indeed, this matrix coincides with the module pstg5frame contained in mspher.m:

%== pstg5frame[s,t,u,v]

The matrix is pseudo-orthonormal:

Table[Simplify[pssp[ps5frame[s,t,u,v][[i]],ps5frame[s,t,u,v][[j]]]],{i,5},{j,5}]//MatrixForm

Simplify[Det[ pstg5frame[s,t,u,v]]]

We conclude that changing the sign of  spunit[s,t,u,v] changes the orientation of the orthogonal pseudo-Euclidean subspace, if we consider the pseudo-Euclidean 5-space as oriented.

The isotropic directions in the tangential space spanned by (pstg5frame[[i]], i = 1,...,4) are represented by

isotr[s_,t_,u_,v_][x_,y_] := pstg5frame[s, t, u, v][[1]] +
pstg5frame[s, t, u, v][[2]]Cos[x] Cos[y] + 
pstg5frame[s, t, u, v][[3]] Sin[x] Cos[y] +
pstg5frame[s, t, u, v][[4]] Sin[y]

iso = Simplify[isotr[s,t,u,v][x,y]]

FullSimplify[pssp[iso,iso]]

FullSimplify[pssp[iso,spunit[s,t,u,v]]]

References

[OS3] A. L. Onishchik,  R. Sulanke. Projective and Cayley-Klein Geometries. Springer-Verlag. Berlin,Heidelberg. 2006
(German version on my homepage).

[Spheres] R. Sulanke. Spheres. A collection of Mathematica notebooks and packages. 2004.
Download   here.  An older version is available from Wolfram’s Library Archive. 2000.

[hyp2D] R. Sulanke. Non-Euclidean Geometry. noeuklid2D.nb. Mathematica notebook. 2005

Homepage

http://www2.mathematik.hu-berlin.de/~sulanke