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