[][src]Trait ngen::math::SquareMatrix

pub trait SquareMatrix: One<Output = Self::ColumnRow, Output = Self> + Product<Self> + Matrix<Column = Self::ColumnRow, Row = Self::ColumnRow, Transpose = Self> + Mul<Self::ColumnRow> + Mul<Self> where
    Self::Scalar: BaseFloat
{ type ColumnRow: Array + VectorSpace; fn from_value(value: Self::Scalar) -> Self;
fn from_diagonal(diagonal: Self::ColumnRow) -> Self;
fn transpose_self(&mut self);
fn determinant(&self) -> Self::Scalar;
fn diagonal(&self) -> Self::ColumnRow;
fn invert(&self) -> Option<Self>;
fn is_diagonal(&self) -> bool;
fn is_symmetric(&self) -> bool; fn identity() -> Self { ... }
fn trace(&self) -> Self::Scalar { ... }
fn is_invertible(&self) -> bool { ... }
fn is_identity(&self) -> bool { ... } }

A column-major major matrix where the rows and column vectors are of the same dimensions.

Associated Types

type ColumnRow: Array + VectorSpace

The row/column vector of the matrix.

This is used to constrain the column and rows to be of the same type in lieu of equality constraints being implemented for where clauses. Once those are added, this type will likely go away.

Loading content...

Required methods

fn from_value(value: Self::Scalar) -> Self

Create a new diagonal matrix using the supplied value.

fn from_diagonal(diagonal: Self::ColumnRow) -> Self

Create a matrix from a non-uniform scale

fn transpose_self(&mut self)

Transpose this matrix in-place.

fn determinant(&self) -> Self::Scalar

Take the determinant of this matrix.

fn diagonal(&self) -> Self::ColumnRow

Return a vector containing the diagonal of this matrix.

fn invert(&self) -> Option<Self>

Invert this matrix, returning a new matrix. m.mul_m(m.invert()) is the identity matrix. Returns None if this matrix is not invertible (has a determinant of zero).

fn is_diagonal(&self) -> bool

Test if this is a diagonal matrix. That is, every element outside of the diagonal is 0.

fn is_symmetric(&self) -> bool

Test if this matrix is symmetric. That is, it is equal to its transpose.

Loading content...

Provided methods

fn identity() -> Self

The identity matrix. Multiplying this matrix with another should have no effect.

Note that this is exactly the same as One::one. The term 'identity matrix' is more common though, so we provide this method as an alternative.

fn trace(&self) -> Self::Scalar

Return the trace of this matrix. That is, the sum of the diagonal.

fn is_invertible(&self) -> bool

Test if this matrix is invertible.

fn is_identity(&self) -> bool

Test if this matrix is the identity matrix. That is, it is diagonal and every element in the diagonal is one.

Loading content...

Implementations on Foreign Types

impl<S> SquareMatrix for Matrix3<S> where
    S: BaseFloat
[src]

type ColumnRow = Vector3<S>

impl<S> SquareMatrix for Matrix2<S> where
    S: BaseFloat
[src]

type ColumnRow = Vector2<S>

impl<S> SquareMatrix for Matrix4<S> where
    S: BaseFloat
[src]

type ColumnRow = Vector4<S>

Loading content...

Implementors

Loading content...