00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 struct pgMat;
00033
00034
00039 struct PG_API pgVec
00040 {
00041 static const pgVec ZERO;
00042 static const pgVec X_UNIT;
00043 static const pgVec Y_UNIT;
00044 static const pgVec Z_UNIT;
00045
00046 r32 x;
00047 r32 y;
00048 r32 z;
00049
00053 pgVec();
00054
00061 pgVec(r32 x_, r32 y_, r32 z_ = 0.0f);
00062
00069 void set(r32 x_, r32 y_, r32 z_ = 0.0f);
00070
00076 pgVec operator+(const pgVec& vec) const;
00077
00082 void operator+=(const pgVec& vec);
00083
00088 pgVec operator-() const;
00089
00095 pgVec operator-(const pgVec& vec) const;
00096
00101 void operator-=(const pgVec& vec);
00102
00108 pgVec operator*(r32 s) const;
00109
00116 PG_API friend pgVec operator*(r32 s, const pgVec& vec);
00117
00122 void operator*=(r32 s);
00123
00129 pgVec operator/(r32 s) const;
00130
00135 void operator/=(r32 s);
00136
00141 r32 length() const;
00142
00147 r32 sqLength() const;
00148
00154 r32 dist(const pgVec& vec) const;
00155
00161 r32 sqDist(const pgVec& vec) const;
00162
00168 r32 dot(const pgVec& vec) const;
00169
00175 pgVec cross(const pgVec& vec) const;
00176
00182 pgVec rotateX_r32(r32 deg) const;
00183
00189 pgVec rotateY_r32(r32 deg) const;
00190
00196 pgVec rotateZ_r32(r32 deg) const;
00197
00204 pgVec rotateX_s32(s32 deg) const;
00205
00212 pgVec rotateY_s32(s32 deg) const;
00213
00220 pgVec rotateZ_s32(s32 deg) const;
00221
00226 pgVec normalize() const;
00227
00234 pgVec interp(const pgVec& to, r32 ratio) const;
00235
00242 pgVec slerp(const pgVec& to, r32 ratio) const;
00243
00249 pgVec toLocalOf(const pgMat& mat) const;
00250
00256 pgVec toGlobalFrom(const pgMat& mat) const;
00257
00264 pgVec toLocalOf_noTrans(const pgMat& mat) const;
00265
00272 pgVec toGlobalFrom_noTrans(const pgMat& mat) const;
00273
00279 void toR32x4(r32* r32x4, r32 w) const;
00280
00286 static pgVec fromR32x4(const r32* r32x4);
00287
00294 static void mulR32x4(r32* res_r32x4, const r32* lhs_r32x16, const r32* rhs_r32x4);
00295 };