/// <summary> /// Creates a new <see cref="TricubicInterpolator"/> using the supplied data. /// </summary> /// <remarks> /// Marginal partial derivative values, if not supplied in /// <paramref name="dxLower"/>, <paramref name="dxUpper"/>, /// <paramref name="dyLower"/>, <paramref name="dyUpper"/>, /// <paramref name="dzLower"/>, <paramref name="dzUpper"/>, /// will be calculated independently for each point of the grid. /// </remarks> /// <param name="xs">1D array with the <c>x</c> coordinates of the interpolation grid nodes.</param> /// <param name="ys">1D array with the <c>y</c> coordinates of the interpolation grid nodes.</param> /// <param name="zs">1D array with the <c>z</c> coordinates of the interpolation grid nodes.</param> /// <param name="vs"> /// 3D array with the values of the function for each node of the grid specified /// by <paramref name="xs"/>, <paramref name="ys"/> and <paramref name="zs"/>. /// </param> /// <param name="dxLower">The value of the partial derivative over <c>x</c> for all points with the smallest <c>x</c> coordinate value on the 2D grid.</param> /// <param name="dxUpper">The value of the partial derivative over <c>x</c> for all points with the largest <c>x</c> coordinate value on the 2D grid.</param> /// <param name="dyLower">The value of the partial derivative over <c>y</c> for all points with the smallest <c>y</c> coordinate value on the 2D grid.</param> /// <param name="dyUpper">The value of the partial derivative over <c>y</c> for all points with the largest <c>y</c> coordinate value on the 2D grid.</param> /// <param name="dzLower">The value of the partial derivative over <c>z</c> for all points with the smallest <c>z</c> coordinate value on the 2D grid.</param> /// <param name="dzUpper">The value of the partial derivative over <c>z</c> for all points with the largest <c>z</c> coordinate value on the 2D grid.</param> public TricubicInterpolator(double[] xs, double[] ys, double[] zs, double[,,] vs, double?dxLower = 0, double?dxUpper = 0, double?dyLower = 0, double?dyUpper = 0, double?dzLower = 0, double?dzUpper = 0) : this(xs, ys, zs, vs.ToJagged(), dxLower, dxUpper, dyLower, dyUpper, dzLower, dzUpper) { }