@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
|
@@ -28,80 +28,117 @@ import { BSplineCurveOps } from "./BSplineCurveOps";
|
|
|
28
28
|
import { BSplineWrapMode, KnotVector } from "./KnotVector";
|
|
29
29
|
/**
|
|
30
30
|
* Base class for BSplineCurve3d and BSplineCurve3dH.
|
|
31
|
-
* * A
|
|
32
|
-
* * The
|
|
33
|
-
*
|
|
34
|
-
*
|
|
31
|
+
* * A B-spline curve consists of an array of `knots`, an array of `poles`, and a `degree`.
|
|
32
|
+
* * The knot array is a non-decreasing sequence of numbers. It is also called a "knot vector".
|
|
33
|
+
* * The curve is a parametric function whose domain is a sub-range of its knots.
|
|
34
|
+
* * The API sometimes refers to a domain parameter `u` as a "knot", even if `u` is not actually an entry in the
|
|
35
|
+
* knot array.
|
|
36
|
+
* * The curve loosely "follows" the line string formed by the poles, aka the "control polygon".
|
|
37
|
+
* * The curve is a chain of polynomial segments, aka "spans" or "fragments". B-spline theory identifies these as
|
|
38
|
+
* Bezier curves.
|
|
35
39
|
* * The polynomial spans all have same `degree`.
|
|
36
|
-
* *
|
|
37
|
-
* *
|
|
38
|
-
* * The number of spans is `numSpan = numPoles - degree
|
|
39
|
-
* * For a
|
|
40
|
-
* * The `order` poles begin at index `spanIndex`.
|
|
41
|
-
* * The `2*
|
|
42
|
-
* * The
|
|
43
|
-
* * The
|
|
40
|
+
* * Each span is controlled by `order = degree + 1` contiguous points in the pole array.
|
|
41
|
+
* * There is a strict relationship between knot and poles counts: `numPoles + order = numKnots + 2'.
|
|
42
|
+
* * The number of spans is `numSpan = numPoles - degree`.
|
|
43
|
+
* * For a span with index `spanIndex`:
|
|
44
|
+
* * The `order` relevant poles begin at pole index `spanIndex`.
|
|
45
|
+
* * The `2*degree` relevant knots begin at knot index `spanIndex`.
|
|
46
|
+
* * The span domain is the knot range `[knot[spanIndex+degree-1], knot[spanIndex+degree]]`.
|
|
47
|
+
* * The curve domain is the knot range `[knot[degree-1], knot[numSpan+degree-1]]`, or equivalently
|
|
48
|
+
* `[knot[degree-1], knot[numPoles-1]]`. The API refers to this domain as the "active knot interval" of the curve.
|
|
44
49
|
*
|
|
45
|
-
* Nearly all
|
|
46
|
-
* *
|
|
47
|
-
*
|
|
48
|
-
* *
|
|
49
|
-
*
|
|
50
|
-
*
|
|
50
|
+
* Nearly all B-spline curves are "clamped".
|
|
51
|
+
* * This means that in the `knots` array, the first `degree` knots are equal, and the last `degree` knots are equal.
|
|
52
|
+
* We say the smallest knot and the largest knot have multiplicity `degree`.
|
|
53
|
+
* * Clamping make the curve pass through its first and last poles, with tangents directed along the first and
|
|
54
|
+
* last edges of the control polygon.
|
|
55
|
+
* * For instance, a cubic B-spline curve with knot vector `[0,0,0,1,2,3,3,3]`
|
|
56
|
+
* * can be evaluated at parameter values in the range `[0, 3]`
|
|
57
|
+
* * has 3 spans, with domains `[0, 1]`, `[1, 2]`, and `[2, 3]`
|
|
51
58
|
* * has 6 poles
|
|
52
59
|
* * passes through its first and last poles.
|
|
53
|
-
* * `create` methods may allow classic convention that has an extra knot at the beginning and end of the
|
|
54
|
-
*
|
|
55
|
-
* *
|
|
60
|
+
* * The `create` methods may allow the classic convention that has an extra knot at the beginning and end of the
|
|
61
|
+
* knot vector.
|
|
62
|
+
* * These two extra knots are not actually needed to define the B-spline curve.
|
|
63
|
+
* * When the `create` methods recognize the classic setup (`numPoles + order = numKnots`), the extra knots are
|
|
64
|
+
* not saved with the BSplineCurve3dBase knots.
|
|
56
65
|
*
|
|
57
|
-
* * The weighted variant has the problem that CurvePrimitive
|
|
58
|
-
*
|
|
66
|
+
* * The weighted variant [[BSplineCurve3dH]] has the problem that `CurvePrimitive` 3D typing does not allow the
|
|
67
|
+
* undefined result where a homogeneous pole has zero weight; the convention in this case is to return 000.
|
|
59
68
|
*
|
|
60
69
|
* * Note the class relationships:
|
|
61
|
-
* * BSpline1dNd knows the
|
|
62
|
-
* * BsplineCurve3dBase owns a protected BSpline1dNd
|
|
63
|
-
* * BsplineCurve3dBase is derived from CurvePrimitive, which creates obligation to act as a 3D curve,
|
|
64
|
-
* * evaluate fraction to point and derivatives wrt fraction
|
|
65
|
-
* * compute intersection with plane
|
|
66
|
-
* * BSplineCurve3d and BSplineCurve3dH have variant logic driven by whether or not there are "weights" on the poles.
|
|
67
|
-
* * For `BSplineCurve3d`, the xyz value of pole calculations are "final" values for 3d evaluation
|
|
70
|
+
* * [[BSpline1dNd]] knows the definitional B-spline recurrence relation with no physical interpretation for the poles.
|
|
71
|
+
* * BsplineCurve3dBase owns a protected BSpline1dNd.
|
|
72
|
+
* * `BsplineCurve3dBase` is derived from [[CurvePrimitive]], which creates obligation to act as a 3D curve, e.g.,
|
|
73
|
+
* * evaluate fraction to point and derivatives wrt fraction.
|
|
74
|
+
* * compute intersection with plane.
|
|
75
|
+
* * [[BSplineCurve3d]] and [[BSplineCurve3dH]] have variant logic driven by whether or not there are "weights" on the poles.
|
|
76
|
+
* * For `BSplineCurve3d`, the xyz value of pole calculations are "final" values for 3d evaluation.
|
|
68
77
|
* * For `BSplineCurve3dH`, various `BSpline1dNd` results with xyzw have to be normalized back to xyz.
|
|
69
78
|
*
|
|
70
79
|
* * These classes do not support "periodic" variants.
|
|
71
|
-
* * Periodic curves
|
|
80
|
+
* * Periodic curves historically have carried a flag (e.g., "closed") indicating that certain un-stored
|
|
81
|
+
* leading/trailing knots and poles are understood to wrap around periodically.
|
|
82
|
+
* * Instead, these classes carry no such flag. They represent such curves with explicitly wrapped knots/poles.
|
|
83
|
+
*
|
|
84
|
+
* * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/BSpline/
|
|
72
85
|
* @public
|
|
73
86
|
*/
|
|
74
87
|
export class BSplineCurve3dBase extends CurvePrimitive {
|
|
75
|
-
|
|
76
|
-
|
|
88
|
+
/** String name for schema properties. */
|
|
89
|
+
curvePrimitiveType = "bsplineCurve";
|
|
90
|
+
/** The underlying blocked-pole spline, with simple x,y,z poles. */
|
|
91
|
+
_bcurve;
|
|
92
|
+
_definitionData;
|
|
93
|
+
set definitionData(data) {
|
|
94
|
+
this._definitionData = data;
|
|
95
|
+
}
|
|
96
|
+
get definitionData() {
|
|
97
|
+
return this._definitionData;
|
|
98
|
+
}
|
|
77
99
|
constructor(poleDimension, numPoles, order, knots) {
|
|
78
100
|
super();
|
|
79
|
-
/** String name for schema properties */
|
|
80
|
-
this.curvePrimitiveType = "bsplineCurve";
|
|
81
101
|
this._bcurve = BSpline1dNd.create(numPoles, poleDimension, order, knots);
|
|
82
102
|
}
|
|
83
|
-
/** Return the degree (one less than the order) of the curve */
|
|
84
|
-
get degree() {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
/** Return the
|
|
88
|
-
get
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
get knotsRef() { return this._bcurve.knots.knots; }
|
|
95
|
-
/** Number of components per pole.
|
|
96
|
-
* * 3 for conventional (x,y,z) curve
|
|
97
|
-
* * 4 for weighted (wx,wy,wz,w) curve
|
|
103
|
+
/** Return the degree (one less than the order) of the curve. */
|
|
104
|
+
get degree() {
|
|
105
|
+
return this._bcurve.degree;
|
|
106
|
+
}
|
|
107
|
+
/** Return the order (one more than degree) of the curve. */
|
|
108
|
+
get order() {
|
|
109
|
+
return this._bcurve.order;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Return the number of Bezier spans in the curve. Note that this number includes the number of null
|
|
113
|
+
* spans at repeated knows.
|
|
98
114
|
*/
|
|
99
|
-
get
|
|
115
|
+
get numSpan() {
|
|
116
|
+
return this._bcurve.numSpan;
|
|
117
|
+
}
|
|
118
|
+
/** Return the number of poles. */
|
|
119
|
+
get numPoles() {
|
|
120
|
+
return this._bcurve.numPoles;
|
|
121
|
+
}
|
|
122
|
+
/** Return live reference to the poles of the curve. */
|
|
123
|
+
get polesRef() {
|
|
124
|
+
return this._bcurve.packedData;
|
|
125
|
+
}
|
|
126
|
+
/** Return live reference to the knots of the curve. */
|
|
127
|
+
get knotsRef() {
|
|
128
|
+
return this._bcurve.knots.knots;
|
|
129
|
+
}
|
|
100
130
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
131
|
+
* Number of components per pole, e.g.,
|
|
132
|
+
* * 3 for conventional (x,y,z) curve.
|
|
133
|
+
* * 4 for weighted (wx,wy,wz,w) curve.
|
|
103
134
|
*/
|
|
104
|
-
|
|
135
|
+
get poleDimension() {
|
|
136
|
+
return this._bcurve.poleLength;
|
|
137
|
+
}
|
|
138
|
+
/** Return a simple array form of the knots. Optionally replicate the first and last in classic over-clamped manner. */
|
|
139
|
+
copyKnots(includeExtraEndKnot) {
|
|
140
|
+
return this._bcurve.knots.copyKnots(includeExtraEndKnot);
|
|
141
|
+
}
|
|
105
142
|
/** Get the flag indicating the curve might be suitable for having wrapped "closed" interpretation. */
|
|
106
143
|
getWrappable() {
|
|
107
144
|
return this._bcurve.knots.wrappable;
|
|
@@ -111,7 +148,7 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
111
148
|
this._bcurve.knots.wrappable = value;
|
|
112
149
|
}
|
|
113
150
|
/**
|
|
114
|
-
* Test knots and
|
|
151
|
+
* Test knots and poles to determine if it is possible to close (aka "wrap") the curve.
|
|
115
152
|
* @returns the manner in which it is possible to close the curve. See `BSplineWrapMode` for particulars of each mode.
|
|
116
153
|
*/
|
|
117
154
|
get isClosableCurve() {
|
|
@@ -124,25 +161,18 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
124
161
|
return BSplineWrapMode.None;
|
|
125
162
|
return mode;
|
|
126
163
|
}
|
|
127
|
-
/** Evaluate the curve point at
|
|
164
|
+
/** Evaluate the curve point at the given fractional parameter. */
|
|
128
165
|
fractionToPoint(fraction, result) {
|
|
129
166
|
return this.knotToPoint(this._bcurve.knots.fractionToKnot(fraction), result);
|
|
130
167
|
}
|
|
131
|
-
/**
|
|
132
|
-
* * origin at the fractional position along the arc
|
|
133
|
-
* * direction is the first derivative, i.e. tangent along the curve
|
|
134
|
-
*/
|
|
168
|
+
/** Evaluate the curve and derivative at the given fractional parameter. */
|
|
135
169
|
fractionToPointAndDerivative(fraction, result) {
|
|
136
170
|
const knot = this._bcurve.knots.fractionToKnot(fraction);
|
|
137
171
|
result = this.knotToPointAndDerivative(knot, result);
|
|
138
172
|
result.direction.scaleInPlace(this._bcurve.knots.knotLength01);
|
|
139
173
|
return result;
|
|
140
174
|
}
|
|
141
|
-
/**
|
|
142
|
-
* * origin at the fractional position along the arc
|
|
143
|
-
* * x axis is the first derivative, i.e. tangent along the curve
|
|
144
|
-
* * y axis is the second derivative
|
|
145
|
-
*/
|
|
175
|
+
/** Evaluate the curve and two derivatives at the given fractional parameter. */
|
|
146
176
|
fractionToPointAnd2Derivatives(fraction, result) {
|
|
147
177
|
const knot = this._bcurve.knots.fractionToKnot(fraction);
|
|
148
178
|
result = this.knotToPointAnd2Derivatives(knot, result);
|
|
@@ -151,22 +181,23 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
151
181
|
result.vectorV.scaleInPlace(a * a);
|
|
152
182
|
return result;
|
|
153
183
|
}
|
|
184
|
+
/** Return the start point of the curve. */
|
|
185
|
+
startPoint() {
|
|
186
|
+
return this.evaluatePointInSpan(0, 0.0);
|
|
187
|
+
}
|
|
188
|
+
/** Return the end point of the curve. */
|
|
189
|
+
endPoint() {
|
|
190
|
+
return this.evaluatePointInSpan(this.numSpan - 1, 1.0);
|
|
191
|
+
}
|
|
154
192
|
/**
|
|
155
|
-
*
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Return the end point of the curve
|
|
160
|
-
*/
|
|
161
|
-
endPoint() { return this.evaluatePointInSpan(this.numSpan - 1, 1.0); }
|
|
162
|
-
/** Reverse the curve in place.
|
|
163
|
-
* * Poles are reversed
|
|
164
|
-
* * knot values are mirrored around the middle of the
|
|
165
|
-
*/
|
|
166
|
-
reverseInPlace() { this._bcurve.reverseInPlace(); }
|
|
167
|
-
/**
|
|
168
|
-
* Return an array with this curve's bezier fragments.
|
|
193
|
+
* Reverse the curve in place.
|
|
194
|
+
* * Poles are reversed.
|
|
195
|
+
* * Knot values are mirrored around the middle of the knot array.
|
|
169
196
|
*/
|
|
197
|
+
reverseInPlace() {
|
|
198
|
+
this._bcurve.reverseInPlace();
|
|
199
|
+
}
|
|
200
|
+
/** Return an array with this curve's Bezier fragments. */
|
|
170
201
|
collectBezierSpans(prefer3dH) {
|
|
171
202
|
const result = [];
|
|
172
203
|
const numSpans = this.numSpan;
|
|
@@ -185,17 +216,18 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
185
216
|
return poleIndex * this._bcurve.poleLength;
|
|
186
217
|
return undefined;
|
|
187
218
|
}
|
|
188
|
-
/**
|
|
189
|
-
*
|
|
219
|
+
/**
|
|
220
|
+
* Search for the curve point that is closest to the spacePoint.
|
|
190
221
|
* * If the space point is exactly on the curve, this is the reverse of fractionToPoint.
|
|
191
|
-
* * Since CurvePrimitive should always have start and end available as candidate points, this method should always
|
|
192
|
-
*
|
|
222
|
+
* * Since CurvePrimitive should always have start and end available as candidate points, this method should always
|
|
223
|
+
* succeed.
|
|
224
|
+
* @param spacePoint point in space.
|
|
193
225
|
* @param _extend ignored (pass false). A BSplineCurve3dBase cannot be extended.
|
|
194
226
|
* @param result optional pre-allocated detail to populate and return.
|
|
195
227
|
* @returns details of the closest point.
|
|
196
228
|
*/
|
|
197
229
|
closestPoint(spacePoint, _extend, result) {
|
|
198
|
-
// seed at start point
|
|
230
|
+
// seed at start point; final point comes with final bezier perpendicular step
|
|
199
231
|
const point = this.fractionToPoint(0);
|
|
200
232
|
result = CurveLocationDetail.createCurveFractionPointDistance(this, 0.0, point, point.distance(spacePoint), result);
|
|
201
233
|
let span;
|
|
@@ -204,9 +236,9 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
204
236
|
if (this._bcurve.knots.isIndexOfRealSpan(i)) {
|
|
205
237
|
span = this.getSaturatedBezierSpan3dOr3dH(i, true, span);
|
|
206
238
|
if (span) {
|
|
207
|
-
//
|
|
239
|
+
// if the B-spline is discontinuous, both ends should be tested; ignore that possibility
|
|
208
240
|
if (span.updateClosestPointByTruePerpendicular(spacePoint, result, false, true)) {
|
|
209
|
-
// the detail records the span bezier
|
|
241
|
+
// the detail records the span bezier; promote it to the parent curve
|
|
210
242
|
result.curve = this;
|
|
211
243
|
result.fraction = span.fractionToParentFraction(result.fraction);
|
|
212
244
|
}
|
|
@@ -217,13 +249,14 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
217
249
|
}
|
|
218
250
|
/** Return a transformed deep clone. */
|
|
219
251
|
cloneTransformed(transform) {
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
return
|
|
252
|
+
const curve = this.clone();
|
|
253
|
+
curve.tryTransformInPlace(transform);
|
|
254
|
+
return curve;
|
|
223
255
|
}
|
|
224
|
-
/**
|
|
225
|
-
*
|
|
226
|
-
* @param
|
|
256
|
+
/**
|
|
257
|
+
* Return a curve primitive which is a portion of this curve.
|
|
258
|
+
* @param fractionA start fraction.
|
|
259
|
+
* @param fractionB end fraction.
|
|
227
260
|
*/
|
|
228
261
|
clonePartialCurve(fractionA, fractionB) {
|
|
229
262
|
const clone = this.clone();
|
|
@@ -234,11 +267,8 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
234
267
|
clone._bcurve.addKnot(knotB, clone.degree);
|
|
235
268
|
if (origNumKnots === clone._bcurve.knots.knots.length)
|
|
236
269
|
return clone; // full curve
|
|
237
|
-
if (knotA > knotB)
|
|
238
|
-
|
|
239
|
-
knotA = knotB;
|
|
240
|
-
knotB = tmp;
|
|
241
|
-
}
|
|
270
|
+
if (knotA > knotB)
|
|
271
|
+
[knotA, knotB] = [knotB, knotA];
|
|
242
272
|
// choose first/last knot and pole such that knotA/knotB has degree multiplicity in the new knot sequence
|
|
243
273
|
const iStartKnot = clone._bcurve.knots.knotToLeftKnotIndex(knotA) - clone.degree + 1;
|
|
244
274
|
const iStartPole = iStartKnot * clone._bcurve.poleLength;
|
|
@@ -248,15 +278,17 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
248
278
|
iLastKnotLeftMultiple = iLastKnot + 1;
|
|
249
279
|
const iEndPole = (iLastKnotLeftMultiple + 1) * clone._bcurve.poleLength; // one past last pole
|
|
250
280
|
const iEndKnot = iLastKnotLeftMultiple + clone.degree; // one past last knot
|
|
251
|
-
// trim the arrays (leave knots unnormalized
|
|
281
|
+
// trim the arrays (leave knots unnormalized)
|
|
252
282
|
clone._bcurve.knots.setKnotsCapture(clone._bcurve.knots.knots.slice(iStartKnot, iEndKnot));
|
|
253
283
|
clone._bcurve.packedData = clone._bcurve.packedData.slice(iStartPole, iEndPole);
|
|
254
284
|
clone.setWrappable(BSplineWrapMode.None); // always open
|
|
255
285
|
return clone;
|
|
256
286
|
}
|
|
257
|
-
/**
|
|
258
|
-
*
|
|
259
|
-
* @param
|
|
287
|
+
/**
|
|
288
|
+
* Implement `CurvePrimitive.appendPlaneIntersections` to compute intersections of the curve with a plane.
|
|
289
|
+
* @param plane the plane with which to intersect the curve. Concrete types include [[Plane3dByOriginAndUnitNormal]],
|
|
290
|
+
* [[Point4d]], etc.
|
|
291
|
+
* @param result growing array of plane intersections.
|
|
260
292
|
* @return number of intersections appended to the array.
|
|
261
293
|
*/
|
|
262
294
|
appendPlaneIntersectionPoints(plane, result) {
|
|
@@ -267,34 +299,32 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
267
299
|
const point4d = Point4d.create();
|
|
268
300
|
// compute all pole altitudes from the plane
|
|
269
301
|
const minMax = Range1d.createNull();
|
|
270
|
-
//
|
|
302
|
+
// put the altitudes of all the B-spline poles in one array
|
|
271
303
|
for (let i = 0; i < numPole; i++) {
|
|
272
304
|
allCoffs[i] = plane.weightedAltitude(this.getPolePoint4d(i, point4d));
|
|
273
305
|
minMax.extendX(allCoffs[i]);
|
|
274
306
|
}
|
|
275
|
-
// A univariate
|
|
307
|
+
// A univariate B-spline through the altitude poles gives altitude as function of the B-spline knot.
|
|
276
308
|
// The (bspline) altitude function for each span is `order` consecutive altitudes.
|
|
277
309
|
// If those altitudes bracket zero, the span may potentially have a crossing.
|
|
278
|
-
// When that occurs,
|
|
279
310
|
let univariateBezier;
|
|
280
311
|
let numFound = 0;
|
|
281
312
|
let previousFraction = -1000.0;
|
|
282
313
|
if (minMax.containsX(0.0)) {
|
|
283
314
|
for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {
|
|
284
|
-
if (this._bcurve.knots.isIndexOfRealSpan(spanIndex)) { // ignore trivial knot intervals
|
|
315
|
+
if (this._bcurve.knots.isIndexOfRealSpan(spanIndex)) { // ignore trivial knot intervals
|
|
285
316
|
// outer range test ...
|
|
286
317
|
minMax.setNull();
|
|
287
318
|
minMax.extendArraySubset(allCoffs, spanIndex, order);
|
|
288
319
|
if (minMax.containsX(0.0)) {
|
|
289
|
-
// pack the
|
|
320
|
+
// pack the B-spline support into a univariate bezier
|
|
290
321
|
univariateBezier = UnivariateBezier.createArraySubset(allCoffs, spanIndex, order, univariateBezier);
|
|
291
322
|
// saturate and solve the bezier
|
|
292
323
|
Bezier1dNd.saturate1dInPlace(univariateBezier.coffs, this._bcurve.knots, spanIndex);
|
|
293
324
|
const roots = univariateBezier.roots(0.0, true);
|
|
294
325
|
if (roots) {
|
|
295
326
|
for (const spanFraction of roots) {
|
|
296
|
-
// promote each local bezier fraction to global fraction
|
|
297
|
-
// save the curve evaluation at that fraction.
|
|
327
|
+
// promote each local bezier fraction to global fraction and save the curve evaluation at that fraction
|
|
298
328
|
numFound++;
|
|
299
329
|
const fraction = this._bcurve.knots.spanFractionToFraction(spanIndex, spanFraction);
|
|
300
330
|
if (!Geometry.isAlmostEqualNumber(fraction, previousFraction)) {
|
|
@@ -313,9 +343,7 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
313
343
|
}
|
|
314
344
|
/**
|
|
315
345
|
* Construct an offset of the instance curve as viewed in the xy-plane (ignoring z).
|
|
316
|
-
*
|
|
317
|
-
* for an aggregate instance (e.g., LineString3d, CurveChainWithDistanceIndex), use RegionOps.constructCurveXYOffset() instead.
|
|
318
|
-
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
|
|
346
|
+
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object.
|
|
319
347
|
*/
|
|
320
348
|
constructOffsetXY(offsetDistanceOrOptions) {
|
|
321
349
|
const options = OffsetOptions.create(offsetDistanceOrOptions);
|
|
@@ -323,31 +351,43 @@ export class BSplineCurve3dBase extends CurvePrimitive {
|
|
|
323
351
|
this.emitStrokableParts(handler, options.strokeOptions);
|
|
324
352
|
return handler.claimResult();
|
|
325
353
|
}
|
|
326
|
-
/**
|
|
354
|
+
/**
|
|
355
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters
|
|
356
|
+
* of projection.
|
|
327
357
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
328
|
-
* @param lowHigh optional receiver for output
|
|
329
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
358
|
+
* @param lowHigh optional receiver for output.
|
|
359
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
360
|
+
* end of the ray.
|
|
330
361
|
*/
|
|
331
362
|
projectedParameterRange(ray, lowHigh) {
|
|
332
363
|
return PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
333
364
|
}
|
|
334
365
|
}
|
|
335
366
|
/**
|
|
336
|
-
* A BSplineCurve3d is a
|
|
337
|
-
* See BSplineCurve3dBase for description of knots, order, degree.
|
|
367
|
+
* A BSplineCurve3d is a B-spline curve whose poles are Point3d.
|
|
368
|
+
* See BSplineCurve3dBase for description of knots, order, degree, and poles.
|
|
338
369
|
* @public
|
|
339
370
|
*/
|
|
340
371
|
export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
372
|
+
_workBezier;
|
|
341
373
|
initializeWorkBezier() {
|
|
342
374
|
if (this._workBezier === undefined)
|
|
343
375
|
this._workBezier = BezierCurve3d.createOrder(this.order);
|
|
344
376
|
return this._workBezier;
|
|
345
377
|
}
|
|
346
|
-
|
|
347
|
-
|
|
378
|
+
constructor(numPoles, order, knots) {
|
|
379
|
+
super(3, numPoles, order, knots);
|
|
380
|
+
}
|
|
381
|
+
/** Test if `other` is an instance of BSplineCurve3d. */
|
|
382
|
+
isSameGeometryClass(other) {
|
|
383
|
+
return other instanceof BSplineCurve3d;
|
|
384
|
+
}
|
|
348
385
|
/** Apply `transform` to the poles. */
|
|
349
|
-
tryTransformInPlace(transform) {
|
|
350
|
-
|
|
386
|
+
tryTransformInPlace(transform) {
|
|
387
|
+
Point3dArray.multiplyInPlace(transform, this._bcurve.packedData);
|
|
388
|
+
return true;
|
|
389
|
+
}
|
|
390
|
+
/** Get a pole as a simple Point3d. */
|
|
351
391
|
getPolePoint3d(poleIndex, result) {
|
|
352
392
|
const k = this.poleIndexToDataIndex(poleIndex);
|
|
353
393
|
if (k !== undefined) {
|
|
@@ -356,7 +396,7 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
356
396
|
}
|
|
357
397
|
return undefined;
|
|
358
398
|
}
|
|
359
|
-
/** Get a pole as Point4d with weight 1 */
|
|
399
|
+
/** Get a pole as Point4d with weight 1. */
|
|
360
400
|
getPolePoint4d(poleIndex, result) {
|
|
361
401
|
const k = this.poleIndexToDataIndex(poleIndex);
|
|
362
402
|
if (k !== undefined) {
|
|
@@ -365,23 +405,26 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
365
405
|
}
|
|
366
406
|
return undefined;
|
|
367
407
|
}
|
|
368
|
-
/** Convert `spanIndex` and `localFraction` to a knot. */
|
|
369
|
-
spanFractionToKnot(span, localFraction) {
|
|
370
|
-
return this._bcurve.spanFractionToKnot(span, localFraction);
|
|
371
|
-
}
|
|
372
|
-
constructor(numPoles, order, knots) {
|
|
373
|
-
super(3, numPoles, order, knots);
|
|
374
|
-
}
|
|
375
|
-
/** Return a simple array of arrays with the control points as `[[x,y,z],[x,y,z],..]` */
|
|
376
|
-
copyPoints() { return Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3); }
|
|
377
|
-
/** Return a simple array of the control points coordinates */
|
|
378
|
-
copyPointsFloat64Array() { return this._bcurve.packedData.slice(); }
|
|
379
408
|
/**
|
|
380
|
-
*
|
|
381
|
-
* in
|
|
409
|
+
* Convert the fractional position in the given span to a knot.
|
|
410
|
+
* * The returned value is not necessarily a knot, but it is a valid parameter in the domain of the B-spline curve.
|
|
382
411
|
*/
|
|
383
|
-
|
|
384
|
-
|
|
412
|
+
spanFractionToKnot(spanIndex, spanFraction) {
|
|
413
|
+
return this._bcurve.spanFractionToKnot(spanIndex, spanFraction);
|
|
414
|
+
}
|
|
415
|
+
/** Return a simple array of arrays with the poles as `[[x,y,z],[x,y,z],..]`. */
|
|
416
|
+
copyPoints() {
|
|
417
|
+
return Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3);
|
|
418
|
+
}
|
|
419
|
+
/** Return a simple array of poles' coordinates. */
|
|
420
|
+
copyPointsFloat64Array() {
|
|
421
|
+
return this._bcurve.packedData.slice();
|
|
422
|
+
}
|
|
423
|
+
/** Return a simple array form of the knots. Optionally replicate the first and last in classic over-clamped manner. */
|
|
424
|
+
copyKnots(includeExtraEndKnot) {
|
|
425
|
+
return this._bcurve.knots.copyKnots(includeExtraEndKnot);
|
|
426
|
+
}
|
|
427
|
+
/** Create a B-spline with uniform knots. */
|
|
385
428
|
static createUniformKnots(poles, order) {
|
|
386
429
|
const numPoles = poles instanceof Float64Array ? poles.length / 3 : poles.length;
|
|
387
430
|
if (order < 2 || numPoles < order)
|
|
@@ -405,9 +448,10 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
405
448
|
}
|
|
406
449
|
return curve;
|
|
407
450
|
}
|
|
408
|
-
/**
|
|
409
|
-
*
|
|
410
|
-
|
|
451
|
+
/**
|
|
452
|
+
* Create a smoothly closed B-spline curve with uniform knots.
|
|
453
|
+
* * Note that the curve does not start at the first pole.
|
|
454
|
+
*/
|
|
411
455
|
static createPeriodicUniformKnots(poles, order) {
|
|
412
456
|
if (order < 2)
|
|
413
457
|
return undefined;
|
|
@@ -478,21 +522,23 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
478
522
|
return BSplineCurveOps.createThroughPointsC2Cubic(options);
|
|
479
523
|
}
|
|
480
524
|
/**
|
|
481
|
-
*
|
|
525
|
+
* Create a B-spline curve from an Akima curve.
|
|
482
526
|
* @param options collection of points and end conditions.
|
|
483
527
|
*/
|
|
484
528
|
static createFromAkimaCurve3dOptions(options) {
|
|
485
529
|
return BSplineCurveOps.createThroughPoints(options.fitPoints, 4); // temporary
|
|
486
530
|
}
|
|
487
531
|
/**
|
|
488
|
-
* Create a
|
|
532
|
+
* Create a B-spline curve with given knots.
|
|
489
533
|
* * The poles have several variants:
|
|
490
|
-
* * Float64Array(3 * numPoles) in blocks of [x,y,z]
|
|
491
|
-
* * Point3d[]
|
|
492
|
-
* * number[][], with inner dimension 3
|
|
534
|
+
* * Float64Array(3 * numPoles) in blocks of [x,y,z].
|
|
535
|
+
* * Point3d[].
|
|
536
|
+
* * number[][], with inner dimension 3.
|
|
493
537
|
* * Two count conditions are recognized:
|
|
494
|
-
* * If poleArray.length + order === knotArray.length, the first and last are assumed to be the extraneous knots
|
|
538
|
+
* * If poleArray.length + order === knotArray.length, the first and last are assumed to be the extraneous knots
|
|
539
|
+
* of classic clamping.
|
|
495
540
|
* * If poleArray.length + order === knotArray.length + 2, the knots are in modern form.
|
|
541
|
+
* * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/BSpline/
|
|
496
542
|
*/
|
|
497
543
|
static create(poleArray, knotArray, order) {
|
|
498
544
|
if (order < 2)
|
|
@@ -530,31 +576,42 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
530
576
|
}
|
|
531
577
|
return curve;
|
|
532
578
|
}
|
|
533
|
-
/** Return a deep clone */
|
|
579
|
+
/** Return a deep clone. */
|
|
534
580
|
clone() {
|
|
535
|
-
const
|
|
536
|
-
const
|
|
537
|
-
|
|
538
|
-
return
|
|
581
|
+
const knotVector = this._bcurve.knots.clone();
|
|
582
|
+
const curve = new BSplineCurve3d(this.numPoles, this.order, knotVector);
|
|
583
|
+
curve._bcurve.packedData = this._bcurve.packedData.slice();
|
|
584
|
+
return curve;
|
|
539
585
|
}
|
|
540
|
-
/** Evaluate at a
|
|
586
|
+
/** Evaluate the curve at a fractional position within a given span. */
|
|
541
587
|
evaluatePointInSpan(spanIndex, spanFraction) {
|
|
542
588
|
this._bcurve.evaluateBuffersInSpan(spanIndex, spanFraction);
|
|
543
589
|
return Point3d.createFrom(this._bcurve.poleBuffer);
|
|
544
590
|
}
|
|
545
|
-
/**
|
|
546
|
-
*
|
|
591
|
+
/**
|
|
592
|
+
* Evaluate the curve and derivative at a fractional position within a given span.
|
|
593
|
+
* * The derivative is with respect to the span fractional parameter, _not_ to the curve's parameter or fractional parameter.
|
|
547
594
|
*/
|
|
548
595
|
evaluatePointAndDerivativeInSpan(spanIndex, spanFraction) {
|
|
549
596
|
this._bcurve.evaluateBuffersInSpan1(spanIndex, spanFraction);
|
|
550
597
|
return Ray3d.createCapture(Point3d.createFrom(this._bcurve.poleBuffer), Vector3d.createFrom(this._bcurve.poleBuffer1));
|
|
551
598
|
}
|
|
552
|
-
/**
|
|
599
|
+
/**
|
|
600
|
+
* Evaluate the curve at the given parameter.
|
|
601
|
+
* @param u parameter in curve domain.
|
|
602
|
+
* @param result optional result.
|
|
603
|
+
* @returns the point on the curve.
|
|
604
|
+
*/
|
|
553
605
|
knotToPoint(u, result) {
|
|
554
606
|
this._bcurve.evaluateBuffersAtKnot(u);
|
|
555
607
|
return Point3d.createFrom(this._bcurve.poleBuffer, result);
|
|
556
608
|
}
|
|
557
|
-
/**
|
|
609
|
+
/**
|
|
610
|
+
* Evaluate the curve and derivative at the given parameter.
|
|
611
|
+
* @param u parameter in curve domain.
|
|
612
|
+
* @param result optional result.
|
|
613
|
+
* @returns the ray with origin at the curve point and direction as the derivative.
|
|
614
|
+
*/
|
|
558
615
|
knotToPointAndDerivative(u, result) {
|
|
559
616
|
this._bcurve.evaluateBuffersAtKnot(u, 1);
|
|
560
617
|
if (!result)
|
|
@@ -563,12 +620,17 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
563
620
|
result.direction.setFrom(this._bcurve.poleBuffer1);
|
|
564
621
|
return result;
|
|
565
622
|
}
|
|
566
|
-
/**
|
|
623
|
+
/**
|
|
624
|
+
* Evaluate the curve and two derivatives at the given parameter.
|
|
625
|
+
* @param u parameter in the curve domain.
|
|
626
|
+
* @param result optional result.
|
|
627
|
+
* @returns the plane with origin at the curve point, vectorU as the 1st derivative, and vectorV as the 2nd derivative.
|
|
628
|
+
*/
|
|
567
629
|
knotToPointAnd2Derivatives(u, result) {
|
|
568
630
|
this._bcurve.evaluateBuffersAtKnot(u, 2);
|
|
569
631
|
return 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);
|
|
570
632
|
}
|
|
571
|
-
/**
|
|
633
|
+
/** Test if `this` is almost the same curve as `other`. */
|
|
572
634
|
isAlmostEqual(other) {
|
|
573
635
|
if (other instanceof BSplineCurve3d) {
|
|
574
636
|
return this._bcurve.knots.isAlmostEqual(other._bcurve.knots)
|
|
@@ -576,15 +638,19 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
576
638
|
}
|
|
577
639
|
return false;
|
|
578
640
|
}
|
|
579
|
-
/**
|
|
641
|
+
/** Test if this curve lies entirely in the given plane. */
|
|
580
642
|
isInPlane(plane) {
|
|
581
643
|
return Point3dArray.isCloseToPlane(this._bcurve.packedData, plane);
|
|
582
644
|
}
|
|
583
|
-
/**
|
|
584
|
-
|
|
585
|
-
|
|
645
|
+
/**
|
|
646
|
+
* Return the control polygon length as an approximation to the curve length.
|
|
647
|
+
* * The returned length is always an overestimate.
|
|
648
|
+
*/
|
|
649
|
+
quickLength() {
|
|
650
|
+
return Point3dArray.sumEdgeLengths(this._bcurve.packedData);
|
|
651
|
+
}
|
|
652
|
+
/** Emit Beziers or strokes (selected by the stroke options) to the handler. */
|
|
586
653
|
emitStrokableParts(handler, options) {
|
|
587
|
-
const needBeziers = handler.announceBezierCurve !== undefined;
|
|
588
654
|
const workBezier = this.initializeWorkBezier();
|
|
589
655
|
const numSpan = this.numSpan;
|
|
590
656
|
let numStrokes;
|
|
@@ -592,7 +658,7 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
592
658
|
const bezier = this.getSaturatedBezierSpan3dOr3dH(spanIndex, false, workBezier);
|
|
593
659
|
if (bezier) {
|
|
594
660
|
numStrokes = bezier.computeStrokeCountForOptions(options);
|
|
595
|
-
if (
|
|
661
|
+
if (handler.announceBezierCurve) {
|
|
596
662
|
handler.announceBezierCurve(bezier, numStrokes, this, spanIndex, this._bcurve.knots.spanFractionToFraction(spanIndex, 0.0), this._bcurve.knots.spanFractionToFraction(spanIndex, 1.0));
|
|
597
663
|
}
|
|
598
664
|
else {
|
|
@@ -617,7 +683,7 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
617
683
|
return numStroke;
|
|
618
684
|
}
|
|
619
685
|
/**
|
|
620
|
-
* Compute individual segment stroke counts.
|
|
686
|
+
* Compute individual segment stroke counts. Attach in a StrokeCountMap.
|
|
621
687
|
* @param options StrokeOptions that determine count
|
|
622
688
|
* @param parentStrokeMap evolving parent map.
|
|
623
689
|
* @alpha
|
|
@@ -636,7 +702,7 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
636
702
|
}
|
|
637
703
|
CurvePrimitive.installStrokeCountMap(this, myData, parentStrokeMap);
|
|
638
704
|
}
|
|
639
|
-
/** Append strokes to
|
|
705
|
+
/** Append strokes to the given linestring. */
|
|
640
706
|
emitStrokes(dest, options) {
|
|
641
707
|
const workBezier = this.initializeWorkBezier();
|
|
642
708
|
const numSpan = this.numSpan;
|
|
@@ -647,16 +713,17 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
647
713
|
}
|
|
648
714
|
}
|
|
649
715
|
/**
|
|
650
|
-
* Test knots and
|
|
716
|
+
* Test knots and poles to determine if it is possible to close (aka "wrap") the curve.
|
|
651
717
|
* @returns the manner in which it is possible to close the curve. See `BSplineWrapMode` for particulars of each mode.
|
|
652
718
|
*/
|
|
653
719
|
get isClosable() {
|
|
654
720
|
return this.isClosableCurve;
|
|
655
721
|
}
|
|
656
722
|
/**
|
|
657
|
-
* Return
|
|
658
|
-
*
|
|
659
|
-
* @param
|
|
723
|
+
* Return the Bezier fragment corresponding to the given span of this curve.
|
|
724
|
+
* * The concrete return type may be [[BezierCurve3d]] or [[BezierCurve3dH]] according to the instance type and `prefer3dH`.
|
|
725
|
+
* @param spanIndex index of span.
|
|
726
|
+
* @param result optional reusable curve. This will only be reused if its type and order matches.
|
|
660
727
|
*/
|
|
661
728
|
getSaturatedBezierSpan3dOr3dH(spanIndex, prefer3dH, result) {
|
|
662
729
|
if (prefer3dH)
|
|
@@ -664,9 +731,9 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
664
731
|
return this.getSaturatedBezierSpan3d(spanIndex, result);
|
|
665
732
|
}
|
|
666
733
|
/**
|
|
667
|
-
* Return
|
|
668
|
-
* @param spanIndex
|
|
669
|
-
* @param result optional reusable curve.
|
|
734
|
+
* Return the Bezier fragment corresponding to the given span of this curve.
|
|
735
|
+
* @param spanIndex index of span.
|
|
736
|
+
* @param result optional reusable curve. This will only be reused if its type and order matches.
|
|
670
737
|
*/
|
|
671
738
|
getSaturatedBezierSpan3d(spanIndex, result) {
|
|
672
739
|
if (spanIndex < 0 || spanIndex >= this.numSpan)
|
|
@@ -677,13 +744,13 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
677
744
|
const bezier = result;
|
|
678
745
|
bezier.loadSpanPoles(this._bcurve.packedData, spanIndex);
|
|
679
746
|
if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))
|
|
680
|
-
return
|
|
747
|
+
return bezier;
|
|
681
748
|
return undefined;
|
|
682
749
|
}
|
|
683
750
|
/**
|
|
684
|
-
* Return
|
|
685
|
-
* @param spanIndex
|
|
686
|
-
* @param result optional reusable curve.
|
|
751
|
+
* Return the Bezier fragment corresponding to the given span of this curve.
|
|
752
|
+
* @param spanIndex index of span.
|
|
753
|
+
* @param result optional reusable curve. This will only be reused if its type and order matches.
|
|
687
754
|
*/
|
|
688
755
|
getSaturatedBezierSpan3dH(spanIndex, result) {
|
|
689
756
|
if (spanIndex < 0 || spanIndex >= this.numSpan)
|
|
@@ -697,15 +764,16 @@ export class BSplineCurve3d extends BSplineCurve3dBase {
|
|
|
697
764
|
return bezier;
|
|
698
765
|
return undefined;
|
|
699
766
|
}
|
|
700
|
-
/** Second step of double dispatch:
|
|
767
|
+
/** Second step of double dispatch: call `handler.handleBSplineCurve3d(this)`. */
|
|
701
768
|
dispatchToGeometryHandler(handler) {
|
|
702
769
|
return handler.handleBSplineCurve3d(this);
|
|
703
770
|
}
|
|
704
771
|
/**
|
|
705
|
-
* Extend a range so
|
|
706
|
-
* *
|
|
707
|
-
*
|
|
708
|
-
* @param
|
|
772
|
+
* Extend a range so it contains the range of this curve.
|
|
773
|
+
* * This computation is based on the poles, not the curve itself, so the returned range is generally larger than the
|
|
774
|
+
* tightest possible range.
|
|
775
|
+
* @param rangeToExtend range to extend.
|
|
776
|
+
* @param transform transform to apply to the poles as they are entered into the range.
|
|
709
777
|
*/
|
|
710
778
|
extendRange(rangeToExtend, transform) {
|
|
711
779
|
const buffer = this._bcurve.packedData;
|