(bind-func vaquat
"@param v - axis vector (3d)
@param angle - angle in radians
@param result - quaternion (4d vector xyzw) in which to store the result"
(lambda (v:float* angle:float result:float*)
(let ((m (vmag v 3))
(s (/ (sin (* 0.5 angle)) m)))
(pfill! result
(* (pref v 0) s) (* (pref v 1) s) (* (pref v 2) s)
(cos (* 0.5 angle)))
void)))