PIP 5.5.3
Platform-Independent Primitives
Открытые члены | Открытые статические члены | Полный список членов класса
Шаблон класса PIMathMatrixT< Rows, Cols, Type >

Класс для работы с матрицами фиксированного размера и типа данных. Подробнее...

#include <pimathmatrix.h>

Открытые члены

 PIMathMatrixT (const Type &new_value=Type())
 Создает PIMathMatrixT и заполняет её из new_value.
 
 PIMathMatrixT (const PIVector< Type > &val)
 Создает PIMathMatrixT и заполняет её из PIVector.
 
 PIMathMatrixT (std::initializer_list< Type > init_list)
 Создает PIMathMatrixT и заполняет её из списка инициализации C++11.
 
constexpr uint cols () const
 Метод возвращающий количество столбцов в матрице. Подробнее...
 
constexpr uint rows () const
 Метод возвращающий количество строк в матрице. Подробнее...
 
PIMathVectorT< Rows, Type > col (uint index)
 Метод возвращающий выбранную строку в формате PIMathVectorT. Подробнее...
 
PIMathVectorT< Cols, Type > row (uint index)
 Method which returns the selected row in PIMathVectorT format. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & setCol (uint index, const PIMathVectorT< Rows, Type > &v)
 Определить выбранный столбец матрицы. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & setRow (uint index, const PIMathVectorT< Cols, Type > &v)
 Определить выбранную строку матрицы. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & swapRows (uint rf, uint rs)
 Метод, меняющий местами выбранные строки в матрице. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & swapCols (uint cf, uint cs)
 Метод, меняющий местами выбранные столбцы в матрице. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & fill (const Type &v)
 Метод, заполняющий матрицу выбранным значением. Подробнее...
 
constexpr bool isSquare () const
 Метод, проверяющий является ли матрицей квадратной. Подробнее...
 
bool isIdentity () const
 Метод, проверяющий содержит ли главная диагональ единицы и все остальные поля нули. Подробнее...
 
bool isNull () const
 Метод, являются ли все элементы матрицы нулями. Подробнее...
 
Type at (uint row, uint col) const
 Доступ только для чтения к элементу по номеру строки row и номеру столбца col. Подробнее...
 
Type & element (uint row, uint col)
 Полный доступ к элементу по номеру строки row и номеру столбца col. Подробнее...
 
const Type & element (uint row, uint col) const
 Доступ только для чтения к элементу по номеру строки row и номеру столбца col. Подробнее...
 
Type * operator[] (uint row)
 Полный доступ к указателю на строку матрицы. Подробнее...
 
const Type * operator[] (uint row) const
 Доступ только для чтения к указателю на строку матрицы. Подробнее...
 
bool operator== (const PIMathMatrixT< Rows, Cols, Type > &sm) const
 Сравнение матриц. Подробнее...
 
bool operator!= (const PIMathMatrixT< Rows, Cols, Type > &sm) const
 Отрицательное сравнение матриц. Подробнее...
 
void operator+= (const PIMathMatrixT< Rows, Cols, Type > &sm)
 Сложение с присваиванием с матрицей sm. Подробнее...
 
void operator-= (const PIMathMatrixT< Rows, Cols, Type > &sm)
 Вычитание с присваиванием с матрицей sm. Подробнее...
 
void operator*= (const Type &v)
 Умножение с присваиванием с матрицей v. Подробнее...
 
void operator/= (const Type &v)
 Деление с присваиванием с матрицей v. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > operator- () const
 Операция отрицания Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > operator+ (const PIMathMatrixT< Rows, Cols, Type > &sm) const
 Матричное сложение. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > operator- (const PIMathMatrixT< Rows, Cols, Type > &sm) const
 Матричная разность. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > operator* (const Type &v) const
 Умножение матрицы на константу. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > operator/ (const Type &v) const
 Деление матрицы на константу. Подробнее...
 
Type determinant (bool *ok=0) const
 Вычислить определитель матрицы. Подробнее...
 
Type trace () const
 Вычислить след матрицы. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & toUpperTriangular (bool *ok=0)
 Преобразование матрицы в верхнетреугольную. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & invert (bool *ok=0)
 Операция обращения матрицы. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > inverted (bool *ok=0) const
 Операция обращения матрицы. Подробнее...
 
PIMathMatrixT< Cols, Rows, Type > transposed () const
 Транспонирование матрицы. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > & rotate (Type angle)
 Операция поворота матрицы. Подробнее...
 
PIMathMatrixT< Rows, Cols, Type > rotated (Type angle)
 Операция поворота матрицы. Подробнее...
 
template<typename T >
PIMathMatrixT< Rows, Cols, T > toType () const
 Возвращает эту матрицу с другим типом элементов.
 
template<uint SubRows, uint SubCols = SubRows>
PIMathMatrixT< SubRows, SubCols, Type > submatrix (int row_offset=0, int col_offset=0) const
 Возвращает подматрицу с размерами SubRows x SubCols. Элементы берутся с координат "row_offset" и "col_offset". Подробнее...
 
template<uint SubRows, uint SubCols = SubRows>
PIMathMatrixT< Rows, Cols, Type > & setSubmatrix (int row_index, int col_index, const PIMathMatrixT< SubRows, SubCols, Type > &m)
 Устанавливает подматрицу "m" в координаты "row_index" и "col_index". Подробнее...
 

Открытые статические члены

static PIMathMatrixT< Rows, Cols, Type > identity ()
 Создает матрицу, главная диагональ которой заполнена единицами, а остальные элементы — нулями. Подробнее...
 

Подробное описание

template<uint Rows, uint Cols = Rows, typename Type = double>
class PIMathMatrixT< Rows, Cols, Type >

Класс для работы с матрицами фиксированного размера и типа данных.

В отличие от PIMathMatrix не занимается динамическим выделением памяти и связанными с этим операциями. То есть он тривиально копируемый. Содержит проверки времени компиляции на несоответствие размера при различных математических операциях, что позволяет заранее выявлять ошибки.

Параметры шаблона
`Rows`количество строк матрицы.
`Сols`количество столбцов матрицы.
`Type`типданных матрицы. Здесь можеть быть базовый тип данных C++ или различные классы, где реализованы арифметические операторы(=, +=, -=, *=, /=, ==, !=, +, -, *, /) языка C++.

Методы

◆ identity()

template<uint Rows, uint Cols = Rows, typename Type = double>
static PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::identity ( )
inlinestatic

Создает матрицу, главная диагональ которой заполнена единицами, а остальные элементы — нулями.

Возвращает
единичная матрица типа PIMathMatrixT.

◆ cols()

template<uint Rows, uint Cols = Rows, typename Type = double>
constexpr uint PIMathMatrixT< Rows, Cols, Type >::cols ( ) const
inlineconstexpr

Метод возвращающий количество столбцов в матрице.

Возвращает
uint количество столбцов.

◆ rows()

template<uint Rows, uint Cols = Rows, typename Type = double>
constexpr uint PIMathMatrixT< Rows, Cols, Type >::rows ( ) const
inlineconstexpr

Метод возвращающий количество строк в матрице.

Возвращает
uint количество строк.

◆ col()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathVectorT< Rows, Type > PIMathMatrixT< Rows, Cols, Type >::col ( uint  index)
inline

Метод возвращающий выбранную строку в формате PIMathVectorT.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
indexномер выбранного столбца.
Возвращает
столбец в формате PIMathVectorT.

◆ row()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathVectorT< Cols, Type > PIMathMatrixT< Rows, Cols, Type >::row ( uint  index)
inline

Method which returns the selected row in PIMathVectorT format.

If you enter an index out of the border of the matrix there will be "undefined behavior".

Аргументы
indexis the number of the selected row.
Возвращает
row in PIMathVectorT format.

Метод возвращающий выбранный столбец в формате PIMathVectorT.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
indexномер выбранной строки.
Возвращает
строка в формате PIMathVectorT.

◆ setCol()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::setCol ( uint  index,
const PIMathVectorT< Rows, Type > &  v 
)
inline

Определить выбранный столбец матрицы.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
indexномер выбранного столбца.
vвектор типа PIMathVectorT<Rows, Type>, которым необходимо заполнить столбец.
Возвращает
матрица типа PIMathMatrixT<Rows, Cols, Type>.

◆ setRow()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::setRow ( uint  index,
const PIMathVectorT< Cols, Type > &  v 
)
inline

Определить выбранную строку матрицы.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
indexномер выбранной строки.
vвектор типа PIMathVectorT<Cols, Type>, которым необходимо заполнить строку.
Возвращает
матрица типа PIMathMatrixT<Rows, Cols, Type>.

◆ swapRows()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::swapRows ( uint  rf,
uint  rs 
)
inline

Метод, меняющий местами выбранные строки в матрице.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
rfномер первой выбранной строки.
rsномер второй выбранной строки.
Возвращает
матрица типа PIMathMatrixT<Rows, Cols, Type>.

◆ swapCols()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::swapCols ( uint  cf,
uint  cs 
)
inline

Метод, меняющий местами выбранные столбцы в матрице.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
rfномер первого выбранного столбца.
rsномер второго выбранного столбца.
Возвращает
матрица типа PIMathMatrixT<Rows, Cols, Type>.

◆ fill()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::fill ( const Type &  v)
inline

Метод, заполняющий матрицу выбранным значением.

Аргументы
vпараметр тип и значения, которого выбираются и заносятся в матрицу.
Возвращает
заполненная матрица типа PIMathMatrixT<Rows, Cols, Type>.

◆ isSquare()

template<uint Rows, uint Cols = Rows, typename Type = double>
constexpr bool PIMathMatrixT< Rows, Cols, Type >::isSquare ( ) const
inlineconstexpr

Метод, проверяющий является ли матрицей квадратной.

Возвращает
true если матрица квадратная, иначе false.

◆ isIdentity()

template<uint Rows, uint Cols = Rows, typename Type = double>
bool PIMathMatrixT< Rows, Cols, Type >::isIdentity ( ) const
inline

Метод, проверяющий содержит ли главная диагональ единицы и все остальные поля нули.

Возвращает
true если матрица единичная, иначе false.

◆ isNull()

template<uint Rows, uint Cols = Rows, typename Type = double>
bool PIMathMatrixT< Rows, Cols, Type >::isNull ( ) const
inline

Метод, являются ли все элементы матрицы нулями.

Возвращает
true если матрица нулевая, иначе false.

◆ at()

template<uint Rows, uint Cols = Rows, typename Type = double>
Type PIMathMatrixT< Rows, Cols, Type >::at ( uint  row,
uint  col 
) const
inline

Доступ только для чтения к элементу по номеру строки row и номеру столбца col.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
rowномер строки матрицы.
colномер столбца матрицы.
Возвращает
копия элемента матрицы.

◆ element() [1/2]

template<uint Rows, uint Cols = Rows, typename Type = double>
Type & PIMathMatrixT< Rows, Cols, Type >::element ( uint  row,
uint  col 
)
inline

Полный доступ к элементу по номеру строки row и номеру столбца col.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
rowномер строки матрицы.
colномер столбца матрицы.
Возвращает
элемент матрицы.

◆ element() [2/2]

template<uint Rows, uint Cols = Rows, typename Type = double>
const Type & PIMathMatrixT< Rows, Cols, Type >::element ( uint  row,
uint  col 
) const
inline

Доступ только для чтения к элементу по номеру строки row и номеру столбца col.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
rowномер строки матрицы.
colномер столбца матрицы.
Возвращает
копия элемента матрицы.

◆ operator[]() [1/2]

template<uint Rows, uint Cols = Rows, typename Type = double>
Type * PIMathMatrixT< Rows, Cols, Type >::operator[] ( uint  row)
inline

Полный доступ к указателю на строку матрицы.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
rowномер строки матрицы.
Возвращает
указатель на строку матрицы.

◆ operator[]() [2/2]

template<uint Rows, uint Cols = Rows, typename Type = double>
const Type * PIMathMatrixT< Rows, Cols, Type >::operator[] ( uint  row) const
inline

Доступ только для чтения к указателю на строку матрицы.

Если вы введете индекс вне границ матрицы, то поведение не определено ("undefined behavior").

Аргументы
rowномер строки матрицы.
Возвращает
указатель на строку матрицы.

◆ operator==()

template<uint Rows, uint Cols = Rows, typename Type = double>
bool PIMathMatrixT< Rows, Cols, Type >::operator== ( const PIMathMatrixT< Rows, Cols, Type > &  sm) const
inline

Сравнение матриц.

Аргументы
smматрица для сравнения.
Возвращает
если матрицы равны true, иначе false.

◆ operator!=()

template<uint Rows, uint Cols = Rows, typename Type = double>
bool PIMathMatrixT< Rows, Cols, Type >::operator!= ( const PIMathMatrixT< Rows, Cols, Type > &  sm) const
inline

Отрицательное сравнение матриц.

Аргументы
smматрица для сравнения.
Возвращает
если матрицы не равны true, иначе false.

◆ operator+=()

template<uint Rows, uint Cols = Rows, typename Type = double>
void PIMathMatrixT< Rows, Cols, Type >::operator+= ( const PIMathMatrixT< Rows, Cols, Type > &  sm)
inline

Сложение с присваиванием с матрицей sm.

Аргументы
smматрица для сложения с присваиванием.

◆ operator-=()

template<uint Rows, uint Cols = Rows, typename Type = double>
void PIMathMatrixT< Rows, Cols, Type >::operator-= ( const PIMathMatrixT< Rows, Cols, Type > &  sm)
inline

Вычитание с присваиванием с матрицей sm.

Аргументы
smматрица для вычитания с присваиванием.

◆ operator*=()

template<uint Rows, uint Cols = Rows, typename Type = double>
void PIMathMatrixT< Rows, Cols, Type >::operator*= ( const Type &  v)
inline

Умножение с присваиванием с матрицей v.

Аргументы
smматрица для умножения с присваиванием.

◆ operator/=()

template<uint Rows, uint Cols = Rows, typename Type = double>
void PIMathMatrixT< Rows, Cols, Type >::operator/= ( const Type &  v)
inline

Деление с присваиванием с матрицей v.

Аргументы
smматрица для деления с присваиванием.

◆ operator-() [1/2]

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::operator- ( ) const
inline

Операция отрицания

Возвращает
копия отрицательной матрицы

◆ operator+()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::operator+ ( const PIMathMatrixT< Rows, Cols, Type > &  sm) const
inline

Матричное сложение.

Аргументы
smматричное слагаемое.
Возвращает
результат матричного сложения.

◆ operator-() [2/2]

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::operator- ( const PIMathMatrixT< Rows, Cols, Type > &  sm) const
inline

Матричная разность.

Аргументы
smматричное вычитаемое.
Возвращает
результат матричной разности.

◆ operator*()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::operator* ( const Type &  v) const
inline

Умножение матрицы на константу.

Аргументы
vмножитель.
Возвращает
результат произведения.

◆ operator/()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::operator/ ( const Type &  v) const
inline

Деление матрицы на константу.

Аргументы
vделитель.
Возвращает
результат деления.

◆ determinant()

template<uint Rows, uint Cols = Rows, typename Type = double>
Type PIMathMatrixT< Rows, Cols, Type >::determinant ( bool *  ok = 0) const
inline

Вычислить определитель матрицы.

Работает только с квадратными, ненулевыми и обратимыми матрицами.

Аргументы
okэто параметр, с помощью которого мы можем узнать, правильно ли сработал метод.
Возвращает
опеределитель матрицы.

◆ trace()

template<uint Rows, uint Cols = Rows, typename Type = double>
Type PIMathMatrixT< Rows, Cols, Type >::trace ( ) const
inline

Вычислить след матрицы.

Работает только с квадратными матрицами.

Возвращает
след матрицы.

◆ toUpperTriangular()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::toUpperTriangular ( bool *  ok = 0)
inline

Преобразование матрицы в верхнетреугольную.

Работает только с квадратными, ненулевыми и обратимыми матрицами.

Аргументы
okэто параметр, с помощью которого мы можем узнать, правильно ли сработал метод.
Возвращает
преобразованная верхнетреугольная матрицы.

◆ invert()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::invert ( bool *  ok = 0)
inline

Операция обращения матрицы.

Работает только с квадратными, ненулевыми и обратимыми матрицами.

Аргументы
okэто параметр, с помощью которого мы можем узнать, правильно ли сработал метод.
Возвращает
обратная матрица.

◆ inverted()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::inverted ( bool *  ok = 0) const
inline

Операция обращения матрицы.

Работает только с квадратными, ненулевыми и обратимыми матрицами.

Аргументы
okэто параметр, с помощью которого мы можем узнать, правильно ли сработал метод.
Возвращает
копия обратной матрицы.

◆ transposed()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Cols, Rows, Type > PIMathMatrixT< Rows, Cols, Type >::transposed ( ) const
inline

Транспонирование матрицы.

Работает только с квадратными матрицами.

Возвращает
Копия транспонированной матрицы.

◆ rotate()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::rotate ( Type  angle)
inline

Операция поворота матрицы.

Работает только с матрицами 2x2.

Возвращает
Эта повернутая матрица.

◆ rotated()

template<uint Rows, uint Cols = Rows, typename Type = double>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::rotated ( Type  angle)
inline

Операция поворота матрицы.

Работает только с матрицами 2x2.

Возвращает
Копия повернутой матрицы.

◆ submatrix()

template<uint Rows, uint Cols = Rows, typename Type = double>
template<uint SubRows, uint SubCols = SubRows>
PIMathMatrixT< SubRows, SubCols, Type > PIMathMatrixT< Rows, Cols, Type >::submatrix ( int  row_offset = 0,
int  col_offset = 0 
) const
inline

Возвращает подматрицу с размерами SubRows x SubCols. Элементы берутся с координат "row_offset" и "col_offset".

Координаты могут быть отрицательными. Возвращаемая матрица может быть любого размера. Если исходные элементы выходят за границы исходной матрицы, то в подматрице будут нули.

◆ setSubmatrix()

template<uint Rows, uint Cols = Rows, typename Type = double>
template<uint SubRows, uint SubCols = SubRows>
PIMathMatrixT< Rows, Cols, Type > & PIMathMatrixT< Rows, Cols, Type >::setSubmatrix ( int  row_index,
int  col_index,
const PIMathMatrixT< SubRows, SubCols, Type > &  m 
)
inline

Устанавливает подматрицу "m" в координаты "row_index" и "col_index".

Присваивает значения из матрицы "m" в прямоугольную область текущией матрицы, ограниченную размерами "m", самой матрицы и границами, исходя из координат установки. Координаты могут быть отрицательными. Матрица "m" может быть любого размера. Возвращает ссылку на эту матрицу.