pub fn nlerp<'out, T, F>(
out: &'out mut [T; 4],
a: &[T; 4],
b: &[T; 4],
t: &F
) -> &'out mut [T; 4] where
T: Real + Cast<F>,
F: Clone + Cast<T>,
T: AddAssign<&'a T>,
F: MulAssign<&'a F>,
&'a T: Sub<&'b T, Output = T> + Mul<&'b T, Output = T> + Div<&'b T, Output = T>,
use std::f32::consts::FRAC_2_PI;
let mut q = quat::new_one::<f32>();
let a = quat::new_identity();
let mut b = quat::new_identity();
quat::rotate_z_mut(&mut b, &FRAC_2_PI);
quat::nlerp(&mut q, &a, &b, &0.5_f32);
assert_eq!(q, [0.4829259, 0.4829259, 0.55849457, 0.47079617]);