public Quaternion fromAngleNormalAxis(float angle, Vector3f axis) {
        if (axis.x == 0 && axis.y == 0 && axis.z == 0) {
            loadIdentity();
        } else {
            float halfAngle = 0.5f * angle;
            float sin = FastMath.sin(halfAngle);
            w = FastMath.cos(halfAngle);
            x = sin * axis.x;
            y = sin * axis.y;
            z = sin * axis.z;
        }
        return this;
    }
Sets the quaternion from the specified rotation angle and normalized axis
of rotation. If the axis might not be normalized, use
{@link #fromAngleAxis(float, com.jme3.math.Vector3f)} instead.

@param angle the desired rotation angle (in radians)
@param axis the desired axis of rotation (not null, length=1, unaffected)
@return the (modified) current instance (for chaining)
jme3-core/src/main/java/com/jme3/math/Quaternion.java