public static Quaternion Pow(this Quaternion quaternion, float power) { float inputMagnitude = quaternion.Magnitude(); Vector3 nHat = new Vector3(quaternion.x, quaternion.y, quaternion.z).normalized; Quaternion vectorBit = new Quaternion(nHat.x, nHat.y, nHat.z, 0) .ScalarMultiply(power * Mathf.Acos(quaternion.w / inputMagnitude)) .Exp(); return vectorBit.ScalarMultiply(Mathf.Pow(inputMagnitude, power)); }