HYPINTRO(1) Mathematica package HYPINTRO(1)
NAME
hypintro - "An introduction to the hyperbolic geometry pack-
age Hyperbolic.m"
DESCRIPTION
If you have a NeXT workstation have a look at the notebook
"HyperbolicDemo.ma" first. Other users should look at the
session in "HyperbolicDemo.txt".
MODELS:
The following models of hyperbolic space are supported in
arbitrary dimension: Projective (or Klein), PoincareBall,
UpperHalfSpace, Minkowski and Hemisphere.
POINTS AND VECTORS:
The user can specify a point in any of these models by wrap-
ping the appropriate head around a coordinate vector. (Eg.
Projective[{0,0}] is the coordinate of the point at the
center of the Projective model for hyperbolic 2-space.) The
user can also specify a tangent vector "v" at point "x" with
the notation "Model[Vector[x, v]]" where "Model" is any of
the supported models.
Points in Minkowski space are given in homogeneous coordi-
nates. Thus Minkowski[{0,0,1}] and Minkowski[{0,0,2}]
represent the same point in hyperbolic 2-space. However most
functions assume that points given in the Minkowski model
have been normalized, ie. satisfy Minkowski[x].Minkowski[x]
== -1. (The "." here evaluates as the Minkowski dot pro-
duct.) Normalize[Minkowski[x]] returns a normalized
representative for its argument.
Minkowski[Vector[x, v]] should always satisfy
Minkowski[x].Minkowski[x] == -1 and
Minkowski[x].Minkowski[v] == 0. No function is provided to
put vectors into this form.
STANDARD MAPPINGS (OR CONVERSIONS):
The package provides standard mappings between the different
models or, equally, conversions between different represen-
tations of points. Thus Convert[PoincareBall[{.5,.5}], Model
-> Projective] will apply a standard mapping to map the
given point from the Poincare ball model to the projective
model giving the answer Projective[{0.666667, 0.666667}].
Vectors can similarly be mapped from model to model by use
of the "Convert" function.
DISTANCES, LENGTHS AND ANGLES:
Functions Distance, VectorLength and Angle are provided for
calculating the hyperbolic distance between two points, the
length of a vector and the angle between two vectors based
at the same point respectively.
TRANSFORMATION GEOMETRY:
A tangent vector at a point determines a directed geodesic
through that point parametrized with a certain velocity.
Drag[Model[Vector[x, v]]] gives the vector obtained by
parallel transport of Vector[x, v] along the geodesic it
determines, by a distance equal to the length of the vector.
A frame consists of a point and orthonormal basis for the
tangent space at the point. Two frames determine a hyper-
bolic isometry taking one to the other. Given a vector it is
possible to extend it to a frame at the basepoint.
At the moment frames are supported only in the Minkowski
model. A frame in hyperbolic n-1 space is represented by an
expression of the form Minkowski[Frame[{x1, ... ,xn}]]
where x1, ... ,x(n-1) have Minkowski norm 1 and xn has Min-
kowski norm squared of -1. So xn represents the point at
which the frame is based.
CompleteFrame[...] constructs a frame from a vector and
Isometry[...] constructs an isometry of hyperbolic space
from two frames. The isometry is given by an orthogonal n by
n transformation matrix for Minkowski space.
GRAPHICS:
Graphics are available in 2 and 3D. Point, Text, Line and
(2D)Polygon primitives are supported. Pictures may be drawn
in the Projective, PoincareBall and UpperHalfSpace models.
To select which model is used to display graphics the user
must set the appropriate default option for Convert. Eg.
SetOptions[Convert, Model -> PoincareBall]. To display
graphics Show[...] is used in the normal way. (The Display
function, through which all graphics passes, is overloaded
appropriately when the package is first read.)
Where a graphics primitive would normally take a coordinate
vector it should instead be supplied with a hyperbolic coor-
dinate. Thus Line[{Minkowski[{0,0,1}],
Minkowski[{1,0,Sqrt[2]}]}] would be a legal primitive. There
is no need for the model(s) in which points are specified to
match the model in which graphics are rendered (via Convert
options).
SEE ALSO
Manual entry "hyperbolic" for a complete listing of func-
tions defined in the package "Hyperbolic.m".