## BSpline1dNd Class

Bspline knots and poles for 1d-to-Nd.

• The "pole" (aka control point) of this class is a block of `poleLength` numbers.
• Derived classes (not this class) assign meaning such as x,y,z,w.
• for instance, an instance of this class with `poleLength===3` does not know if its poles are x,y,z or weighed 2D x,y,w

### Methods

Name Description
constructor(numPoles: number, poleLength: number, order: number, knots: KnotVector): Protected initialize arrays for given spline dimensions.
evaluateBasisFunctionsInSpan(spanIndex: number, spanFraction: number, f: Float64Array, df?: Float64Array, ddf?: Float64Array): void Evaluate the `order` basis functions (and optionally one or two derivatives) at a given fractional position within indexed span.
evaluateBuffersAtKnot(u: number, numDerivative: number = 0): void Evaluate the function values and 1 or 2 derivatives into `this.poleBuffer`, `this.poleBuffer1` and `this.poleBuffer2`
evaluateBuffersInSpan(spanIndex: number, spanFraction: number): void * Evaluate the basis functions at spanIndex and fraction.
evaluateBuffersInSpan1(spanIndex: number, spanFraction: number): void * Evaluate the basis functions and one derivative at spanIndex and fraction.
getPoint3dPole(i: number, result?: Point3d): Point3d | undefined copy 3 values of pole `i` into a point.
reverseInPlace(): void Reverse the (blocked) poles (in `this.packedData` in place.
spanFractionToKnot(span: number, localFraction: number): number Map a span index and local fraction to knot value.
sumPoleBuffer1ForSpan(spanIndex: number): void sum poles at span `spanIndex` by the weights in the `poleBuffer1`, i.e.
sumPoleBuffer2ForSpan(spanIndex: number): void sum poles at span `spanIndex` by the weights in the `poleBuffer2`, i.e.
sumPoleBufferForSpan(spanIndex: number): void sum poles at span `spanIndex` by the weights in the `poleBuffer`
testCloseablePolygon(mode?: BSplineWrapMode): boolean Test if the leading and trailing polygon coordinates are replicated in the manner of a "closed" bspline polygon which has been expanded
to act as a normal bspline.

create(numPoles: number, poleLength: number, order: number, knots: KnotVector): BSpline1dNd | undefined Static create a 1Bspline1dNd`

### Properties

Name Type Description
basisBuffer Float64Array preallocated array (length === `order`) used as temporary in evaluations
basisBuffer1 Float64Array preallocated array (length === `order`) used as temporary in evaluations
basisBuffer2 Float64Array preallocated array (length === `order`) used as temporary in evaluations
degree Accessor ReadOnly number (property accessor) Return the degree of the polynomials.
knots KnotVector knots of the bspline
numPoles Accessor ReadOnly number (property accessor) Return the number of poles
numSpan Accessor ReadOnly number (property accessor) Return the number of bezier spans (including null spans at multiple knots)
order Accessor ReadOnly number (property accessor) Return the number of order (one more than degree) of the polynomials
packedData Float64Array poles, packed in blocks of `poleLength` doubles.
poleBuffer Float64Array preallocated array (length === `poleLength`) used as temporary in evaluations
poleBuffer1 Float64Array preallocated array (length === `poleLength`) used as temporary in evaluations
poleBuffer2 Float64Array preallocated array (length === `poleLength`) used as temporary in evaluations
poleLength number (property accessor) Return the number of numeric values per pole.

### Defined in

Last Updated: 10 September, 2019