RMatrix
Class in Math Module
Header: #include <src/core/math/RMatrix.h>
Description
Section titled “Description”Simple matrix class.
Scriptable: This class is available in script environments.
Copyable: Objects are cleaned up automatically by the garbage collector of the script engine.
Public Functions
Section titled “Public Functions”RMatrix() |
|
RMatrix(const RMatrix &other)Copy constructor. |
|
RMatrix(int r, int c)Creates a matrix with r rows and c columns. |
|
~RMatrix()Deletes the matrix. |
|
| void | clear()Deletes the elements of this matrix and resets the matrix size to 0/0. |
| double | get(int r, int c) const |
| RMatrix | getAppended(const RMatrix &v) constAppends matrix v to the right side of this matrix and returns the new matrix. |
| int | getCols() const |
| RMatrix | getInverse() const |
| double | getRotationAngle() const |
| int | getRows() const |
| RMatrix | getTransposed() const |
| double | getUniformScaleFactor() const |
| void | init(int r, int c)Initializes the matrix for the given size and resets all elements to 0. |
| bool | isRotationAndUniformScale() const |
| bool | isValid() const |
| RMatrix | multiplyWith(const RMatrix &w) const |
| RVector | multiplyWith(const RVector &w) const |
| RMatrix | multiplyWith(double w) const |
| RMatrix | operator*(const RMatrix &other) constMultiplies two matrices. |
| RMatrix | operator*(double s) const |
| RMatrix | operator*=(double f)Multiplies all elements of this matrix with the given factor and returns this matrix. |
| RMatrix & | operator=(const RMatrix &other)Assignment operator. |
| bool | operator==(const RMatrix &other) constComparison. |
| double * | operator[](int i) |
| void | reset()Resets all elements to 0. |
| bool | rref()Changes this matrix into its rref. |
| void | set(int r, int c, double v)Sets the element at the given row/column to the given value v. |
| void | set2x3(double a11, double a12, double a13, double a21, double a22, double a23)Sets the dimension of this matrix to 2x3 and the elements to the given elements. |
| void | set3x1(double a11, double a21, double a31)Sets the dimension of this matrix to 3x1 and the elements to the given elements. |
| void | set3x3(double a11, double a12, double a13, double a21, double a22, double a23, double a31, double a32, double a33)Sets the dimension of this matrix to 3x3 and the elements to the given elements. |
Static Public Functions
Section titled “Static Public Functions”| static RMatrix | create2x2(double a11, double a12, double a21, double a22) |
| static RMatrix | create2x3(double a11, double a12, double a13, double a21, double a22, double a23) |
| static RMatrix | create3x1(double a11, double a21, double a31) |
| static RMatrix | create3x3(double a11, double a12, double a13, double a21, double a22, double a23, double a31, double a32, double a33) |
| static RMatrix | createIdentity(int size) |
| static RMatrix | createIdentity2x2() |
| static RMatrix | createIdentity3x3() |
| static RMatrix | createRotation(double angle) |
Protected Functions
Section titled “Protected Functions”| void | addRow(int r, double factor, int r2)Adds to row r factor times row r2. |
| int | getPivotCol(int r) |
| int | getPivotRow(int startRow) |
| void | multiplyRow(int r, double factor)Multiplies row r with factor. |
| bool | ref(int startRow)Changes this matrix into its ref. |
| void | swapRows(int r1, int r2)Swaps the given two rows. |
Private Attributes
Section titled “Private Attributes”| int | cols |
| double ** | m |
| int | rows |
Member Documentation
Section titled “Member Documentation”RMatrix
Section titled “RMatrix”RMatrix::RMatrix()All rights reserved.
This file is part of the QCAD project.
QCAD is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
QCAD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with QCAD. Creates and empty matrix (zero columns and zero rows).
RMatrix
Section titled “RMatrix”RMatrix::RMatrix(const RMatrix &other)Copy constructor.
RMatrix
Section titled “RMatrix”RMatrix::RMatrix(int r, int c)Creates a matrix with r rows and c columns.
All elements are reset to 0.
Parameters:
r: number of rowsc: number of columns
~RMatrix
Section titled “~RMatrix”RMatrix::~RMatrix()Deletes the matrix.
void RMatrix::clear()Deletes the elements of this matrix and resets the matrix size to 0/0.
double RMatrix::get(int r, int c) constconst
Parameters:
r: the rowc: the column
Returns: The element at the given row/column.
getAppended
Section titled “getAppended”RMatrix RMatrix::getAppended(const RMatrix &v) constconst
Appends matrix v to the right side of this matrix and returns the new matrix.
This matrix is not affected.
Parameters:
v: the matrix to append to this matrix
getCols
Section titled “getCols”int RMatrix::getCols() constinline const
Returns: Number of columns of this matrix.
getInverse
Section titled “getInverse”RMatrix RMatrix::getInverse() constconst
Returns: The inverse matrix of this matrix $A^{-1}$ or an empty matrix if this matrix is not invertible.
getRotationAngle
Section titled “getRotationAngle”double RMatrix::getRotationAngle() constconst
getRows
Section titled “getRows”int RMatrix::getRows() constinline const
Returns: Number of rows of this matrix.
getTransposed
Section titled “getTransposed”RMatrix RMatrix::getTransposed() constconst
Returns: The transposed matrix $A^T$. This matrix is not affected.
getUniformScaleFactor
Section titled “getUniformScaleFactor”double RMatrix::getUniformScaleFactor() constconst
void RMatrix::init(int r, int c)Initializes the matrix for the given size and resets all elements to 0.
isRotationAndUniformScale
Section titled “isRotationAndUniformScale”bool RMatrix::isRotationAndUniformScale() constconst
isValid
Section titled “isValid”bool RMatrix::isValid() constconst
Returns: True if this matrix is a valid matrix (more than 0 columns and rows).
multiplyWith
Section titled “multiplyWith”RMatrix RMatrix::multiplyWith(const RMatrix &w) constconst
Returns: $A \cdot W$ This matrix is not affected.
multiplyWith
Section titled “multiplyWith”RVector RMatrix::multiplyWith(const RVector &w) constconst
multiplyWith
Section titled “multiplyWith”RMatrix RMatrix::multiplyWith(double w) constconst
operator*
Section titled “operator*”RMatrix RMatrix::operator*(const RMatrix &other) constconst
Multiplies two matrices.
Non-Scriptable: This function is not available in script environments.
operator*
Section titled “operator*”RMatrix RMatrix::operator*(double s) constconst
operator*=
Section titled “operator*=”RMatrix RMatrix::operator*=(double f)Multiplies all elements of this matrix with the given factor and returns this matrix.
Non-Scriptable: This function is not available in script environments.
operator=
Section titled “operator=”RMatrix & RMatrix::operator=(const RMatrix &other)Assignment operator.
Non-Scriptable: This function is not available in script environments.
operator==
Section titled “operator==”bool RMatrix::operator==(const RMatrix &other) constconst
Comparison.
Non-Scriptable: This function is not available in script environments.
All elements of the matrix as well as the matrix dimensions have to match for the two matrices to be equal.
operator[]
Section titled “operator[]”double * RMatrix::operator[](int i)Non-Scriptable: This function is not available in script environments.
void RMatrix::reset()Resets all elements to 0.
bool RMatrix::rref()Changes this matrix into its rref.
See also: http://en.wikipedia.org/wiki/Rref#Reduced_row_echelon_form
Returns: True on success.
void RMatrix::set(int r, int c, double v)Sets the element at the given row/column to the given value v.
Parameters:
r: the rowc: the columnv: the new value at the given row / column position
set2x3
Section titled “set2x3”void RMatrix::set2x3(double a11, double a12, double a13, double a21, double a22, double a23)Sets the dimension of this matrix to 2x3 and the elements to the given elements.
set3x1
Section titled “set3x1”void RMatrix::set3x1(double a11, double a21, double a31)Sets the dimension of this matrix to 3x1 and the elements to the given elements.
set3x3
Section titled “set3x3”void RMatrix::set3x3(double a11, double a12, double a13, double a21, double a22, double a23, double a31, double a32, double a33)Sets the dimension of this matrix to 3x3 and the elements to the given elements.
create2x2
Section titled “create2x2”static RMatrix RMatrix::create2x2(double a11, double a12, double a21, double a22)static
Returns: A matrix with 2 rows and 2 columns: $ \left( \begin{array}{ccc}
a_{11} & a_{12} \
a_{21} & a_{22}
\end{array} \right)
$
create2x3
Section titled “create2x3”static RMatrix RMatrix::create2x3(double a11, double a12, double a13, double a21, double a22, double a23)static
Returns: A matrix with 2 rows and 3 columns: $ \left( \begin{array}{ccc}
a_{11} & a_{12} & a_{13} \
a_{21} & a_{22} & a_{23}
\end{array} \right)
$
create3x1
Section titled “create3x1”static RMatrix RMatrix::create3x1(double a11, double a21, double a31)static
Returns: A matrix with 3 rows and 1 column (vector): $ \left( \begin{array}{ccc}
a_{11} \
a_{21} \
a_{31}
\end{array} \right)
$
create3x3
Section titled “create3x3”static RMatrix RMatrix::create3x3(double a11, double a12, double a13, double a21, double a22, double a23, double a31, double a32, double a33)static
Returns: A matrix with 3 rows and 3 columns: $ \left( \begin{array}{ccc}
a_{11} & a_{12} & a_{13} \
a_{21} & a_{22} & a_{23} \
a_{31} & a_{32} & a_{33}
\end{array} \right)
$
createIdentity
Section titled “createIdentity”static RMatrix RMatrix::createIdentity(int size)static
Returns: An identity matrix with size rows and size columns: $ \left( \begin{array}{cccc}
1 & 0 & 0 & \ldots \
0 & 1 & 0 & \ldots \
0 & 0 & 1 & \ldots \
\ldots & \ldots & \ldots & \ldots
\end{array} \right)
$
createIdentity2x2
Section titled “createIdentity2x2”static RMatrix RMatrix::createIdentity2x2()static
Returns: An identity matrix with 2 rows and 2 columns: $ \left( \begin{array}{ccc}
1 & 0 \
0 & 1
\end{array} \right)
$
createIdentity3x3
Section titled “createIdentity3x3”static RMatrix RMatrix::createIdentity3x3()static
Returns: An identity matrix with 3 rows and 3 columns: $ \left( \begin{array}{ccc}
1 & 0 & 0 \
0 & 1 & 0 \
0 & 0 & 1
\end{array} \right)
$
createRotation
Section titled “createRotation”static RMatrix RMatrix::createRotation(double angle)static
addRow
Section titled “addRow”void RMatrix::addRow(int r, double factor, int r2)protected
Adds to row r factor times row r2.
Parameters:
r: the rowr2: the row 2factor: The factor to apply tor2before it is added to rowr.
getPivotCol
Section titled “getPivotCol”int RMatrix::getPivotCol(int r)protected
Parameters:
r: the row
Returns: The pivot column of the given matrix row r.
getPivotRow
Section titled “getPivotRow”int RMatrix::getPivotRow(int startRow)protected
Parameters:
startRow: the start row
Returns: The pivot row of this matrix, starting with the given row startRow.
multiplyRow
Section titled “multiplyRow”void RMatrix::multiplyRow(int r, double factor)protected
Multiplies row r with factor.
Parameters:
r: the rowfactor: the factor to apply to the row
bool RMatrix::ref(int startRow)protected
Changes this matrix into its ref.
Returns: True on success.
swapRows
Section titled “swapRows”void RMatrix::swapRows(int r1, int r2)protected
Swaps the given two rows.
Parameters:
r1: the row 1r2: the row 2
int RMatrix::colsprivate
double** RMatrix::mprivate
int RMatrix::rowsprivate