# sym.unit3 module#

class Unit3(rot3=None)[source]#

Bases: `object`

Autogenerated Python implementation of `symforce.geo.unit3.Unit3`.

Direction in R^3, represented as a `Rot3` that transforms [0, 0, 1] to the desired direction.

The storage is therefore a quaternion and the tangent space is 2 dimensional. Most operations are implemented using operations from `Rot3`.

Note: an alternative implementation could directly store a unit vector and define its boxplus manifold as described in Appendix B.2 of [Hertzberg 2013]. This can be done by finding the Householder reflector of x and use it to transform the exponential map of delta, which is a small perturbation in the tangent space (R^2). Namely:

```x.retract(delta) = x [+] delta = Rx * Exp(delta), where
Exp(delta) = [sinc(||delta||) * delta, cos(||delta||)], and
Rx = (I - 2 vv^T / (v^Tv))X, v = x - e_z != 0, X is a matrix negating 2nd vector component
= I                     , x = e_z
```

[Hertzberg 2013] Integrating Generic Sensor Fusion Algorithms with Sound State Representations through Encapsulation of Manifolds

Parameters:

rot3 (Rot3) –

data: List[float]#
static from_vector(a, epsilon)[source]#

Return a `Unit3` that points along the direction of vector `a`

`a` does not have to be a unit vector.

Parameters:
Return type:

Unit3

to_unit_vector()[source]#

This function was autogenerated from a symbolic function. Do not modify by hand.

Symbolic function: to_unit_vector

Args:

Outputs:

res: Matrix31

Return type:

ndarray

to_rotation()[source]#

This function was autogenerated from a symbolic function. Do not modify by hand.

Symbolic function: to_rotation

Args:

Outputs:

res: Rot3

Return type:

Rot3

static storage_dim()[source]#
Return type:

int

to_storage()[source]#
Return type:
classmethod from_storage(vec)[source]#
Parameters:

vec (Sequence[float]) –

Return type:

Unit3

classmethod identity()[source]#
Return type:

Unit3

inverse()[source]#
Return type:

Unit3

compose(b)[source]#
Parameters:

b (Unit3) –

Return type:

Unit3

between(b)[source]#
Parameters:

b (Unit3) –

Return type:

Unit3

static tangent_dim()[source]#
Return type:

int

classmethod from_tangent(vec, epsilon=1e-08)[source]#
Parameters:
Return type:

Unit3

to_tangent(epsilon=1e-08)[source]#
Parameters:

epsilon (float) –

Return type:

ndarray

retract(vec, epsilon=1e-08)[source]#
Parameters:
Return type:

Unit3

local_coordinates(b, epsilon=1e-08)[source]#
Parameters:
Return type:

ndarray

interpolate(b, alpha, epsilon=1e-08)[source]#
Parameters:
Return type:

Unit3