`#[repr(transparent)]pub struct Mat2(/* private fields */);`

## Expand description

A 2x2 column major matrix.

SIMD vector types are used for storage on supported platforms.

This type is 16 byte aligned.

## Implementations§

source§### impl Mat2

### impl Mat2

source#### pub const IDENTITY: Self = _

#### pub const IDENTITY: Self = _

A 2x2 identity matrix, where all diagonal elements are `1`

, and all off-diagonal elements are `0`

.

source#### pub const fn from_cols(x_axis: Vec2, y_axis: Vec2) -> Self

#### pub const fn from_cols(x_axis: Vec2, y_axis: Vec2) -> Self

Creates a 2x2 matrix from two column vectors.

source#### pub const fn from_cols_array(m: &[f32; 4]) -> Self

#### pub const fn from_cols_array(m: &[f32; 4]) -> Self

Creates a 2x2 matrix from a `[f32; 4]`

array stored in column major order.
If your data is stored in row major you will need to `transpose`

the returned
matrix.

source#### pub const fn to_cols_array(&self) -> [f32; 4]

#### pub const fn to_cols_array(&self) -> [f32; 4]

Creates a `[f32; 4]`

array storing data in column major order.
If you require data in row major order `transpose`

the matrix first.

source#### pub const fn from_cols_array_2d(m: &[[f32; 2]; 2]) -> Self

#### pub const fn from_cols_array_2d(m: &[[f32; 2]; 2]) -> Self

Creates a 2x2 matrix from a `[[f32; 2]; 2]`

2D array stored in column major order.
If your data is in row major order you will need to `transpose`

the returned
matrix.

source#### pub const fn to_cols_array_2d(&self) -> [[f32; 2]; 2]

#### pub const fn to_cols_array_2d(&self) -> [[f32; 2]; 2]

Creates a `[[f32; 2]; 2]`

2D array storing data in column major order.
If you require data in row major order `transpose`

the matrix first.

source#### pub const fn from_diagonal(diagonal: Vec2) -> Self

#### pub const fn from_diagonal(diagonal: Vec2) -> Self

Creates a 2x2 matrix with its diagonal set to `diagonal`

and all other entries set to 0.

source#### pub fn from_scale_angle(scale: Vec2, angle: f32) -> Self

#### pub fn from_scale_angle(scale: Vec2, angle: f32) -> Self

Creates a 2x2 matrix containing the combining non-uniform `scale`

and rotation of
`angle`

(in radians).

source#### pub fn from_angle(angle: f32) -> Self

#### pub fn from_angle(angle: f32) -> Self

Creates a 2x2 matrix containing a rotation of `angle`

(in radians).

source#### pub fn from_mat3(m: Mat3) -> Self

#### pub fn from_mat3(m: Mat3) -> Self

Creates a 2x2 matrix from a 3x3 matrix, discarding the 2nd row and column.

source#### pub fn from_mat3_minor(m: Mat3, i: usize, j: usize) -> Self

#### pub fn from_mat3_minor(m: Mat3, i: usize, j: usize) -> Self

Creates a 2x2 matrix from the minor of the given 3x3 matrix, discarding the `i`

th column
and `j`

th row.

##### Panics

Panics if `i`

or `j`

is greater than 2.

source#### pub fn from_mat3a(m: Mat3A) -> Self

#### pub fn from_mat3a(m: Mat3A) -> Self

Creates a 2x2 matrix from a 3x3 matrix, discarding the 2nd row and column.

source#### pub fn from_mat3a_minor(m: Mat3A, i: usize, j: usize) -> Self

#### pub fn from_mat3a_minor(m: Mat3A, i: usize, j: usize) -> Self

Creates a 2x2 matrix from the minor of the given 3x3 matrix, discarding the `i`

th column
and `j`

th row.

##### Panics

Panics if `i`

or `j`

is greater than 2.

source#### pub const fn from_cols_slice(slice: &[f32]) -> Self

#### pub const fn from_cols_slice(slice: &[f32]) -> Self

Creates a 2x2 matrix from the first 4 values in `slice`

.

##### Panics

Panics if `slice`

is less than 4 elements long.

source#### pub fn write_cols_to_slice(self, slice: &mut [f32])

#### pub fn write_cols_to_slice(self, slice: &mut [f32])

Writes the columns of `self`

to the first 4 elements in `slice`

.

##### Panics

Panics if `slice`

is less than 4 elements long.

source#### pub fn col_mut(&mut self, index: usize) -> &mut Vec2

#### pub fn col_mut(&mut self, index: usize) -> &mut Vec2

Returns a mutable reference to the matrix column for the given `index`

.

##### Panics

Panics if `index`

is greater than 1.

source#### pub fn is_finite(&self) -> bool

#### pub fn is_finite(&self) -> bool

Returns `true`

if, and only if, all elements are finite.
If any element is either `NaN`

, positive or negative infinity, this will return `false`

.

source#### pub fn determinant(&self) -> f32

#### pub fn determinant(&self) -> f32

Returns the determinant of `self`

.

source#### pub fn inverse(&self) -> Self

#### pub fn inverse(&self) -> Self

Returns the inverse of `self`

.

If the matrix is not invertible the returned matrix will be invalid.

##### Panics

Will panic if the determinant of `self`

is zero when `glam_assert`

is enabled.

source#### pub fn mul_scalar(&self, rhs: f32) -> Self

#### pub fn mul_scalar(&self, rhs: f32) -> Self

Multiplies a 2x2 matrix by a scalar.

source#### pub fn div_scalar(&self, rhs: f32) -> Self

#### pub fn div_scalar(&self, rhs: f32) -> Self

Divides a 2x2 matrix by a scalar.

source#### pub fn abs_diff_eq(&self, rhs: Self, max_abs_diff: f32) -> bool

#### pub fn abs_diff_eq(&self, rhs: Self, max_abs_diff: f32) -> bool

Returns true if the absolute difference of all elements between `self`

and `rhs`

is less than or equal to `max_abs_diff`

.

This can be used to compare if two matrices contain similar elements. It works best
when comparing with a known value. The `max_abs_diff`

that should be used used
depends on the values being compared against.

For more see comparing floating point numbers.

#### pub fn as_dmat2(&self) -> DMat2

## Trait Implementations§

source§### impl AddAssign<Mat2> for Mat2

### impl AddAssign<Mat2> for Mat2

source§#### fn add_assign(&mut self, rhs: Self)

#### fn add_assign(&mut self, rhs: Self)

`+=`

operation. Read moresource§### impl DivAssign<f32> for Mat2

### impl DivAssign<f32> for Mat2

source§#### fn div_assign(&mut self, rhs: f32)

#### fn div_assign(&mut self, rhs: f32)

`/=`

operation. Read moresource§### impl MulAssign<Mat2> for Mat2

### impl MulAssign<Mat2> for Mat2

source§#### fn mul_assign(&mut self, rhs: Self)

#### fn mul_assign(&mut self, rhs: Self)

`*=`

operation. Read moresource§### impl MulAssign<f32> for Mat2

### impl MulAssign<f32> for Mat2

source§#### fn mul_assign(&mut self, rhs: f32)

#### fn mul_assign(&mut self, rhs: f32)

`*=`

operation. Read moresource§### impl SubAssign<Mat2> for Mat2

### impl SubAssign<Mat2> for Mat2

source§#### fn sub_assign(&mut self, rhs: Self)

#### fn sub_assign(&mut self, rhs: Self)

`-=`

operation. Read more