Fixed Point Arithmetic  0
Fixed-point math library.
Modules | Data Structures | Macros | Functions
Quaternions

Modules

 Quaternion Errors
 This functions calculate the rotation needed to go from 'pos' (current position) to 'setp' (setpoint), in the same reference frame as 'pos'.
 

Data Structures

struct  quat
 Single precision quaternion. More...
 
struct  dquat
 Double precision quaternion. More...
 

Macros

#define UNIT_QUAT   {{FRAC_1_V}, VEC0}
 Literal for Unit quaternion. More...
 
#define UNIT_DQUAT   {{DFRAC_1_V}, VEC0}
 Literal for double precision Unit quaternion. More...
 

Functions

quat dq_to_q (dquat q)
 Truncate double precision quaternion to single precision. More...
 
frac q_xnormerror (quat q)
 Pseudo-error of the quaternion norm. More...
 
dquat q_scale_dq (quat q, frac f)
 Scale a quaternion by a fractional, return double precision quaternion. More...
 
quat q_scale (quat q, frac f)
 Scale a quaternion by a fractional, return simple precision quaternion. More...
 
quat q_conj (quat q)
 Conjugate quaternion. More...
 
quat q_mul (quat q, quat p)
 Quaternion multiplication, return value is simple precision. More...
 
dquat q_mul_s_dq (quat q, quat p, int f)
 Scaled Quaternion multiplication, return value is double precision. More...
 
dquat q_mul_dq (quat q, quat p)
 Quaternion multiplication, return value is double precision. More...
 
dquat dq_add (dquat q, dquat p)
 Quaternion addition (double precision). More...
 
quat q_add (quat q, quat p)
 Quaternion addition (single precision) More...
 
vec3 q_rot (quat q, vec3 v)
 Rotate 3D vector by quaternion. More...
 
quat q_xrenorm (quat q)
 Renormalize quaternion (single precision) More...
 
dquat dq_xrenorm (dquat q)
 Renormalize quaternion. More...
 
quat q_udecompose (quat q, vec_axis axis)
 Extract a component from a unit quaternion. More...
 

Detailed Description


Data Structure Documentation

◆ quat

struct quat

Single precision quaternion.

Components are represented by value of frac type

Definition at line 52 of file quaternion_types.h.

Data Fields
frac r

Scalar part

vec3 v

Vector part

◆ dquat

struct dquat

Double precision quaternion.

Components are represented by value of dfrac type.

Definition at line 61 of file quaternion_types.h.

Data Fields
dfrac r

Scalar part

dvec3 v

Vector part

Macro Definition Documentation

◆ UNIT_DQUAT

#define UNIT_DQUAT   {{DFRAC_1_V}, VEC0}

Literal for double precision Unit quaternion.

Definition at line 71 of file quaternion_types.h.

◆ UNIT_QUAT

#define UNIT_QUAT   {{FRAC_1_V}, VEC0}

Literal for Unit quaternion.

Definition at line 69 of file quaternion_types.h.

Function Documentation

◆ dq_add()

dquat dq_add ( dquat  q,
dquat  p 
)

Quaternion addition (double precision).

Definition at line 213 of file quaternion.h.

◆ dq_to_q()

quat dq_to_q ( dquat  q)

Truncate double precision quaternion to single precision.

Definition at line 51 of file quaternion.h.

◆ dq_xrenorm()

dquat dq_xrenorm ( dquat  q)

Renormalize quaternion.

See q_xrenorm.

Definition at line 283 of file quaternion.h.

◆ q_add()

quat q_add ( quat  q,
quat  p 
)

Quaternion addition (single precision)

Definition at line 230 of file quaternion.h.

◆ q_conj()

quat q_conj ( quat  q)

Conjugate quaternion.

Negates the vector component.

Definition at line 116 of file quaternion.h.

◆ q_mul()

quat q_mul ( quat  q,
quat  p 
)

Quaternion multiplication, return value is simple precision.

Definition at line 131 of file quaternion.h.

◆ q_mul_dq()

dquat q_mul_dq ( quat  q,
quat  p 
)

Quaternion multiplication, return value is double precision.

Returns
(Q x P)/f

Definition at line 187 of file quaternion.h.

◆ q_mul_s_dq()

dquat q_mul_s_dq ( quat  q,
quat  p,
int  f 
)

Scaled Quaternion multiplication, return value is double precision.

Returns
(Q x P)/f

Definition at line 159 of file quaternion.h.

◆ q_rot()

vec3 q_rot ( quat  q,
vec3  v 
)

Rotate 3D vector by quaternion.

Creates a purely imaginary quaternion V with vector part equal to v and returns the vector part of q*(V*q')'.

Definition at line 250 of file quaternion.h.

◆ q_scale()

quat q_scale ( quat  q,
frac  f 
)

Scale a quaternion by a fractional, return simple precision quaternion.

Definition at line 99 of file quaternion.h.

◆ q_scale_dq()

dquat q_scale_dq ( quat  q,
frac  f 
)

Scale a quaternion by a fractional, return double precision quaternion.

Definition at line 84 of file quaternion.h.

◆ q_udecompose()

quat q_udecompose ( quat  q,
vec_axis  axis 
)

Extract a component from a unit quaternion.

Parameters
qA unit quaternion.
axisAxis to return.
Returns
A quaternion whose vector part is null except on one axis.

Definition at line 302 of file quaternion.h.

◆ q_xnormerror()

frac q_xnormerror ( quat  q)

Pseudo-error of the quaternion norm.

Calculates an approximation to (1 - norm(q)) The approximation used is sqrt(x) = 0.5(x + 1) for x near 1

Definition at line 72 of file quaternion.h.

◆ q_xrenorm()

quat q_xrenorm ( quat  q)

Renormalize quaternion (single precision)

This function attempts to bring the norm of the quaternion closer to 1. It only works for quaternions whose norm is already close to 1. It uses and approximation for the norm (q_xnormerror).

Definition at line 268 of file quaternion.h.