Type Definition wedged::algebra::MultivectorD

source · []
pub type MultivectorD<T> = Multivector<T, Dynamic>;
Expand description

A multivector with dynamic dimension

Implementations

Constructors for rotors with dynamic dimension

Constructs a value using elements from an iterator

Panics if the iterator has too few elements to fill in the blade

Examples

let array = [0, 1, 2, 3, 4, 5];

let v1 = Vec6::from_iterator(0..); //static dim, static grade
let v2 = VecD::from_iterator(6, 0..); //dynamic dim, static grade
let v3 = Blade6::from_iterator(1, 0..); //static dim, dynamic grade
let v4 = BladeD::from_iterator(6, 1, 0..); //dynamic dim, dynamic grade

assert_eq!(v1.as_slice(), &array);
assert_eq!(v2.as_slice(), &array);
assert_eq!(v3.as_slice(), &array);
assert_eq!(v4.as_slice(), &array);

Constructs a value using a function mapping an index to an element

Examples

//computes the nth fibonnacci number
fn fib(n: usize) -> usize {
    if n <= 1 {
        1
    } else {
        fib(n-1) + fib(n-2)
    }
}

//5D bivector, so 10 elements
let array = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55];

let b1 = BiVec5::from_index_fn(fib); //static dim, static grade
let b2 = BiVecD::from_index_fn(5, fib); //dynamic dim, static grade
let b3 = Blade5::from_index_fn(2, fib); //static dim, dynamic grade
let b4 = BladeD::from_index_fn(5, 2, fib); //dynamic dim, dynamic grade

assert_eq!(b1.as_slice(), &array);
assert_eq!(b2.as_slice(), &array);
assert_eq!(b3.as_slice(), &array);
assert_eq!(b4.as_slice(), &array);

Constructs a value where every component is the given element

Examples

//4D Trivector, so 4 elements
let array = [6.28; 4];

let t1 = TriVec4::from_element(6.28); //static dim, static grade
let t2 = TriVecD::from_element(4, 6.28); //dynamic dim, static grade
let t3 = Blade4::from_element(3, 6.28); //static dim, dynamic grade
let t4 = BladeD::from_element(4, 3, 6.28); //dynamic dim, dynamic grade

assert_eq!(t1.as_slice(), &array);
assert_eq!(t2.as_slice(), &array);
assert_eq!(t3.as_slice(), &array);
assert_eq!(t4.as_slice(), &array);

Constructs an elements by cloning values from a slice

Panics if not enough values are provided


let values = [6, 2, 8, 3];

let v1 = Vec4::from_slice(&values);
let v2 = VecD::from_slice(4, &values);
let q = Even3::from_slice(&values);

assert_eq!(v1.as_slice(), &values);
assert_eq!(v2.as_slice(), &values);
assert_eq!(q.as_slice(), &values);

Constructs an elements by moving values from a Vec

Panics if not enough values are provided


let values = vec![6, 2, 8, 3];

let v1 = Vec4::from_vec(values.clone());
let v2 = VecD::from_vec(4, values.clone());
let q = Even3::from_vec(values.clone());

assert_eq!(v1.as_slice(), &*values);
assert_eq!(v2.as_slice(), &*values);
assert_eq!(q.as_slice(), &*values);

Constructs a value with all components set to zero

Examples

let array = [0.0; 4];

let v1 = Vec4::<f64>::zeroed(); //static dim, static grade
let v2 = VecD::<f64>::zeroed(4); //dynamic dim, static grade
let v3 = Blade4::<f64>::zeroed(1); //static dim, dynamic grade
let v4 = BladeD::<f64>::zeroed(4, 1); //dynamic dim, dynamic grade

assert_eq!(v1.as_slice(), &array);
assert_eq!(v2.as_slice(), &array);
assert_eq!(v3.as_slice(), &array);
assert_eq!(v4.as_slice(), &array);

Returns an element where the ith value is one and the rest are zeroes

Panics if i is out of range