private static float computeBaseFunctionValue(int i, int k, float t, List<Float> knots) {
        if (k == 1) {
            return knots.get(i) <= t && t < knots.get(i + 1) ? 1.0f : 0.0f;
        } else {
            return (t - knots.get(i)) / (knots.get(i + k - 1) - knots.get(i))
                    * CurveAndSurfaceMath.computeBaseFunctionValue(i, k - 1, t, knots)
                    + (knots.get(i + k) - t) / (knots.get(i + k) - knots.get(i + 1))
                    * CurveAndSurfaceMath.computeBaseFunctionValue(i + 1, k - 1, t, knots);
        }
    }
This method computes the base function value for the NURB curve.

@param i   the knot index
@param k   the base function degree
@param t   the knot value
@param knots
           the knots' values
@return the base function value
jme3-core/src/main/java/com/jme3/math/CurveAndSurfaceMath.java