home *** CD-ROM | disk | FTP | other *** search
/ VRML Tools for 3D Cyberspace / VRML_Tools_For_3D_Cyberspace.iso / amber / include / quat.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-01  |  2.5 KB  |  108 lines

  1. //**********************************************************************
  2. //  DIVE Laboratories, Inc.
  3. //  Copyright(c) 1995
  4. //  All rights reserved.
  5. //  FILE:   QUAT.HPP
  6. //
  7. //  DESCRIPTION
  8. //  This file provides the function prototypes for the 
  9. //  quatClass
  10. //
  11. //  Author: M. Doucet
  12. //
  13. //  Modification History:
  14. //  3/22/95    Created
  15. //
  16. //**********************************************************************
  17. #ifndef QUAT_HPP
  18. #define QUAT_HPP
  19.  
  20. #include "vector.hpp"
  21.  
  22. class quatClass {
  23.  
  24. private:
  25.  
  26.     // Private Data
  27.     static vectorClass xAxis, yAxis, zAxis; // World Axes
  28.  
  29.     vectorClass v;                                     // Vector Component
  30.     Vres      s;                                     // Twist Component
  31.  
  32. public:
  33.  
  34.     // Initialization of static data structures
  35.     static void    initStatics();
  36.  
  37.     // Quaternion Assignment
  38.     void        set(V4 vals);
  39.  
  40.     // Quaternion Retrieval
  41.     void        get(V4 vals);
  42.  
  43.     // Quaternion Magnitude
  44.     Vres   mag();
  45.  
  46.     // Quaternion Initialization
  47.     void     init();
  48.     void     init(int axis, Vres rads);
  49.     void     init(vectorClass &axis, Vres rads);
  50.     void     init(vectorClass *axis, Vres rads);
  51.  
  52.     // Quaternion Multiplication
  53.     void     mult(quatClass &other, quatClass *out);
  54.     void     mult(quatClass *other, quatClass *out);
  55.  
  56.     // Quaternion Dot Product
  57.     Vres   dot(quatClass &other);
  58.     Vres   dot(quatClass *other);
  59.  
  60.     // Quaternion Addition
  61.     void     add(quatClass &other, quatClass *out);
  62.     void     add(quatClass *other, quatClass *out);
  63.  
  64.     // Quaternion Rotation
  65.     void     rotate(int axis, Vres rads);
  66.     void     rotate(vectorClass &axis, Vres rads);
  67.     void     rotate(vectorClass *axis, Vres rads);
  68.  
  69.     // Quaternion Inverse
  70.     void     inverse();
  71.     void     inverse(quatClass &out);
  72.     void     inverse(quatClass *out);
  73.  
  74.     // Quaternion Interpolation
  75.     void     interpolateTo(Vres t, quatClass *other, quatClass *out);
  76.     void     interpolateTo(Vres t, quatClass &other, quatClass *out);
  77.  
  78.     // Equivalent euler x,y,z rotations
  79.     void getEuler(V3 eulerAngle);
  80.  
  81.     // Access Operator
  82.     Vres& operator[](int index);     
  83.  
  84.     // Assignment Operators
  85.     void    operator=(quatClass &other);     
  86.     void    operator=(quatClass *other);     
  87.  
  88.     // Multiplication Operators
  89.     void    operator*=(quatClass &other);     
  90.     void    operator*=(quatClass *other);     
  91.     void    operator*=(Vres scalar);     
  92.  
  93.     // Equality Operators
  94.    int     operator==(quatClass &other);
  95.    int     operator==(quatClass *other);
  96.    int     operator!=(quatClass &other);
  97.    int     operator!=(quatClass *other);
  98.  
  99.     // Constructor
  100.     quatClass();
  101.  
  102.     // Destructor
  103.     ~quatClass();
  104.  
  105. };
  106.  
  107. #endif
  108.