Lines Matching refs:Matrix
23 * \brief Templatized matrix class.
33 // Templated matrix class.
35 class Matrix
48 Matrix (void);
49 explicit Matrix (const T& src);
50 explicit Matrix (const T src[Rows*Cols]);
51 Matrix (const Vector<T, Rows>& src);
52 Matrix (const Matrix<T, Rows, Cols>& src);
53 ~Matrix (void);
55 Matrix<T, Rows, Cols>& operator= (const Matrix<T, Rows, Cols>& src);
56 Matrix<T, Rows, Cols>& operator*= (const Matrix<T, Rows, Cols>& src);
82 Matrix<T, Rows0, Cols1> operator* (const Matrix<T, Rows0, Cols0>& a, const Matrix<T, Rows1, Cols1>& b);
86 Vector<T, Rows> operator* (const Matrix<T, Rows, Cols>& mtx, const Vector<T, Cols>& vec);
90 Vector<T, Cols> operator* (const Vector<T, Rows>& vec, const Matrix<T, Rows, Cols>& mtx);
93 bool operator== (const Matrix<T, Rows, Cols>& lhs, const Matrix<T, Rows, Cols>& rhs);
96 bool operator!= (const Matrix<T, Rows, Cols>& lhs, const Matrix<T, Rows, Cols>& rhs);
103 static T doDeterminant (const Matrix<T, Size, Size>& mat);
104 static Matrix<T, Size, Size> doInverse (const Matrix<T, Size, Size>& mat);
110 static T doDeterminant (const Matrix<T, 2, 2>& mat);
111 static Matrix<T, 2, 2> doInverse (const Matrix<T, 2, 2>& mat);
117 static T doDeterminant (const Matrix<T, 3, 3>& mat);
118 static Matrix<T, 3, 3> doInverse (const Matrix<T, 3, 3>& mat);
124 static T doDeterminant (const Matrix<T, 4, 4>& mat);
125 static Matrix<T, 4, 4> doInverse (const Matrix<T, 4, 4>& mat);
128 namespace matrix
132 T determinant (const Matrix<T, Size, Size>& mat)
138 Matrix<T, Size, Size> inverse (const Matrix<T, Size, Size>& mat)
143 } // matrix
148 T SquareMatrixOps<T, 2>::doDeterminant (const Matrix<T, 2, 2>& mat)
154 T SquareMatrixOps<T, 3>::doDeterminant (const Matrix<T, 3, 3>& mat)
165 T SquareMatrixOps<T, 4>::doDeterminant (const Matrix<T, 4, 4>& mat)
167 using matrix::determinant;
193 return + mat(0,0) * determinant(Matrix<T, 3, 3>(minorMatrices[0]))
194 - mat(0,1) * determinant(Matrix<T, 3, 3>(minorMatrices[1]))
195 + mat(0,2) * determinant(Matrix<T, 3, 3>(minorMatrices[2]))
196 - mat(0,3) * determinant(Matrix<T, 3, 3>(minorMatrices[3]));
200 Matrix<T, 2, 2> SquareMatrixOps<T, 2>::doInverse (const Matrix<T, 2, 2>& mat)
202 using matrix::determinant;
205 Matrix<T, 2, 2> retVal;
216 Matrix<T, 3, 3> SquareMatrixOps<T, 3>::doInverse (const Matrix<T, 3, 3>& mat)
219 using matrix::inverse;
241 const Matrix<T, 2, 2> invA = inverse(Matrix<T, 2, 2>(areaA));
242 const Matrix<T, 2, 1> matB = Matrix<T, 2, 1>(areaB);
243 const Matrix<T, 1, 2> matC = Matrix<T, 1, 2>(areaC);
244 const Matrix<T, 1, 1> matD = Matrix<T, 1, 1>(areaD);
247 const Matrix<T, 2, 2> zeroMat = Matrix<T, 2, 2>(nullField);
249 const Matrix<T, 2, 2> blockA = invA + invA*matB*schurComplement*matC*invA;
250 const Matrix<T, 2, 1> blockB = (zeroMat-invA)*matB*schurComplement;
251 const Matrix<T, 1, 2> blockC = matC*invA*(-schurComplement);
261 return Matrix<T, 3, 3>(result);
265 Matrix<T, 4, 4> SquareMatrixOps<T, 4>::doInverse (const Matrix<T, 4, 4>& mat)
268 using matrix::inverse;
292 const Matrix<T, 2, 2> invA = inverse(Matrix<T, 2, 2>(areaA));
293 const Matrix<T, 2, 2> matB = Matrix<T, 2, 2>(areaB);
294 const Matrix<T, 2, 2> matC = Matrix<T, 2, 2>(areaC);
295 const Matrix<T, 2, 2> matD = Matrix<T, 2, 2>(areaD);
297 const Matrix<T, 2, 2> schurComplement = inverse(matD - matC*invA*matB);
298 const Matrix<T, 2, 2> zeroMat = Matrix<T, 2, 2>(nullField);
300 const Matrix<T, 2, 2> blockA = invA + invA*matB*schurComplement*matC*invA;
301 const Matrix<T, 2, 2> blockB = (zeroMat-invA)*matB*schurComplement;
302 const Matrix<T, 2, 2> blockC = (zeroMat-schurComplement)*matC*invA;
303 const Matrix<T, 2, 2> blockD = schurComplement;
313 return Matrix<T, 4, 4>(result);
318 Matrix<T, Rows, Cols>::Matrix (void)
325 // Initialize to diagonal matrix.
327 Matrix<T, Rows, Cols>::Matrix (const T& src)
336 Matrix<T, Rows, Cols>::Matrix (const T src[Rows*Cols])
343 // Initialize to diagonal matrix.
345 Matrix<T, Rows, Cols>::Matrix (const Vector<T, Rows>& src)
355 Matrix<T, Rows, Cols>::Matrix (const Matrix<T, Rows, Cols>& src)
362 Matrix<T, Rows, Cols>::~Matrix (void)
368 Matrix<T, Rows, Cols>& Matrix<T, Rows, Cols>::operator= (const Matrix<T, Rows, Cols>& src)
378 Matrix<T, Rows, Cols>& Matrix<T, Rows, Cols>::operator*= (const Matrix<T, Rows, Cols>& src)
385 void Matrix<T, Rows, Cols>::setRow (int rowNdx, const Vector<T, Cols>& vec)
392 void Matrix<T, Rows, Cols>::setColumn (int colNdx, const Vector<T, Rows>& vec)
398 Vector<T, Cols> Matrix<T, Rows, Cols>::getRow (int rowNdx) const
407 Vector<T, Rows>& Matrix<T, Rows, Cols>::getColumn (int colNdx)
413 const Vector<T, Rows>& Matrix<T, Rows, Cols>::getColumn (int colNdx) const
419 Array<T, Rows*Cols> Matrix<T, Rows, Cols>::getColumnMajorData (void) const
430 Array<T, Rows*Cols> Matrix<T, Rows, Cols>::getRowMajorData (void) const
442 Matrix<T, Rows0, Cols1> operator* (const Matrix<T, Rows0, Cols0>& a, const Matrix<T, Rows1, Cols1>& b)
445 Matrix<T, Rows0, Cols1> res;
459 // Multiply of matrix with column vector.
461 Vector<T, Rows> operator* (const Matrix<T, Rows, Cols>& mtx, const Vector<T, Cols>& vec)
474 // Multiply of matrix with row vector.
476 Vector<T, Cols> operator* (const Vector<T, Rows>& vec, const Matrix<T, Rows, Cols>& mtx)
490 typedef Matrix<float, 2, 2> Matrix2f;
491 typedef Matrix<float, 3, 3> Matrix3f;
492 typedef Matrix<float, 4, 4> Matrix4f;
493 typedef Matrix<double, 2, 2> Matrix2d;
494 typedef Matrix<double, 3, 3> Matrix3d;
495 typedef Matrix<double, 4, 4> Matrix4d;
499 typedef Matrix<float, 3, 2> Mat2x3;
500 typedef Matrix<float, 4, 2> Mat2x4;
501 typedef Matrix<float, 2, 3> Mat3x2;
503 typedef Matrix<float, 4, 3> Mat3x4;
504 typedef Matrix<float, 2, 4> Mat4x2;
505 typedef Matrix<float, 3, 4> Mat4x3;
508 // Matrix-scalar operators.
511 Matrix<T, Rows, Cols> operator+ (const Matrix<T, Rows, Cols>& mtx, T scalar)
513 Matrix<T, Rows, Cols> res;
521 Matrix<T, Rows, Cols> operator- (const Matrix<T, Rows, Cols>& mtx, T scalar)
523 Matrix<T, Rows, Cols> res;
531 Matrix<T, Rows, Cols> operator* (const Matrix<T, Rows, Cols>& mtx, T scalar)
533 Matrix<T, Rows, Cols> res;
541 Matrix<T, Rows, Cols> operator/ (const Matrix<T, Rows, Cols>& mtx, T scalar)
543 Matrix<T, Rows, Cols> res;
550 // Matrix-matrix component-wise operators.
553 Matrix<T, Rows, Cols> operator+ (const Matrix<T, Rows, Cols>& a, const Matrix<T, Rows, Cols>& b)
555 Matrix<T, Rows, Cols> res;
563 Matrix<T, Rows, Cols> operator- (const Matrix<T, Rows, Cols>& a, const Matrix<T, Rows, Cols>& b)
565 Matrix<T, Rows, Cols> res;
573 Matrix<T, Rows, Cols> operator/ (const Matrix<T, Rows, Cols>& a, const Matrix<T, Rows, Cols>& b)
575 Matrix<T, Rows, Cols> res;
583 bool operator== (const Matrix<T, Rows, Cols>& lhs, const Matrix<T, Rows, Cols>& rhs)
593 bool operator!= (const Matrix<T, Rows, Cols>& lhs, const Matrix<T, Rows, Cols>& rhs)