44 FXMat4d(FXdouble a00,FXdouble a01,FXdouble a02,FXdouble a03,
45 FXdouble a10,FXdouble a11,FXdouble a12,FXdouble a13,
46 FXdouble a20,FXdouble a21,FXdouble a22,FXdouble a23,
47 FXdouble a30,FXdouble a31,FXdouble a32,FXdouble a33);
62 FXMat4d(FXdouble a,FXdouble b,FXdouble c,FXdouble d);
68 explicit FXMat4d(
const FXdouble s[]);
81 FXMat4d& operator=(
const FXdouble s[]);
87 FXMat4d&
set(FXdouble a00,FXdouble a01,FXdouble a02,FXdouble a03,
88 FXdouble a10,FXdouble a11,FXdouble a12,FXdouble a13,
89 FXdouble a20,FXdouble a21,FXdouble a22,FXdouble a23,
90 FXdouble a30,FXdouble a31,FXdouble a32,FXdouble a33);
105 FXMat4d&
set(FXdouble a,FXdouble b,FXdouble c,FXdouble d);
111 FXMat4d&
set(
const FXdouble s[]);
117 FXMat4d& operator*=(FXdouble w);
118 FXMat4d& operator/=(FXdouble w);
122 const FXVec4d& operator[](FXint i)
const {
return m[i];}
125 operator FXdouble*(){
return m[0];}
126 operator const FXdouble*()
const {
return m[0];}
129 FXMat4d operator-()
const;
135 FXbool isIdentity()
const;
138 FXMat4d& setOrtho(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
141 void getOrtho(FXdouble& xlo,FXdouble& xhi,FXdouble& ylo,FXdouble& yhi,FXdouble& zlo,FXdouble& zhi)
const;
144 FXMat4d& setInverseOrtho(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
147 FXMat4d& setFrustum(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
150 void getFrustum(FXdouble& xlo,FXdouble& xhi,FXdouble& ylo,FXdouble& yhi,FXdouble& zlo,FXdouble& zhi)
const;
153 FXMat4d& setInverseFrustum(FXdouble xlo,FXdouble xhi,FXdouble ylo,FXdouble yhi,FXdouble zlo,FXdouble zhi);
159 FXMat4d& rot(
const FXMat3d& r);
162 FXMat4d& rot(
const FXQuatd& q);
165 FXMat4d& rot(
const FXVec3d& v,FXdouble c,FXdouble s);
168 FXMat4d& rot(
const FXVec3d& v,FXdouble phi);
171 FXMat4d& xrot(FXdouble c,FXdouble s);
172 FXMat4d& xrot(FXdouble phi);
175 FXMat4d& yrot(FXdouble c,FXdouble s);
176 FXMat4d& yrot(FXdouble phi);
179 FXMat4d& zrot(FXdouble c,FXdouble s);
180 FXMat4d& zrot(FXdouble phi);
183 FXMat4d& look(
const FXVec3d& from,
const FXVec3d& to,
const FXVec3d& up);
186 FXMat4d& trans(FXdouble tx,FXdouble ty,FXdouble tz);
187 FXMat4d& trans(
const FXVec3d& v);
190 FXMat4d& scale(FXdouble sx,FXdouble sy,FXdouble sz);
191 FXMat4d& scale(
const FXVec3d& v);
192 FXMat4d& scale(FXdouble s);
195 FXMat4d& mirror(
const FXVec3d& n);
198 FXdouble det()
const;
201 FXMat4d transpose()
const;
204 FXMat4d invert()
const;
207 FXMat4d affineInvert()
const;
210 FXMat4d rigidInvert()
const;
213 FXMat3d normalMatrix()
const;
221 extern FXAPI FXVec3d operator*(
const FXMat4d& m,
const FXVec3d& v);
222 extern FXAPI FXVec4d operator*(
const FXMat4d& m,
const FXVec4d& v);
225 extern FXAPI FXVec3d operator*(
const FXVec3d& v,
const FXMat4d& m);
226 extern FXAPI FXVec4d operator*(
const FXVec4d& v,
const FXMat4d& m);
229 extern FXAPI FXMat4d operator+(
const FXMat4d& a,
const FXMat4d& b);
230 extern FXAPI FXMat4d operator-(
const FXMat4d& a,
const FXMat4d& b);
233 extern FXAPI FXMat4d operator*(
const FXMat4d& a,
const FXMat4d& b);
236 extern FXAPI FXMat4d operator*(FXdouble x,
const FXMat4d& a);
237 extern FXAPI FXMat4d operator*(
const FXMat4d& a,FXdouble x);
238 extern FXAPI FXMat4d operator/(
const FXMat4d& a,FXdouble x);
239 extern FXAPI FXMat4d operator/(FXdouble x,
const FXMat4d& a);
242 extern FXAPI FXbool operator==(
const FXMat4d& a,
const FXMat4d& b);
243 extern FXAPI FXbool operator!=(
const FXMat4d& a,
const FXMat4d& b);
244 extern FXAPI FXbool operator==(
const FXMat4d& a,FXdouble n);
245 extern FXAPI FXbool operator!=(
const FXMat4d& a,FXdouble n);
246 extern FXAPI FXbool operator==(FXdouble n,
const FXMat4d& a);
247 extern FXAPI FXbool operator!=(FXdouble n,
const FXMat4d& a);
250 extern FXAPI FXMat4d orthogonalize(
const FXMat4d& m);
253 extern FXAPI FXStream& operator<<(FXStream& store,
const FXMat4d& m);
256 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:121
Definition: FX4Splitter.h:28
Double-precision 4-element vector.
Definition: FXVec4d.h:28
~FXMat4d()
Destructor.
Definition: FXMat4d.h:216
FXMat4d()
Default constructor; value is not initialized.
Definition: FXMat4d.h:38
Double-precision 3x3 matrix.
Definition: FXMat3d.h:33