Zephyr Scientific Library (zscilib)
|
API header file for quaternions in zscilib. More...
Go to the source code of this file.
Data Structures | |
struct | zsl_quat |
Represents a quaternion, a 4D structure capable of representing 3D rigid body orientations. More... | |
Enumerations | |
enum | zsl_quat_type { ZSL_QUAT_TYPE_EMPTY = 0, ZSL_QUAT_TYPE_IDENTITY = 1 } |
Represents various 'types' of quaternions that can be initialised with the zsl_quat_init function. More... | |
Functions | |
void | zsl_quat_init (struct zsl_quat *q, enum zsl_quat_type type) |
Convenience function to set the supplied quaternion into a known state. More... | |
zsl_real_t | zsl_quat_magn (struct zsl_quat *q) |
Calculates the magnitude (or length) of the quaternion, a scalar value equal to the square root of the sum of the squares of the four components. More... | |
int | zsl_quat_to_unit (struct zsl_quat *q, struct zsl_quat *qn) |
Normalises the input to be a "unit" or "rotation" quaternion, AKA a versor, such that the square root of the sum of the squares of the four componeents, sqrt(r^2+i^2+j^2+k^2), equals 1.0. This normalisation process is what allows a quaternion to represent an rotation. More... | |
int | zsl_quat_to_unit_d (struct zsl_quat *q) |
Normalises to unit quaternion (destructive). More... | |
bool | zsl_quat_is_unit (struct zsl_quat *q) |
Verifies that this is a "unit" quaternion, meaning that it has a magnitude of 1, where sqrt(r^2+i^2+j^2+k^2) = 1.0. More... | |
int | zsl_quat_scale (struct zsl_quat *q, zsl_real_t s, struct zsl_quat *qs) |
Multiples each element in the quaternion by a scalar value. More... | |
int | zsl_quat_scale_d (struct zsl_quat *q, zsl_real_t s) |
Multiples each element in the quaternion by a scalar value (destructive). More... | |
int | zsl_quat_mult (struct zsl_quat *qa, struct zsl_quat *qb, struct zsl_quat *qm) |
Multiples the two supplied unit quaternions (a * b) together, and stores the results in qm. More... | |
int | zsl_quat_exp (struct zsl_quat *q, struct zsl_quat *qe) |
Calculates the exponential of a unit quaternion. More... | |
int | zsl_quat_log (struct zsl_quat *q, struct zsl_quat *ql) |
Calculates the natural logarithm of a unit quaternion. More... | |
int | zsl_quat_pow (struct zsl_quat *q, zsl_real_t pow, struct zsl_quat *qout) |
Multiples the supplied unit quaternions to the specified exponent, and stores the results in qout (where qout = qa^pow). More... | |
int | zsl_quat_conj (struct zsl_quat *q, struct zsl_quat *qc) |
Calculates the complex conjugate of 'q'. More... | |
int | zsl_quat_inv (struct zsl_quat *q, struct zsl_quat *qi) |
Calculates the multiplicative inverse of unit quaternion 'q'. More... | |
int | zsl_quat_inv_d (struct zsl_quat *q) |
Inverts unit quaternion 'q' (destructive). More... | |
int | zsl_quat_diff (struct zsl_quat *qa, struct zsl_quat *qb, struct zsl_quat *qd) |
Calculates the rotation (qd) from qa to qb using the multiplicative inverse, such that qb = qa * qd. More... | |
int | zsl_quat_rot (struct zsl_quat *qa, struct zsl_quat *qb, struct zsl_quat *qr) |
Rotates the pure quaternion qb using the quaternion qa. More... | |
int | zsl_quat_lerp (struct zsl_quat *qa, struct zsl_quat *qb, zsl_real_t t, struct zsl_quat *qi) |
Linear interpolation (LERP). More... | |
int | zsl_quat_slerp (struct zsl_quat *qa, struct zsl_quat *qb, zsl_real_t t, struct zsl_quat *qi) |
Spherical linear interpolation (SLERP). More... | |
int | zsl_quat_from_ang_vel (struct zsl_vec *w, struct zsl_quat *qin, zsl_real_t t, struct zsl_quat *qout) |
Updates an orientation quaternion with new information in form of angular velocity and time elapsed. More... | |
int | zsl_quat_from_ang_mom (struct zsl_vec *l, struct zsl_quat *qin, zsl_real_t *i, zsl_real_t t, struct zsl_quat *qout) |
Updates an orientation quaternion with new information in form of angular momentum, moment of inertia and time elapsed. More... | |
int | zsl_quat_to_euler (struct zsl_quat *q, struct zsl_euler *e) |
Converts a unit quaternion to it's equivalent Euler angle. Euler values expressed in radians. More... | |
int | zsl_quat_from_euler (struct zsl_euler *e, struct zsl_quat *q) |
Converts a Euler angle to a unit quaternion. Euler values expressed in radians. More... | |
int | zsl_quat_to_rot_mtx (struct zsl_quat *q, struct zsl_mtx *m) |
Converts a unit quaternion to it's equivalent rotation matrix. More... | |
int | zsl_quat_from_rot_mtx (struct zsl_mtx *m, struct zsl_quat *q) |
Converts a rotation matrix to it's equivalent unit quaternion. More... | |
int | zsl_quat_to_axis_angle (struct zsl_quat *q, struct zsl_vec *a, zsl_real_t *b) |
Converts a unit quaternion to it's axis-angle rotation equivalent. More... | |
int | zsl_quat_from_axis_angle (struct zsl_vec *a, zsl_real_t *b, struct zsl_quat *q) |
Converts axis-angle rotation to its unit quaternion equivalent. More... | |
int | zsl_quat_print (struct zsl_quat *q) |
Print the supplied quaternion using printf in a human-readable manner. More... | |
API header file for quaternions in zscilib.
This file contains the zscilib quaternion APIs
Definition in file quaternions.h.