@itwin/core-geometry 5.14.0-dev.5 → 5.14.0-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -1
- package/lib/cjs/bspline/AkimaCurve3d.d.ts +18 -13
- package/lib/cjs/bspline/AkimaCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js +19 -16
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts +2 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +3 -2
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.d.ts +5 -1
- package/lib/cjs/bspline/InterpolationCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js +11 -11
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +0 -2
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.d.ts +2 -2
- package/lib/cjs/curve/CoordinateXYZ.d.ts.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +5 -5
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +9 -23
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +20 -4
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +39 -2
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +4 -5
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveOps.d.ts.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +10 -3
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +1 -1
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.d.ts +7 -7
- package/lib/cjs/curve/CurveProcessor.d.ts.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js +19 -3
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.d.ts +49 -4
- package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js +52 -0
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.d.ts +1 -1
- package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js +1 -1
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/Loop.d.ts +18 -2
- package/lib/cjs/curve/Loop.d.ts.map +1 -1
- package/lib/cjs/curve/Loop.js +26 -1
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.d.ts +7 -2
- package/lib/cjs/curve/ParityRegion.d.ts.map +1 -1
- package/lib/cjs/curve/ParityRegion.js +9 -8
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.d.ts +8 -1
- package/lib/cjs/curve/Path.d.ts.map +1 -1
- package/lib/cjs/curve/Path.js +12 -0
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.d.ts +1 -1
- package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js +2 -3
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +36 -35
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -4
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +3 -3
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.d.ts +9 -2
- package/lib/cjs/curve/UnionRegion.d.ts.map +1 -1
- package/lib/cjs/curve/UnionRegion.js +12 -0
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.d.ts +1 -0
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +3 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.d.ts +1 -6
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +15 -8
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +5 -2
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +6 -3
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +5 -2
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +6 -3
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +2 -0
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +4 -0
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/Range.d.ts +2 -0
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Range.js +6 -0
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +5 -2
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js +1 -2
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.d.ts +36 -22
- package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +16 -17
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/topology/Merging.d.ts +4 -2
- package/lib/cjs/topology/Merging.d.ts.map +1 -1
- package/lib/cjs/topology/Merging.js +23 -20
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.d.ts +18 -13
- package/lib/esm/bspline/AkimaCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js +19 -16
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts +2 -1
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +3 -2
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.d.ts +5 -1
- package/lib/esm/bspline/InterpolationCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js +11 -11
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +0 -2
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.d.ts +2 -2
- package/lib/esm/curve/CoordinateXYZ.d.ts.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +5 -5
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +9 -23
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +20 -4
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +39 -2
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +4 -5
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveOps.d.ts.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +10 -3
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +1 -1
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.d.ts +7 -7
- package/lib/esm/curve/CurveProcessor.d.ts.map +1 -1
- package/lib/esm/curve/CurveProcessor.js +19 -3
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.d.ts +49 -4
- package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
- package/lib/esm/curve/GeometryQuery.js +52 -0
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.d.ts +1 -1
- package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/esm/curve/LineSegment3d.js +1 -1
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/Loop.d.ts +18 -2
- package/lib/esm/curve/Loop.d.ts.map +1 -1
- package/lib/esm/curve/Loop.js +26 -1
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/ParityRegion.d.ts +7 -2
- package/lib/esm/curve/ParityRegion.d.ts.map +1 -1
- package/lib/esm/curve/ParityRegion.js +9 -8
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.d.ts +8 -1
- package/lib/esm/curve/Path.d.ts.map +1 -1
- package/lib/esm/curve/Path.js +12 -0
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.d.ts +1 -1
- package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
- package/lib/esm/curve/ProxyCurve.js +2 -3
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts +36 -35
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +4 -4
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +3 -3
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/UnionRegion.d.ts +9 -2
- package/lib/esm/curve/UnionRegion.d.ts.map +1 -1
- package/lib/esm/curve/UnionRegion.js +12 -0
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts +1 -0
- package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js +3 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts +1 -6
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +15 -8
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +5 -2
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +6 -3
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +5 -2
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +6 -3
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +2 -0
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +4 -0
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/Range.d.ts +2 -0
- package/lib/esm/geometry3d/Range.d.ts.map +1 -1
- package/lib/esm/geometry3d/Range.js +6 -0
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +5 -2
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js +1 -2
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.d.ts +36 -22
- package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +16 -17
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/topology/Merging.d.ts +4 -2
- package/lib/esm/topology/Merging.d.ts.map +1 -1
- package/lib/esm/topology/Merging.js +23 -20
- package/lib/esm/topology/Merging.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterpolationCurve3d.js","sourceRoot":"","sources":["../../../src/bspline/InterpolationCurve3d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Bspline\r\n */\r\n\r\nimport { BSplineCurveOps } from \"../bspline/BSplineCurveOps\";\r\nimport { Clipper } from \"../clipping/ClipUtils\";\r\nimport { AnnounceNumberNumberCurvePrimitive, CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { ProxyCurve } from \"../curve/ProxyCurve\";\r\nimport { Geometry } from \"../Geometry\";\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Point3dArray } from \"../geometry3d/PointHelpers\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { XYZProps } from \"../geometry3d/XYZProps\";\r\nimport { BSplineCurve3d } from \"./BSplineCurve\";\r\n\r\n/**\r\n * fitPoints and end condition data for [[InterpolationCurve3d]]\r\n * * This is a \"json compatible\" version of [[InterpolationCurve3dOptions]]\r\n * @public\r\n */\r\nexport interface InterpolationCurve3dProps {\r\n /** The order of the computed B-spline curve (one more than its degree). */\r\n order?: number;\r\n /** Whether the B-spline construction should be periodic. Default is `false`. */\r\n closed?: boolean;\r\n /** If closed and no knots, compute chord length knots (1) or uniform knots (0, default). Chord length knots give best fit. */\r\n isChordLenKnots?: number;\r\n /** If !closed but first and last fitPoints are equal, pivot computed start/end tangent(s) so that they are colinear (1) or leave them be (0, default). */\r\n isColinearTangents?: number;\r\n /** If !closed and start/endTangent is defined, set its magnitude to the first/last fit point chord length (1) or to the magnitude of the Bessel tangent (0, default). Bessel gives best fit. */\r\n isChordLenTangents?: number;\r\n /** If !closed and start/endTangent is `undefined`, compute it using the natural end condition (1) or Bessel (0, default). Bessel gives best fit. */\r\n isNaturalTangents?: number;\r\n /** Optional start tangent, pointing into curve. Magnitude is ignored. */\r\n startTangent?: XYZProps;\r\n /** Optional end tangent, pointing into curve. Magnitude is ignored. */\r\n endTangent?: XYZProps;\r\n /** Points that the curve must pass through. */\r\n fitPoints: XYZProps[];\r\n /** Optional parameters for curve fitting, one per fit point. If `undefined`, knots are computed. */\r\n knots?: number[];\r\n}\r\n\r\n/**\r\n * fitPoints and end condition data for [[InterpolationCurve3d]]\r\n * * This is a \"typed object\" version of the serializer-friendly [[InterpolationCurve3dProps]]\r\n * * Typical use cases rarely require all parameters, so the constructor does not itemize them as parameters.\r\n * @public\r\n */\r\nexport class InterpolationCurve3dOptions {\r\n /**\r\n * Constructor.\r\n * @param fitPoints points to CAPTURE\r\n * @param knots array to CAPTURE\r\n */\r\n public constructor(fitPoints?: Point3d[], knots?: number[]) {\r\n this._fitPoints = fitPoints ? fitPoints : [];\r\n this._knots = knots;\r\n }\r\n\r\n private _order?: number;\r\n private _closed?: boolean;\r\n private _isChordLenKnots?: number;\r\n private _isColinearTangents?: number;\r\n private _isChordLenTangents?: number;\r\n private _isNaturalTangents?: number;\r\n private _startTangent?: Vector3d;\r\n private _endTangent?: Vector3d;\r\n private _fitPoints: Point3d[];\r\n private _knots?: number[];\r\n\r\n /** `order` as property */\r\n public get order(): number { return Geometry.resolveNumber(this._order, 4); }\r\n public set order(val: number) { this._order = val; }\r\n /** `closed` as property */\r\n public get closed(): boolean { return Geometry.resolveValue(this._closed, false); }\r\n public set closed(val: boolean) { this._closed = val; }\r\n /** `isChordLenKnots` as property */\r\n public get isChordLenKnots(): number { return Geometry.resolveNumber(this._isChordLenKnots, 0); }\r\n public set isChordLenKnots(val: number) { this._isChordLenKnots = val; }\r\n /** `isColinearTangents` as property */\r\n public get isColinearTangents(): number { return Geometry.resolveNumber(this._isColinearTangents, 0); }\r\n public set isColinearTangents(val: number) { this._isColinearTangents = val; }\r\n /** `isChordLenTangents` as property */\r\n public get isChordLenTangents(): number { return Geometry.resolveNumber(this._isChordLenTangents, 0); }\r\n public set isChordLenTangents(val: number) { this._isChordLenTangents = val; }\r\n /** `isNaturalTangents` as property */\r\n public get isNaturalTangents(): number { return Geometry.resolveNumber(this._isNaturalTangents, 0); }\r\n public set isNaturalTangents(val: number) { this._isNaturalTangents = val; }\r\n /** access POSSIBLY UNDEFINED start tangent. Setter CAPTURES. */\r\n public get startTangent(): Vector3d | undefined { return this._startTangent; }\r\n public set startTangent(val: Vector3d | undefined) { this._startTangent = val; }\r\n /** access POSSIBLY UNDEFINED end tangent. Setter CAPTURES. */\r\n public get endTangent(): Vector3d | undefined { return this._endTangent; }\r\n public set endTangent(val: Vector3d | undefined) { this._endTangent = val; }\r\n /** access POINTER TO fit points. Setter CAPTURES. */\r\n public get fitPoints(): Point3d[] { return this._fitPoints; }\r\n public set fitPoints(val: Point3d[]) { this._fitPoints = val; }\r\n /** access POSSIBLY UNDEFINED knots array. Setter CAPTURES. */\r\n public get knots(): number[] | undefined { return this._knots; }\r\n public set knots(val: number[] | undefined) { this._knots = val; }\r\n\r\n /** One step setup of properties not named in constructor.\r\n * * CAPTURE pointers to tangents.\r\n * * OPTIONALLY downgrade \"0\" values to undefined.\r\n */\r\n public captureOptionalProps(\r\n order: number | undefined,\r\n closed: boolean | undefined,\r\n isChordLenKnots: number | undefined,\r\n isColinearTangents: number | undefined,\r\n isChordLenTangent: number | undefined,\r\n isNaturalTangents: number | undefined,\r\n startTangent: Vector3d | undefined,\r\n endTangent: Vector3d | undefined,\r\n ) {\r\n this._order = Geometry.resolveToUndefined(order, 0);\r\n this._closed = Geometry.resolveToUndefined(closed, false);\r\n this._isChordLenKnots = Geometry.resolveToUndefined(isChordLenKnots, 0);\r\n this._isColinearTangents = Geometry.resolveToUndefined(isColinearTangents, 0);\r\n this._isChordLenTangents = Geometry.resolveToUndefined(isChordLenTangent, 0);\r\n this._isNaturalTangents = Geometry.resolveToUndefined(isNaturalTangents, 0);\r\n this._startTangent = startTangent;\r\n this._endTangent = endTangent;\r\n\r\n }\r\n /** Clone with strongly typed members reduced to simple json, with \"undefined\" members omitted */\r\n public cloneAsInterpolationCurve3dProps(): InterpolationCurve3dProps {\r\n const props: InterpolationCurve3dProps = {\r\n fitPoints: Point3dArray.cloneDeepJSONNumberArrays(this.fitPoints),\r\n knots: this._knots?.slice(),\r\n };\r\n if (this._order !== undefined)\r\n props.order = this._order;\r\n if (this._closed !== undefined)\r\n props.closed = this._closed;\r\n if (this._isChordLenKnots !== undefined)\r\n props.isChordLenKnots = this._isChordLenKnots;\r\n if (this._isColinearTangents !== undefined)\r\n props.isColinearTangents = this._isColinearTangents;\r\n if (this._isChordLenTangents !== undefined)\r\n props.isChordLenTangents = this._isChordLenTangents;\r\n if (this._isNaturalTangents !== undefined)\r\n props.isNaturalTangents = this._isNaturalTangents;\r\n if (this._startTangent !== undefined)\r\n props.startTangent = this._startTangent?.toArray();\r\n if (this._endTangent !== undefined)\r\n props.endTangent = this._endTangent?.toArray();\r\n return props;\r\n }\r\n /** Clone with strongly typed members reduced to simple json. */\r\n public clone(): InterpolationCurve3dOptions {\r\n const clone = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(this.fitPoints), this.knots?.slice());\r\n clone._order = this.order;\r\n clone._closed = this.closed;\r\n clone._isChordLenKnots = this.isChordLenKnots;\r\n clone._isColinearTangents = this.isColinearTangents;\r\n clone._isChordLenTangents = this.isChordLenTangents;\r\n clone._isNaturalTangents = this.isNaturalTangents;\r\n clone._startTangent = this._startTangent?.clone();\r\n clone._endTangent = this._endTangent?.clone();\r\n return clone;\r\n }\r\n\r\n /** Clone with strongly typed members reduced to simple json. */\r\n public static create(source: InterpolationCurve3dProps): InterpolationCurve3dOptions {\r\n const result = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(source.fitPoints), source.knots?.slice());\r\n result._order = source.order;\r\n result._closed = source.closed;\r\n result._isChordLenKnots = source.isChordLenKnots;\r\n result._isColinearTangents = source.isColinearTangents;\r\n result._isChordLenTangents = source.isChordLenTangents;\r\n result._isNaturalTangents = source.isNaturalTangents;\r\n result._startTangent = source.startTangent ? Vector3d.fromJSON(source.startTangent) : undefined;\r\n result._endTangent = source.endTangent ? Vector3d.fromJSON(source.endTangent) : undefined;\r\n return result;\r\n }\r\n // ugh.\r\n // vector equality test with awkward rule that 000 matches undefined.\r\n private static areAlmostEqualAllow000AsUndefined(a: Vector3d | undefined, b: Vector3d | undefined): boolean {\r\n if (a !== undefined && a.maxAbs() === 0)\r\n a = undefined;\r\n if (b !== undefined && b.maxAbs() === 0)\r\n b = undefined;\r\n if (a !== undefined && b !== undefined)\r\n return a.isAlmostEqual(b);\r\n return a === undefined && b === undefined;\r\n }\r\n public static areAlmostEqual(dataA: InterpolationCurve3dOptions | undefined, dataB: InterpolationCurve3dOptions | undefined): boolean {\r\n if (dataA === undefined && dataB === undefined)\r\n return true;\r\n if (dataA !== undefined && dataB !== undefined) {\r\n if (Geometry.areEqualAllowUndefined(dataA.order, dataB.order)\r\n && Geometry.areEqualAllowUndefined(dataA.closed, dataB.closed)\r\n && Geometry.areEqualAllowUndefined(dataA.isChordLenKnots, dataB.isChordLenKnots)\r\n && Geometry.areEqualAllowUndefined(dataA.isColinearTangents, dataB.isColinearTangents)\r\n && Geometry.areEqualAllowUndefined(dataA.isNaturalTangents, dataB.isNaturalTangents)\r\n && this.areAlmostEqualAllow000AsUndefined(dataA.startTangent, dataB.startTangent)\r\n && this.areAlmostEqualAllow000AsUndefined(dataA.endTangent, dataB.endTangent)\r\n && Geometry.almostEqualArrays(dataA.fitPoints, dataB.fitPoints, (a: Point3d, b: Point3d) => a.isAlmostEqual(b))) {\r\n if (Geometry.almostEqualNumberArrays(dataA.knots, dataB.knots, (a: number, b: number) => a === b))\r\n return true;\r\n if (dataA.knots === undefined && dataB.knots === undefined)\r\n return true;\r\n /* alas .. need to allow tricky mismatch of end replication */\r\n let knotsA = dataA.knots, knotsB = dataB.knots;\r\n if (dataA.knots === undefined) // construct undefined knots to compare against defined knots\r\n knotsA = BSplineCurveOps.C2CubicFit.constructFitParametersFromPoints(dataA.fitPoints, dataA.isChordLenKnots, dataA.closed);\r\n else if (dataB.knots === undefined)\r\n knotsB = BSplineCurveOps.C2CubicFit.constructFitParametersFromPoints(dataB.fitPoints, dataB.isChordLenKnots, dataB.closed);\r\n knotsA = BSplineCurveOps.C2CubicFit.convertCubicKnotVectorToFitParams(knotsA, dataA.fitPoints.length, false);\r\n knotsB = BSplineCurveOps.C2CubicFit.convertCubicKnotVectorToFitParams(knotsB, dataB.fitPoints.length, false);\r\n return Geometry.almostEqualNumberArrays(knotsA, knotsB, (a: number, b: number) => Geometry.isAlmostEqualNumber(a, b));\r\n }\r\n }\r\n return false;\r\n }\r\n /** reverse the order or sense of all start-to-end related properties. */\r\n public reverseInPlace() {\r\n this.fitPoints.reverse();\r\n if (this.knots)\r\n this.knots.reverse();\r\n // Swap pointers to tangents. They don't need to be negated because they point into the curve.\r\n const oldStart = this._startTangent;\r\n this._startTangent = this.endTangent;\r\n this._endTangent = oldStart;\r\n }\r\n}\r\n\r\n/**\r\n * Interpolating curve.\r\n * * Derive from [[ProxyCurve]]\r\n * * Use a [[BSplineCurve3d]] as the proxy\r\n * *\r\n * @public\r\n */\r\nexport class InterpolationCurve3d extends ProxyCurve {\r\n public readonly curvePrimitiveType = \"interpolationCurve\";\r\n private _options: InterpolationCurve3dOptions;\r\n /** CAPTURE properties and proxy curve. */\r\n private constructor(properties: InterpolationCurve3dOptions, proxyCurve: CurvePrimitive) {\r\n super(proxyCurve);\r\n this._options = properties;\r\n }\r\n /** Second step of double dispatch: call `handler.handleInterpolationCurve3d(this)` */\r\n public override dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n let result = handler.handleInterpolationCurve3d(this);\r\n if (undefined === result) // if handler doesn't specialize on interpolation curves, default to proxy\r\n result = this._proxyCurve.dispatchToGeometryHandler(handler);\r\n return result;\r\n }\r\n /**\r\n * Create an [[InterpolationCurve3d]] based on points, knots, and other properties in the [[InterpolationCurve3dProps]] or [[InterpolationCurve3dOptions]].\r\n * * This saves a COPY OF the options or props.\r\n * * Use createCapture () if the options or props can be used without copy\r\n */\r\n public static create(options: InterpolationCurve3dOptions | InterpolationCurve3dProps): InterpolationCurve3d | undefined {\r\n let optionsCopy;\r\n if (options instanceof InterpolationCurve3dOptions) {\r\n optionsCopy = options.clone();\r\n } else {\r\n optionsCopy = InterpolationCurve3dOptions.create(options);\r\n }\r\n return InterpolationCurve3d.createCapture(optionsCopy);\r\n }\r\n /**\r\n * Create an [[InterpolationCurve3d]]\r\n * * The options object is captured into the new curve object (not copied)\r\n */\r\n public static createCapture(options: InterpolationCurve3dOptions): InterpolationCurve3d | undefined {\r\n const proxyCurve = BSplineCurve3d.createFromInterpolationCurve3dOptions(options);\r\n if (proxyCurve)\r\n return new InterpolationCurve3d(options, proxyCurve);\r\n return undefined;\r\n }\r\n /** Return the (pointer to) the proxy B-spline curve. */\r\n public override get proxyCurve(): BSplineCurve3d {\r\n return this._proxyCurve as BSplineCurve3d;\r\n }\r\n /** Return a (copy of) the defining points, packed as a Float64Array */\r\n public copyFitPointsFloat64Array(): Float64Array {\r\n return Point3dArray.cloneXYZPropsAsFloat64Array(this._options.fitPoints);\r\n }\r\n\r\n /**\r\n * Return json key-value pairs for for this [[InterpolationCurve3d]].\r\n * @returns\r\n */\r\n public toJSON(): any {\r\n return this._options.cloneAsInterpolationCurve3dProps();\r\n }\r\n /** Clone the [[InterpolationCurve3dProps]] object in this [[InterpolationCurve3d]] */\r\n public cloneProps(): InterpolationCurve3dProps {\r\n return this._options.cloneAsInterpolationCurve3dProps();\r\n }\r\n\r\n /** return the options pointer */\r\n public get options(): InterpolationCurve3dOptions { return this._options; }\r\n\r\n /**\r\n * Reverse the curve direction.\r\n * * This updates both the defining properties and the proxy bspline.\r\n */\r\n public reverseInPlace(): void {\r\n this._proxyCurve.reverseInPlace();\r\n this._options.reverseInPlace();\r\n }\r\n /**\r\n * Transform this [[InterpolationCurve3d]] and its defining data in place\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n const proxyOk = this._proxyCurve.tryTransformInPlace(transform);\r\n if (proxyOk) {\r\n transform.multiplyPoint3dArrayInPlace(this._options.fitPoints);\r\n if (this._options.startTangent)\r\n transform.multiplyVectorInPlace(this._options.startTangent);\r\n if (this._options.endTangent)\r\n transform.multiplyVectorInPlace(this._options.endTangent);\r\n }\r\n return proxyOk;\r\n }\r\n /**\r\n * Find intervals of this CurvePrimitive that are interior to a clipper.\r\n * * This implementation simply passes the call to the proxy curve.\r\n * @param clipper clip structure (e.g. clip planes).\r\n * @param announce (optional) function to be called announcing fractional intervals of the input curve.\r\n * @returns true if any \"in\" segments are announced.\r\n */\r\n public override announceClipIntervals(clipper: Clipper, announce?: AnnounceNumberNumberCurvePrimitive): boolean {\r\n return this._proxyCurve.announceClipIntervals(clipper, announce);\r\n }\r\n /** Return a deep clone */\r\n public override clone(): InterpolationCurve3d {\r\n return new InterpolationCurve3d(this._options.clone(), this._proxyCurve.clone());\r\n }\r\n /** Return a transformed clone. */\r\n public override cloneTransformed(transform: Transform): InterpolationCurve3d | undefined {\r\n return super.cloneTransformed(transform) as InterpolationCurve3d | undefined;\r\n }\r\n\r\n public override isAlmostEqual(other: GeometryQuery): boolean {\r\n if (other instanceof InterpolationCurve3d) {\r\n return InterpolationCurve3dOptions.areAlmostEqual(this._options, other._options);\r\n }\r\n return false;\r\n }\r\n\r\n /** Test if `other` is also an [[InterpolationCurve3d]] */\r\n public isSameGeometryClass(other: GeometryQuery): boolean { return other instanceof InterpolationCurve3d; }\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"InterpolationCurve3d.js","sourceRoot":"","sources":["../../../src/bspline/InterpolationCurve3d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Bspline\r\n */\r\n\r\nimport { BSplineCurveOps } from \"../bspline/BSplineCurveOps\";\r\nimport { Clipper } from \"../clipping/ClipUtils\";\r\nimport { AnnounceNumberNumberCurvePrimitive, CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { ProxyCurve } from \"../curve/ProxyCurve\";\r\nimport { Geometry } from \"../Geometry\";\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Point3dArray } from \"../geometry3d/PointHelpers\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { XYZProps } from \"../geometry3d/XYZProps\";\r\nimport { BSplineCurve3d } from \"./BSplineCurve\";\r\n\r\n/**\r\n * fitPoints and end condition data for [[InterpolationCurve3d]]\r\n * * This is a \"json compatible\" version of [[InterpolationCurve3dOptions]]\r\n * @public\r\n */\r\nexport interface InterpolationCurve3dProps {\r\n /** The order of the computed B-spline curve (one more than its degree). */\r\n order?: number;\r\n /** Whether the B-spline construction should be periodic. Default is `false`. */\r\n closed?: boolean;\r\n /** If closed and no knots, compute chord length knots (1) or uniform knots (0, default). Chord length knots give best fit. */\r\n isChordLenKnots?: number;\r\n /** If !closed but first and last fitPoints are equal, pivot computed start/end tangent(s) so that they are colinear (1) or leave them be (0, default). */\r\n isColinearTangents?: number;\r\n /** If !closed and start/endTangent is defined, set its magnitude to the first/last fit point chord length (1) or to the magnitude of the Bessel tangent (0, default). Bessel gives best fit. */\r\n isChordLenTangents?: number;\r\n /** If !closed and start/endTangent is `undefined`, compute it using the natural end condition (1) or Bessel (0, default). Bessel gives best fit. */\r\n isNaturalTangents?: number;\r\n /** Optional start tangent, pointing into curve. Magnitude is ignored. */\r\n startTangent?: XYZProps;\r\n /** Optional end tangent, pointing into curve. Magnitude is ignored. */\r\n endTangent?: XYZProps;\r\n /** Points that the curve must pass through. */\r\n fitPoints: XYZProps[];\r\n /** Optional parameters for curve fitting, one per fit point. If `undefined`, knots are computed. */\r\n knots?: number[];\r\n}\r\n\r\n/**\r\n * fitPoints and end condition data for [[InterpolationCurve3d]]\r\n * * This is a \"typed object\" version of the serializer-friendly [[InterpolationCurve3dProps]]\r\n * * Typical use cases rarely require all parameters, so the constructor does not itemize them as parameters.\r\n * @public\r\n */\r\nexport class InterpolationCurve3dOptions {\r\n /**\r\n * Constructor.\r\n * @param fitPoints points to CAPTURE\r\n * @param knots array to CAPTURE\r\n */\r\n public constructor(fitPoints?: Point3d[], knots?: number[]) {\r\n this._fitPoints = fitPoints ? fitPoints : [];\r\n this._knots = knots;\r\n }\r\n\r\n private _order?: number;\r\n private _closed?: boolean;\r\n private _isChordLenKnots?: number;\r\n private _isColinearTangents?: number;\r\n private _isChordLenTangents?: number;\r\n private _isNaturalTangents?: number;\r\n private _startTangent?: Vector3d;\r\n private _endTangent?: Vector3d;\r\n private _fitPoints: Point3d[];\r\n private _knots?: number[];\r\n\r\n /** `order` as property */\r\n public get order(): number { return Geometry.resolveNumber(this._order, 4); }\r\n public set order(val: number) { this._order = val; }\r\n /** `closed` as property */\r\n public get closed(): boolean { return Geometry.resolveValue(this._closed, false); }\r\n public set closed(val: boolean) { this._closed = val; }\r\n /** `isChordLenKnots` as property */\r\n public get isChordLenKnots(): number { return Geometry.resolveNumber(this._isChordLenKnots, 0); }\r\n public set isChordLenKnots(val: number) { this._isChordLenKnots = val; }\r\n /** `isColinearTangents` as property */\r\n public get isColinearTangents(): number { return Geometry.resolveNumber(this._isColinearTangents, 0); }\r\n public set isColinearTangents(val: number) { this._isColinearTangents = val; }\r\n /** `isChordLenTangents` as property */\r\n public get isChordLenTangents(): number { return Geometry.resolveNumber(this._isChordLenTangents, 0); }\r\n public set isChordLenTangents(val: number) { this._isChordLenTangents = val; }\r\n /** `isNaturalTangents` as property */\r\n public get isNaturalTangents(): number { return Geometry.resolveNumber(this._isNaturalTangents, 0); }\r\n public set isNaturalTangents(val: number) { this._isNaturalTangents = val; }\r\n /** access POSSIBLY UNDEFINED start tangent. Setter CAPTURES. */\r\n public get startTangent(): Vector3d | undefined { return this._startTangent; }\r\n public set startTangent(val: Vector3d | undefined) { this._startTangent = val; }\r\n /** access POSSIBLY UNDEFINED end tangent. Setter CAPTURES. */\r\n public get endTangent(): Vector3d | undefined { return this._endTangent; }\r\n public set endTangent(val: Vector3d | undefined) { this._endTangent = val; }\r\n /** access POINTER TO fit points. Setter CAPTURES. */\r\n public get fitPoints(): Point3d[] { return this._fitPoints; }\r\n public set fitPoints(val: Point3d[]) { this._fitPoints = val; }\r\n /** access POSSIBLY UNDEFINED knots array. Setter CAPTURES. */\r\n public get knots(): number[] | undefined { return this._knots; }\r\n public set knots(val: number[] | undefined) { this._knots = val; }\r\n\r\n /** One step setup of properties not named in constructor.\r\n * * CAPTURE pointers to tangents.\r\n * * OPTIONALLY downgrade \"0\" values to undefined.\r\n */\r\n public captureOptionalProps(\r\n order: number | undefined,\r\n closed: boolean | undefined,\r\n isChordLenKnots: number | undefined,\r\n isColinearTangents: number | undefined,\r\n isChordLenTangent: number | undefined,\r\n isNaturalTangents: number | undefined,\r\n startTangent: Vector3d | undefined,\r\n endTangent: Vector3d | undefined,\r\n ) {\r\n this._order = Geometry.resolveToUndefined(order, 0);\r\n this._closed = Geometry.resolveToUndefined(closed, false);\r\n this._isChordLenKnots = Geometry.resolveToUndefined(isChordLenKnots, 0);\r\n this._isColinearTangents = Geometry.resolveToUndefined(isColinearTangents, 0);\r\n this._isChordLenTangents = Geometry.resolveToUndefined(isChordLenTangent, 0);\r\n this._isNaturalTangents = Geometry.resolveToUndefined(isNaturalTangents, 0);\r\n this._startTangent = startTangent;\r\n this._endTangent = endTangent;\r\n\r\n }\r\n /** Clone with strongly typed members reduced to simple json, with \"undefined\" members omitted */\r\n public cloneAsInterpolationCurve3dProps(): InterpolationCurve3dProps {\r\n const props: InterpolationCurve3dProps = {\r\n fitPoints: Point3dArray.cloneDeepJSONNumberArrays(this.fitPoints),\r\n knots: this._knots?.slice(),\r\n };\r\n if (this._order !== undefined)\r\n props.order = this._order;\r\n if (this._closed !== undefined)\r\n props.closed = this._closed;\r\n if (this._isChordLenKnots !== undefined)\r\n props.isChordLenKnots = this._isChordLenKnots;\r\n if (this._isColinearTangents !== undefined)\r\n props.isColinearTangents = this._isColinearTangents;\r\n if (this._isChordLenTangents !== undefined)\r\n props.isChordLenTangents = this._isChordLenTangents;\r\n if (this._isNaturalTangents !== undefined)\r\n props.isNaturalTangents = this._isNaturalTangents;\r\n if (this._startTangent !== undefined)\r\n props.startTangent = this._startTangent?.toArray();\r\n if (this._endTangent !== undefined)\r\n props.endTangent = this._endTangent?.toArray();\r\n return props;\r\n }\r\n /** Clone with strongly typed members reduced to simple json. */\r\n public clone(): InterpolationCurve3dOptions {\r\n const clone = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(this.fitPoints), this.knots?.slice());\r\n clone._order = this.order;\r\n clone._closed = this.closed;\r\n clone._isChordLenKnots = this.isChordLenKnots;\r\n clone._isColinearTangents = this.isColinearTangents;\r\n clone._isChordLenTangents = this.isChordLenTangents;\r\n clone._isNaturalTangents = this.isNaturalTangents;\r\n clone._startTangent = this._startTangent?.clone();\r\n clone._endTangent = this._endTangent?.clone();\r\n return clone;\r\n }\r\n\r\n /** Clone with strongly typed members reduced to simple json. */\r\n public static create(source: InterpolationCurve3dProps): InterpolationCurve3dOptions {\r\n const result = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(source.fitPoints), source.knots?.slice());\r\n result._order = source.order;\r\n result._closed = source.closed;\r\n result._isChordLenKnots = source.isChordLenKnots;\r\n result._isColinearTangents = source.isColinearTangents;\r\n result._isChordLenTangents = source.isChordLenTangents;\r\n result._isNaturalTangents = source.isNaturalTangents;\r\n result._startTangent = source.startTangent ? Vector3d.fromJSON(source.startTangent) : undefined;\r\n result._endTangent = source.endTangent ? Vector3d.fromJSON(source.endTangent) : undefined;\r\n return result;\r\n }\r\n /** Vector equality test, with the additional rule that the zero vector matches undefined. */\r\n private static areAlmostEqualAllow000AsUndefined(a: Vector3d | undefined, b: Vector3d | undefined): boolean {\r\n if (a !== undefined && a.maxAbs() === 0)\r\n a = undefined;\r\n if (b !== undefined && b.maxAbs() === 0)\r\n b = undefined;\r\n if (a !== undefined && b !== undefined)\r\n return a.isAlmostEqual(b);\r\n return a === undefined && b === undefined;\r\n }\r\n /** Whether the two options are equivalent or both undefined. */\r\n public static areAlmostEqual(dataA: InterpolationCurve3dOptions | undefined, dataB: InterpolationCurve3dOptions | undefined): boolean {\r\n if (dataA === undefined && dataB === undefined)\r\n return true;\r\n if (dataA !== undefined && dataB !== undefined) {\r\n if (Geometry.areEqualAllowUndefined(dataA.order, dataB.order)\r\n && Geometry.areEqualAllowUndefined(dataA.closed, dataB.closed)\r\n && Geometry.areEqualAllowUndefined(dataA.isChordLenKnots, dataB.isChordLenKnots)\r\n && Geometry.areEqualAllowUndefined(dataA.isColinearTangents, dataB.isColinearTangents)\r\n && Geometry.areEqualAllowUndefined(dataA.isNaturalTangents, dataB.isNaturalTangents)\r\n && this.areAlmostEqualAllow000AsUndefined(dataA.startTangent, dataB.startTangent)\r\n && this.areAlmostEqualAllow000AsUndefined(dataA.endTangent, dataB.endTangent)\r\n && Geometry.almostEqualArrays(dataA.fitPoints, dataB.fitPoints, (a: Point3d, b: Point3d) => a.isAlmostEqual(b))) {\r\n if (Geometry.almostEqualNumberArrays(dataA.knots, dataB.knots, (a: number, b: number) => a === b))\r\n return true;\r\n if (dataA.knots === undefined && dataB.knots === undefined)\r\n return true;\r\n /* alas .. need to allow tricky mismatch of end replication */\r\n let knotsA = dataA.knots, knotsB = dataB.knots;\r\n if (dataA.knots === undefined) // construct undefined knots to compare against defined knots\r\n knotsA = BSplineCurveOps.C2CubicFit.constructFitParametersFromPoints(dataA.fitPoints, dataA.isChordLenKnots, dataA.closed);\r\n else if (dataB.knots === undefined)\r\n knotsB = BSplineCurveOps.C2CubicFit.constructFitParametersFromPoints(dataB.fitPoints, dataB.isChordLenKnots, dataB.closed);\r\n knotsA = BSplineCurveOps.C2CubicFit.convertCubicKnotVectorToFitParams(knotsA, dataA.fitPoints.length, false);\r\n knotsB = BSplineCurveOps.C2CubicFit.convertCubicKnotVectorToFitParams(knotsB, dataB.fitPoints.length, false);\r\n return Geometry.almostEqualNumberArrays(knotsA, knotsB, (a: number, b: number) => Geometry.isAlmostEqualNumber(a, b));\r\n }\r\n }\r\n return false;\r\n }\r\n /** reverse the order or sense of all start-to-end related properties. */\r\n public reverseInPlace() {\r\n this.fitPoints.reverse();\r\n if (this.knots)\r\n this.knots.reverse();\r\n // Swap pointers to tangents. They don't need to be negated because they point into the curve.\r\n const oldStart = this._startTangent;\r\n this._startTangent = this.endTangent;\r\n this._endTangent = oldStart;\r\n }\r\n}\r\n\r\n/**\r\n * Interpolating curve.\r\n * * Derive from [[ProxyCurve]]\r\n * * Use a [[BSplineCurve3d]] as the proxy\r\n * *\r\n * @public\r\n */\r\nexport class InterpolationCurve3d extends ProxyCurve {\r\n /** String name for schema properties. */\r\n public readonly curvePrimitiveType = \"interpolationCurve\";\r\n private _options: InterpolationCurve3dOptions;\r\n /** CAPTURE properties and proxy curve. */\r\n private constructor(properties: InterpolationCurve3dOptions, proxyCurve: CurvePrimitive) {\r\n super(proxyCurve);\r\n this._options = properties;\r\n }\r\n /** Second step of double dispatch: call `handler.handleInterpolationCurve3d(this)` */\r\n public override dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n let result = handler.handleInterpolationCurve3d(this);\r\n if (undefined === result) // if handler doesn't specialize on interpolation curves, default to proxy\r\n result = this._proxyCurve.dispatchToGeometryHandler(handler);\r\n return result;\r\n }\r\n /**\r\n * Create an [[InterpolationCurve3d]] based on points, knots, and other properties in the [[InterpolationCurve3dProps]] or [[InterpolationCurve3dOptions]].\r\n * * This saves a COPY OF the options or props.\r\n * * Use createCapture () if the options or props can be used without copy\r\n */\r\n public static create(options: InterpolationCurve3dOptions | InterpolationCurve3dProps): InterpolationCurve3d | undefined {\r\n let optionsCopy;\r\n if (options instanceof InterpolationCurve3dOptions) {\r\n optionsCopy = options.clone();\r\n } else {\r\n optionsCopy = InterpolationCurve3dOptions.create(options);\r\n }\r\n return InterpolationCurve3d.createCapture(optionsCopy);\r\n }\r\n /**\r\n * Create an [[InterpolationCurve3d]]\r\n * * The options object is captured into the new curve object (not copied)\r\n */\r\n public static createCapture(options: InterpolationCurve3dOptions): InterpolationCurve3d | undefined {\r\n const proxyCurve = BSplineCurve3d.createFromInterpolationCurve3dOptions(options);\r\n if (proxyCurve)\r\n return new InterpolationCurve3d(options, proxyCurve);\r\n return undefined;\r\n }\r\n /** Return the (pointer to) the proxy B-spline curve. */\r\n public override get proxyCurve(): BSplineCurve3d {\r\n return this._proxyCurve as BSplineCurve3d;\r\n }\r\n /** Return a (copy of) the defining points, packed as a Float64Array */\r\n public copyFitPointsFloat64Array(): Float64Array {\r\n return Point3dArray.cloneXYZPropsAsFloat64Array(this._options.fitPoints);\r\n }\r\n\r\n /**\r\n * Return json key-value pairs for for this [[InterpolationCurve3d]].\r\n * @returns\r\n */\r\n public toJSON(): any {\r\n return this._options.cloneAsInterpolationCurve3dProps();\r\n }\r\n /** Clone the [[InterpolationCurve3dProps]] object in this [[InterpolationCurve3d]] */\r\n public cloneProps(): InterpolationCurve3dProps {\r\n return this._options.cloneAsInterpolationCurve3dProps();\r\n }\r\n\r\n /** return the options pointer */\r\n public get options(): InterpolationCurve3dOptions { return this._options; }\r\n\r\n /**\r\n * Reverse the curve direction.\r\n * * This updates both the defining properties and the proxy bspline.\r\n */\r\n public reverseInPlace(): void {\r\n this._proxyCurve.reverseInPlace();\r\n this._options.reverseInPlace();\r\n }\r\n /**\r\n * Transform this [[InterpolationCurve3d]] and its defining data in place\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n this._proxyCurve.tryTransformInPlace(transform);\r\n transform.multiplyPoint3dArrayInPlace(this._options.fitPoints);\r\n if (this._options.startTangent)\r\n transform.multiplyVectorInPlace(this._options.startTangent);\r\n if (this._options.endTangent)\r\n transform.multiplyVectorInPlace(this._options.endTangent);\r\n return true; // we know this succeeds\r\n }\r\n /**\r\n * Find intervals of this CurvePrimitive that are interior to a clipper.\r\n * * This implementation simply passes the call to the proxy curve.\r\n * @param clipper clip structure (e.g. clip planes).\r\n * @param announce (optional) function to be called announcing fractional intervals of the input curve.\r\n * @returns true if any \"in\" segments are announced.\r\n */\r\n public override announceClipIntervals(clipper: Clipper, announce?: AnnounceNumberNumberCurvePrimitive): boolean {\r\n return this._proxyCurve.announceClipIntervals(clipper, announce);\r\n }\r\n /** Return a deep clone */\r\n public override clone(): InterpolationCurve3d {\r\n return new InterpolationCurve3d(this._options.clone(), this._proxyCurve.clone());\r\n }\r\n /** Return a transformed clone. */\r\n public override cloneTransformed(transform: Transform): InterpolationCurve3d {\r\n return super.cloneTransformed(transform) as InterpolationCurve3d;\r\n }\r\n\r\n /** Test if this [[InterpolationCurve3d]] is almost equal to another GeometryQuery object. */\r\n public override isAlmostEqual(other: GeometryQuery): boolean {\r\n if (other instanceof InterpolationCurve3d) {\r\n return InterpolationCurve3dOptions.areAlmostEqual(this._options, other._options);\r\n }\r\n return false;\r\n }\r\n\r\n /** Test if `other` is also an [[InterpolationCurve3d]] */\r\n public isSameGeometryClass(other: GeometryQuery): boolean { return other instanceof InterpolationCurve3d; }\r\n\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipUtils.d.ts","sourceRoot":"","sources":["../../../src/clipping/ClipUtils.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAe,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACnH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAMvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAE1F,OAAO,EAAE,OAAO,EAAY,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;GAGG;AACH,oBAAY,oBAAoB;IAC9B,yBAAyB;IACzB,cAAc,IAAI;IAClB,oCAAoC;IACpC,SAAS,IAAI;IACb,0BAA0B;IAC1B,eAAe,IAAI;CACpB;AACD;;;GAGG;AACH,oBAAY,cAAc;IACxB,4DAA4D;IAC5D,QAAQ,IAAI;IACZ,6DAA6D;IAC7D,SAAS,KAAK;IACd,6CAA6C;IAC7C,cAAc,IAAI;CACnB;AAED;;;GAGG;AACH,oBAAY,UAAU;IACpB,kDAAkD;IAClD,YAAY,IAAA;IACZ,kCAAkC;IAClC,aAAa,IAAA;IACb,iCAAiC;IACjC,aAAa,IAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,4DAA4D;IAC5D,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D;;;;;;;;;;;;;OAaG;IACH,+BAA+B,CAC7B,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,oBAAoB,GACxF,OAAO,CAAC;IACX;;;;;OAKG;IACH,2BAA2B,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,kCAAkC,GAAG,OAAO,CAAC;IAChG;;;;;;OAMG;IACH,6BAA6B,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,kCAAkC,GAAG,OAAO,CAAC;IAC9G;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;CAC/C;AACD;;;;;;;;GAQG;AACH,KAAK,yBAAyB,GAAG,CAC/B,GAAG,EAAE,oBAAoB,EACzB,eAAe,EAAE,gBAAgB,EAAE,EACnC,gBAAgB,EAAE,gBAAgB,EAAE,EACpC,UAAU,EAAE,qBAAqB,KAC9B,IAAI,CAAC;AACV;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,yBAAyB,CAAC;CAC9C;AACD;;;GAGG;AACH,qBAAa,aAAa;IAExB,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAY;IAC1C,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAU;IACpC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAqB;IAEjD,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAoB;IAC9D;;;;;OAKG;WACW,iBAAiB,CAC7B,KAAK,EAAE,cAAc,EACrB,iBAAiB,EAAE,oBAAoB,EACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,kCAAkC,GAC5C,OAAO;IA2BV;;;;;OAKG;WACW,WAAW,CACvB,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,kCAAkC,GACtF,OAAO;IAQV;;;;;OAKG;WACW,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE;IAc7F;;;;;OAKG;WACW,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"ClipUtils.d.ts","sourceRoot":"","sources":["../../../src/clipping/ClipUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,8 +159,6 @@ export class ClipUtilities {
|
|
|
159
159
|
if (!worldToLocal)
|
|
160
160
|
return result;
|
|
161
161
|
const localRegion = region.cloneTransformed(worldToLocal); // parallel to xy-plane so we can ignore z
|
|
162
|
-
if (!localRegion)
|
|
163
|
-
return result;
|
|
164
162
|
// We can only clip convex polygons with our clipper machinery, but the input region doesn't have to be
|
|
165
163
|
// convex or even a polygon. We get around this limitation by using a Boolean operation, which admits
|
|
166
164
|
// *any* planar regions, albeit in local coordinates. First, we clip a rectangle that covers the input region
|