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 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,
      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.
    
    
      
      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.