.TH HYPINTRO 1 "12 January 1993" hypintro "Mathematica package"
.SH NAME
hypintro - "An introduction to the hyperbolic geometry package Hyperbolic.m"
.SH 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 wrapping
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 coordinates. 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 product.) 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 representations 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 hyperbolic 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 Minkowski 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 coordinate.
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).
.SH SEE ALSO
Manual entry "hyperbolic" for a complete listing of functions
defined in the package "Hyperbolic.m".