BSpline2dNd Class

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

  • This abstract class in not independently instantiable -- GeometryQuery methods must be implemented by derived classes.

Extends

Extended by

Methods

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 select direction (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 indexed Point3d.  
getPoint3dPoleXYZW(i: number, j: number, result?: Point3d): undefined | Point3d Get the indexed Point3d, projecting the weight away to get to xyz.  
getPoint4dPole(i: number, j: number, result?: Point4d): undefined | Point4d Get the indexed Point4d.  
getWrappable(select: UVSelect): BSplineWrapMode Get the flag indicating the surface might be suitable for having wrapped "closed" interpretation.  
isClosable(select: UVSelect): boolean Test knots and control points to determine if it is possible to close (aka "wrap") the surface in the selected parametric direction.  
isClosableSurface(select: UVSelect): BSplineWrapMode Test knots and control points to determine if it is possible to close (aka "wrap") the surface in the selected parametric 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 select direction (0 or 1)  
numSpanUV(select: UVSelect): number Return the number of spans (INCLUDING NULL SPANS) for the select direction (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 select direction (0 or 1)  
poleStepUV(select: UVSelect): number Return the step between adjacent poles for the select direction (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 surface 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): boolean Evaluate basis functions given  
sumPoleBufferDerivativesForSpan(spanIndexU: number, spanIndexV: number): void sum derivatives by the weights in the basisBuffer, using poles for given span  
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 poles by the weights in the basisBuffer, using poles for given span Deprecated  
testClosableGrid(select: UVSelect, mode?: BSplineWrapMode): boolean Test if degree leading and trailing (one of U or V) blocks match, as if the data is a non-periodic physically closed spline in the selected direction.  
isWrappedGrid(data: Float64Array, numRows: number, numColumns: number, dimension: number, blockLength: number, select: UVSelect): boolean Static Test if leading and trailing blocks of points match in a given direction.  
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  

Inherited methods

Name Inherited from Description
clone(): undefined | GeometryQuery Abstract GeometryQuery Return a clone
cloneTransformed(transform: Transform): undefined | GeometryQuery Abstract GeometryQuery Return a transformed clone.
dispatchToGeometryHandler(handler: GeometryHandler): any Abstract GeometryQuery * "double dispatch" call pattern.
extendRange(rangeToExtend: Range3d, transform?: Transform): void Abstract GeometryQuery Extend rangeToExtend by the range of this geometry multiplied by the transform
isAlmostEqual(other: GeometryQuery): boolean GeometryQuery Test for exact structure and nearly identical geometry.
isSameGeometryClass(other: GeometryQuery): boolean Abstract GeometryQuery Test if (other instanceof this.Type).
range(transform?: Transform, result?: Range3d): Range3d GeometryQuery Return the range of the entire GeometryQuery tree
tryTransformInPlace(transform: Transform): boolean Abstract GeometryQuery Attempt to transform in place.
tryTranslateInPlace(dx: number, dy: number = 0.0, dz: number = 0.0): boolean GeometryQuery Try to move the geometry by dx,dy,dz
areAlmostEqual(a: undefined | GeometryQuery, b: undefined | GeometryQuery): boolean Static GeometryQuery Apply instance method GeometryQuery.isAlmostEqual if both are defined.

Properties

Name Type Description
_basisBuffer1UV Protected Float64Array[] a scratch array sized for order numbers  
_basisBufferUV Protected Float64Array[] a scratch array sized for order numbers  
_poleBuffer Protected Float64Array a scratch array sized for one pole  
_poleBuffer1UV Protected Float64Array[] array of 2 scratch array, each sized for one pole  
coffs Float64Array flat array of coordinate data, blocked by poleDimension and row  
geometryCategory Readonly "bsurf" String name for schema properties  
knots KnotVector[] Array of (exactly 2) knot vectors for the u, v directions  
poleDimension number Number of components per pole.  

Inherited properties

Name Type Inherited from Description
children Accessor ReadOnly undefined | GeometryQuery[] GeometryQuery Return GeometryQuery children for recursive queries.
* leaf classes do not need to implement.

Defined in

Last Updated: 15 March, 2024