GridSurface.CreateTensorSpline Method

Creates a grid surface for N-dimensional interpolation using tensor-product splines with a custom 1D spline kernel.

Definition

Namespace: Numerics.NET.Curves.Surfaces
Assembly: Numerics.NET (in Numerics.NET.dll) Version: 10.1.0
C#
public static GridSurface CreateTensorSpline(
	IReadOnlyList<IReadOnlyList<double>> axes,
	IReadOnlyList<double> values,
	ISplineKernel1D kernel,
	GridBoundaryCondition boundaryCondition = default,
	ExtrapolationMode extrapolation = ExtrapolationMode.Throw
)

Parameters

axes  IReadOnlyList<IReadOnlyList<Double>>
The coordinate vectors for each dimension. Can be any dimension ≥ 1.
values  IReadOnlyList<Double>
The grid values in row-major order.
kernel  ISplineKernel1D
The 1D spline kernel to use for interpolation along each axis. Use SplineKernels for built-in kernels or provide a custom ISplineKernel1D implementation.
boundaryCondition  GridBoundaryCondition  (Optional)
The boundary condition for handling out-of-range samples when building interpolation stencils. Default is Clamp (clamp to edge).
extrapolation  ExtrapolationMode  (Optional)
The extrapolation mode for out-of-range query coordinates. Default is Throw.

Return Value

GridSurface
A grid surface using N-dimensional tensor-product interpolation with the specified kernel.

Remarks

This is the most general factory method for grid interpolation. It creates a tensor-product surface that applies the specified 1D kernel along each axis using nested 1D interpolation (dimension reduction).

Built-in kernels: The SplineKernels class provides standard kernels:

Custom kernels: You can implement ISplineKernel1D to provide custom interpolation behavior (e.g., PCHIP, monotone cubic, higher-order splines).

Boundary conditions vs extrapolation: The boundaryCondition affects how the kernel accesses grid values during stencil assembly (e.g., periodic wrapping, reflection, clamping), while extrapolation controls what happens when query points fall outside the grid domain.

Examples:

C#
// Linear tensor-product interpolation
var linearSurface = GridSurface.CreateTensorSpline(axes, values, SplineKernels.Linear);

// Cubic Hermite interpolation (equivalent to CreateCubicTensorSpline)
var cubicSurface = GridSurface.CreateTensorSpline(axes, values, SplineKernels.CubicHermite);

// Periodic boundary with cubic interpolation
var periodicSurface = GridSurface.CreateTensorSpline(
    axes, values, SplineKernels.CubicHermite, 
    GridBoundaryCondition.Periodic, ExtrapolationMode.Default);

Exceptions

ArgumentNullExceptionThrown when kernel is null.

See Also