Struct ck::Mat4
[−]
[src]
pub struct Mat4 { pub elems: [Vec4; 4], }
Fields
elems: [Vec4; 4]
Methods
impl Mat4
[src]
fn new(a: Vec4, b: Vec4, c: Vec4, d: Vec4) -> Mat4
[src]
Create a new instance of Mat4
use ck::{Vec4, Mat4}; let v1 = Vec4::new( 1.0, 2.0, 3.0, 4.0); let v2 = Vec4::new( 5.0, 6.0, 7.0, 8.0); let v3 = Vec4::new( 9.0, 10.0, 11.0, 12.0); let v4 = Vec4::new(13.0, 14.0, 15.0, 16.0); let m = Mat4::new(v1, v2, v3, v4); assert_eq!(m[0].x, 1.0); assert_eq!(m[0].y, 2.0); assert_eq!(m[0].z, 3.0); assert_eq!(m[0].w, 4.0); assert_eq!(m[1][0], 5.0); assert_eq!(m[1][1], 6.0); assert_eq!(m[1][2], 7.0); assert_eq!(m[1][3], 8.0); assert_eq!(m[2].x, 9.0); assert_eq!(m[2].y, 10.0); assert_eq!(m[2].z, 11.0); assert_eq!(m[2].w, 12.0); assert_eq!(m[3][0], 13.0); assert_eq!(m[3][1], 14.0); assert_eq!(m[3][2], 15.0); assert_eq!(m[3][3], 16.0);
fn identity() -> Mat4
[src]
Create a new instance of the identity Mat4
use ck::{Vec4, Mat4}; let m = Mat4::identity(); assert_eq!(m[0][0], 1.0); assert_eq!(m[0][1], 0.0); assert_eq!(m[0][2], 0.0); assert_eq!(m[0][3], 0.0); assert_eq!(m[1][0], 0.0); assert_eq!(m[1][1], 1.0); assert_eq!(m[1][2], 0.0); assert_eq!(m[1][3], 0.0); assert_eq!(m[2][0], 0.0); assert_eq!(m[2][1], 0.0); assert_eq!(m[2][2], 1.0); assert_eq!(m[2][3], 0.0); assert_eq!(m[3][0], 0.0); assert_eq!(m[3][1], 0.0); assert_eq!(m[3][2], 0.0); assert_eq!(m[3][3], 1.0);
fn zero() -> Mat4
[src]
Create a new instance of the zero Mat4
use ck::{Vec4, Mat4}; let m = Mat4::zero(); assert_eq!(m[0][0], 0.0); assert_eq!(m[0][1], 0.0); assert_eq!(m[0][2], 0.0); assert_eq!(m[0][3], 0.0); assert_eq!(m[1][0], 0.0); assert_eq!(m[1][1], 0.0); assert_eq!(m[1][2], 0.0); assert_eq!(m[1][3], 0.0); assert_eq!(m[2][0], 0.0); assert_eq!(m[2][1], 0.0); assert_eq!(m[2][2], 0.0); assert_eq!(m[2][3], 0.0); assert_eq!(m[3][0], 0.0); assert_eq!(m[3][1], 0.0); assert_eq!(m[3][2], 0.0); assert_eq!(m[3][3], 0.0);
fn ortho(l: f32, r: f32, b: f32, t: f32, n: f32, f: f32) -> Mat4
[src]
fn raw(&self) -> [[f32; 4]; 4]
[src]
Get the raw data represented by a Mat4
use ck::{Vec4, Mat4}; let v1 = Vec4::new( 1.0, 2.0, 3.0, 4.0); let v2 = Vec4::new( 5.0, 6.0, 7.0, 8.0); let v3 = Vec4::new( 9.0, 10.0, 11.0, 12.0); let v4 = Vec4::new(13.0, 14.0, 15.0, 16.0); let m = Mat4::new(v1, v2, v3, v4); let r: [[f32; 4]; 4] = m.raw(); assert_eq!(m[0][0], r[0][0]); assert_eq!(m[0][1], r[0][1]); assert_eq!(m[0][2], r[0][2]); assert_eq!(m[0][3], r[0][3]); assert_eq!(m[1][0], r[1][0]); assert_eq!(m[1][1], r[1][1]); assert_eq!(m[1][2], r[1][2]); assert_eq!(m[1][3], r[1][3]); assert_eq!(m[2][0], r[2][0]); assert_eq!(m[2][1], r[2][1]); assert_eq!(m[2][2], r[2][2]); assert_eq!(m[2][3], r[2][3]); assert_eq!(m[3][0], r[3][0]); assert_eq!(m[3][1], r[3][1]); assert_eq!(m[3][2], r[3][2]); assert_eq!(m[3][3], r[3][3]);
Trait Implementations
impl Debug for Mat4
[src]
impl Index<usize> for Mat4
[src]
type Output = Vec4
The returned type after indexing.
fn index(&self, idx: usize) -> &Vec4
[src]
Indexing for Mat4 instead of field access by name
Examples
use ck::{Vec4, Mat4}; let v1 = Vec4::new( 1.0, 2.0, 3.0, 4.0); let v2 = Vec4::new( 5.0, 6.0, 7.0, 8.0); let v3 = Vec4::new( 9.0, 10.0, 11.0, 12.0); let v4 = Vec4::new(13.0, 14.0, 15.0, 16.0); let m = Mat4 { elems: [v1, v2, v3, v4] }; assert_eq!(m[0].x, 1.0); assert_eq!(m[0].y, 2.0); assert_eq!(m[0].z, 3.0); assert_eq!(m[0].w, 4.0); assert_eq!(m[1][0], 5.0); assert_eq!(m[1][1], 6.0); assert_eq!(m[1][2], 7.0); assert_eq!(m[1][3], 8.0); assert_eq!(m[2].x, 9.0); assert_eq!(m[2].y, 10.0); assert_eq!(m[2].z, 11.0); assert_eq!(m[2].w, 12.0); assert_eq!(m[3][0], 13.0); assert_eq!(m[3][1], 14.0); assert_eq!(m[3][2], 15.0); assert_eq!(m[3][3], 16.0);
impl IndexMut<usize> for Mat4
[src]
fn index_mut(&mut self, idx: usize) -> &mut Vec4
[src]
Mutable indexing for Mat4 instead of field access by name
Examples
use ck::{Vec4, Mat4}; let mut m = Mat4::new( Vec4::new(0.0, 0.0, 0.0, 0.0), Vec4::new(0.0, 0.0, 0.0, 0.0), Vec4::new(0.0, 0.0, 0.0, 0.0), Vec4::new(0.0, 0.0, 0.0, 0.0), ); let v1 = Vec4::new( 1.0, 2.0, 3.0, 4.0); let v2 = Vec4::new( 5.0, 6.0, 7.0, 8.0); let v3 = Vec4::new( 9.0, 10.0, 11.0, 12.0); let v4 = Vec4::new(13.0, 14.0, 15.0, 16.0); m[0] = v1; m[1] = v2; m[2] = v3; m[3] = v4; assert_eq!(m[0].x, 1.0); assert_eq!(m[0].y, 2.0); assert_eq!(m[0].z, 3.0); assert_eq!(m[0].w, 4.0); assert_eq!(m[1][0], 5.0); assert_eq!(m[1][1], 6.0); assert_eq!(m[1][2], 7.0); assert_eq!(m[1][3], 8.0); assert_eq!(m[2].x, 9.0); assert_eq!(m[2].y, 10.0); assert_eq!(m[2].z, 11.0); assert_eq!(m[2].w, 12.0); assert_eq!(m[3][0], 13.0); assert_eq!(m[3][1], 14.0); assert_eq!(m[3][2], 15.0); assert_eq!(m[3][3], 16.0);