#9439: hyperbolic geometry
-------------------------------------------------+-------------------------
       Reporter:  vdelecroix                     |        Owner:
           Type:  enhancement                    |  vdelecroix
       Priority:  major                          |       Status:  new
      Component:  geometry                       |    Milestone:  sage-5.12
       Keywords:  hyperbolic geometry, Poincare  |   Resolution:
  disc, upper half plane, sd35                   |    Merged in:
        Authors:  Vincent Delecroix, Martin      |    Reviewers:  Johan
  Raum                                           |  Bosman
Report Upstream:  N/A                            |  Work issues:
         Branch:                                 |       Commit:
   Dependencies:                                 |     Stopgaps:
-------------------------------------------------+-------------------------

Comment (by glaun):

 I just attached a new version.  This one allows things like UHP.point(0)
 or KM.point((1/2, 1/2)), and similarly UHP.geodesic([start, finish]), and
 UHP.isometry(some_matrix).

 The class structure is somewhat complicated, but it's designed to make it
 easy to implement new models of 2D and 3D geometry.  Here's how it works:
 * The hyperbolic_model module contains data about each individual model,
 such as its name, the name of its isometry group, and dictionaries of maps
 to convert points and isometries to other models and so on.
 * the hyperbolic_point, hyperbolic_bdry_point, hyperbolic_geodesic, and
 hyperbolic_isometry modules all do what they sound like.  The methods in
 these modules are meant to be as general and abstract as possible.
 Ideally they should barely have to be touched to implement new models of
 hyperbolic space.
 * hyperbolic_methods implements any methods that involve doing
 computations with actual numbers.  These methods have their own module
 because they are more likely to change if it turns out some computation is
 not efficient.  Also any model of hyperbolic geometry can choose to do
 computations in another model and convert the results.  In the current
 patch, every model does its computations in the upper half plane and then
 converts back to the desired model.
 * hyperbolic_factory and model_factory are just factory patterns that make
 the whole abstract structure work.
 * finally, hyperbolic_interface is the module that contains the objects
 UHP, HM, KM, and PD that allow operations like UHP.point(1 + I).  These
 are just more pleasant user interfaces to methods in other classes.

 To implement another 2D model, one mainly has to put the model information
 in hyperbolic_model and write down maps to all of the other models.  To
 implement a 3D model, one also has to implement hyperbolic_methods for at
 least one model (say the upper half space model).  In both cases there is
 a tiny amount of book keeping that must also be done in updating the
 factory and other modules with one or two lines of code.

--
Ticket URL: <http://trac.sagemath.org/ticket/9439#comment:30>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to