note that both vecs should be unit length