Let's illustrate multivariate B-splines with a common and relatively simple example: Bivariate Bsplines formed by the tensor product of two univariate B-splines.

Imagine you have two independent variables, say $x$ and $y$. To create a bivariate B -spline surface, you can take the tensor product of two univariate B -splines, one defined in the $x$ direction and the other in the $y$ direction.

Consider:

The Bivariate B-spline Basis Function: A basis function for the bivariate B-spline surface is then formed by the product of these two univariate basis functions:

$$ S_{i, j}(x, y)=B_i(x) \cdot B_j(y) $$

The Bivariate B-spline Surface: The entire bivariate B-spline surface $S(x, y)$ is a linear combination of these basis functions, weighted by a set of control points $P_{i, j}$ :

$$ S(x, y)=\sum_{i=1}^{n_x} \sum_{j=1}^{n_y} P_{i, j} \cdot B_i(x) \cdot B_j(y) $$

where:

Conceptual Example: Bicubic B-Spline Patch

A very common example is a bicubic B-spline patch. This is formed by taking the tensor product of two cubic univariate B-splines.

Therefore, a bicubic B-spline patch is defined by a $4 \times 4$ grid (16) of control points $P_{i, j}$ where $i$ ranges from 1 to 4 and $j$ ranges from 1 to 4 . The surface within a specific parametric domain (e.g., $u \in[0,1], v \in[0,1]$ corresponding to $x$ and $y$ ) is a blend of these 16 control points, with the blending functions being the product of the cubic B -spline basis functions in each direction.

Visualizing Multivariate B-Splines:

Imagine a rectangular grid of control points. The bivariate B-spline surface will smoothly interpolate or approximate this grid. Moving a control point will locally affect the shape of the surface. The order of the B-splines determines the degree of the polynomial pieces and the smoothness of the connections between them.