pub fn look_at<V: Float>(dirn: &[V; 3], up: &[V; 3]) -> [V; 4]
Create quaternion for a rotation that maps unit dirn to (0,0,-1) and unit up to (0,1,0)