Quaternion Math Module Documentation
This module provides functions to work in the quaternion representation of rotations, as the double cover of the special orthogonal group SO(3).
Functions:
| Name | Description |
|---|---|
left_qmatrix |
Compute the left quaternion product matrix for a quaternion. |
right_qmatrix |
Compute the right quaternion product matrix for a quaternion. |
quat_conj |
Compute the conjugate of a quaternion. |
quat_inv |
Compute the inverse of a quaternion. |
quat_normalize |
Normalize a quaternion to unit norm. |
quat_positive_scalar |
Ensure a quaternion has a positive scalar component. |
left_qmatrix(quat)
Compute the left quaternion product matrix for a given quaternion, such that q * p = L(q) * p. For a quaternion q = (x, y, z, w) under the JPL convention, the left quaternion product matrix is defined as:
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
quat
|
Union[ndarray, Iterable[float]]
|
The quaternion as a numpy array or as a list in the order (x, y, z, w). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
left_quat_product_matrix |
ndarray
|
The left quaternion product matrix as a (4, 4) numpy array. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the input quaternion is not a 4-element numpy array or list. |
ValueError
|
If the input quaternion is not normalized. |
TypeError
|
If the input quaternion is not a numpy array or list. |
Source code in navlib/math/quaternion.py
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | |
quat_conj(q)
Compute the conjugate of a quaternion under the JPL convention (x, y, z, w).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
q
|
Union[ndarray, Iterable[float]]
|
Input quaternion as a list or numpy array (x, y, z, w). |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: The conjugated quaternion. |
Source code in navlib/math/quaternion.py
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | |
quat_inv(q)
Compute the inverse of a quaternion under the JPL convention (x, y, z, w).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
q
|
Union[ndarray, Iterable[float]]
|
Input quaternion as a list or numpy array (x, y, z, w). |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: The inverted quaternion. |
Source code in navlib/math/quaternion.py
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | |
quat_normalize(q)
Normalize a quaternion to unit norm under the JPL convention (x, y, z, w).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
q
|
Union[ndarray, Iterable[float]]
|
Input quaternion as a list or numpy array (x, y, z, w). |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: The normalized quaternion. |
Source code in navlib/math/quaternion.py
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 | |
quat_positive_scalar(q)
Ensure that a quaternion has a positive scalar component (w > 0), flipping its sign if needed. This removes ambiguity from double coverage.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
q
|
Union[ndarray, Iterable[float]]
|
Input quaternion (x, y, z, w). |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: Quaternion with positive scalar part. |
Source code in navlib/math/quaternion.py
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | |
right_qmatrix(quat)
Compute the right quaternion product matrix for a given quaternion, such that q * p = R(p) * q For a quaternion q = (x, y, z, w) under the JPL convention, the right quaternion product matrix is defined as:
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
quat
|
Union[ndarray, Iterable[float]]
|
The quaternion as a numpy array or as a list in the order (x, y, z, w). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
right_quat_product_matrix |
ndarray
|
The right quaternion product matrix as a (4, 4) numpy array. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the input quaternion is not a 4-element numpy array or list. |
ValueError
|
If the input quaternion is not normalized. |
TypeError
|
If the input quaternion is not a numpy array or list. |
Source code in navlib/math/quaternion.py
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | |