pub struct Matrix4x4 {
pub col1: Vector4,
pub col2: Vector4,
pub col3: Vector4,
pub col4: Vector4,
}
Expand description
A column-major 4x4 matrix of contiguous floats.
Fields§
§col1: Vector4
§col2: Vector4
§col3: Vector4
§col4: Vector4
Implementations§
source§impl Matrix4x4
impl Matrix4x4
sourcepub fn identity() -> Matrix4x4
pub fn identity() -> Matrix4x4
The identity transformation matrix.
use ssbh_lib::{Vector4, Matrix4x4};
let m = Matrix4x4::identity();
assert_eq!(Vector4::new(1f32, 0f32, 0f32, 0f32), m.col1);
assert_eq!(Vector4::new(0f32, 1f32, 0f32, 0f32), m.col2);
assert_eq!(Vector4::new(0f32, 0f32, 1f32, 0f32), m.col3);
assert_eq!(Vector4::new(0f32, 0f32, 0f32, 1f32), m.col4);
sourcepub fn to_cols_array(&self) -> [[f32; 4]; 4]
pub fn to_cols_array(&self) -> [[f32; 4]; 4]
Converts the elements to a 2d array in column-major order.
use ssbh_lib::{Vector4, Matrix4x4};
let m = Matrix4x4 {
col1: Vector4::new(1f32, 2f32, 3f32, 4f32),
col2: Vector4::new(5f32, 6f32, 7f32, 8f32),
col3: Vector4::new(9f32, 10f32, 11f32, 12f32),
col4: Vector4::new(13f32, 14f32, 15f32, 16f32),
};
assert_eq!(
[
[1f32, 2f32, 3f32, 4f32],
[5f32, 6f32, 7f32, 8f32],
[9f32, 10f32, 11f32, 12f32],
[13f32, 14f32, 15f32, 16f32],
],
m.to_cols_array(),
);
sourcepub fn from_cols_array(cols: &[[f32; 4]; 4]) -> Matrix4x4
pub fn from_cols_array(cols: &[[f32; 4]; 4]) -> Matrix4x4
Creates the matrix from a 2d array in column-major order.
let elements = [
[1f32, 2f32, 3f32, 4f32],
[5f32, 6f32, 7f32, 8f32],
[9f32, 10f32, 11f32, 12f32],
[13f32, 14f32, 15f32, 16f32],
];
let m = Matrix4x4::from_cols_array(&elements);
assert_eq!(elements, m.to_cols_array());
Trait Implementations§
source§impl BinRead for Matrix4x4
impl BinRead for Matrix4x4
source§fn read_options<R: Read + Seek>(
__binrw_generated_var_reader: &mut R,
__binrw_generated_var_endian: Endian,
__binrw_generated_var_arguments: Self::Args<'_>
) -> BinResult<Self>
fn read_options<R: Read + Seek>( __binrw_generated_var_reader: &mut R, __binrw_generated_var_endian: Endian, __binrw_generated_var_arguments: Self::Args<'_> ) -> BinResult<Self>
source§fn read_be<R>(reader: &mut R) -> Result<Self, Error>
fn read_be<R>(reader: &mut R) -> Result<Self, Error>
Read
Self
from the reader using default arguments and assuming
big-endian byte order. Read moresource§fn read_le<R>(reader: &mut R) -> Result<Self, Error>
fn read_le<R>(reader: &mut R) -> Result<Self, Error>
Read
Self
from the reader using default arguments and assuming
little-endian byte order. Read moresource§fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
Read
T
from the reader assuming native-endian byte order. Read moresource§fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
Read
Self
from the reader, assuming big-endian byte order, using the
given arguments. Read moresource§impl PartialEq for Matrix4x4
impl PartialEq for Matrix4x4
source§impl SsbhWrite for Matrix4x4
impl SsbhWrite for Matrix4x4
source§fn ssbh_write<W: Write + Seek>(
&self,
writer: &mut W,
data_ptr: &mut u64
) -> Result<()>
fn ssbh_write<W: Write + Seek>( &self, writer: &mut W, data_ptr: &mut u64 ) -> Result<()>
Writes the byte representation of
self
to writer
.
data_ptr
is assumed to be the absolute offset where the next data stored behind an offset will be written.
Struct that contains no offsets as fields can skip updating data_ptr
. Read moresource§fn size_in_bytes(&self) -> u64
fn size_in_bytes(&self) -> u64
The offset in bytes between successive elements in an array of this type.
This should include any alignment or padding.
source§fn alignment_in_bytes() -> u64
fn alignment_in_bytes() -> u64
The alignment for pointers of this type, which is useful for offset calculations.
impl Copy for Matrix4x4
impl StructuralPartialEq for Matrix4x4
Auto Trait Implementations§
impl RefUnwindSafe for Matrix4x4
impl Send for Matrix4x4
impl Sync for Matrix4x4
impl Unpin for Matrix4x4
impl UnwindSafe for Matrix4x4
Blanket Implementations§
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
Mutably borrows from an owned value. Read more