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: number0): 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: number0.0, dz: number0.0): boolean | GeometryQuery | Try to move the geometry by dx,dy,dz. |
areAlmostEqual(a: GeometryQuery, b: GeometryQuery): boolean Static | GeometryQuery | Apply instance method 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
- bspline/BSplineSurface.ts Line 160
Last Updated: 28 October, 2024
Found something wrong, missing, or unclear on this page?Raise an issue in our repo.