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()
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}
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)
Set the current isometry with a rotation around the x-axis
Parameters:
Name | Type | Description |
---|---|---|
theta |
number | the rotation angle |
makeRotationY(theta)
Set the current isometry with a rotation around the y-axis
Parameters:
Name | Type | Description |
---|---|---|
theta |
number | the rotation angle |
makeRotationZ(theta)
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}
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}
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}
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