template<typename Scalar, size_t Rows, size_t Columns>
stim::matrix struct

A NxM-dimensional matrix.

Template parameters
Scalar The matrix's scalar type.
Rows The number of rows in the matrix.
Columns The number of columns in the matrix.

Public types

using column_type = vector<scalar_type, rows>
The matrix's column-vector type.
using row_type = vector<scalar_type, columns>
The matrix's row-vector type.
using scalar_type = Scalar
The matrix's scalar type.

Public static variables

static size_t columns constexpr
The number of columns in the matrix.
static size_t rows constexpr
The number of rows in the matrix.

Public static functions

static auto identity() -> const matrix& noexcept
Returns the identity matrix.

Constructors, destructors, conversion operators

matrix() defaulted noexcept
Default constructor. Does not initialize the matrix.
matrix(const matrix&) defaulted constexpr noexcept
Copy constructor.
matrix(const column_type& x_col, const column_type& y_col, const column_type& z_col) constexpr noexcept
Columnwise constructor for 3x3 matrices.
matrix(const scalar_type* x_col, const scalar_type* y_col, const scalar_type* z_col) constexpr noexcept
Columnwise pointer-to-scalars constructor for 3x3 matrices.
matrix(const column_type& x_col, const column_type& y_col, const column_type& z_col, const column_type& translation = column_type{}) constexpr noexcept
Columnwise constructor for 4x4 matrices.
matrix(const scalar_type* x_col, const scalar_type* y_col, const scalar_type* z_col, const scalar_type* translation = nullptr) constexpr noexcept
Columnwise pointer-to-scalars constructor for 4x4 matrices.
matrix(const scalar_type* m) explicit constexpr noexcept
Pointer-to-scalars constructor.
operator bool() const explicit constexpr noexcept
Returns true if any of the matrix's scalar components are non-zero.

Public functions

auto data() -> scalar_type* noexcept
Returns a pointer to the first scalar in the matrix.
auto data() const -> constscalar_type* constexpr noexcept
Returns a pointer to the first scalar in the matrix (const overload).
auto operator()(size_t row, size_t col) -> scalar_type& noexcept
Scalar operator.
auto operator()(size_t row, size_t col) const -> constscalar_type& constexpr noexcept
Scalar operator (const overload).
auto operator=(const matrix&) -> matrix& defaulted noexcept
Copy-assignment operator.
auto translation_column() -> column_type& constexpr noexcept
Returns a reference to the Translation column.
auto translation_column() const -> constcolumn_type& constexpr noexcept
Returns a reference to the Translation column (const overload).
auto x_column() -> column_type& noexcept
Returns a reference to the X column.
auto x_column() const -> constcolumn_type& constexpr noexcept
Returns a reference to the X column (const overload).
auto y_column() -> column_type& noexcept
Returns a reference to the Y column.
auto y_column() const -> constcolumn_type& constexpr noexcept
Returns a reference to the Y column (const overload).
auto z_column() -> column_type& noexcept
Returns a reference to the Z column.
auto z_column() const -> constcolumn_type& constexpr noexcept
Returns a reference to the Z column (const overload).

Public variables

column_type cols
The scalar values in the matrix, stored as column vectors.

Compatibility with UE4

template<typename S = Scalar>
matrix(const ::TMatrix<Columns, Rows>& mat) noexcept
Constructs a matrix from a UE4 TMatrix.
template<typename S = Scalar>
matrix(const ::FMatrix& mat) noexcept
Constructs a 4x4 matrix from a UE4 FMatrix.
template<typename S = Scalar>
operator::FMatrix() const noexcept
Converts a 4x4 matrix into a UE4 FMatrix.
template<typename S = Scalar>
operator::TMatrix() const noexcept
Converts a matrix into a UE4 TMatrix.

Function documentation

template<typename Scalar, size_t Rows, size_t Columns>
stim::matrix<Scalar, Rows, Columns>::matrix(const column_type& x_col, const column_type& y_col, const column_type& z_col) constexpr noexcept

Columnwise constructor for 3x3 matrices.

template<typename Scalar, size_t Rows, size_t Columns>
stim::matrix<Scalar, Rows, Columns>::matrix(const scalar_type* x_col, const scalar_type* y_col, const scalar_type* z_col) constexpr noexcept

Columnwise pointer-to-scalars constructor for 3x3 matrices.

template<typename Scalar, size_t Rows, size_t Columns>
stim::matrix<Scalar, Rows, Columns>::matrix(const column_type& x_col, const column_type& y_col, const column_type& z_col, const column_type& translation = column_type{}) constexpr noexcept

Columnwise constructor for 4x4 matrices.

template<typename Scalar, size_t Rows, size_t Columns>
stim::matrix<Scalar, Rows, Columns>::matrix(const scalar_type* x_col, const scalar_type* y_col, const scalar_type* z_col, const scalar_type* translation = nullptr) constexpr noexcept

Columnwise pointer-to-scalars constructor for 4x4 matrices.

template<typename Scalar, size_t Rows, size_t Columns>
column_type& stim::matrix<Scalar, Rows, Columns>::translation_column() constexpr noexcept

Returns a reference to the Translation column.

template<typename Scalar, size_t Rows, size_t Columns>
constcolumn_type& stim::matrix<Scalar, Rows, Columns>::translation_column() const constexpr noexcept

Returns a reference to the Translation column (const overload).

template<typename Scalar, size_t Rows, size_t Columns>
template<typename S = Scalar>
stim::matrix<Scalar, Rows, Columns>::matrix(const ::TMatrix<Columns, Rows>& mat) noexcept

Constructs a matrix from a UE4 TMatrix.

template<typename Scalar, size_t Rows, size_t Columns>
template<typename S = Scalar>
stim::matrix<Scalar, Rows, Columns>::matrix(const ::FMatrix& mat) noexcept

Constructs a 4x4 matrix from a UE4 FMatrix.

template<typename Scalar, size_t Rows, size_t Columns>
template<typename S = Scalar>
stim::matrix<Scalar, Rows, Columns>::operator::FMatrix() const noexcept

Converts a 4x4 matrix into a UE4 FMatrix.

template<typename Scalar, size_t Rows, size_t Columns>
template<typename S = Scalar>
stim::matrix<Scalar, Rows, Columns>::operator::TMatrix() const noexcept

Converts a matrix into a UE4 TMatrix.