Isometry

Isometry

Isometry of the geometry.

Constructor

new Isometry()

Source:

Constructor. Since the constructor is different for each geometry, it delegates the task to the method build (that can be overwritten easily unlike the constructor). Another way to do would be to implement for each geometry a new class that inherit from Isometry. How ever the drawback is that the class Position would need also to be extended, so that it manipulate the right classes.

Methods

(abstract) build()

Source:

Fake constructor If no argument is passed, return the identity.

build()

Source:

An Isometry in the universal cover X of SL(2,R) is made of two components :

  • A matrix, representing the induced isometry of SL(2,R)
  • A number, corresponding to the fiber component of the image of the origin These two data suffices to completely characterize the isometry. It has the advantage that the is compatible with our representation of point X (projection in SL(2,R) + fiber component).

(abstract) clone() → {Isometry}

Source:

Return a new copy of the current isometry.

Returns:

The clone of the current isometry

Type
Isometry

(abstract) copy(isom) → {Isometry}

Source:

Set the current isometry with the given isometry

Parameters:
Name Type Description
isom Isometry

the isometry to copy

Returns:

The current isometry

Type
Isometry

diffExpMap(m) → {Isometry}

Source:
To Do:
  • turn it into an abstract method, when implemented in all geometries

Take as input a Matrix4 m, seen as an isometry of the tangent space at the origin (in the reference frame) and set the current isometry so that its differential is dexp * dm, where

  • dexp is the differential of the exponential map
  • dm is the differential of m
Parameters:
Name Type Description
m Matrix4

an isometry of the tangent space

Returns:

The current isometry

Type
Isometry

doesFlip() → {boolean}

Source:

The isometry group of X maps onto Z/2, seen as the group flipping the fiber. Returns true is the current isometry flips the fiber and false otherwise.

Returns:
Type
boolean

(abstract) equals(isom) → {boolean}

Source:

Check if the current isometry and isom are the same. Mainly for debugging purposes.

Parameters:
Name Type Description
isom
Returns:

true if the isometries are equal, false otherwise

Type
boolean

(abstract) identity() → {Isometry}

Source:

Set the current isometry to the identity.

Returns:

The current isometry

Type
Isometry

invert() → {Isometry}

Source:

Invert the current isometry

Returns:

The current isometry

Type
Isometry

(abstract) makeInvTranslation(point) → {Isometry}

Source:

Return a preferred isometry sending the given point to the origin (typically in Nil, Sol, SL2, etc).

Parameters:
Name Type Description
point Point

the point that is moved back to the orign

Returns:

The current isometry

Type
Isometry

makeRotationX(theta)

Source:

Set the current isometry with a rotation around the x-axis

Parameters:
Name Type Description
theta number

the rotation angle

makeRotationY(theta)

Source:

Set the current isometry with a rotation around the y-axis

Parameters:
Name Type Description
theta number

the rotation angle

makeRotationZ(theta)

Source:

Set the current isometry with a rotation around the z-axis

Parameters:
Name Type Description
theta number

the rotation angle

(abstract) makeTranslation(point) → {Isometry}

Source:

Return a preferred isometry sending the origin to the given point (typically in Nil, Sol, SL2, etc).

Parameters:
Name Type Description
point Point

the target point

Returns:

The current isometry

Type
Isometry

(abstract) makeTranslationFromDir(vec) → {Isometry}

Source:

Return a preferred isometry sending the origin to the image of v by the exponential map.

Parameters:
Name Type Description
vec Vector

the vector in the tangent space

Returns:

The current isometry

Type
Isometry

makeTranslationFromDir(v) → {Isometry}

Source:

Return the element in (the universal cover of) SL(2,R) sending the origin to the image of v by the exponential map

Parameters:
Name Type Description
v Vector

the vector

Returns:
  • the corresponding isometry
Type
Isometry

makeTranslationFromUnitDir(u, t) → {Isometry}

Source:

Return the element in (the universal cover of) SL(2,R) sending the origin to the image of t*u by the exponential map

Parameters:
Name Type Description
u Vector

a unit tangent vector

t Number

a scale/time parameter

Returns:
  • the corresponding isometry
Type
Isometry

(abstract) multiply(isom) → {Isometry}

Source:

Multiply the current isometry by isom on the left, i.e. replace this by this * isom.

Parameters:
Name Type Description
isom Isometry
Returns:

The current isometry

Type
Isometry

multiplyIsometries(isom1, isom2) → {Isometry}

Source:

Replace the current isometry with the product isom1 * isom2

Parameters:
Name Type Description
isom1 Isometry

the first isometry

isom2 Isometry

the second isometry

Returns:
  • the product
Type
Isometry

(abstract) premultiply(isom) → {Isometry}

Source:

Multiply the current isometry by isom on the right, i.e. replace this by isom * this.

Parameters:
Name Type Description
isom Isometry
Returns:

The current isometry

Type
Isometry

(abstract) reduceError() → {Isometry}

Source:

Reduce the eventual numerical errors of the current isometry (typically Gram-Schmidt).

Returns:

The current isometry

Type
Isometry