#[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: DVec2Implementations§
Source§impl DMat2
impl DMat2
Sourcepub const IDENTITY: Self
pub const IDENTITY: Self
A 2x2 identity matrix, where all diagonal elements are 1, and all off-diagonal elements are 0.
Sourcepub 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.
See also Self::from_rows when the data is in row major order.
Sourcepub const fn from_rows(row0: DVec2, row1: DVec2) -> Self
pub const fn from_rows(row0: DVec2, row1: DVec2) -> Self
Creates a 2x2 matrix from two row vectors.
Matrices are stored in column major order, so the given rows are permuted into
the matrix layout. Use Self::from_cols instead when the data is already in
column major order.
Sourcepub 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 the data is in row major order use Self::from_rows_array instead.
Sourcepub 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 the data in row major order use Self::to_rows_array instead.
Sourcepub 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 the data is in row major order transpose the returned matrix.
Sourcepub 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 row major order transpose the matrix first.
Sourcepub const fn from_rows_array(m: &[f64; 4]) -> Self
pub const fn from_rows_array(m: &[f64; 4]) -> Self
Creates a 2x2 matrix from a [f64; 4] array stored in row major order.
Matrices are stored in column major order, so the array is permuted into the
matrix layout. Use Self::from_cols_array instead when the data is already in
column major order.
Sourcepub const fn to_rows_array(&self) -> [f64; 4]
pub const fn to_rows_array(&self) -> [f64; 4]
Creates a [f64; 4] array storing data in row major order.
Matrices are stored in column major order, so the array is permuted out of the
column major storage. Use Self::to_cols_array instead when you want data in
column major order.
Sourcepub 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.
Sourcepub 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).
Sourcepub fn from_angle(angle: f64) -> Self
pub fn from_angle(angle: f64) -> Self
Creates a 2x2 matrix containing a rotation of angle (in radians).
Sourcepub 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.
Sourcepub 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 ith column
and jth row.
§Panics
Panics if i or j is greater than 2.
Sourcepub 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.
See also Self::from_rows_slice when the slice is in row major order.
§Panics
Panics if slice is less than 4 elements long.
Sourcepub 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.
Sourcepub const fn from_rows_slice(slice: &[f64]) -> Self
pub const fn from_rows_slice(slice: &[f64]) -> Self
Creates a 2x2 matrix from the first 4 values in slice, stored in row
major order.
Matrices are stored in column major order, so the slice is permuted into the
matrix layout. Use Self::from_cols_slice instead when the slice is already in
column major order.
§Panics
Panics if slice is less than 4 elements long.
Sourcepub 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.
Sourcepub fn row(&self, index: usize) -> DVec2
pub fn row(&self, index: usize) -> DVec2
Returns the matrix row for the given index.
See also Self::set_row when you need to change the row.
§Panics
Panics if index is greater than 1.
Sourcepub fn set_row(&mut self, index: usize, row: DVec2)
pub fn set_row(&mut self, index: usize, row: DVec2)
Sets the matrix row for the given index.
Matrices are stored in column major order, so the row is spread across all
2 columns and writing it touches every column. Use Self::col_mut
instead when you can work with columns. See also Self::row.
§Panics
Panics if index is greater than 1.
Sourcepub 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.
Sourcepub fn determinant(&self) -> f64
pub fn determinant(&self) -> f64
Returns the determinant of self.
Sourcepub 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.
Sourcepub fn try_inverse(&self) -> Option<Self>
pub fn try_inverse(&self) -> Option<Self>
Returns the inverse of self or None if the matrix is not invertible.
Sourcepub fn inverse_or_zero(&self) -> Self
pub fn inverse_or_zero(&self) -> Self
Returns the inverse of self or DMat2::ZERO if the matrix is not invertible.
Sourcepub fn mul_transpose_vec2(&self, rhs: DVec2) -> DVec2
pub fn mul_transpose_vec2(&self, rhs: DVec2) -> DVec2
Transforms a 2D vector by the transpose of self.
Sourcepub fn mul_scalar(&self, rhs: f64) -> Self
pub fn mul_scalar(&self, rhs: f64) -> Self
Multiplies a 2x2 matrix by a scalar.
Sourcepub fn mul_diagonal_scale(&self, scale: DVec2) -> Self
pub fn mul_diagonal_scale(&self, scale: DVec2) -> Self
Multiply self by a scaling vector scale.
This is faster than creating a whole diagonal scaling matrix and then multiplying that.
This operation is commutative.
Sourcepub fn div_scalar(&self, rhs: f64) -> Self
pub fn div_scalar(&self, rhs: f64) -> Self
Divides a 2x2 matrix by a scalar.
Sourcepub fn recip(&self) -> Self
pub fn recip(&self) -> Self
Returns a matrix containing the reciprocal 1.0/n of each element of self.
Sourcepub 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 for DMat2
impl AddAssign for DMat2
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+= operation. Read moreSource§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 moreimpl Copy for DMat2
Source§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 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 for DMat2
impl MulAssign for DMat2
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*= 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 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 moreimpl Pod for DMat2
Source§impl SubAssign for DMat2
impl SubAssign for DMat2
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-= 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 moreAuto Trait Implementations§
impl Freeze for DMat2
impl RefUnwindSafe for DMat2
impl Send for DMat2
impl Sync for DMat2
impl Unpin for DMat2
impl UnsafeUnpin for DMat2
impl UnwindSafe for DMat2
Blanket Implementations§
impl<T> AnyBitPattern for Twhere
T: Pod,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
type Bits = T
Self must have the same layout as the specified Bits except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern.Source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self.