code: public Quaternionf rotationXYZ(float angleX, float angleY, float angleZ) {
          float sx = (float) Math.sin(angleX * 0.5);
          float cx = (float) Math.cosFromSin(sx, angleX * 0.5);
          float sy = (float) Math.sin(angleY * 0.5);
          float cy = (float) Math.cosFromSin(sy, angleY * 0.5);
          float sz = (float) Math.sin(angleZ * 0.5);
          float cz = (float) Math.cosFromSin(sz, angleZ * 0.5);
  
          float cycz = cy * cz;
          float sysz = sy * sz;
          float sycz = sy * cz;
          float cysz = cy * sz;
          w = cx*cycz - sx*sysz;
          x = sx*cycz + cx*sysz;
          y = cx*sycz - sx*cysz;
          z = cx*cysz + sx*sycz;
  
          return this;
      }
docs: Set this quaternion from the supplied euler angles (in radians) with rotation order XYZ.
  <p>
  This method is equivalent to calling: <code>rotationX(angleX).rotateY(angleY).rotateZ(angleZ)</code>
  <p>
  Reference: <a href="http://gamedev.stackexchange.com/questions/13436/glm-euler-angles-to-quaternion#answer-13446">this stackexchange answer</a>
  
  @param angleX
  the angle in radians to rotate about x
  @param angleY
  the angle in radians to rotate about y
  @param angleZ
  the angle in radians to rotate about z
  @return this