![]() |
amino
1.0-beta2
Lightweight Robot Utility Library
|
Low-level operations for SE(2), planar orientations and transformations. More...
Go to the source code of this file.
Macros | |
| #define | AA_TF_CMPLX(x, y) ((x) + _Complex_I * (y)) |
| Construct a complex number. | |
| #define | AA_TF_CMPLX_REAL(c) (creal(c)) |
| Extract the real part of a complex number. | |
| #define | AA_TF_CMPLX_IMAG(c) (cimag(c)) |
| Extract the imaginary part of a complex number. | |
| #define | AA_TF_VEC2(x, y) AA_TF_CMPLX(x, y) |
| Construct a 2D vector. | |
| #define | AA_TF_VEC2_X(v) AA_TF_CMPLX_REAL(v) |
| Extract the x-coordinate of a 2D vector. | |
| #define | AA_TF_VEC2_Y(v) AA_TF_CMPLX_IMAG(v) |
| Extract the y-coordinate of a 2D vector. | |
| #define | AA_TF_VEC2_LD(ptr) AA_TF_VEC2((ptr)[0], (ptr)[1]) |
| Load a 2D vector from memory. | |
| #define | AA_TF_VEC2_ST(v, ptr) |
| Store a 2D vector in memory. More... | |
| #define | AA_TF_ROTMATP_IDENT_INITIALIZER {1,0, 0,1}; |
| Initializer for planar rotation matrix identity element. | |
| #define | AA_TF_COTR_IDENT_INITIALIZER {1,0, 0,0 }; |
| Initializer for complex number and translation identity element. | |
| #define | AA_TF_TFMATP_IDENT_INITIALIZER {1,0, 0,1, 0,0}; |
| Initializer for planar transformation matrix identity element. | |
| #define | AA_TF_CMPLX_IDENT AA_TF_CMPLX(1, 0) |
| Constant for complex number identity element. | |
Functions | |
| AA_API aa_tf_cmplx | aa_tf_cpexp (double theta) |
| Exponential of a pure (zero real part) complex number. More... | |
| AA_API double | aa_tf_culn (const aa_tf_cmplx c) |
| Logarithm of a unit complex number. More... | |
| AA_API void | aa_tf_rotmatp_pexp (double angle, double R[AA_RESTRICT 4]) |
| Exponential of a pure (zero real part) complex number as a rotation matrix. | |
| AA_API double | aa_tf_rotmatp_uln (const double R[4]) |
| Logarithm of a planar rotation matrix. | |
| AA_API aa_tf_vec2 | aa_tf_crot (const aa_tf_cmplx c, const aa_tf_vec2 v) |
| Apply a planar rotation via complex number. | |
| AA_API aa_tf_vec2 | aa_tf_rotmatp_rot (const double R[AA_RESTRICT 4], const aa_tf_vec2 v) |
| Apply a planar rotation via rotation matrix. | |
| AA_API aa_tf_cmplx | aa_tf_cconj (const aa_tf_cmplx c) |
| Conjugate a complex number, giving the inverse rotation. | |
| AA_API void | aa_tf_rotmatp_inv2 (const double R[AA_RESTRICT 4], double Ri[AA_RESTRICT 4]) |
| Invert a planar rotation matrix. | |
| AA_API aa_tf_cmplx | aa_tf_cmul (const aa_tf_cmplx c1, const aa_tf_cmplx c2) |
| Multiply complex numbers. | |
| AA_API void | aa_tf_rotmatp_mul (const double R1[AA_RESTRICT 4], const double R2[AA_RESTRICT 4], double R12[AA_RESTRICT 4]) |
| Multiply planar rotation matrices. | |
| AA_API double | aa_tf_cmplx2angle (const aa_tf_cmplx c) |
| Convert a complex number to a rotation angle. | |
| AA_API void | aa_tf_cmplx2rotmatp (const aa_tf_cmplx c, double R[AA_RESTRICT 4]) |
| Convert a unit complex number to a rotation matrix. | |
| AA_API aa_tf_cmplx | aa_tf_angle2cmplx (double angle) |
| Convert a rotation angle to a complex number. | |
| AA_API void | aa_tf_angle2rotmatp (double angle, double R[AA_RESTRICT 4]) |
| Convert a rotation angle to a planar rotation matrix. | |
| AA_API aa_tf_cmplx | aa_tf_rotmatp2cmplx (const double R[AA_RESTRICT 4]) |
| Convert a planar rotation matrix to a complex number. | |
| AA_API double | aa_tf_rotmatp2angle (const double R[AA_RESTRICT 4]) |
| Convert a planar rotation matrix to a rotation angle. | |
| AA_API aa_tf_vec2 | aa_tf_cv_tf (const aa_tf_cmplx c, const aa_tf_vec2 v, const aa_tf_vec2 p) |
| Apply a planar transform represented with a complex number and translation vector. More... | |
| AA_API aa_tf_vec2 | aa_tf_tfmatp_tf (const double T[AA_RESTRICT 6], const aa_tf_vec2 p) |
| Apply a planar transform represented matrix. | |
| AA_API void | aa_tf_cv2tfmatp (const aa_tf_cmplx c, const aa_tf_vec2 v, double T[AA_RESTRICT 6]) |
| Convert a complex number and translation vector to a planar transformation matrix. | |
| AA_API void | aa_tf_tfmatp2cv (const double T[AA_RESTRICT 6], aa_tf_cmplx *c, aa_tf_vec2 *v) |
| Convert a planar transformation matrix to a complex number and translation vector. | |
| AA_API void | aa_tf_cv_mul (const aa_tf_cmplx c1, const aa_tf_vec2 v1, const aa_tf_cmplx c2, const aa_tf_vec2 v2, aa_tf_cmplx *c12, aa_tf_vec2 *v12) |
| Multiply (chain) two complex number and translation vector planar transforms. | |
| AA_API void | aa_tf_tfmatp_mul (const double T1[AA_RESTRICT 6], const double T2[AA_RESTRICT 6], double T12[AA_RESTRICT 6]) |
| Multiply (chain) two complex number and translation vector planar transforms. | |
| AA_API void | aa_tf_cv_inv (const aa_tf_cmplx c, const aa_tf_vec2 v, aa_tf_cmplx *ci, aa_tf_vec2 *vi) |
| Invert a complex number and translation vector planar transform. | |
| AA_API void | aa_tf_tfmatp_inv2 (const double T[AA_RESTRICT 6], double Ti[AA_RESTRICT 6]) |
| Invert a planar transformation matrix. | |
Low-level operations for SE(2), planar orientations and transformations.
Definition in file planar.h.
| #define AA_TF_VEC2_ST | ( | v, | |
| ptr | |||
| ) |
Store a 2D vector in memory.
| AA_API aa_tf_cmplx aa_tf_cpexp | ( | double | theta | ) |
Exponential of a pure (zero real part) complex number.
\[ e^{\theta \imath} = \cos \theta + \imath \sin \theta \]
| AA_API double aa_tf_culn | ( | const aa_tf_cmplx | c | ) |
Logarithm of a unit complex number.
\[ \ln\left(a + b\imath\right) = \operatorname{atan2}\left(b,a\right)\;, \quad \text{where } \sqrt{a^2+b^2} = 1 \]
| AA_API aa_tf_vec2 aa_tf_cv_tf | ( | const aa_tf_cmplx | c, |
| const aa_tf_vec2 | v, | ||
| const aa_tf_vec2 | p | ||
| ) |
Apply a planar transform represented with a complex number and translation vector.
| c | The rotation part of the transform |
| v | The translation part of the transform |
| p | The point to transform |