DYNAMICS C API
C-compatible interface to the DYNAMICS library
Loading...
Searching...
No Matches
Quaternion operations

Functions

void c_quaternion_from_array (const double x[4], c_quaternion *q)
 Construct a quaternion from four scalar components.
 
void c_quaternion_from_matrix (const double *x, int ldx, c_quaternion *q)
 Construct a quaternion from a rotation matrix.
 
void c_quaternion_from_angle_axis (double angle, const double axis[3], c_quaternion *q)
 Construct a quaternion from angle-axis data.
 
void c_quaternion_normalize (c_quaternion *q)
 Normalize a quaternion in place.
 
void c_quaternion_add (const c_quaternion *x, const c_quaternion *y, c_quaternion *q)
 Add two quaternions.
 
void c_quaternion_subtract (const c_quaternion *x, const c_quaternion *y, c_quaternion *q)
 Subtract two quaternions.
 
void c_quaternion_multiply (const c_quaternion *x, const c_quaternion *y, c_quaternion *q)
 Multiply two quaternions.
 
void c_quaternion_divide (const c_quaternion *x, const c_quaternion *y, c_quaternion *q)
 Divide two quaternions.
 
void c_quaternion_scale (double x, const c_quaternion *y, c_quaternion *q)
 Scale a quaternion.
 
void c_quaternion_conjugate (const c_quaternion *q, c_quaternion *qc)
 Compute a quaternion conjugate.
 
void c_quaternion_rotate (const c_quaternion *q, const double r[3], double rp[3])
 Rotate a vector using a quaternion.
 
double c_quaternion_abs (const c_quaternion *q)
 Compute the quaternion norm.
 
void c_quaternion_inverse (const c_quaternion *q, c_quaternion *qinv)
 Compute a quaternion inverse.
 
void c_quaternion_to_matrix (const c_quaternion *q, double *r, int ldr)
 Convert a quaternion to a rotation matrix.
 
void c_quaternion_to_angle_axis (const c_quaternion *q, double *angle, double axis[3])
 Convert a quaternion to angle-axis data.
 
void c_quaternion_exp (const c_quaternion *q, c_quaternion *rst)
 Compute the quaternion exponential.
 
void c_quaternion_log (const c_quaternion *q, c_quaternion *rst)
 Compute the quaternion logarithm.
 
void c_quaternion_pow (const c_quaternion *q, double exponent, c_quaternion *rst)
 Raise a quaternion to a real power.
 
double c_quaternion_dot_product (const c_quaternion *x, const c_quaternion *y)
 Compute the quaternion dot product.
 
void c_quaternion_to_roll_pitch_yaw (const c_quaternion *q, double *roll, double *pitch, double *yaw)
 Convert a quaternion to roll, pitch, and yaw angles.
 

Detailed Description

Function Documentation

◆ c_quaternion_from_array()

void c_quaternion_from_array ( const double  x[4],
c_quaternion *  q 
)

Construct a quaternion from four scalar components.

Parameters
xFour components in w,x,y,z order.
qOutput quaternion.

◆ c_quaternion_from_matrix()

void c_quaternion_from_matrix ( const double *  x,
int  ldx,
c_quaternion *  q 
)

Construct a quaternion from a rotation matrix.

Parameters
xRotation matrix.
ldxLeading dimension of x.
qOutput quaternion.

◆ c_quaternion_from_angle_axis()

void c_quaternion_from_angle_axis ( double  angle,
const double  axis[3],
c_quaternion *  q 
)

Construct a quaternion from angle-axis data.

Parameters
angleRotation angle in radians.
axisUnit rotation axis.
qOutput quaternion.

◆ c_quaternion_normalize()

void c_quaternion_normalize ( c_quaternion *  q)

Normalize a quaternion in place.

Parameters
qQuaternion updated in place.

◆ c_quaternion_add()

void c_quaternion_add ( const c_quaternion *  x,
const c_quaternion *  y,
c_quaternion *  q 
)

Add two quaternions.

Parameters
xFirst quaternion.
ySecond quaternion.
qOutput quaternion.

◆ c_quaternion_subtract()

void c_quaternion_subtract ( const c_quaternion *  x,
const c_quaternion *  y,
c_quaternion *  q 
)

Subtract two quaternions.

Parameters
xFirst quaternion.
ySecond quaternion.
qOutput quaternion.

◆ c_quaternion_multiply()

void c_quaternion_multiply ( const c_quaternion *  x,
const c_quaternion *  y,
c_quaternion *  q 
)

Multiply two quaternions.

Parameters
xFirst quaternion.
ySecond quaternion.
qOutput quaternion.

◆ c_quaternion_divide()

void c_quaternion_divide ( const c_quaternion *  x,
const c_quaternion *  y,
c_quaternion *  q 
)

Divide two quaternions.

Parameters
xNumerator quaternion.
yDenominator quaternion.
qOutput quaternion.

◆ c_quaternion_scale()

void c_quaternion_scale ( double  x,
const c_quaternion *  y,
c_quaternion *  q 
)

Scale a quaternion.

Parameters
xScale factor.
yInput quaternion.
qOutput quaternion.

◆ c_quaternion_conjugate()

void c_quaternion_conjugate ( const c_quaternion *  q,
c_quaternion *  qc 
)

Compute a quaternion conjugate.

Parameters
qInput quaternion.
qcOutput conjugate.

◆ c_quaternion_rotate()

void c_quaternion_rotate ( const c_quaternion *  q,
const double  r[3],
double  rp[3] 
)

Rotate a vector using a quaternion.

Parameters
qRotation quaternion.
rInput vector.
rpOutput rotated vector.

◆ c_quaternion_abs()

double c_quaternion_abs ( const c_quaternion *  q)

Compute the quaternion norm.

Parameters
qQuaternion.
Returns
Quaternion magnitude.

◆ c_quaternion_inverse()

void c_quaternion_inverse ( const c_quaternion *  q,
c_quaternion *  qinv 
)

Compute a quaternion inverse.

Parameters
qInput quaternion.
qinvOutput inverse.

◆ c_quaternion_to_matrix()

void c_quaternion_to_matrix ( const c_quaternion *  q,
double *  r,
int  ldr 
)

Convert a quaternion to a rotation matrix.

Parameters
qQuaternion.
rOutput matrix.
ldrLeading dimension of r.

◆ c_quaternion_to_angle_axis()

void c_quaternion_to_angle_axis ( const c_quaternion *  q,
double *  angle,
double  axis[3] 
)

Convert a quaternion to angle-axis data.

Parameters
qQuaternion.
angleOutput angle.
axisOutput axis.

◆ c_quaternion_exp()

void c_quaternion_exp ( const c_quaternion *  q,
c_quaternion *  rst 
)

Compute the quaternion exponential.

Parameters
qInput quaternion.
rstOutput quaternion.

◆ c_quaternion_log()

void c_quaternion_log ( const c_quaternion *  q,
c_quaternion *  rst 
)

Compute the quaternion logarithm.

Parameters
qInput quaternion.
rstOutput quaternion.

◆ c_quaternion_pow()

void c_quaternion_pow ( const c_quaternion *  q,
double  exponent,
c_quaternion *  rst 
)

Raise a quaternion to a real power.

Parameters
qInput quaternion.
exponentPower.
rstOutput quaternion.

◆ c_quaternion_dot_product()

double c_quaternion_dot_product ( const c_quaternion *  x,
const c_quaternion *  y 
)

Compute the quaternion dot product.

Parameters
xFirst quaternion.
ySecond quaternion.
Returns
Dot product.

◆ c_quaternion_to_roll_pitch_yaw()

void c_quaternion_to_roll_pitch_yaw ( const c_quaternion *  q,
double *  roll,
double *  pitch,
double *  yaw 
)

Convert a quaternion to roll, pitch, and yaw angles.

Parameters
qQuaternion.
rollOutput roll.
pitchOutput pitch.
yawOutput yaw.