ddg.geometry.moebius_models module

Möbius geometry module.

Contains model classes and functions for conversion between the models.

class ddg.geometry.moebius_models.ProjectiveModel(dimension)[source]

Bases: _Template

Projective model of Möbius geometry.

Model space

The Möbius quadric is the quadric with matrix diag([1,...,1, -1]), which can be thought of as the unit sphere.

Representation of objects

Spheres in this model are represented by quadrics which are intersections of the Möbius quadric with a subspace.

Parameters:
dimensionint
Attributes:
dimensionint
property absolute

The absolute quadric with matrix diag([1,...,1, -1]).

Returns:
ddg.geometry.Quadric
paraboloid()[source]

Corresponding paraboloid model of Möbius geometry.

from_paraboloid(object_)[source]

Alias for paraboloid_to_projective_and_back()

property euclidean_point
property euclidean_subspace
to_paraboloid(object_)[source]

Alias for paraboloid_to_projective_and_back()

euclidean()[source]

Corresponding projective model of Euclidean geometry.

from_euclidean(object_, embedded=False)[source]

Alias for euclidean_models.projective_to_moebius()

to_euclidean(object_, embedded=False)[source]

Alias for euclidean_models.moebius_to_projective()

property hyperbolic_point
property hyperbolic_subspace
hyperbolic()[source]

Corresponding projective model of hyperbolic geometry.

to_hyperbolic(object_, embedded=False)[source]

Alias for hyperbolic_models.hemisphere_to_projective()

from_hyperbolic(object_, embedded=False)[source]

Alias for hyperbolic_models.projective_to_hemisphere()

hyperbolic_poincare()[source]

Corresponding Poincare disk model of hyperbolic geometry.

to_hyperbolic_poincare(object_, embedded=False)[source]

Alias for hyperbolic_models.projective_to_poincare()

from_hyperbolic_poincare(object_, embedded=False)[source]

Alias for hyperbolic_models.poincare_to_projective()

hyperbolic_half_space()[source]

Corresponding Poincare disk model of hyperbolic geometry.

to_hyperbolic_half_space(object_, embedded=False)[source]

Alias for hyperbolic_models.hemisphere_to_half_space()

from_hyperbolic_half_space(object_, embedded=False)[source]

Alias for hyperbolic_models.half_space_to_hemisphere()

property elliptic_point
property elliptic_subspace
elliptic()[source]

Corresponding projective model of elliptic geometry.

from_elliptic(object_, embedded=False)[source]

Alias for elliptic_models.projective_to_moebius()

to_elliptic(object_, embedded=False)[source]

Alias for elliptic_models.moebius_to_projective()

lie()[source]

Corresponding projective model of Lie geometry.

from_lie(object_, embedded=False)[source]
to_lie(object_, embedded=False)[source]
property ambient_dimension
angle(s1, s2)

Angle between two Möbius spheres.

Parameters:
s1, s2ddg.geometry.Quadric

Möbius spheres.

Returns:
float
cayley_klein_distance(v, w)

Alias for self.absolute.cayley_klein_distance.

cayley_klein_sphere(center, radius, subspace=None, atol=None, rtol=None)

Create a Cayley-Klein sphere.

Parameters:
centerddg.geometry.Point or numpy.ndarray of shape (n+1,)
radiusfloat

Cayley-Klein radius

subspaceddg.geometry.Subspace or list of numpy.ndarray of shape (k,)
(default=None)
Returns:
ddg.geometry.spheres.CayleyKleinSphere
generalized_cayley_klein_sphere(center, radius, subspace=None, atol=None, rtol=None)

Create a generalized Cayley-Klein sphere.

Parameters:
centerddg.geometry.Point or numpy.ndarray of shape (n+1,)
radiusfloat

Generalized radius

subspaceddg.geometry.Subspace or list of numpy.ndarray of shape (k,)
(default=None)
Returns:
ddg.geometry.spheres.GeneralizedCayleyKleinSphere
inner_product(v, w)

Alias for self.absolute.inner_product.

pole_of_sphere(sphere)

Return pole corresponding to sphere.

Parameters:
sphereddg.geometry.Quadric
Returns:
ddg.geometry.Subspace
sphere_from_pole(subspace) Quadric

Get a Möbius sphere from its pole.

Returns intersection of Q and Q.polarize(subspace), where Q is the Möbius quadric.

Parameters:
subspaceddg.geometry.Subspace
Returns:
ddg.geometry.Quadric
class ddg.geometry.moebius_models.ParaboloidModel(dimension)[source]

Bases: _Template

Paraboloid model of Möbius geometry.

Model space

The Möbius quadric is the quadric with matrix:

I |
--+-----
  | 0 1
  | 1 0

Which can be thought of as a paraboloid.

Representation of objects

Spheres in this model are represented by quadrics which are intersections of the Möbius quadric with a subspace.

Parameters:
dimensionint
Attributes:
dimensionint
property absolute

The absolute quadric.

Returns the quadric with matrix

I |
--+-----
  | 0 1
  | 1 0
Returns:
ddg.geometry.Quadric
property ambient_dimension
angle(s1, s2)

Angle between two Möbius spheres.

Parameters:
s1, s2ddg.geometry.Quadric

Möbius spheres.

Returns:
float
cayley_klein_distance(v, w)

Alias for self.absolute.cayley_klein_distance.

cayley_klein_sphere(center, radius, subspace=None, atol=None, rtol=None)

Create a Cayley-Klein sphere.

Parameters:
centerddg.geometry.Point or numpy.ndarray of shape (n+1,)
radiusfloat

Cayley-Klein radius

subspaceddg.geometry.Subspace or list of numpy.ndarray of shape (k,)
(default=None)
Returns:
ddg.geometry.spheres.CayleyKleinSphere
generalized_cayley_klein_sphere(center, radius, subspace=None, atol=None, rtol=None)

Create a generalized Cayley-Klein sphere.

Parameters:
centerddg.geometry.Point or numpy.ndarray of shape (n+1,)
radiusfloat

Generalized radius

subspaceddg.geometry.Subspace or list of numpy.ndarray of shape (k,)
(default=None)
Returns:
ddg.geometry.spheres.GeneralizedCayleyKleinSphere
inner_product(v, w)

Alias for self.absolute.inner_product.

pole_of_sphere(sphere)

Return pole corresponding to sphere.

Parameters:
sphereddg.geometry.Quadric
Returns:
ddg.geometry.Subspace
sphere_from_pole(subspace) Quadric

Get a Möbius sphere from its pole.

Returns intersection of Q and Q.polarize(subspace), where Q is the Möbius quadric.

Parameters:
subspaceddg.geometry.Subspace
Returns:
ddg.geometry.Quadric
class ddg.geometry.moebius_models.EuclideanModel[source]

Bases: object

Euclidean model of Möbius geometry.

Model space

The model space is Euclidean space together with a single point at infinity, which we represent by float('inf').

Representation of objects

Möbius Spheres in this model are Euclidean spheres or subspaces (spheres with center at infinity).

ddg.geometry.moebius_models.euclidean_to_projective(object_, embedded=False)[source]

Convert from Euclidean model to projective model.

This function works by embedding into the equatorial plane, then projecting stereographically.

Parameters:
object_ddg.geometry.Subspace or ddg.geometry.spheres.SphereLike

Object in n-dimensional ambient space.

embeddedbool (default=False)

If False, object_ is embedded into the equatorial plane before projecting.

Returns:
ddg.geometry.Quadric

An intersection of the Möbius quadric with a subspace in (n+1)-dimensonal ambient space.

ddg.geometry.moebius_models.projective_to_euclidean(object_, embedded=False)[source]

Convert a Möbius sphere to a Euclidean sphere or subspace.

This function works by projecting stereographically to the equatorial plane, then computing coordinates.

Parameters:
object_ddg.geometry.Quadric

Intersection of Möbius quadric with a subspace, all in (n+1)-dim. ambient space.

embeddedbool (default=False)

Whether to return the object in the equatorial plane or in n-dim. ambient space.

Returns:
ddg.geometry.spheres.SphereLike or ddg.geometry.Subspace
ddg.geometry.moebius_models.paraboloid_to_projective_and_back(object_)[source]

Convert between projective and paraboloid models.

Transform an object with the transformation that takes the projective model quadric to the paraboloid model quadric. This transformation is an involution, i.e. applying it again is the same as undoing the transformation. The transformation is

I  |
---+---------------------
   | 1/sqrt(2)  1/sqrt(2)
   | 1/sqrt(2) -1/sqrt(2)

Where I is the identity matrix of the appropriate size.

Parameters:
object_Transformable
Returns:
object_type(object_)

Transformed object_.

Warning

This WILL mutate object_.