## Quaternions.jl

A Julia module with quaternion and dual-quaternion functionality
Popularity
56 Stars
Updated Last
2 Years Ago
Started In
December 2013

# Quaternions.jl

A Julia module with quaternion, octonion and dual-quaternion functionality

Quaternions are best known for their suitability as representations of 3D rotational orientation. They can also be viewed as an extension of complex numbers.

Implemented functions are:

``````+-*/^
real
imag  (a vector)
conj
abs
abs2
exp
log
normalize
normalizea  (return normalized quaternion and absolute value as a pair)
angleaxis  (taken as an orientation, return the angle and axis (3 vector) as a tuple)
angle
axis
exp
log
sin
cos
sqrt
linpol  (interpolate between 2 normalized quaternions)
``````

Dual quaternions are an extension, combining quaternions with dual numbers. On top of just orientation, they can represent all rigid transformations.

There are two conjugation concepts here

``````conj  (quaternion conjugation)
dconj (dual conjugation)
``````

further implemented here:

``````Q0  (the 'real' quaternion)
Qe  ( the 'dual' part)
+-*/^
abs
abs2
normalize
normalizea
angleaxis
angle
axis
exp
log
sqrt
``````

Octonions form the logical next step on the Complex-Quaternion path. They play a role, for instance, in the mathematical foundation of String theory.

``````+-*/^
real
imag  (a vector)
conj
abs
abs2
exp
log
normalize
normalizea  (return normalized octonion and absolute value as a tuple)
exp
log
sqrt
``````