How to rotate a 3D point around any vector using quaternions