/// <summary>
        /// クォータニオンからオイラー角に変換
        /// </summary>
        /// <param name="value">クォータニオン</param>
        /// <returns>オイラー角</returns>
        public static AxisOfRotation <float> QuaternionToEulerAngles(Quaternion <float> value)
        {
            AxisOfRotation <float> axis = new AxisOfRotation <float>();

            double x2z2 = Math.Pow(value.X, 2) - Math.Pow(value.Z, 2);
            double y2w2 = Math.Pow(value.Y, 2) - Math.Pow(value.W, 2);

            axis.Set(
                (float)Math.Atan2(2.0 * ((value.X * value.Y) + (value.Z * value.W)), x2z2 - y2w2),
                (float)Math.Asin(2.0 * ((value.X * value.Z) - (value.Y * value.W))),
                (float)Math.Atan2(2.0 * ((value.Y * value.Z) + (value.X * value.W)), x2z2 + y2w2)
                );

            return(axis);
        }