53 FXMat4d(FXdouble a,FXdouble b,FXdouble c,FXdouble d);
56 FXMat4d(FXdouble a00,FXdouble a01,FXdouble a02,FXdouble a03,
57 FXdouble a10,FXdouble a11,FXdouble a12,FXdouble a13,
58 FXdouble a20,FXdouble a21,FXdouble a22,FXdouble a23,
59 FXdouble a30,FXdouble a31,FXdouble a32,FXdouble a33);
78 FXMat4d& operator=(
const FXdouble s[]);
90 FXMat4d&
set(
const FXdouble s[]);
93 FXMat4d&
set(FXdouble a,FXdouble b,FXdouble c,FXdouble d);
96 FXMat4d&
set(FXdouble a00,FXdouble a01,FXdouble a02,FXdouble a03,
97 FXdouble a10,FXdouble a11,FXdouble a12,FXdouble a13,
98 FXdouble a20,FXdouble a21,FXdouble a22,FXdouble a23,
99 FXdouble a30,FXdouble a31,FXdouble a32,FXdouble a33);
111 FXMat4d& operator*=(FXdouble w);
112 FXMat4d& operator/=(FXdouble w);
116 const FXVec4d& operator[](FXint i)
const {
return m[i];}
119 operator FXdouble*(){
return m[0];}
120 operator const FXdouble*()
const {
return m[0];}
123 FXMat4d operator-()
const;
129 FXbool isIdentity()
const;
132 FXMat4d& setOrtho(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
135 void getOrtho(FXdouble& xlo,FXdouble& xhi,FXdouble& ylo,FXdouble& yhi,FXdouble& zlo,FXdouble& zhi)
const;
138 FXMat4d& setInverseOrtho(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
141 FXMat4d& setFrustum(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
144 void getFrustum(FXdouble& xlo,FXdouble& xhi,FXdouble& ylo,FXdouble& yhi,FXdouble& zlo,FXdouble& zhi)
const;
147 FXMat4d& setInverseFrustum(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
153 FXMat4d& rot(
const FXMat3d& r);
156 FXMat4d& rot(
const FXQuatd& q);
159 FXMat4d& rot(
const FXVec3d& v,FXdouble c,FXdouble s);
162 FXMat4d& rot(
const FXVec3d& v,FXdouble phi);
165 FXMat4d& xrot(FXdouble c,FXdouble s);
166 FXMat4d& xrot(FXdouble phi);
169 FXMat4d& yrot(FXdouble c,FXdouble s);
170 FXMat4d& yrot(FXdouble phi);
173 FXMat4d& zrot(FXdouble c,FXdouble s);
174 FXMat4d& zrot(FXdouble phi);
177 FXMat4d& look(
const FXVec3d& from,
const FXVec3d& to,
const FXVec3d& up);
180 FXMat4d& trans(FXdouble tx,FXdouble ty,FXdouble tz);
181 FXMat4d& trans(
const FXVec3d& v);
184 FXMat4d& scale(FXdouble sx,FXdouble sy,FXdouble sz);
185 FXMat4d& scale(
const FXVec3d& v);
186 FXMat4d& scale(FXdouble s);
189 FXMat4d& mirror(
const FXVec3d& n);
192 FXdouble det()
const;
195 FXMat4d transpose()
const;
198 FXMat4d invert()
const;
201 FXMat4d affineInvert()
const;
204 FXMat4d rigidInvert()
const;
207 FXMat3d normalMatrix()
const;
215 extern FXAPI FXVec3d operator*(
const FXMat4d& m,
const FXVec3d& v);
216 extern FXAPI FXVec4d operator*(
const FXMat4d& m,
const FXVec4d& v);
219 extern FXAPI FXVec3d operator*(
const FXVec3d& v,
const FXMat4d& m);
220 extern FXAPI FXVec4d operator*(
const FXVec4d& v,
const FXMat4d& m);
223 extern FXAPI FXMat4d operator+(
const FXMat4d& a,
const FXMat4d& b);
224 extern FXAPI FXMat4d operator-(
const FXMat4d& a,
const FXMat4d& b);
227 extern FXAPI FXMat4d operator*(
const FXMat4d& a,
const FXMat4d& b);
230 extern FXAPI FXMat4d operator*(FXdouble x,
const FXMat4d& a);
231 extern FXAPI FXMat4d operator*(
const FXMat4d& a,FXdouble x);
232 extern FXAPI FXMat4d operator/(
const FXMat4d& a,FXdouble x);
233 extern FXAPI FXMat4d operator/(FXdouble x,
const FXMat4d& a);
236 extern FXAPI FXbool operator==(
const FXMat4d& a,
const FXMat4d& b);
237 extern FXAPI FXbool operator!=(
const FXMat4d& a,
const FXMat4d& b);
238 extern FXAPI FXbool operator==(
const FXMat4d& a,FXdouble n);
239 extern FXAPI FXbool operator!=(
const FXMat4d& a,FXdouble n);
240 extern FXAPI FXbool operator==(FXdouble n,
const FXMat4d& a);
241 extern FXAPI FXbool operator!=(FXdouble n,
const FXMat4d& a);
244 extern FXAPI FXMat4d orthogonalize(
const FXMat4d& m);
247 extern FXAPI FXStream& operator<<(FXStream& store,
const FXMat4d& m);
250 extern FXAPI FXStream& operator>>(FXStream& store,FXMat4d& m);
Double-precision quaternion.
Definition: FXQuatd.h:32
Double-precision 4x4 matrix.
Definition: FXMat4d.h:32
FXVec4d & operator[](FXint i)
Indexing.
Definition: FXMat4d.h:115
Definition: FX4Splitter.h:28
Double-precision 4-element vector.
Definition: FXVec4d.h:28
~FXMat4d()
Destructor.
Definition: FXMat4d.h:210
FXMat4d()
Default constructor; value is not initialized.
Definition: FXMat4d.h:38
Double-precision 3x3 matrix.
Definition: FXMat3d.h:33