Struct siege_math::matrix::Mat4
[−]
[src]
#[repr(C)]pub struct Mat4<F> { pub x: Vec4<F>, pub y: Vec4<F>, pub z: Vec4<F>, pub p: Vec4<F>, }
A 4x4 matrix
This matrix is internally stored column-major (as that is better for GPU compatibility and possibly other reasons), but the API (e.g. the order of function parameters to the new() function) is row-major, since that is how people write matrices on paper.
Fields
x: Vec4<F>
y: Vec4<F>
z: Vec4<F>
p: Vec4<F>
Methods
impl<F: FullFloat> Mat4<F>
[src]
pub fn new(
r0c0: F,
r0c1: F,
r0c2: F,
r0c3: F,
r1c0: F,
r1c1: F,
r1c2: F,
r1c3: F,
r2c0: F,
r2c1: F,
r2c2: F,
r2c3: F,
r3c0: F,
r3c1: F,
r3c2: F,
r3c3: F
) -> Mat4<F>
[src]
r0c0: F,
r0c1: F,
r0c2: F,
r0c3: F,
r1c0: F,
r1c1: F,
r1c2: F,
r1c3: F,
r2c0: F,
r2c1: F,
r2c2: F,
r2c3: F,
r3c0: F,
r3c1: F,
r3c2: F,
r3c3: F
) -> Mat4<F>
Create a new 4x4 Matrix. Specify parameters in row-major order (as typically written on paper and in math texts)
pub fn from_cols(x: Vec4<F>, y: Vec4<F>, z: Vec4<F>, p: Vec4<F>) -> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn from_components(
x_dir: Direction3<F>,
y_dir: Direction3<F>,
z_dir: Direction3<F>,
pos: Point3<F>
) -> Mat4<F>
[src]
x_dir: Direction3<F>,
y_dir: Direction3<F>,
z_dir: Direction3<F>,
pos: Point3<F>
) -> Mat4<F>
pub fn from_mat3(mat3: Mat3<F>, pos: Point3<F>) -> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn is_diagonal(&self) -> bool
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn is_symmetric(&self) -> bool
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn is_skew_symmetric(&self) -> bool
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn get_translation(&self) -> Point3<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn set_translation(&mut self, p: Point3<F>)
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn from_angle_x(theta: Angle<F>) -> Mat4<F>
[src]
pub fn from_angle_y(theta: Angle<F>) -> Mat4<F>
[src]
pub fn from_angle_z(theta: Angle<F>) -> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn rotate_axis_angle(axis: Direction3<F>, theta: Angle<F>) -> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
impl<F: FullFloat> Mat4<F>
[src]
pub fn get_x_scale(&self) -> F
[src]
pub fn get_y_scale(&self) -> F
[src]
pub fn get_z_scale(&self) -> F
[src]
impl<F: FullFloat> Mat4<F>
[src]
Trait Implementations
impl<F: Debug> Debug for Mat4<F>
[src]
fn fmt(&self, __arg_0: &mut Formatter) -> Result
[src]
Formats the value using the given formatter. Read more
impl<F: Clone> Clone for Mat4<F>
[src]
fn clone(&self) -> Mat4<F>
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<F: Copy> Copy for Mat4<F>
[src]
impl<F: PartialEq> PartialEq for Mat4<F>
[src]
fn eq(&self, __arg_0: &Mat4<F>) -> bool
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &Mat4<F>) -> bool
[src]
This method tests for !=
.
impl<F: Eq> Eq for Mat4<F>
[src]
impl<F: Hash> Hash for Mat4<F>
[src]
fn hash<__HF: Hasher>(&self, __arg_0: &mut __HF)
[src]
Feeds this value into the given [Hasher
]. Read more
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl<F: FullFloat> Index<(usize, usize)> for Mat4<F>
[src]
type Output = F
The returned type after indexing.
fn index(&self, (row, col): (usize, usize)) -> &F
[src]
Performs the indexing (container[index]
) operation.
impl<F: FullFloat> IndexMut<(usize, usize)> for Mat4<F>
[src]
fn index_mut(&mut self, (row, col): (usize, usize)) -> &mut F
[src]
Performs the mutable indexing (container[index]
) operation.
impl<F: FullFloat> Default for Mat4<F>
[src]
impl<'a, 'b, F: FullFloat> Add<&'b Mat4<F>> for &'a Mat4<F>
[src]
type Output = Mat4<F>
The resulting type after applying the +
operator.
fn add(self, rhs: &Mat4<F>) -> Mat4<F>
[src]
Performs the +
operation.
impl<'a, F: FullFloat> Mul<F> for &'a Mat4<F>
[src]
type Output = Mat4<F>
The resulting type after applying the *
operator.
fn mul(self, rhs: F) -> Mat4<F>
[src]
Performs the *
operation.
impl<'a, 'b, F: FullFloat> Mul<&'b Mat4<F>> for &'a Mat4<F>
[src]
type Output = Mat4<F>
The resulting type after applying the *
operator.
fn mul(self, rhs: &Mat4<F>) -> Mat4<F>
[src]
Performs the *
operation.
impl<'a, 'b, F: FullFloat> Mul<&'a Vec4<F>> for &'b Mat4<F>
[src]
type Output = Vec4<F>
The resulting type after applying the *
operator.
fn mul(self, rhs: &Vec4<F>) -> Vec4<F>
[src]
Performs the *
operation.
impl<'a, 'b, F: FullFloat> Mul<&'a Mat4<F>> for &'a Vec4<F>
[src]
type Output = Vec4<F>
The resulting type after applying the *
operator.
fn mul(self, rhs: &Mat4<F>) -> Vec4<F>
[src]
Performs the *
operation.
impl From<Mat4<f32>> for Mat4<f64>
[src]
impl From<Mat4<f64>> for Mat4<f32>
[src]
impl<F: FullFloat> ApproxEq for Mat4<F>
[src]
type Flt = F
fn approx_eq(
&self,
other: &Self,
epsilon: <F as ApproxEq>::Flt,
ulps: <<F as ApproxEq>::Flt as Ulps>::U
) -> bool
[src]
&self,
other: &Self,
epsilon: <F as ApproxEq>::Flt,
ulps: <<F as ApproxEq>::Flt as Ulps>::U
) -> bool
This method tests for self
and other
values to be approximately equal using two methods: epsilon and ulps. If the values differ by less than the given epsilon, they will be considered equal. If the values differ by more than epsilon, but by less than the given ulps, they will also be considered equal. Otherwise they are unequal. Read more
fn approx_ne(
&self,
other: &Self,
epsilon: Self::Flt,
ulps: <Self::Flt as Ulps>::U
) -> bool
[src]
&self,
other: &Self,
epsilon: Self::Flt,
ulps: <Self::Flt as Ulps>::U
) -> bool
This method tests for self
and other
values to be not approximately equal using two methods: epsilon and ulps. If the values differ by less than the given epsilon, they will be considered equal. If the values differ by more than epsilon, but by less than the given ulps, they will also be considered equal. Otherwise they are unequal. Read more