PIP 5.9.0
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>
PIMathMatrixT< Rows, Cols, Type > PIMathMatrixT< Rows, Cols, Type >::identity ( )
inlinestatic

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

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

◆ cols()

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

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

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

◆ rows()

template<uint Rows, uint Cols = Rows, typename Type = double>
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.
См. также
col()

◆ 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()

◆ 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").

Аргументы
cfномер первого выбранного столбца.
csномер второго выбранного столбца.
Возвращает
матрица типа PIMathMatrixT<Rows, Cols, Type>.
См. также
swapRows()

◆ 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>
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.
См. также
isIdentity()

◆ 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номер столбца матрицы.
Возвращает
элемент матрицы.
См. также
at(), element(uint, uint) const

◆ 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номер столбца матрицы.
Возвращает
копия элемента матрицы.
См. также
at(), element(uint, uint)

◆ 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" может быть любого размера. Возвращает ссылку на эту матрицу.