16 #define DO_INLINE_QUATERNION 1
18 #if DO_INLINE_QUATERNION >= 1
19 #define QUATERNION_INLINE inline
21 #define QUATERNION_INLINE
25 #include "Foundation/vec3.h"
38 QUATERNION_INLINE Quaternion(
double,
const Vec3 &);
41 QUATERNION_INLINE Quaternion(
const Quaternion &);
44 QUATERNION_INLINE ~Quaternion() {};
47 QUATERNION_INLINE Quaternion& operator=(
const Quaternion&);
50 QUATERNION_INLINE std::ostream& output(std::ostream&)
const;
51 QUATERNION_INLINE std::istream& input(std::istream& ci);
54 QUATERNION_INLINE
bool operator==(
const Quaternion&)
const;
55 QUATERNION_INLINE
bool operator!=(
const Quaternion&)
const;
57 QUATERNION_INLINE Quaternion operator+(
const Quaternion&)
const;
58 QUATERNION_INLINE Quaternion operator-(
const Quaternion&)
const;
59 QUATERNION_INLINE Quaternion operator-()
const;
60 QUATERNION_INLINE
friend Quaternion operator*(
double,
const Quaternion&);
61 QUATERNION_INLINE Quaternion operator*(
double)
const;
62 QUATERNION_INLINE Quaternion operator*(
const Quaternion&)
const;
63 QUATERNION_INLINE Quaternion operator/(
const Quaternion&)
const;
65 QUATERNION_INLINE Quaternion& operator+=(
const Quaternion&);
66 QUATERNION_INLINE Quaternion& operator-=(
const Quaternion&);
67 QUATERNION_INLINE Quaternion& operator*=(
double);
68 QUATERNION_INLINE Quaternion& operator*=(
const Quaternion&);
69 QUATERNION_INLINE Quaternion& operator/=(
const Quaternion&);
71 QUATERNION_INLINE Quaternion inverse()
const;
73 QUATERNION_INLINE
void normalize();
75 QUATERNION_INLINE
double length()
const;
77 QUATERNION_INLINE
Matrix3 to_matrix()
const;
80 QUATERNION_INLINE
Vec3 return_vec()
const {
return vector; };
81 QUATERNION_INLINE
double return_sca()
const {
return scalar; };
83 QUATERNION_INLINE
void set_vector(
const Vec3 &v) { vector = v; }
84 QUATERNION_INLINE
void set_scalar(
double d) { scalar = d; }
105 QUATERNION_INLINE std::ostream& operator<<(std::ostream&,
const Quaternion &);
106 QUATERNION_INLINE std::istream& operator>>(std::istream&,
Quaternion &);
108 #if DO_INLINE_QUATERNION >= 1
109 #include "Foundation/Quaternion.hpp"