function calcBSplinePoint( p, U, P, u ) {

	const span = findSpan( p, u, U );
	const N = calcBasisFunctions( span, u, p, U );
	const C = new Vector4( 0, 0, 0, 0 );

	for ( let j = 0; j <= p; ++ j ) {

		const point = P[ span - p + j ];
		const Nj = N[ j ];
		const wNj = point.w * Nj;
		C.x += point.x * wNj;
		C.y += point.y * wNj;
		C.z += point.z * wNj;
		C.w += point.w * Nj;

	}

	return C;

}
Calculates B-Spline curve points. See The NURBS Book, page 82, algorithm A3.1.

@param {number} p - The degree of the B-Spline.
@param {Array<number>} U - The knot vector.
@param {Array<Vector4>} P - The control points
@param {number} u - The parametric point.
@return {Vector4} The point for given `u`.