geoit 0.0.2

Exact geometric algebra with governed multivectors
Documentation
//! Basic vector algebra in VGA(3).
//!
//! Run: `cargo run --example vga_basics`

use geoit::algebra::ops;
use geoit::scalar::Rat;
use geoit::*;

fn main() {
    // VGA(3): Euclidean 3-space
    let sig = Signature::new(0, 0, 3).unwrap();

    // Two vectors
    let v = Mv::from_rat_terms(&[(0b001, Rat::from(3)), (0b010, Rat::from(4))]);
    let w = Mv::from_rat_terms(&[(0b010, Rat::from(1)), (0b100, Rat::from(2))]);

    // Norm squared: 3² + 4² = 25
    let n2 = ops::norm_squared(&v, &sig);
    println!("||v||² = {}", n2);

    // Outer product: bivector
    let bv = ops::outer(&v, &w, &sig);
    println!("v ∧ w = {:?}", bv);

    // Geometric product: scalar + bivector
    let gp = ops::geometric(&v, &w, &sig);
    println!("v·w (geometric) = {:?}", gp);

    // Sandwich: reflect w through v
    let reflected = ops::sandwich(&v, &w, &sig);
    println!("v·w·v~ = {:?}", reflected);
}