@itwin/core-geometry 5.0.0-dev.9 → 5.0.0-dev.90
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 +51 -1
- package/lib/cjs/Constant.js +17 -17
- package/lib/cjs/Constant.js.map +1 -1
- package/lib/cjs/Geometry.d.ts +2 -4
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +37 -39
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js +3 -1
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.d.ts +90 -54
- package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js +137 -84
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts +193 -155
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +249 -181
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve3dH.js +1 -0
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js +18 -21
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js +22 -2
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/bspline/Bezier1dNd.js +6 -0
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.d.ts +3 -1
- package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js +5 -5
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js +2 -0
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js +21 -2
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js +12 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/bspline/KnotVector.d.ts +82 -60
- package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
- package/lib/cjs/bspline/KnotVector.js +144 -84
- package/lib/cjs/bspline/KnotVector.js.map +1 -1
- package/lib/cjs/bspline/SurfaceLocationDetail.js +12 -0
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js +14 -13
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js +4 -0
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js +10 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js +19 -0
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +5 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.js +11 -8
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js +5 -3
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +2 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +1 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +1 -0
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +17 -3
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +50 -21
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js +3 -0
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js +3 -2
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +0 -2
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -10
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +10 -0
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +35 -9
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts +87 -53
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +213 -135
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +44 -0
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +7 -10
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +27 -12
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js +2 -0
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js +6 -2
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.js +27 -7
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.js +12 -4
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/OffsetOptions.js +25 -21
- package/lib/cjs/curve/OffsetOptions.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.js +4 -2
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.js +2 -2
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js +3 -2
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js +1 -0
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js +6 -2
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js +4 -5
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.js +9 -10
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.d.ts +4 -4
- package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js +23 -6
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.js +4 -2
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js +6 -0
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
- package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js +1 -0
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js +12 -0
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +22 -4
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js +1 -0
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +3 -0
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/ClothoidSeries.js +4 -0
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/cjs/curve/spiral/CubicEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +4 -0
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +12 -2
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +24 -4
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/NormalizedTransition.js +5 -0
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +10 -0
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js +10 -0
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js +6 -0
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.js +18 -16
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.d.ts +7 -2
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js +14 -2
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js +25 -0
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/BilinearPatch.js +8 -0
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js +5 -0
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js +48 -0
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js +12 -4
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js +7 -0
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js +3 -0
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +3 -4
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +36 -14
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +7 -10
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +16 -10
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.d.ts +4 -4
- package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js +8 -8
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js +12 -4
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
- package/lib/cjs/geometry3d/PolygonOps.js +62 -25
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +12 -5
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.js +21 -4
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js +2 -0
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +20 -11
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.js +4 -0
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts +1 -1
- package/lib/cjs/geometry3d/Transform.js +4 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js +2 -0
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js +1 -0
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
- package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
- package/lib/cjs/geometry4d/MomentData.js +90 -66
- package/lib/cjs/geometry4d/MomentData.js.map +1 -1
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js +2 -0
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BandedSystem.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js +8 -0
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js +29 -13
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Complex.js +2 -0
- package/lib/cjs/numerics/Complex.js.map +1 -1
- package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/cjs/numerics/Newton.js +59 -4
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
- package/lib/cjs/numerics/PolarData.js +13 -1
- package/lib/cjs/numerics/PolarData.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.js +64 -26
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/numerics/Quadrature.js +26 -20
- package/lib/cjs/numerics/Quadrature.js.map +1 -1
- package/lib/cjs/numerics/Range1dArray.js.map +1 -1
- package/lib/cjs/numerics/SmallSystem.js.map +1 -1
- package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/cjs/numerics/UnionFind.js +1 -0
- package/lib/cjs/numerics/UnionFind.js.map +1 -1
- package/lib/cjs/numerics/UsageSums.js +10 -0
- package/lib/cjs/numerics/UsageSums.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js +16 -0
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/BoxTopology.js +67 -67
- package/lib/cjs/polyface/BoxTopology.js.map +1 -1
- package/lib/cjs/polyface/FacetFaceData.d.ts +1 -1
- package/lib/cjs/polyface/FacetFaceData.js +3 -1
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.js +30 -0
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.js +12 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +33 -23
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js +63 -33
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +11 -2
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +233 -0
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js +353 -0
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -0
- package/lib/cjs/polyface/Polyface.d.ts +35 -10
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js +73 -12
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +14 -27
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +47 -79
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +8 -0
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts +28 -0
- package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js +87 -5
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +47 -7
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeLengthData.js +7 -0
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/polyface/TaggedNumericData.js +8 -0
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
- package/lib/cjs/polyface/TriangleCandidate.js +3 -0
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js +82 -164
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +22 -22
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js +1 -0
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js +17 -17
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +113 -112
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.d.ts +70 -63
- package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +87 -74
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.js +7 -2
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.d.ts +39 -14
- package/lib/cjs/solid/Cone.d.ts.map +1 -1
- package/lib/cjs/solid/Cone.js +52 -16
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.js +4 -2
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js +5 -2
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.d.ts +26 -23
- package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
- package/lib/cjs/solid/RuledSweep.js +32 -24
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
- package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.js +11 -6
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
- package/lib/cjs/solid/Sphere.d.ts +34 -17
- package/lib/cjs/solid/Sphere.d.ts.map +1 -1
- package/lib/cjs/solid/Sphere.js +51 -24
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.d.ts +24 -15
- package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
- package/lib/cjs/solid/SweepContour.js +33 -15
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.js +7 -2
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.js +16 -4
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.js +41 -6
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.js +3 -0
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/Merging.js +11 -6
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js +22 -0
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.js +22 -0
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
- package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
- package/lib/cjs/topology/Triangulation.js +21 -11
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js +13 -0
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Constant.js +17 -17
- package/lib/esm/Constant.js.map +1 -1
- package/lib/esm/Geometry.d.ts +2 -4
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +37 -39
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js +3 -1
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
- package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.js +137 -84
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +249 -181
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js +18 -21
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js +22 -2
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/bspline/Bezier1dNd.js +6 -0
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
- package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js +5 -5
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js +2 -0
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js +21 -2
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/bspline/KnotVector.d.ts +82 -60
- package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
- package/lib/esm/bspline/KnotVector.js +144 -84
- package/lib/esm/bspline/KnotVector.js.map +1 -1
- package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js +4 -0
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.js +10 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js +19 -0
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +5 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.js +11 -8
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +1 -0
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +1 -0
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +17 -3
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +50 -21
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js +3 -2
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +10 -0
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +35 -9
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts +87 -53
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +213 -135
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +44 -0
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +7 -10
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +27 -12
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js +2 -0
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.js +6 -2
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.js +27 -7
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.js +12 -4
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/OffsetOptions.js +25 -21
- package/lib/esm/curve/OffsetOptions.js.map +1 -1
- package/lib/esm/curve/ParityRegion.js +4 -2
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.js +2 -2
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js +3 -2
- package/lib/esm/curve/PointString3d.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.js +1 -0
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js +6 -2
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js +4 -5
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.js +9 -10
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.d.ts +4 -4
- package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/esm/curve/StrokeOptions.js +23 -6
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.js +4 -2
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +13 -5
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveLengthContext.js +6 -0
- package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
- package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js +1 -0
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js +12 -0
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +1 -0
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +22 -4
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js +1 -0
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +3 -0
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/ClothoidSeries.js +4 -0
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/esm/curve/spiral/CubicEvaluator.js +2 -0
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +4 -0
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +12 -2
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +24 -4
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/NormalizedTransition.js +5 -0
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js +10 -0
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js +10 -0
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/XYCurveEvaluator.js +6 -0
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/esm/geometry3d/Angle.js +18 -16
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.d.ts +7 -2
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js +14 -2
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js +25 -0
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/BilinearPatch.js +8 -0
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js +5 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js +48 -0
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js +12 -4
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js +7 -0
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableBlockedArray.js +12 -0
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js +3 -0
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
- package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +3 -4
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +36 -14
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +7 -10
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +16 -10
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.d.ts +4 -4
- package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js +8 -8
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js +12 -4
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
- package/lib/esm/geometry3d/PolygonOps.js +62 -25
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +12 -5
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.js +21 -4
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js +2 -0
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +20 -11
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.js +4 -0
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js +11 -0
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts +1 -1
- package/lib/esm/geometry3d/Transform.js +4 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.js +2 -0
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js +1 -0
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/MomentData.d.ts +72 -73
- package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
- package/lib/esm/geometry4d/MomentData.js +90 -66
- package/lib/esm/geometry4d/MomentData.js.map +1 -1
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js +2 -0
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BandedSystem.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js +8 -0
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js +29 -13
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Complex.js +2 -0
- package/lib/esm/numerics/Complex.js.map +1 -1
- package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/esm/numerics/Newton.js +59 -4
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/PascalCoefficients.js +1 -1
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
- package/lib/esm/numerics/PolarData.js +13 -1
- package/lib/esm/numerics/PolarData.js.map +1 -1
- package/lib/esm/numerics/Polynomials.js +64 -26
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/numerics/Quadrature.js +26 -20
- package/lib/esm/numerics/Quadrature.js.map +1 -1
- package/lib/esm/numerics/Range1dArray.js.map +1 -1
- package/lib/esm/numerics/SmallSystem.js.map +1 -1
- package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/esm/numerics/UnionFind.js +1 -0
- package/lib/esm/numerics/UnionFind.js.map +1 -1
- package/lib/esm/numerics/UsageSums.js +10 -0
- package/lib/esm/numerics/UsageSums.js.map +1 -1
- package/lib/esm/polyface/AuxData.js +16 -0
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/BoxTopology.js +67 -67
- package/lib/esm/polyface/BoxTopology.js.map +1 -1
- package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
- package/lib/esm/polyface/FacetFaceData.js +3 -1
- package/lib/esm/polyface/FacetFaceData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.js +30 -0
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.js +12 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +3 -2
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js +11 -2
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
- package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
- package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
- package/lib/esm/polyface/Polyface.d.ts +35 -10
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js +73 -12
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +48 -80
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +8 -0
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts +28 -0
- package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js +87 -5
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +47 -7
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeLengthData.js +7 -0
- package/lib/esm/polyface/RangeLengthData.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/polyface/TaggedNumericData.js +8 -0
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
- package/lib/esm/polyface/TriangleCandidate.js +3 -0
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js +82 -164
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +22 -22
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js +1 -0
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js +17 -17
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +113 -112
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.d.ts +70 -63
- package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +87 -74
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.js +7 -2
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.d.ts +39 -14
- package/lib/esm/solid/Cone.d.ts.map +1 -1
- package/lib/esm/solid/Cone.js +53 -17
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.js +4 -2
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.js +5 -2
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.d.ts +26 -23
- package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
- package/lib/esm/solid/RuledSweep.js +32 -24
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
- package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
- package/lib/esm/solid/SolidPrimitive.js +11 -6
- package/lib/esm/solid/SolidPrimitive.js.map +1 -1
- package/lib/esm/solid/Sphere.d.ts +34 -17
- package/lib/esm/solid/Sphere.d.ts.map +1 -1
- package/lib/esm/solid/Sphere.js +52 -25
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.d.ts +24 -15
- package/lib/esm/solid/SweepContour.d.ts.map +1 -1
- package/lib/esm/solid/SweepContour.js +33 -15
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.js +7 -2
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.js +16 -4
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.js +41 -6
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.js +3 -0
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/Merging.js +11 -6
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.js +22 -0
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/SignedDataSummary.js +22 -0
- package/lib/esm/topology/SignedDataSummary.js.map +1 -1
- package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
- package/lib/esm/topology/Triangulation.js +21 -11
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js +13 -0
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +9 -9
|
@@ -31,80 +31,117 @@ const BSplineCurveOps_1 = require("./BSplineCurveOps");
|
|
|
31
31
|
const KnotVector_1 = require("./KnotVector");
|
|
32
32
|
/**
|
|
33
33
|
* Base class for BSplineCurve3d and BSplineCurve3dH.
|
|
34
|
-
* * A
|
|
35
|
-
* * The
|
|
36
|
-
*
|
|
37
|
-
*
|
|
34
|
+
* * A B-spline curve consists of an array of `knots`, an array of `poles`, and a `degree`.
|
|
35
|
+
* * The knot array is a non-decreasing sequence of numbers. It is also called a "knot vector".
|
|
36
|
+
* * The curve is a parametric function whose domain is a sub-range of its knots.
|
|
37
|
+
* * The API sometimes refers to a domain parameter `u` as a "knot", even if `u` is not actually an entry in the
|
|
38
|
+
* knot array.
|
|
39
|
+
* * The curve loosely "follows" the line string formed by the poles, aka the "control polygon".
|
|
40
|
+
* * The curve is a chain of polynomial segments, aka "spans" or "fragments". B-spline theory identifies these as
|
|
41
|
+
* Bezier curves.
|
|
38
42
|
* * The polynomial spans all have same `degree`.
|
|
39
|
-
* *
|
|
40
|
-
* *
|
|
41
|
-
* * The number of spans is `numSpan = numPoles - degree
|
|
42
|
-
* * For a
|
|
43
|
-
* * The `order` poles begin at index `spanIndex`.
|
|
44
|
-
* * The `2*
|
|
45
|
-
* * The
|
|
46
|
-
* * The
|
|
43
|
+
* * Each span is controlled by `order = degree + 1` contiguous points in the pole array.
|
|
44
|
+
* * There is a strict relationship between knot and poles counts: `numPoles + order = numKnots + 2'.
|
|
45
|
+
* * The number of spans is `numSpan = numPoles - degree`.
|
|
46
|
+
* * For a span with index `spanIndex`:
|
|
47
|
+
* * The `order` relevant poles begin at pole index `spanIndex`.
|
|
48
|
+
* * The `2*degree` relevant knots begin at knot index `spanIndex`.
|
|
49
|
+
* * The span domain is the knot range `[knot[spanIndex+degree-1], knot[spanIndex+degree]]`.
|
|
50
|
+
* * The curve domain is the knot range `[knot[degree-1], knot[numSpan+degree-1]]`, or equivalently
|
|
51
|
+
* `[knot[degree-1], knot[numPoles-1]]`. The API refers to this domain as the "active knot interval" of the curve.
|
|
47
52
|
*
|
|
48
|
-
* Nearly all
|
|
49
|
-
* *
|
|
50
|
-
*
|
|
51
|
-
* *
|
|
52
|
-
*
|
|
53
|
-
*
|
|
53
|
+
* Nearly all B-spline curves are "clamped".
|
|
54
|
+
* * This means that in the `knots` array, the first `degree` knots are equal, and the last `degree` knots are equal.
|
|
55
|
+
* We say the smallest knot and the largest knot have multiplicity `degree`.
|
|
56
|
+
* * Clamping make the curve pass through its first and last poles, with tangents directed along the first and
|
|
57
|
+
* last edges of the control polygon.
|
|
58
|
+
* * For instance, a cubic B-spline curve with knot vector `[0,0,0,1,2,3,3,3]`
|
|
59
|
+
* * can be evaluated at parameter values in the range `[0, 3]`
|
|
60
|
+
* * has 3 spans, with domains `[0, 1]`, `[1, 2]`, and `[2, 3]`
|
|
54
61
|
* * has 6 poles
|
|
55
62
|
* * passes through its first and last poles.
|
|
56
|
-
* * `create` methods may allow classic convention that has an extra knot at the beginning and end of the
|
|
57
|
-
*
|
|
58
|
-
* *
|
|
63
|
+
* * The `create` methods may allow the classic convention that has an extra knot at the beginning and end of the
|
|
64
|
+
* knot vector.
|
|
65
|
+
* * These two extra knots are not actually needed to define the B-spline curve.
|
|
66
|
+
* * When the `create` methods recognize the classic setup (`numPoles + order = numKnots`), the extra knots are
|
|
67
|
+
* not saved with the BSplineCurve3dBase knots.
|
|
59
68
|
*
|
|
60
|
-
* * The weighted variant has the problem that CurvePrimitive
|
|
61
|
-
*
|
|
69
|
+
* * The weighted variant [[BSplineCurve3dH]] has the problem that `CurvePrimitive` 3D typing does not allow the
|
|
70
|
+
* undefined result where a homogeneous pole has zero weight; the convention in this case is to return 000.
|
|
62
71
|
*
|
|
63
72
|
* * Note the class relationships:
|
|
64
|
-
* * BSpline1dNd knows the
|
|
65
|
-
* * BsplineCurve3dBase owns a protected BSpline1dNd
|
|
66
|
-
* * BsplineCurve3dBase is derived from CurvePrimitive, which creates obligation to act as a 3D curve,
|
|
67
|
-
* * evaluate fraction to point and derivatives wrt fraction
|
|
68
|
-
* * compute intersection with plane
|
|
69
|
-
* * BSplineCurve3d and BSplineCurve3dH have variant logic driven by whether or not there are "weights" on the poles.
|
|
70
|
-
* * For `BSplineCurve3d`, the xyz value of pole calculations are "final" values for 3d evaluation
|
|
73
|
+
* * [[BSpline1dNd]] knows the definitional B-spline recurrence relation with no physical interpretation for the poles.
|
|
74
|
+
* * BsplineCurve3dBase owns a protected BSpline1dNd.
|
|
75
|
+
* * `BsplineCurve3dBase` is derived from [[CurvePrimitive]], which creates obligation to act as a 3D curve, e.g.,
|
|
76
|
+
* * evaluate fraction to point and derivatives wrt fraction.
|
|
77
|
+
* * compute intersection with plane.
|
|
78
|
+
* * [[BSplineCurve3d]] and [[BSplineCurve3dH]] have variant logic driven by whether or not there are "weights" on the poles.
|
|
79
|
+
* * For `BSplineCurve3d`, the xyz value of pole calculations are "final" values for 3d evaluation.
|
|
71
80
|
* * For `BSplineCurve3dH`, various `BSpline1dNd` results with xyzw have to be normalized back to xyz.
|
|
72
81
|
*
|
|
73
82
|
* * These classes do not support "periodic" variants.
|
|
74
|
-
* * Periodic curves
|
|
83
|
+
* * Periodic curves historically have carried a flag (e.g., "closed") indicating that certain un-stored
|
|
84
|
+
* leading/trailing knots and poles are understood to wrap around periodically.
|
|
85
|
+
* * Instead, these classes carry no such flag. They represent such curves with explicitly wrapped knots/poles.
|
|
86
|
+
*
|
|
87
|
+
* * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/BSpline/
|
|
75
88
|
* @public
|
|
76
89
|
*/
|
|
77
90
|
class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
78
|
-
|
|
79
|
-
|
|
91
|
+
/** String name for schema properties. */
|
|
92
|
+
curvePrimitiveType = "bsplineCurve";
|
|
93
|
+
/** The underlying blocked-pole spline, with simple x,y,z poles. */
|
|
94
|
+
_bcurve;
|
|
95
|
+
_definitionData;
|
|
96
|
+
set definitionData(data) {
|
|
97
|
+
this._definitionData = data;
|
|
98
|
+
}
|
|
99
|
+
get definitionData() {
|
|
100
|
+
return this._definitionData;
|
|
101
|
+
}
|
|
80
102
|
constructor(poleDimension, numPoles, order, knots) {
|
|
81
103
|
super();
|
|
82
|
-
/** String name for schema properties */
|
|
83
|
-
this.curvePrimitiveType = "bsplineCurve";
|
|
84
104
|
this._bcurve = BSpline1dNd_1.BSpline1dNd.create(numPoles, poleDimension, order, knots);
|
|
85
105
|
}
|
|
86
|
-
/** Return the degree (one less than the order) of the curve */
|
|
87
|
-
get degree() {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
/** Return the
|
|
91
|
-
get
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
get knotsRef() { return this._bcurve.knots.knots; }
|
|
98
|
-
/** Number of components per pole.
|
|
99
|
-
* * 3 for conventional (x,y,z) curve
|
|
100
|
-
* * 4 for weighted (wx,wy,wz,w) curve
|
|
106
|
+
/** Return the degree (one less than the order) of the curve. */
|
|
107
|
+
get degree() {
|
|
108
|
+
return this._bcurve.degree;
|
|
109
|
+
}
|
|
110
|
+
/** Return the order (one more than degree) of the curve. */
|
|
111
|
+
get order() {
|
|
112
|
+
return this._bcurve.order;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Return the number of Bezier spans in the curve. Note that this number includes the number of null
|
|
116
|
+
* spans at repeated knows.
|
|
101
117
|
*/
|
|
102
|
-
get
|
|
118
|
+
get numSpan() {
|
|
119
|
+
return this._bcurve.numSpan;
|
|
120
|
+
}
|
|
121
|
+
/** Return the number of poles. */
|
|
122
|
+
get numPoles() {
|
|
123
|
+
return this._bcurve.numPoles;
|
|
124
|
+
}
|
|
125
|
+
/** Return live reference to the poles of the curve. */
|
|
126
|
+
get polesRef() {
|
|
127
|
+
return this._bcurve.packedData;
|
|
128
|
+
}
|
|
129
|
+
/** Return live reference to the knots of the curve. */
|
|
130
|
+
get knotsRef() {
|
|
131
|
+
return this._bcurve.knots.knots;
|
|
132
|
+
}
|
|
103
133
|
/**
|
|
104
|
-
*
|
|
105
|
-
*
|
|
134
|
+
* Number of components per pole, e.g.,
|
|
135
|
+
* * 3 for conventional (x,y,z) curve.
|
|
136
|
+
* * 4 for weighted (wx,wy,wz,w) curve.
|
|
106
137
|
*/
|
|
107
|
-
|
|
138
|
+
get poleDimension() {
|
|
139
|
+
return this._bcurve.poleLength;
|
|
140
|
+
}
|
|
141
|
+
/** Return a simple array form of the knots. Optionally replicate the first and last in classic over-clamped manner. */
|
|
142
|
+
copyKnots(includeExtraEndKnot) {
|
|
143
|
+
return this._bcurve.knots.copyKnots(includeExtraEndKnot);
|
|
144
|
+
}
|
|
108
145
|
/** Get the flag indicating the curve might be suitable for having wrapped "closed" interpretation. */
|
|
109
146
|
getWrappable() {
|
|
110
147
|
return this._bcurve.knots.wrappable;
|
|
@@ -114,7 +151,7 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
114
151
|
this._bcurve.knots.wrappable = value;
|
|
115
152
|
}
|
|
116
153
|
/**
|
|
117
|
-
* Test knots and
|
|
154
|
+
* Test knots and poles to determine if it is possible to close (aka "wrap") the curve.
|
|
118
155
|
* @returns the manner in which it is possible to close the curve. See `BSplineWrapMode` for particulars of each mode.
|
|
119
156
|
*/
|
|
120
157
|
get isClosableCurve() {
|
|
@@ -127,25 +164,18 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
127
164
|
return KnotVector_1.BSplineWrapMode.None;
|
|
128
165
|
return mode;
|
|
129
166
|
}
|
|
130
|
-
/** Evaluate the curve point at
|
|
167
|
+
/** Evaluate the curve point at the given fractional parameter. */
|
|
131
168
|
fractionToPoint(fraction, result) {
|
|
132
169
|
return this.knotToPoint(this._bcurve.knots.fractionToKnot(fraction), result);
|
|
133
170
|
}
|
|
134
|
-
/**
|
|
135
|
-
* * origin at the fractional position along the arc
|
|
136
|
-
* * direction is the first derivative, i.e. tangent along the curve
|
|
137
|
-
*/
|
|
171
|
+
/** Evaluate the curve and derivative at the given fractional parameter. */
|
|
138
172
|
fractionToPointAndDerivative(fraction, result) {
|
|
139
173
|
const knot = this._bcurve.knots.fractionToKnot(fraction);
|
|
140
174
|
result = this.knotToPointAndDerivative(knot, result);
|
|
141
175
|
result.direction.scaleInPlace(this._bcurve.knots.knotLength01);
|
|
142
176
|
return result;
|
|
143
177
|
}
|
|
144
|
-
/**
|
|
145
|
-
* * origin at the fractional position along the arc
|
|
146
|
-
* * x axis is the first derivative, i.e. tangent along the curve
|
|
147
|
-
* * y axis is the second derivative
|
|
148
|
-
*/
|
|
178
|
+
/** Evaluate the curve and two derivatives at the given fractional parameter. */
|
|
149
179
|
fractionToPointAnd2Derivatives(fraction, result) {
|
|
150
180
|
const knot = this._bcurve.knots.fractionToKnot(fraction);
|
|
151
181
|
result = this.knotToPointAnd2Derivatives(knot, result);
|
|
@@ -154,22 +184,23 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
154
184
|
result.vectorV.scaleInPlace(a * a);
|
|
155
185
|
return result;
|
|
156
186
|
}
|
|
187
|
+
/** Return the start point of the curve. */
|
|
188
|
+
startPoint() {
|
|
189
|
+
return this.evaluatePointInSpan(0, 0.0);
|
|
190
|
+
}
|
|
191
|
+
/** Return the end point of the curve. */
|
|
192
|
+
endPoint() {
|
|
193
|
+
return this.evaluatePointInSpan(this.numSpan - 1, 1.0);
|
|
194
|
+
}
|
|
157
195
|
/**
|
|
158
|
-
*
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Return the end point of the curve
|
|
163
|
-
*/
|
|
164
|
-
endPoint() { return this.evaluatePointInSpan(this.numSpan - 1, 1.0); }
|
|
165
|
-
/** Reverse the curve in place.
|
|
166
|
-
* * Poles are reversed
|
|
167
|
-
* * knot values are mirrored around the middle of the
|
|
168
|
-
*/
|
|
169
|
-
reverseInPlace() { this._bcurve.reverseInPlace(); }
|
|
170
|
-
/**
|
|
171
|
-
* Return an array with this curve's bezier fragments.
|
|
196
|
+
* Reverse the curve in place.
|
|
197
|
+
* * Poles are reversed.
|
|
198
|
+
* * Knot values are mirrored around the middle of the knot array.
|
|
172
199
|
*/
|
|
200
|
+
reverseInPlace() {
|
|
201
|
+
this._bcurve.reverseInPlace();
|
|
202
|
+
}
|
|
203
|
+
/** Return an array with this curve's Bezier fragments. */
|
|
173
204
|
collectBezierSpans(prefer3dH) {
|
|
174
205
|
const result = [];
|
|
175
206
|
const numSpans = this.numSpan;
|
|
@@ -188,17 +219,18 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
188
219
|
return poleIndex * this._bcurve.poleLength;
|
|
189
220
|
return undefined;
|
|
190
221
|
}
|
|
191
|
-
/**
|
|
192
|
-
*
|
|
222
|
+
/**
|
|
223
|
+
* Search for the curve point that is closest to the spacePoint.
|
|
193
224
|
* * If the space point is exactly on the curve, this is the reverse of fractionToPoint.
|
|
194
|
-
* * Since CurvePrimitive should always have start and end available as candidate points, this method should always
|
|
195
|
-
*
|
|
225
|
+
* * Since CurvePrimitive should always have start and end available as candidate points, this method should always
|
|
226
|
+
* succeed.
|
|
227
|
+
* @param spacePoint point in space.
|
|
196
228
|
* @param _extend ignored (pass false). A BSplineCurve3dBase cannot be extended.
|
|
197
229
|
* @param result optional pre-allocated detail to populate and return.
|
|
198
230
|
* @returns details of the closest point.
|
|
199
231
|
*/
|
|
200
232
|
closestPoint(spacePoint, _extend, result) {
|
|
201
|
-
// seed at start point
|
|
233
|
+
// seed at start point; final point comes with final bezier perpendicular step
|
|
202
234
|
const point = this.fractionToPoint(0);
|
|
203
235
|
result = CurveLocationDetail_1.CurveLocationDetail.createCurveFractionPointDistance(this, 0.0, point, point.distance(spacePoint), result);
|
|
204
236
|
let span;
|
|
@@ -207,9 +239,9 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
207
239
|
if (this._bcurve.knots.isIndexOfRealSpan(i)) {
|
|
208
240
|
span = this.getSaturatedBezierSpan3dOr3dH(i, true, span);
|
|
209
241
|
if (span) {
|
|
210
|
-
//
|
|
242
|
+
// if the B-spline is discontinuous, both ends should be tested; ignore that possibility
|
|
211
243
|
if (span.updateClosestPointByTruePerpendicular(spacePoint, result, false, true)) {
|
|
212
|
-
// the detail records the span bezier
|
|
244
|
+
// the detail records the span bezier; promote it to the parent curve
|
|
213
245
|
result.curve = this;
|
|
214
246
|
result.fraction = span.fractionToParentFraction(result.fraction);
|
|
215
247
|
}
|
|
@@ -220,13 +252,14 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
220
252
|
}
|
|
221
253
|
/** Return a transformed deep clone. */
|
|
222
254
|
cloneTransformed(transform) {
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
return
|
|
255
|
+
const curve = this.clone();
|
|
256
|
+
curve.tryTransformInPlace(transform);
|
|
257
|
+
return curve;
|
|
226
258
|
}
|
|
227
|
-
/**
|
|
228
|
-
*
|
|
229
|
-
* @param
|
|
259
|
+
/**
|
|
260
|
+
* Return a curve primitive which is a portion of this curve.
|
|
261
|
+
* @param fractionA start fraction.
|
|
262
|
+
* @param fractionB end fraction.
|
|
230
263
|
*/
|
|
231
264
|
clonePartialCurve(fractionA, fractionB) {
|
|
232
265
|
const clone = this.clone();
|
|
@@ -237,11 +270,8 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
237
270
|
clone._bcurve.addKnot(knotB, clone.degree);
|
|
238
271
|
if (origNumKnots === clone._bcurve.knots.knots.length)
|
|
239
272
|
return clone; // full curve
|
|
240
|
-
if (knotA > knotB)
|
|
241
|
-
|
|
242
|
-
knotA = knotB;
|
|
243
|
-
knotB = tmp;
|
|
244
|
-
}
|
|
273
|
+
if (knotA > knotB)
|
|
274
|
+
[knotA, knotB] = [knotB, knotA];
|
|
245
275
|
// choose first/last knot and pole such that knotA/knotB has degree multiplicity in the new knot sequence
|
|
246
276
|
const iStartKnot = clone._bcurve.knots.knotToLeftKnotIndex(knotA) - clone.degree + 1;
|
|
247
277
|
const iStartPole = iStartKnot * clone._bcurve.poleLength;
|
|
@@ -251,15 +281,17 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
251
281
|
iLastKnotLeftMultiple = iLastKnot + 1;
|
|
252
282
|
const iEndPole = (iLastKnotLeftMultiple + 1) * clone._bcurve.poleLength; // one past last pole
|
|
253
283
|
const iEndKnot = iLastKnotLeftMultiple + clone.degree; // one past last knot
|
|
254
|
-
// trim the arrays (leave knots unnormalized
|
|
284
|
+
// trim the arrays (leave knots unnormalized)
|
|
255
285
|
clone._bcurve.knots.setKnotsCapture(clone._bcurve.knots.knots.slice(iStartKnot, iEndKnot));
|
|
256
286
|
clone._bcurve.packedData = clone._bcurve.packedData.slice(iStartPole, iEndPole);
|
|
257
287
|
clone.setWrappable(KnotVector_1.BSplineWrapMode.None); // always open
|
|
258
288
|
return clone;
|
|
259
289
|
}
|
|
260
|
-
/**
|
|
261
|
-
*
|
|
262
|
-
* @param
|
|
290
|
+
/**
|
|
291
|
+
* Implement `CurvePrimitive.appendPlaneIntersections` to compute intersections of the curve with a plane.
|
|
292
|
+
* @param plane the plane with which to intersect the curve. Concrete types include [[Plane3dByOriginAndUnitNormal]],
|
|
293
|
+
* [[Point4d]], etc.
|
|
294
|
+
* @param result growing array of plane intersections.
|
|
263
295
|
* @return number of intersections appended to the array.
|
|
264
296
|
*/
|
|
265
297
|
appendPlaneIntersectionPoints(plane, result) {
|
|
@@ -270,34 +302,32 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
270
302
|
const point4d = Point4d_1.Point4d.create();
|
|
271
303
|
// compute all pole altitudes from the plane
|
|
272
304
|
const minMax = Range_1.Range1d.createNull();
|
|
273
|
-
//
|
|
305
|
+
// put the altitudes of all the B-spline poles in one array
|
|
274
306
|
for (let i = 0; i < numPole; i++) {
|
|
275
307
|
allCoffs[i] = plane.weightedAltitude(this.getPolePoint4d(i, point4d));
|
|
276
308
|
minMax.extendX(allCoffs[i]);
|
|
277
309
|
}
|
|
278
|
-
// A univariate
|
|
310
|
+
// A univariate B-spline through the altitude poles gives altitude as function of the B-spline knot.
|
|
279
311
|
// The (bspline) altitude function for each span is `order` consecutive altitudes.
|
|
280
312
|
// If those altitudes bracket zero, the span may potentially have a crossing.
|
|
281
|
-
// When that occurs,
|
|
282
313
|
let univariateBezier;
|
|
283
314
|
let numFound = 0;
|
|
284
315
|
let previousFraction = -1000.0;
|
|
285
316
|
if (minMax.containsX(0.0)) {
|
|
286
317
|
for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {
|
|
287
|
-
if (this._bcurve.knots.isIndexOfRealSpan(spanIndex)) { // ignore trivial knot intervals
|
|
318
|
+
if (this._bcurve.knots.isIndexOfRealSpan(spanIndex)) { // ignore trivial knot intervals
|
|
288
319
|
// outer range test ...
|
|
289
320
|
minMax.setNull();
|
|
290
321
|
minMax.extendArraySubset(allCoffs, spanIndex, order);
|
|
291
322
|
if (minMax.containsX(0.0)) {
|
|
292
|
-
// pack the
|
|
323
|
+
// pack the B-spline support into a univariate bezier
|
|
293
324
|
univariateBezier = BezierPolynomials_1.UnivariateBezier.createArraySubset(allCoffs, spanIndex, order, univariateBezier);
|
|
294
325
|
// saturate and solve the bezier
|
|
295
326
|
Bezier1dNd_1.Bezier1dNd.saturate1dInPlace(univariateBezier.coffs, this._bcurve.knots, spanIndex);
|
|
296
327
|
const roots = univariateBezier.roots(0.0, true);
|
|
297
328
|
if (roots) {
|
|
298
329
|
for (const spanFraction of roots) {
|
|
299
|
-
// promote each local bezier fraction to global fraction
|
|
300
|
-
// save the curve evaluation at that fraction.
|
|
330
|
+
// promote each local bezier fraction to global fraction and save the curve evaluation at that fraction
|
|
301
331
|
numFound++;
|
|
302
332
|
const fraction = this._bcurve.knots.spanFractionToFraction(spanIndex, spanFraction);
|
|
303
333
|
if (!Geometry_1.Geometry.isAlmostEqualNumber(fraction, previousFraction)) {
|
|
@@ -316,9 +346,7 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
316
346
|
}
|
|
317
347
|
/**
|
|
318
348
|
* Construct an offset of the instance curve as viewed in the xy-plane (ignoring z).
|
|
319
|
-
*
|
|
320
|
-
* for an aggregate instance (e.g., LineString3d, CurveChainWithDistanceIndex), use RegionOps.constructCurveXYOffset() instead.
|
|
321
|
-
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
|
|
349
|
+
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object.
|
|
322
350
|
*/
|
|
323
351
|
constructOffsetXY(offsetDistanceOrOptions) {
|
|
324
352
|
const options = OffsetOptions_1.OffsetOptions.create(offsetDistanceOrOptions);
|
|
@@ -326,10 +354,13 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
326
354
|
this.emitStrokableParts(handler, options.strokeOptions);
|
|
327
355
|
return handler.claimResult();
|
|
328
356
|
}
|
|
329
|
-
/**
|
|
357
|
+
/**
|
|
358
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters
|
|
359
|
+
* of projection.
|
|
330
360
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
331
|
-
* @param lowHigh optional receiver for output
|
|
332
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
361
|
+
* @param lowHigh optional receiver for output.
|
|
362
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
363
|
+
* end of the ray.
|
|
333
364
|
*/
|
|
334
365
|
projectedParameterRange(ray, lowHigh) {
|
|
335
366
|
return PlaneAltitudeRangeContext_1.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
@@ -337,21 +368,30 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
|
|
|
337
368
|
}
|
|
338
369
|
exports.BSplineCurve3dBase = BSplineCurve3dBase;
|
|
339
370
|
/**
|
|
340
|
-
* A BSplineCurve3d is a
|
|
341
|
-
* See BSplineCurve3dBase for description of knots, order, degree.
|
|
371
|
+
* A BSplineCurve3d is a B-spline curve whose poles are Point3d.
|
|
372
|
+
* See BSplineCurve3dBase for description of knots, order, degree, and poles.
|
|
342
373
|
* @public
|
|
343
374
|
*/
|
|
344
375
|
class BSplineCurve3d extends BSplineCurve3dBase {
|
|
376
|
+
_workBezier;
|
|
345
377
|
initializeWorkBezier() {
|
|
346
378
|
if (this._workBezier === undefined)
|
|
347
379
|
this._workBezier = BezierCurve3d_1.BezierCurve3d.createOrder(this.order);
|
|
348
380
|
return this._workBezier;
|
|
349
381
|
}
|
|
350
|
-
|
|
351
|
-
|
|
382
|
+
constructor(numPoles, order, knots) {
|
|
383
|
+
super(3, numPoles, order, knots);
|
|
384
|
+
}
|
|
385
|
+
/** Test if `other` is an instance of BSplineCurve3d. */
|
|
386
|
+
isSameGeometryClass(other) {
|
|
387
|
+
return other instanceof BSplineCurve3d;
|
|
388
|
+
}
|
|
352
389
|
/** Apply `transform` to the poles. */
|
|
353
|
-
tryTransformInPlace(transform) {
|
|
354
|
-
|
|
390
|
+
tryTransformInPlace(transform) {
|
|
391
|
+
PointHelpers_1.Point3dArray.multiplyInPlace(transform, this._bcurve.packedData);
|
|
392
|
+
return true;
|
|
393
|
+
}
|
|
394
|
+
/** Get a pole as a simple Point3d. */
|
|
355
395
|
getPolePoint3d(poleIndex, result) {
|
|
356
396
|
const k = this.poleIndexToDataIndex(poleIndex);
|
|
357
397
|
if (k !== undefined) {
|
|
@@ -360,7 +400,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
360
400
|
}
|
|
361
401
|
return undefined;
|
|
362
402
|
}
|
|
363
|
-
/** Get a pole as Point4d with weight 1 */
|
|
403
|
+
/** Get a pole as Point4d with weight 1. */
|
|
364
404
|
getPolePoint4d(poleIndex, result) {
|
|
365
405
|
const k = this.poleIndexToDataIndex(poleIndex);
|
|
366
406
|
if (k !== undefined) {
|
|
@@ -369,23 +409,26 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
369
409
|
}
|
|
370
410
|
return undefined;
|
|
371
411
|
}
|
|
372
|
-
/** Convert `spanIndex` and `localFraction` to a knot. */
|
|
373
|
-
spanFractionToKnot(span, localFraction) {
|
|
374
|
-
return this._bcurve.spanFractionToKnot(span, localFraction);
|
|
375
|
-
}
|
|
376
|
-
constructor(numPoles, order, knots) {
|
|
377
|
-
super(3, numPoles, order, knots);
|
|
378
|
-
}
|
|
379
|
-
/** Return a simple array of arrays with the control points as `[[x,y,z],[x,y,z],..]` */
|
|
380
|
-
copyPoints() { return PointHelpers_1.Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3); }
|
|
381
|
-
/** Return a simple array of the control points coordinates */
|
|
382
|
-
copyPointsFloat64Array() { return this._bcurve.packedData.slice(); }
|
|
383
412
|
/**
|
|
384
|
-
*
|
|
385
|
-
* in
|
|
413
|
+
* Convert the fractional position in the given span to a knot.
|
|
414
|
+
* * The returned value is not necessarily a knot, but it is a valid parameter in the domain of the B-spline curve.
|
|
386
415
|
*/
|
|
387
|
-
|
|
388
|
-
|
|
416
|
+
spanFractionToKnot(spanIndex, spanFraction) {
|
|
417
|
+
return this._bcurve.spanFractionToKnot(spanIndex, spanFraction);
|
|
418
|
+
}
|
|
419
|
+
/** Return a simple array of arrays with the poles as `[[x,y,z],[x,y,z],..]`. */
|
|
420
|
+
copyPoints() {
|
|
421
|
+
return PointHelpers_1.Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3);
|
|
422
|
+
}
|
|
423
|
+
/** Return a simple array of poles' coordinates. */
|
|
424
|
+
copyPointsFloat64Array() {
|
|
425
|
+
return this._bcurve.packedData.slice();
|
|
426
|
+
}
|
|
427
|
+
/** Return a simple array form of the knots. Optionally replicate the first and last in classic over-clamped manner. */
|
|
428
|
+
copyKnots(includeExtraEndKnot) {
|
|
429
|
+
return this._bcurve.knots.copyKnots(includeExtraEndKnot);
|
|
430
|
+
}
|
|
431
|
+
/** Create a B-spline with uniform knots. */
|
|
389
432
|
static createUniformKnots(poles, order) {
|
|
390
433
|
const numPoles = poles instanceof Float64Array ? poles.length / 3 : poles.length;
|
|
391
434
|
if (order < 2 || numPoles < order)
|
|
@@ -409,9 +452,10 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
409
452
|
}
|
|
410
453
|
return curve;
|
|
411
454
|
}
|
|
412
|
-
/**
|
|
413
|
-
*
|
|
414
|
-
|
|
455
|
+
/**
|
|
456
|
+
* Create a smoothly closed B-spline curve with uniform knots.
|
|
457
|
+
* * Note that the curve does not start at the first pole.
|
|
458
|
+
*/
|
|
415
459
|
static createPeriodicUniformKnots(poles, order) {
|
|
416
460
|
if (order < 2)
|
|
417
461
|
return undefined;
|
|
@@ -482,21 +526,23 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
482
526
|
return BSplineCurveOps_1.BSplineCurveOps.createThroughPointsC2Cubic(options);
|
|
483
527
|
}
|
|
484
528
|
/**
|
|
485
|
-
*
|
|
529
|
+
* Create a B-spline curve from an Akima curve.
|
|
486
530
|
* @param options collection of points and end conditions.
|
|
487
531
|
*/
|
|
488
532
|
static createFromAkimaCurve3dOptions(options) {
|
|
489
533
|
return BSplineCurveOps_1.BSplineCurveOps.createThroughPoints(options.fitPoints, 4); // temporary
|
|
490
534
|
}
|
|
491
535
|
/**
|
|
492
|
-
* Create a
|
|
536
|
+
* Create a B-spline curve with given knots.
|
|
493
537
|
* * The poles have several variants:
|
|
494
|
-
* * Float64Array(3 * numPoles) in blocks of [x,y,z]
|
|
495
|
-
* * Point3d[]
|
|
496
|
-
* * number[][], with inner dimension 3
|
|
538
|
+
* * Float64Array(3 * numPoles) in blocks of [x,y,z].
|
|
539
|
+
* * Point3d[].
|
|
540
|
+
* * number[][], with inner dimension 3.
|
|
497
541
|
* * Two count conditions are recognized:
|
|
498
|
-
* * If poleArray.length + order === knotArray.length, the first and last are assumed to be the extraneous knots
|
|
542
|
+
* * If poleArray.length + order === knotArray.length, the first and last are assumed to be the extraneous knots
|
|
543
|
+
* of classic clamping.
|
|
499
544
|
* * If poleArray.length + order === knotArray.length + 2, the knots are in modern form.
|
|
545
|
+
* * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/BSpline/
|
|
500
546
|
*/
|
|
501
547
|
static create(poleArray, knotArray, order) {
|
|
502
548
|
if (order < 2)
|
|
@@ -534,31 +580,42 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
534
580
|
}
|
|
535
581
|
return curve;
|
|
536
582
|
}
|
|
537
|
-
/** Return a deep clone */
|
|
583
|
+
/** Return a deep clone. */
|
|
538
584
|
clone() {
|
|
539
|
-
const
|
|
540
|
-
const
|
|
541
|
-
|
|
542
|
-
return
|
|
585
|
+
const knotVector = this._bcurve.knots.clone();
|
|
586
|
+
const curve = new BSplineCurve3d(this.numPoles, this.order, knotVector);
|
|
587
|
+
curve._bcurve.packedData = this._bcurve.packedData.slice();
|
|
588
|
+
return curve;
|
|
543
589
|
}
|
|
544
|
-
/** Evaluate at a
|
|
590
|
+
/** Evaluate the curve at a fractional position within a given span. */
|
|
545
591
|
evaluatePointInSpan(spanIndex, spanFraction) {
|
|
546
592
|
this._bcurve.evaluateBuffersInSpan(spanIndex, spanFraction);
|
|
547
593
|
return Point3dVector3d_1.Point3d.createFrom(this._bcurve.poleBuffer);
|
|
548
594
|
}
|
|
549
|
-
/**
|
|
550
|
-
*
|
|
595
|
+
/**
|
|
596
|
+
* Evaluate the curve and derivative at a fractional position within a given span.
|
|
597
|
+
* * The derivative is with respect to the span fractional parameter, _not_ to the curve's parameter or fractional parameter.
|
|
551
598
|
*/
|
|
552
599
|
evaluatePointAndDerivativeInSpan(spanIndex, spanFraction) {
|
|
553
600
|
this._bcurve.evaluateBuffersInSpan1(spanIndex, spanFraction);
|
|
554
601
|
return Ray3d_1.Ray3d.createCapture(Point3dVector3d_1.Point3d.createFrom(this._bcurve.poleBuffer), Point3dVector3d_1.Vector3d.createFrom(this._bcurve.poleBuffer1));
|
|
555
602
|
}
|
|
556
|
-
/**
|
|
603
|
+
/**
|
|
604
|
+
* Evaluate the curve at the given parameter.
|
|
605
|
+
* @param u parameter in curve domain.
|
|
606
|
+
* @param result optional result.
|
|
607
|
+
* @returns the point on the curve.
|
|
608
|
+
*/
|
|
557
609
|
knotToPoint(u, result) {
|
|
558
610
|
this._bcurve.evaluateBuffersAtKnot(u);
|
|
559
611
|
return Point3dVector3d_1.Point3d.createFrom(this._bcurve.poleBuffer, result);
|
|
560
612
|
}
|
|
561
|
-
/**
|
|
613
|
+
/**
|
|
614
|
+
* Evaluate the curve and derivative at the given parameter.
|
|
615
|
+
* @param u parameter in curve domain.
|
|
616
|
+
* @param result optional result.
|
|
617
|
+
* @returns the ray with origin at the curve point and direction as the derivative.
|
|
618
|
+
*/
|
|
562
619
|
knotToPointAndDerivative(u, result) {
|
|
563
620
|
this._bcurve.evaluateBuffersAtKnot(u, 1);
|
|
564
621
|
if (!result)
|
|
@@ -567,12 +624,17 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
567
624
|
result.direction.setFrom(this._bcurve.poleBuffer1);
|
|
568
625
|
return result;
|
|
569
626
|
}
|
|
570
|
-
/**
|
|
627
|
+
/**
|
|
628
|
+
* Evaluate the curve and two derivatives at the given parameter.
|
|
629
|
+
* @param u parameter in the curve domain.
|
|
630
|
+
* @param result optional result.
|
|
631
|
+
* @returns the plane with origin at the curve point, vectorU as the 1st derivative, and vectorV as the 2nd derivative.
|
|
632
|
+
*/
|
|
571
633
|
knotToPointAnd2Derivatives(u, result) {
|
|
572
634
|
this._bcurve.evaluateBuffersAtKnot(u, 2);
|
|
573
635
|
return Plane3dByOriginAndVectors_1.Plane3dByOriginAndVectors.createOriginAndVectorsXYZ(this._bcurve.poleBuffer[0], this._bcurve.poleBuffer[1], this._bcurve.poleBuffer[2], this._bcurve.poleBuffer1[0], this._bcurve.poleBuffer1[1], this._bcurve.poleBuffer1[2], this._bcurve.poleBuffer2[0], this._bcurve.poleBuffer2[1], this._bcurve.poleBuffer2[2], result);
|
|
574
636
|
}
|
|
575
|
-
/**
|
|
637
|
+
/** Test if `this` is almost the same curve as `other`. */
|
|
576
638
|
isAlmostEqual(other) {
|
|
577
639
|
if (other instanceof BSplineCurve3d) {
|
|
578
640
|
return this._bcurve.knots.isAlmostEqual(other._bcurve.knots)
|
|
@@ -580,15 +642,19 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
580
642
|
}
|
|
581
643
|
return false;
|
|
582
644
|
}
|
|
583
|
-
/**
|
|
645
|
+
/** Test if this curve lies entirely in the given plane. */
|
|
584
646
|
isInPlane(plane) {
|
|
585
647
|
return PointHelpers_1.Point3dArray.isCloseToPlane(this._bcurve.packedData, plane);
|
|
586
648
|
}
|
|
587
|
-
/**
|
|
588
|
-
|
|
589
|
-
|
|
649
|
+
/**
|
|
650
|
+
* Return the control polygon length as an approximation to the curve length.
|
|
651
|
+
* * The returned length is always an overestimate.
|
|
652
|
+
*/
|
|
653
|
+
quickLength() {
|
|
654
|
+
return PointHelpers_1.Point3dArray.sumEdgeLengths(this._bcurve.packedData);
|
|
655
|
+
}
|
|
656
|
+
/** Emit Beziers or strokes (selected by the stroke options) to the handler. */
|
|
590
657
|
emitStrokableParts(handler, options) {
|
|
591
|
-
const needBeziers = handler.announceBezierCurve !== undefined;
|
|
592
658
|
const workBezier = this.initializeWorkBezier();
|
|
593
659
|
const numSpan = this.numSpan;
|
|
594
660
|
let numStrokes;
|
|
@@ -596,7 +662,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
596
662
|
const bezier = this.getSaturatedBezierSpan3dOr3dH(spanIndex, false, workBezier);
|
|
597
663
|
if (bezier) {
|
|
598
664
|
numStrokes = bezier.computeStrokeCountForOptions(options);
|
|
599
|
-
if (
|
|
665
|
+
if (handler.announceBezierCurve) {
|
|
600
666
|
handler.announceBezierCurve(bezier, numStrokes, this, spanIndex, this._bcurve.knots.spanFractionToFraction(spanIndex, 0.0), this._bcurve.knots.spanFractionToFraction(spanIndex, 1.0));
|
|
601
667
|
}
|
|
602
668
|
else {
|
|
@@ -621,7 +687,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
621
687
|
return numStroke;
|
|
622
688
|
}
|
|
623
689
|
/**
|
|
624
|
-
* Compute individual segment stroke counts.
|
|
690
|
+
* Compute individual segment stroke counts. Attach in a StrokeCountMap.
|
|
625
691
|
* @param options StrokeOptions that determine count
|
|
626
692
|
* @param parentStrokeMap evolving parent map.
|
|
627
693
|
* @alpha
|
|
@@ -640,7 +706,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
640
706
|
}
|
|
641
707
|
CurvePrimitive_1.CurvePrimitive.installStrokeCountMap(this, myData, parentStrokeMap);
|
|
642
708
|
}
|
|
643
|
-
/** Append strokes to
|
|
709
|
+
/** Append strokes to the given linestring. */
|
|
644
710
|
emitStrokes(dest, options) {
|
|
645
711
|
const workBezier = this.initializeWorkBezier();
|
|
646
712
|
const numSpan = this.numSpan;
|
|
@@ -651,16 +717,17 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
651
717
|
}
|
|
652
718
|
}
|
|
653
719
|
/**
|
|
654
|
-
* Test knots and
|
|
720
|
+
* Test knots and poles to determine if it is possible to close (aka "wrap") the curve.
|
|
655
721
|
* @returns the manner in which it is possible to close the curve. See `BSplineWrapMode` for particulars of each mode.
|
|
656
722
|
*/
|
|
657
723
|
get isClosable() {
|
|
658
724
|
return this.isClosableCurve;
|
|
659
725
|
}
|
|
660
726
|
/**
|
|
661
|
-
* Return
|
|
662
|
-
*
|
|
663
|
-
* @param
|
|
727
|
+
* Return the Bezier fragment corresponding to the given span of this curve.
|
|
728
|
+
* * The concrete return type may be [[BezierCurve3d]] or [[BezierCurve3dH]] according to the instance type and `prefer3dH`.
|
|
729
|
+
* @param spanIndex index of span.
|
|
730
|
+
* @param result optional reusable curve. This will only be reused if its type and order matches.
|
|
664
731
|
*/
|
|
665
732
|
getSaturatedBezierSpan3dOr3dH(spanIndex, prefer3dH, result) {
|
|
666
733
|
if (prefer3dH)
|
|
@@ -668,9 +735,9 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
668
735
|
return this.getSaturatedBezierSpan3d(spanIndex, result);
|
|
669
736
|
}
|
|
670
737
|
/**
|
|
671
|
-
* Return
|
|
672
|
-
* @param spanIndex
|
|
673
|
-
* @param result optional reusable curve.
|
|
738
|
+
* Return the Bezier fragment corresponding to the given span of this curve.
|
|
739
|
+
* @param spanIndex index of span.
|
|
740
|
+
* @param result optional reusable curve. This will only be reused if its type and order matches.
|
|
674
741
|
*/
|
|
675
742
|
getSaturatedBezierSpan3d(spanIndex, result) {
|
|
676
743
|
if (spanIndex < 0 || spanIndex >= this.numSpan)
|
|
@@ -681,13 +748,13 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
681
748
|
const bezier = result;
|
|
682
749
|
bezier.loadSpanPoles(this._bcurve.packedData, spanIndex);
|
|
683
750
|
if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))
|
|
684
|
-
return
|
|
751
|
+
return bezier;
|
|
685
752
|
return undefined;
|
|
686
753
|
}
|
|
687
754
|
/**
|
|
688
|
-
* Return
|
|
689
|
-
* @param spanIndex
|
|
690
|
-
* @param result optional reusable curve.
|
|
755
|
+
* Return the Bezier fragment corresponding to the given span of this curve.
|
|
756
|
+
* @param spanIndex index of span.
|
|
757
|
+
* @param result optional reusable curve. This will only be reused if its type and order matches.
|
|
691
758
|
*/
|
|
692
759
|
getSaturatedBezierSpan3dH(spanIndex, result) {
|
|
693
760
|
if (spanIndex < 0 || spanIndex >= this.numSpan)
|
|
@@ -701,15 +768,16 @@ class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
701
768
|
return bezier;
|
|
702
769
|
return undefined;
|
|
703
770
|
}
|
|
704
|
-
/** Second step of double dispatch:
|
|
771
|
+
/** Second step of double dispatch: call `handler.handleBSplineCurve3d(this)`. */
|
|
705
772
|
dispatchToGeometryHandler(handler) {
|
|
706
773
|
return handler.handleBSplineCurve3d(this);
|
|
707
774
|
}
|
|
708
775
|
/**
|
|
709
|
-
* Extend a range so
|
|
710
|
-
* *
|
|
711
|
-
*
|
|
712
|
-
* @param
|
|
776
|
+
* Extend a range so it contains the range of this curve.
|
|
777
|
+
* * This computation is based on the poles, not the curve itself, so the returned range is generally larger than the
|
|
778
|
+
* tightest possible range.
|
|
779
|
+
* @param rangeToExtend range to extend.
|
|
780
|
+
* @param transform transform to apply to the poles as they are entered into the range.
|
|
713
781
|
*/
|
|
714
782
|
extendRange(rangeToExtend, transform) {
|
|
715
783
|
const buffer = this._bcurve.packedData;
|