babylon-mmd
Version:
babylon.js mmd loader and runtime
21 lines (20 loc) • 494 B
JavaScript
/**
* Quaternion to axis angle
* @param q quaternion
* @param outAxis output axis
* @param tempQuaternion temporary quaternion
* @returns angle
*/
export function QuaternionToAxisAngle(q, outAxis) {
outAxis.set(q.x, q.y, q.z);
const length = outAxis.length();
if (length >= 1.0e-8) {
const angle = 2.0 * Math.atan2(length, q.w);
outAxis.scaleInPlace(1.0 / length);
return angle;
}
else {
outAxis.set(1, 0, 0);
return 0;
}
}