Function geo_nd::matrix::inverse4

source ·
pub fn inverse4<V: Float>(m: &[V; 16]) -> [V; 16]
Expand description

Find the inverse of a 4-by-4 matrix

Example

use geo_nd::vector::{length, sub};
use geo_nd::matrix::{identity4, inverse4, multiply4, MatrixType};
let i = identity4();
assert!( length(&sub(inverse4(&i), &i, 1.)) < 1E-8 );
for a in &[ [1.,0.,0.,0., 0.,1.,0.,0., 0.,0.,0.,1., 0.,0.,1.,0.],
            [1.,0.,0.,0., 0.,1.,0.,0., 0.,0.,1.,1., 0.,0.,1.,0.],
            [1.,0.,0.,0., 0.,1.,0.,0., 0.,0.,1.,0., 0.,0.,1.,1.],
            [1.,3.,2.,1., 0.,2.,3.,3., -1.,2.,3.,2., 0.,0.,2.,1.] ] {
    let a_inv = inverse4(&a);
    assert!( length(&sub(multiply4(&a_inv,&a), &i, 1.)) < 1E-6 );
}