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