quaternions
    
    
    
      quaternions,
      a MATLAB 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 information on this web page is 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,
      a MATLAB code which
      implements certain elementary functions for 
      double precision complex (C8) variables;
    
    
      
      complex_numbers_test,
      a MATLAB code which
      demonstrates some simple features involved in the use of
      complex numbers in MATLAB codeming.
    
    
      
      i4lib,
      a MATLAB code which
      contains many utility routines, using "I4" or "single precision integer"
      arithmetic.
    
    
      
      r8lib,
      a MATLAB 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 12 January 2021.