pub fn look_at<'out, T>(
out: &'out mut [T; 16],
eye: &[T; 3],
target: &[T; 3],
up: &[T; 3]
) -> &'out mut [T; 16] where
T: Clone + Zero + One + Float + Add<T, Output = T> + Sub<T, Output = T>,
&'a T: Mul<&'b T, Output = T> + Div<&'b T, Output = T> + Add<&'b T, Output = T> + Sub<&'b T, Output = T>,
let mut m = mat4::new_identity::<f32>();
mat4::look_at(&mut m, &[0_f32, 0_f32, 1_f32], &[0_f32, 0_f32, 0_f32], &[0_f32, 0_f32, 1_f32]);
assert_eq!(m, [
0_f32, 0_f32, 0_f32, 0_f32,
0_f32, 0_f32, 0_f32, 0_f32,
0_f32, 0_f32, 1_f32, 0_f32,
0_f32, 0_f32, -1_f32, 1_f32
]);