Grid Surface.Create Tensor Spline Method
Definition
Assembly: Numerics.NET (in Numerics.NET.dll) Version: 10.1.0
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
GridSurfaceA 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:
- Linear: 2-point linear interpolation (width 2).
- CubicHermite: 4-point cubic Hermite with centered finite differences (width 4). This is the same kernel used by CreateCubicTensorSpline(IReadOnlyList<IReadOnlyList<Double>>, IReadOnlyList<Double>, GridBoundaryCondition, ExtrapolationMode).
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:
// 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
| Argument | Thrown when kernel is null. |