vanrijn/src/math/mat2.rs

34 lines
913 B
Rust

#[derive(PartialEq, Debug, Copy, Clone)]
pub struct Mat2 {
pub elements: [[f64; 2]; 2],
}
impl Mat2 {
pub fn new(m00: f64, m01: f64, m10: f64, m11: f64) -> Mat2 {
Mat2 {
elements: [[m00, m01], [m10, m11]],
}
}
pub fn determinant(&self) -> f64 {
self.elements[0][0] * self.elements[1][1] - self.elements[0][1] * self.elements[1][0]
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn determinant_returns_expected_value() {
let target1 = Mat2::new(1.0, 2.0, 3.0, 4.0);
let target2 = Mat2::new(1.0, -2.0, 3.0, 4.0);
let target3 = Mat2::new(1.0, 1.0, 1.0, 1.0);
let target4 = Mat2::new(21.0, 45.0, -16.0, 0.0);
assert!(target1.determinant() == -2.0);
assert!(target2.determinant() == 10.0);
assert!(target3.determinant() == 0.0);
assert!(target4.determinant() == 720.0);
}
}