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 i
th value is one and the rest are zeroes
Panics if i
is out of range