Matrix22¶
#include <Imath/ImathMatrix.h>
The Matrix22
class template represents a 2x2 matrix, with
predefined typedefs for float
and double
.
There are also various utility functions that operate on matrices
defined in ImathMatrixAlgo.h
and described in Matrix
Functions.
Example:
#include <Imath/ImathMatrix.h>
#include <Imath/ImathMatrixAlgo.h>
void
matrix22_example()
{
Imath::M22f M (Imath::UNINITIALIZED); // uninitialized
M.makeIdentity();
assert (M[0][0] == 1.0f);
assert (M[0][1] == 0.0f);
Imath::M22f Minv = M.inverse();
Imath::M22f R;
assert (R == Imath::identity22f);
R.rotate (M_PI/4);
M = R * M;
Imath::V2f v2 (1.0f, 0.0f);
Imath::V2f r2 = v2 * M;
assert (r2.equalWithAbsError (Imath::V2f (0.707107f, 0.707107f), 1e-6f));
}
-
template<class
T
>
classImath
::
Matrix22
¶ 2x2 transformation matrix
Constructors and Assignment
-
inline
Matrix22
(Uninitialized) noexcept¶ Uninitialized.
-
inline constexpr
Matrix22
() noexcept¶ Default constructor: initialize to identity.
1 0 0 1
-
inline constexpr
Matrix22
(const T a[2][2]) noexcept¶ Construct from 2x2 array:
a[0][0] a[0][1] a[1][0] a[1][1]
-
template<class
S
>
inline explicit constexprMatrix22
(const Matrix22<S> &v) noexcept¶ Construct from Matrix22 of another base type.
-
~Matrix22
() noexcept = default¶ Destructor.
Compatibility with Sb
Arithmetic and Comparison
-
inline constexpr bool
equalWithAbsError
(const Matrix22<T> &v, T e) const noexcept¶ Compare two matrices and test if they are “approximately equal”:
- Return
True if the coefficients of this and
m
are the same with an absolute error of no more than e, i.e., for all i, j:abs (this[i][j] - m[i][j]) <= e
-
inline constexpr bool
equalWithRelError
(const Matrix22<T> &v, T e) const noexcept¶ Compare two matrices and test if they are “approximately equal”:
- Return
True if the coefficients of this and m are the same with a relative error of no more than e, i.e., for all i, j:
abs (this[i] - v[i][j]) <= e * abs (this[i][j])
-
inline constexpr const Matrix22 &
operator-=
(const Matrix22 &v) noexcept¶ Component-wise subtraction.
-
inline constexpr const Matrix22 &
operator*=
(const Matrix22 &v) noexcept¶ Matrix-matrix multiplication.
Maniplation
-
inline void
makeIdentity
() noexcept¶ Set to the identity.
-
inline constexpr const Matrix22 &
invert
(bool singExc)¶ Invert in place.
- Return
const reference to this
- Parameters
singExc
: If true, throw an exception if the matrix cannot be inverted.
-
inline constexpr Matrix22<T>
inverse
(bool singExc) const¶ Return the inverse, leaving this unmodified.
- Parameters
singExc
: If true, throw an exception if the matrix cannot be inverted.
-
template<class
S
>
const Matrix22 &setRotation
(S r) noexcept¶ Set matrix to rotation by r (in radians)
- Return
const referenced to this
-
template<class
S
>
constexpr const Matrix22 &rotate
(S r) noexcept¶ Rotate the given matrix by r (in radians)
- Return
const referenced to this
-
inline constexpr const Matrix22 &
setScale
(T s) noexcept¶ Set matrix to scale by given uniform factor.
- Return
const referenced to this
Numeric Limits
-
static inline constexpr static T baseTypeLowest () noexcept
Largest possible negative value.
-
static inline constexpr static T baseTypeMax () noexcept
Largest possible positive value.
-
static inline constexpr static T baseTypeSmallest () noexcept
Smallest possible positive value.
-
static inline constexpr static T baseTypeEpsilon () noexcept
Smallest possible e for which 1+e != 1.
Public Types
Public Functions
Public Static Functions
-
static inline constexpr static unsigned int dimensions () noexcept
Return the number of the row and column dimensions, i.e. 2.
-
inline