| Name | Description |  | 
| constructor(numPolesU: number, numPolesV: number, poleLength: number, knotsU: KnotVector, knotsV: KnotVector, coffs: Float64Array): BSpline2dNd Protected | initialize arrays for given spline dimensions. |  | 
| degreeUV(select: UVSelect): number | Return the degree (one less than order) for the selectdirection (0 or 1) |  | 
| evaluateBuffersAtKnot(u: number, v: number, numDerivative: number = 0): void | Evaluate the _basisBuffer, _poleBuffer and (optionally) _basisBuffer1 and _poleBuffer1 arrays at given knot. |  | 
| extendRangeXYZ(rangeToExtend: Range3d, transform?: Transform): void | extend a range, treating each block as simple XYZ |  | 
| extendRangeXYZH(rangeToExtend: Range3d, transform?: Transform): void | extend a range, treating each block as homogeneous xyzw, with weight at offset 3 |  | 
| fractionToPointAndDerivatives(_fractionU: number, _fractionV: number, _result?: Plane3dByOriginAndVectors): undefined | Plane3dByOriginAndVectors Abstract | abstract declaration for evaluation of (unweighted) 3d point and derivatives. |  | 
| fractionToRigidFrame(fractionU: number, fractionV: number, result?: Transform): undefined | Transform | evaluate the surface at u and v fractions. |  | 
| getPoint3dPole(i: number, j: number, result?: Point3d): undefined | Point3d | Get the Point3d by row and column. |  | 
| getPoint3dPoleXYZW(i: number, j: number, result?: Point3d): undefined | Point3d | Get the Point3d by row and column, projecting the weight away to get to xyz |  | 
| isClosable(select: UVSelect): boolean | Test if degreeleading and trailing (one of U or V) blocks match, as if the data is an unwrapped closed spline in the selected direction. |  | 
| numPolesTotal(): number | Return the total number of poles (product of x and y pole counts) |  | 
| numPolesUV(select: UVSelect): number | Return the number of poles for the selectdirection (0 or 1) |  | 
| numSpanUV(select: UVSelect): number | Return the number of spans (INCLUDING NULL SPANS) for the selectdirection (0 or 1) |  | 
| numberToUVSelect(value: number): UVSelect | Return 0 for 0 input, 1 for any nonzero input. |  | 
| orderUV(select: UVSelect): number | Return the order (one more than degree) for the selectdirection (0 or 1) |  | 
| poleStepUV(select: UVSelect): number | Return the step between adjacent poles for the selectdirection (0 or 1) |  | 
| reverseInPlace(select: UVSelect): void | Reverse the parameter direction for either u or v. |  | 
| setWrappable(select: UVSelect, value: BSplineWrapMode): void | Set the flag indicating the bspline might be suitable for having wrapped "closed" interpretation. |  | 
| spanFractionToKnot(select: UVSelect, span: number, localFraction: number): number | Map a position, specified as (uv direction, bezier span, fraction within the bezier), to an overall knot value. |  | 
| spanFractionsToBasisFunctions(select: UVSelect, spanIndex: number, spanFraction: number, f: Float64Array, df?: Float64Array): void | Evaluate basis functions given |  | 
| sumPoleBufferForSpan(spanIndexU: number, spanIndexV: number): void | sum poles by the weights in the basisBuffer, using poles for given span |  | 
| sumpoleBufferDerivativesForSpan(spanIndexU: number, spanIndexV: number): void | sum derivatives by the weights in the basisBuffer, using poles for given span |  | 
| validOrderAndPoleCounts(orderU: number, numPolesU: number, orderV: number, numPolesV: number, numUV: number): boolean Static | Confirm that order and pole counts agree for both u and v directions |  |