/** @packageDocumentation * @module Bspline */ import { Point3d, Vector3d } from "../geometry3d/Point3dVector3d"; import { ProxyCurve } from "../curve/ProxyCurve"; import { GeometryQuery } from "../curve/GeometryQuery"; import { Transform } from "../geometry3d/Transform"; import { GeometryHandler } from "../geometry3d/GeometryHandler"; import { XYZProps } from "../geometry3d/XYZProps"; /** * fitPoints and end condition data for [[InterpolationCurve3d]] * * This is a "json compatible" version of the serializer-friendly [[InterpolationCurve3dOptions]] * @public */ export interface InterpolationCurve3dProps { /** Order of the computed bspline. (one more than degree) */ order?: number; /** true if the bspline construction should be periodic */ closed?: boolean; isChordLenKnots?: number; isColinearTangents?: number; isChordLenTangent?: number; isNaturalTangents?: number; /** optional start tangent. Use of the tangent magnitude may be indicated by other flags. */ startTangent?: XYZProps; /** optional end tangent. Use of the tangent magnitude may be indicated by other flags. */ endTangent?: XYZProps; /** Points that the curve must pass through */ fitPoints: XYZProps[]; /** knots for curve fitting */ knots?: number[]; } /** * fitPoints and end condition data for [[InterpolationCurve3d]] * * This is a "typed object" version of the serializer-friendly [[InterpolationCurve3dProps]] * * Typical use cases rarely require all parameters, so the constructor does not itemize them as parameters. * @public */ export declare class InterpolationCurve3dOptions { /** * * @param fitPoints points to CAPTURE * @param knots array to CAPTURE */ constructor(fitPoints?: Point3d[], knots?: number[]); /** Order of the computed bspline. (one more than degree) */ private _order?; /** true if the bspline construction should be periodic */ private _closed?; private _isChordLenKnots?; private _isColinearTangents?; private _isChordLenTangent?; private _isNaturalTangents?; /** optional start tangent. Use of the tangent magnitude may be indicated by other flags. */ private _startTangent?; /** optional end tangent. Use of the tangent magnitude may be indicated by other flags. */ private _endTangent?; /** Points that the curve must pass through */ private _fitPoints; /** knots for curve fitting */ private _knots?; /** `order` as property with default 4 (cubic) */ get order(): number; /** `closed` as property with default false */ get closed(): boolean; /** `isChordLenKnots` as property with default 0 */ get isChordLenKnots(): number; /** `isColinearTangents` as property with default 0 */ get isColinearTangents(): number; /** `isChordLenTangent` as property with default 0 */ get isChordLenTangent(): number; /** `isNaturalTangents` as property with default 0 */ get isNaturalTangents(): number; /** access POINTER TO fitPoints */ get fitPoints(): Point3d[]; /** access POSSIBLY UNDEFINED knots array. */ get knots(): number[] | undefined; /** access POSSIBLY UNDEFINED start tangent. */ get startTangent(): Vector3d | undefined; /** access POSSIBLY UNDEFINED end tangent. */ get endTangent(): Vector3d | undefined; /** One step setup of properties not named in constructor. * * CAPTURE pointers to tangents. * * OPTIONALLY downgrade "0" values to undefined. */ captureOptionalProps(order: number | undefined, closed: boolean | undefined, isChordLenKnots: number | undefined, isColinearTangents: number | undefined, isChordLenTangent: number | undefined, isNaturalTangents: number | undefined, startTangent: Vector3d | undefined, endTangent: Vector3d | undefined): void; /** Clone with strongly typed members reduced to simple json, with "undefined" members omitted */ cloneAsInterpolationCurve3dProps(): InterpolationCurve3dProps; /** Clone with strongly typed members reduced to simple json. */ clone(): InterpolationCurve3dOptions; /** Clone with strongly typed members reduced to simple json. */ static create(source: InterpolationCurve3dProps): InterpolationCurve3dOptions; static areAlmostEqual(dataA: InterpolationCurve3dOptions | undefined, dataB: InterpolationCurve3dOptions | undefined): boolean; /** reverse the order or sense of all start-to-end related properties. */ reverseInPlace(): void; } /** * Interpolating curve. * * Derive from [[ProxyCurve]] * * Use a [[BSplineCurve3d]] as the proxy * * * @public */ export declare class InterpolationCurve3d extends ProxyCurve { readonly curvePrimitiveType = "interpolationCurve"; private _options; /** * CAPTURE properties and proxy curve. */ private constructor(); dispatchToGeometryHandler(handler: GeometryHandler): any; /** * Create an [[InterpolationCurve3d]] based on points, knots, and other properties in the [[InterpolationCurve3dProps]] or [[InterpolationCurve3dOptions]]. * * This saves a COPY OF the options or props. * * Use createCapture () if the options or props can be used without copy */ static create(options: InterpolationCurve3dOptions | InterpolationCurve3dProps): InterpolationCurve3d | undefined; /** Create an [[InterpolationCurve3d]] * * The options object is captured into the new curve object (not copied) */ static createCapture(options: InterpolationCurve3dOptions): InterpolationCurve3d | undefined; /** Return a (copy of) the defining points, packed as a Float64Array */ copyFitPointsFloat64Array(): Float64Array; /** * Return json key-value pairs for for this [[InterpolationCurve3d]]. * @returns */ toJSON(): any; /** Clone the [[InterpolationCurve3dProps]] object in this [[InterpolationCurve3d]] */ cloneProps(): InterpolationCurve3dProps; /** return the options pointer */ get options(): InterpolationCurve3dOptions; /** * Reverse the curve direction. * * This updates both the defining properties and the proxy bspline. */ reverseInPlace(): void; /** * Transform this [[InterpolationCurve3d]] and its defining data in place */ tryTransformInPlace(transform: Transform): boolean; /** * Return a transformed clone. */ cloneTransformed(transform: Transform): GeometryQuery | undefined; /** * Return a clone. */ clone(): GeometryQuery | undefined; isAlmostEqual(other: GeometryQuery): boolean; /** Test if `other` is also an [[InterpolationCurve3d]] */ isSameGeometryClass(other: GeometryQuery): boolean; } //# sourceMappingURL=InterpolationCurve3d.d.ts.map