```
#[repr(C)]pub struct DMat2 {
pub x_axis: DVec2,
pub y_axis: DVec2,
}
```

## Expand description

A 2x2 column major matrix.

## Fields§

§`x_axis: DVec2`

§`y_axis: DVec2`

## Implementations§

source§### impl DMat2

### impl DMat2

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: DVec2, y_axis: DVec2) -> Self

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

Creates a 2x2 matrix from two column vectors.

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

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

Creates a 2x2 matrix from a `[f64; 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) -> [f64; 4]

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

Creates a `[f64; 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: &[[f64; 2]; 2]) -> Self

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

Creates a 2x2 matrix from a `[[f64; 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) -> [[f64; 2]; 2]

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

Creates a `[[f64; 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: DVec2) -> Self

#### pub const fn from_diagonal(diagonal: DVec2) -> 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: DVec2, angle: f64) -> Self

#### pub fn from_scale_angle(scale: DVec2, angle: f64) -> Self

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

and rotation of
`angle`

(in radians).

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

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

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

(in radians).

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

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

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

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

#### pub fn from_mat3_minor(m: DMat3, 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: &[f64]) -> Self

#### pub const fn from_cols_slice(slice: &[f64]) -> 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 [f64])

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

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 DVec2

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

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) -> f64

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

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: f64) -> Self

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

Multiplies a 2x2 matrix by a scalar.

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

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

Divides a 2x2 matrix by a scalar.

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

#### pub fn abs_diff_eq(&self, rhs: Self, max_abs_diff: f64) -> 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_mat2(&self) -> Mat2

## Trait Implementations§

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

### impl AddAssign<DMat2> for DMat2

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

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

`+=`

operation. Read moresource§### impl DivAssign<f64> for DMat2

### impl DivAssign<f64> for DMat2

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

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

`/=`

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

### impl MulAssign<DMat2> for DMat2

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

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

`*=`

operation. Read moresource§### impl MulAssign<f64> for DMat2

### impl MulAssign<f64> for DMat2

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

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

`*=`

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

### impl SubAssign<DMat2> for DMat2

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

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

`-=`

operation. Read more