Crate vecmat[][src]

Low-dimensional vector algebra.

Usage example

use vecmat::{prelude::*, Vector, Matrix};

// Create vectors
let mut va = Vector::<f64, 3>::zero(); // filled with zeros
let vb = Vector::<f64, 3>::from([1.0, 2.0, 3.0]); // from values
println!("{}, {}", va, vb);

// Vector access
va[1] = vb[0]; // read and write
va[0] += 3.0; // add-assign
*va.z_mut() = -vb.z(); // access by `xyz`
println!("{}", va);

// Vector products
println!("{}", vb * 2.0); // scalar-by-vector
println!("{}", va * vb); // component-wise
println!("{}", va.dot(vb)); // dot
println!("{}", va.cross(vb)); // cross

// Distance between two vectors
println!("{}", (va - vb).length());

// Create matrices
let mut ma = Matrix::<f64, 3, 3>::one(); // identity 3x3 matrix
let mb = Matrix::<f64, 2, 3>::from([ // 3x2 matrix from values
    [1.0, 2.0, 0.0],
    [0.0,-1.0, 1.0],
]);
println!("{},\n{}", ma, mb);

// Access matrix components
ma[(1, 1)] = 2.0; // access by (i, j) indices
ma[(0, 2)] = -3.0;
ma[(2, 0)] = -1.0;
println!("{}", ma);

// Transpose matrix
println!("{}", mb.transpose());

// Matrix-vector product
println!("{}", mb.dot(vb));
println!("{}", va.dot(ma));

// Matrix-matrix product
println!("{}", mb.dot(ma));

// Outer product of vectors
println!("{}", va.outer(vb));

// Determinant and inverse matrix
println!("{}", ma.det());
println!("{}", ma.inv());

Re-exports

pub use transform::Transform;

Modules

complex
distr
matrix
prelude
traits
transform
vector

Structs

Complex

Complex number.

Matrix

Matrix with fixed dimensions.

Quaternion

Quaternion.

Vector

Vector of fixed size.