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 |