matrices: minor tweaks to make debugging easier.
This commit is contained in:
parent
9f00485256
commit
249a2915d9
@ -1,5 +1,5 @@
|
||||
use std::fmt;
|
||||
use std::ops::{Index, IndexMut, Mul};
|
||||
use std::ops::{Index, IndexMut, Mul, Sub};
|
||||
|
||||
use crate::{tuples::Tuple, EPSILON};
|
||||
|
||||
@ -161,7 +161,6 @@ impl PartialEq for Matrix3x3 {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Default)]
|
||||
/// Matrix4x4 represents a 4x4 matrix in row-major form. So, element `m[i][j]` corresponds to m<sub>i,j</sub>
|
||||
/// where `i` is the row number and `j` is the column number.
|
||||
///
|
||||
@ -194,6 +193,7 @@ impl PartialEq for Matrix3x3 {
|
||||
/// let t = c * b * a;
|
||||
/// assert_eq!(t * p, Tuple::point(15., 0., 7.));
|
||||
/// ```
|
||||
#[derive(Copy, Clone, Default)]
|
||||
pub struct Matrix4x4 {
|
||||
m: [[f32; 4]; 4],
|
||||
}
|
||||
@ -764,7 +764,7 @@ impl fmt::Debug for Matrix4x4 {
|
||||
if f.alternate() {
|
||||
write!(
|
||||
f,
|
||||
"{:?}\n {:?}\n {:?}\n {:?}",
|
||||
"\n {:8.5?}\n {:8.5?}\n {:8.5?}\n {:8.5?}",
|
||||
self.m[0], self.m[1], self.m[2], self.m[3]
|
||||
)
|
||||
} else {
|
||||
@ -838,6 +838,21 @@ impl Mul<Tuple> for Matrix4x4 {
|
||||
}
|
||||
}
|
||||
|
||||
impl Sub for Matrix4x4 {
|
||||
type Output = Matrix4x4;
|
||||
|
||||
fn sub(self, m2: Matrix4x4) -> Matrix4x4 {
|
||||
let m1 = self;
|
||||
let mut r: Matrix4x4 = Default::default();
|
||||
for i in 0..4 {
|
||||
for j in 0..4 {
|
||||
r.m[i][j] = m1.m[i][j] - m2.m[i][j];
|
||||
}
|
||||
}
|
||||
r
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialEq for Matrix4x4 {
|
||||
fn eq(&self, rhs: &Matrix4x4) -> bool {
|
||||
let l = self.m;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user