home *** CD-ROM | disk | FTP | other *** search
- //**********************************************************************
- // DIVE Laboratories, Inc.
- // Copyright(c) 1995
- // All rights reserved.
- // FILE: QUAT.HPP
- //
- // DESCRIPTION
- // This file provides the function prototypes for the
- // quatClass
- //
- // Author: M. Doucet
- //
- // Modification History:
- // 3/22/95 Created
- //
- //**********************************************************************
- #ifndef QUAT_HPP
- #define QUAT_HPP
-
- #include "vector.hpp"
-
- class quatClass {
-
- private:
-
- // Private Data
- static vectorClass xAxis, yAxis, zAxis; // World Axes
-
- vectorClass v; // Vector Component
- Vres s; // Twist Component
-
- public:
-
- // Initialization of static data structures
- static void initStatics();
-
- // Quaternion Assignment
- void set(V4 vals);
-
- // Quaternion Retrieval
- void get(V4 vals);
-
- // Quaternion Magnitude
- Vres mag();
-
- // Quaternion Initialization
- void init();
- void init(int axis, Vres rads);
- void init(vectorClass &axis, Vres rads);
- void init(vectorClass *axis, Vres rads);
-
- // Quaternion Multiplication
- void mult(quatClass &other, quatClass *out);
- void mult(quatClass *other, quatClass *out);
-
- // Quaternion Dot Product
- Vres dot(quatClass &other);
- Vres dot(quatClass *other);
-
- // Quaternion Addition
- void add(quatClass &other, quatClass *out);
- void add(quatClass *other, quatClass *out);
-
- // Quaternion Rotation
- void rotate(int axis, Vres rads);
- void rotate(vectorClass &axis, Vres rads);
- void rotate(vectorClass *axis, Vres rads);
-
- // Quaternion Inverse
- void inverse();
- void inverse(quatClass &out);
- void inverse(quatClass *out);
-
- // Quaternion Interpolation
- void interpolateTo(Vres t, quatClass *other, quatClass *out);
- void interpolateTo(Vres t, quatClass &other, quatClass *out);
-
- // Equivalent euler x,y,z rotations
- void getEuler(V3 eulerAngle);
-
- // Access Operator
- Vres& operator[](int index);
-
- // Assignment Operators
- void operator=(quatClass &other);
- void operator=(quatClass *other);
-
- // Multiplication Operators
- void operator*=(quatClass &other);
- void operator*=(quatClass *other);
- void operator*=(Vres scalar);
-
- // Equality Operators
- int operator==(quatClass &other);
- int operator==(quatClass *other);
- int operator!=(quatClass &other);
- int operator!=(quatClass *other);
-
- // Constructor
- quatClass();
-
- // Destructor
- ~quatClass();
-
- };
-
- #endif
-