Function mul

Source
pub fn mul<T, U>(a: U, b: U) -> Quaternion<T>
where T: Float, U: QuaternionOps<T>,
Expand description

Multiplication of two quaternions (or vectors).

This is an operation also known as the Hamilton product. In this operation, the vector is treated as a pure quaternoin (which is a quaternion with zero real part).

The product order is ab (!= ba)

ยงExamples

// ---- Pure Quaternion (Vector3) ---- //
let v: Vector3<f64> = [1.0, 2.0, 3.0];
 
// Identity quaternion
let id = mul( v, inv(v) );  // = mul( inv(v), v );
 
assert!( (1.0 - id.0).abs() < 1e-12 );
assert!( id.1[0].abs() < 1e-12 );
assert!( id.1[1].abs() < 1e-12 );
assert!( id.1[2].abs() < 1e-12 );
 
// ---- Quaternion ---- //
let q: Quaternion<f64> = (1.0, [2.0, 3.0, 4.0]);
 
// Identity quaternion
let id = mul( q, inv(q) );  // = mul( inv(q), q );
 
assert!( (1.0 - id.0).abs() < 1e-12 );
assert!( id.1[0].abs() < 1e-12 );
assert!( id.1[1].abs() < 1e-12 );
assert!( id.1[2].abs() < 1e-12 );