quaternions
quaternions,
an Octave code which
carries out some simple arithmetic operations for quaternions.
Rotations in 3D can be represented in a number of ways, including
quaternions, a rotation matrix, and a combination of a rotation axis
and rotation angle. This library includes functions to convert
a rotation from one representation to another, and to apply a rotation
to a given vector.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the MIT license
Languages:
quaternions is available in
a C version and
a C++ version and
a Fortran90 version and
a MATLAB version and
an Octave version and
a Python version.
Related Data and Programs:
quaternions_test
c8lib,
an Octave code which
implements certain elementary functions for
double precision complex (C8) variables;
complex_numbers_test,
an Octave code which
demonstrates some simple features involved in the use of
complex numbers in MATLAB codeming.
i4lib,
an Octave code which
contains many utility routines, using "I4" or "single precision integer"
arithmetic.
r8lib,
an Octave code which
contains many utility routines, using "R8" or
"double precision real" arithmetic.
Reference:
-
Jack Kuipers,
Quaternions and Rotation Sequences,
Princeton, 1998,
ISBN: 0691102988,
LC: QA196.K85.
Source Code:
-
degrees_to_radians.m,
converts an angle in degrees to one in radians;
-
q8_conjugate.m,
conjugates a quaternion;
-
q8_exponentiate.m,
exponentiates a quaternion;
-
q8_inverse.m,
inverts a quaternion;
-
q8_multiply.m,
multiplies two quaternions;
-
q8_multiply2.m,
multiplies two quaternions using a matrix;
-
q8_norm.m,
computes the L2 norm of a quaternion;
-
q8_normal_01.m,
selects a normally distributed quaternion;
-
q8_transpose_print.m,
prints a quaterion "transposed", or as a row vector.
-
r8mat_print.m,
prints an R8MAT;
-
r8mat_print_some.m,
prints some of an R8MAT;
-
r8vec_print.m,
prints an R8VEC;
-
r8vec_uniform_01.m,
returns a unit pseudorandom R8VEC.
-
radians_to_degrees.m,
converts an angle in radians to one in degrees;
-
rotation_axis_vector.m,
rotates a vector about an axis vector in 3D;
-
rotation_axis2mat.m,
converts a rotation from axis to matrix format in 3D;
-
rotation_axis2quat.m,
converts a rotation from axis to quaternion format in 3D;
-
rotation_mat_vector.m,
applies a matrix rotation to a vector in 3D;
-
rotation_mat2axis.m,
converts a rotation from matrix to axis format in 3D;
-
rotation_mat2quat.m,
converts a rotation from matrix to quaternion format in 3D;
-
rotation_quat_vector.m,
applies a quaternion rotation to a vector in 3D;
-
rotation_quat2axis.m,
converts a rotation from quaternion to axis format in 3D;
-
rotation_quat2mat.m,
converts a rotation from quaternion to matrix format in 3D;
-
rotation_xyz.m,
rotates a point through theta radians around a given axis,
using quaternion multiplication;
Last revised on 06 May 2023.