Low-dimensional vector algebra structures and operations.
use vecmat::{
prelude::*,
Vector3,
Matrix2x3, Matrix3x3,
};
fn main() {
let mut va = Vector3::<f64>::zero();
let vb = Vector3::<f64>::from([1.0, 2.0, 3.0]);
println!("{}, {}", va, vb);
va[1] = vb[0];
va[0] += 3.0;
*va.z_mut() = -vb.z();
println!("{}", va);
println!("{}", vb * 2.0);
println!("{}", va * vb);
println!("{}", va.dot(vb));
println!("{}", va.cross(vb));
println!("{}", (va - vb).length());
let mut ma = Matrix3x3::<f64>::one();
let mb = Matrix2x3::<f64>::from([
[1.0, 2.0, 0.0],
[0.0,-1.0, 1.0],
]);
println!("{},\n{}", ma, mb);
ma[(1, 1)] = 2.0;
ma[(0, 2)] = -3.0;
ma[(2, 0)] = -1.0;
println!("{}", ma);
println!("{}", mb.transpose());
println!("{}", mb.dot(vb));
println!("{}", va.dot(ma));
println!("{}", mb.dot(ma));
println!("{}", va.outer(vb));
println!("{}", ma.det());
println!("{}", ma.inverse());
}