47 #ifndef AI_VECTOR3D_H_INC
48 #define AI_VECTOR3D_H_INC
51 # pragma GCC system_header
64 template<
typename TReal>
class aiMatrix3x3t;
65 template<
typename TReal>
class aiMatrix4x4t;
69 template <
typename TReal>
72 aiVector3t() AI_NO_EXCEPT : x(), y(), z() {}
73 aiVector3t(TReal _x, TReal _y, TReal _z) : x(_x), y(_y), z(_z) {}
74 explicit aiVector3t (TReal _xyz ) : x(_xyz), y(_xyz), z(_xyz) {}
75 aiVector3t(
const aiVector3t& o ) =
default;
78 const aiVector3t& operator += (
const aiVector3t& o);
79 const aiVector3t& operator -= (
const aiVector3t& o);
80 const aiVector3t& operator *= (TReal f);
81 const aiVector3t& operator /= (TReal f);
84 aiVector3t& operator *= (
const aiMatrix3x3t<TReal>& mat);
85 aiVector3t& operator *= (
const aiMatrix4x4t<TReal>& mat);
88 TReal operator[](
unsigned int i)
const;
89 TReal& operator[](
unsigned int i);
92 bool operator== (
const aiVector3t& other)
const;
93 bool operator!= (
const aiVector3t& other)
const;
94 bool operator < (
const aiVector3t& other)
const;
96 bool Equal(
const aiVector3t& other, TReal epsilon = 1e-6)
const;
98 template <
typename TOther>
99 operator aiVector3t<TOther> ()
const;
105 void Set( TReal pX, TReal pY, TReal pZ);
109 TReal SquareLength()
const;
113 TReal Length()
const;
117 aiVector3t& Normalize();
120 aiVector3t& NormalizeSafe();
126 const aiVector3t SymMul(
const aiVector3t& o);
140 #endif // __cplusplus
144 #endif // __cplusplus
146 #endif // AI_VECTOR3D_H_INC