public Vector3f interpolate(float value, int currentControlPoint, Vector3f store) {
        if (store == null) {
            store = new Vector3f();
        }
        switch (type) {
            case CatmullRom:
                FastMath.interpolateCatmullRom(value, curveTension, CRcontrolPoints.get(currentControlPoint), CRcontrolPoints.get(currentControlPoint + 1), CRcontrolPoints.get(currentControlPoint + 2), CRcontrolPoints.get(currentControlPoint + 3), store);
                break;
            case Linear:
                FastMath.interpolateLinear(value, controlPoints.get(currentControlPoint), controlPoints.get(currentControlPoint + 1), store);
                break;
            case Bezier:
                FastMath.interpolateBezier(value, controlPoints.get(currentControlPoint), controlPoints.get(currentControlPoint + 1), controlPoints.get(currentControlPoint + 2), controlPoints.get(currentControlPoint + 3), store);
                break;
            case Nurb:
                CurveAndSurfaceMath.interpolateNurbs(value, this, store);
                break;
            default:
                break;
        }
        return store;
    }
Interpolate a position on the spline

@param value a value from 0 to 1 that represent the position between the
current control point and the next one
@param currentControlPoint the current control point
@param store a vector to store the result (use null to create a new one
that will be returned by the method)
@return the position
jme3-core/src/main/java/com/jme3/math/Spline.java