QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RMatrix Class Reference

Simple matrix class. More...

#include <RMatrix.h>

List of all members.

Public Member Functions

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) const
 Appends 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
RMatrix multiplyWith (double w) const
RVector multiplyWith (const RVector &w) const
RMatrix operator* (double s) const
RMatrix operator* (const RMatrix &other) const
 Multiplies two matrices.
RMatrix operator*= (double f)
 Multiplies all elements of this matrix with the given factor and returns this matrix.
RMatrixoperator= (const RMatrix &other)
 Assignment operator.
bool operator== (const RMatrix &other) const
 Comparison.
double * operator[] (int i)
void reset ()
 Resets all elements to 0.
 RMatrix ()
 Copyright (c) 2011-2013 by Andrew Mustun.
 RMatrix (int r, int c)
 Creates a matrix with r rows and c columns.
 RMatrix (const RMatrix &other)
 Copy constructor.
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.
 ~RMatrix ()
 Deletes the matrix.

Static Public Member 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 Member 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

int cols
double ** m
int rows

Detailed Description

Simple matrix class.

Scriptable:
This class is wrapped for script environments.
Copyable:
Script wrappers of this class should pass objects by reference.

Constructor & Destructor Documentation

RMatrix::RMatrix ( )

Copyright (c) 2011-2013 by Andrew Mustun.

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::RMatrix ( int  r,
int  c 
)

Creates a matrix with r rows and c columns.

All elements are reset to 0.

Parameters:
rnumber of rows
cnumber of columns
RMatrix::RMatrix ( const RMatrix other)

Copy constructor.

RMatrix::~RMatrix ( )

Deletes the matrix.


Member Function Documentation

void RMatrix::addRow ( int  r,
double  factor,
int  r2 
)
protected

Adds to row r factor times row r2.

Parameters:
rthe row
r2the row 2
factorThe factor to apply to r2 before it is added to row r.
void RMatrix::clear ( )

Deletes the elements of this matrix and resets the matrix size to 0/0.

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) $
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) $
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) $
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) $
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) $
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) $
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) $
RMatrix RMatrix::createRotation ( double  angle)
static
double RMatrix::get ( int  r,
int  c 
) const
Parameters:
rthe row
cthe column
Returns:
The element at the given row/column.
RMatrix RMatrix::getAppended ( const RMatrix v) const

Appends matrix v to the right side of this matrix and returns the new matrix.

This matrix is not affected.

Parameters:
vthe matrix to append to this matrix
int RMatrix::getCols ( ) const
inline
Returns:
Number of columns of this matrix.
RMatrix RMatrix::getInverse ( ) const
Returns:
The inverse matrix of this matrix $A^{-1}$ or an empty matrix if this matrix is not invertible.
int RMatrix::getPivotCol ( int  r)
protected
Parameters:
rthe row
Returns:
The pivot column of the given matrix row r.
int RMatrix::getPivotRow ( int  startRow)
protected
Parameters:
startRowthe start row
Returns:
The pivot row of this matrix, starting with the given row startRow.
double RMatrix::getRotationAngle ( ) const
int RMatrix::getRows ( ) const
inline
Returns:
Number of rows of this matrix.
RMatrix RMatrix::getTransposed ( ) const
Returns:
The transposed matrix $A^T$. This matrix is not affected.
double RMatrix::getUniformScaleFactor ( ) const
void RMatrix::init ( int  r,
int  c 
)

Initializes the matrix for the given size and resets all elements to 0.

bool RMatrix::isRotationAndUniformScale ( ) const
bool RMatrix::isValid ( ) const
Returns:
True if this matrix is a valid matrix (more than 0 columns and rows).
void RMatrix::multiplyRow ( int  r,
double  factor 
)
protected

Multiplies row r with factor.

Parameters:
rthe row
factorthe factor to apply to the row
RMatrix RMatrix::multiplyWith ( const RMatrix w) const
Returns:
$A \cdot W$ This matrix is not affected.
RMatrix RMatrix::multiplyWith ( double  w) const
RVector RMatrix::multiplyWith ( const RVector w) const
RMatrix RMatrix::operator* ( double  s) const
RMatrix RMatrix::operator* ( const RMatrix other) const

Multiplies two matrices.

   \par Non-Scriptable:

This function is not available in script environments.

RMatrix RMatrix::operator*= ( double  f)

Multiplies all elements of this matrix with the given factor and returns this matrix.

   \par Non-Scriptable:

This function is not available in script environments.

RMatrix & RMatrix::operator= ( const RMatrix other)

Assignment operator.

   \par Non-Scriptable:

This function is not available in script environments.

bool RMatrix::operator== ( const RMatrix other) const

Comparison.

   \par 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.

double* RMatrix::operator[] ( int  i)
   \par Non-Scriptable:

This function is not available in script environments.

bool RMatrix::ref ( int  startRow)
protected

Changes this matrix into its ref.

Returns:
True on success.
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:
rthe row
cthe column
vthe new value at the given row / column position
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.

void RMatrix::set3x1 ( double  a11,
double  a21,
double  a31 
)

Sets the dimension of this matrix to 3x1 and the elements to the given elements.

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.

void RMatrix::swapRows ( int  r1,
int  r2 
)
protected

Swaps the given two rows.

Parameters:
r1the row 1
r2the row 2

Member Data Documentation

int RMatrix::cols
private
double** RMatrix::m
private
int RMatrix::rows
private

The documentation for this class was generated from the following files: