@itwin/core-geometry 5.5.0-dev.4 → 5.5.0-dev.6
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/lib/cjs/Geometry.d.ts +7 -0
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +9 -0
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +2 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js +4 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js +14 -4
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.d.ts +2 -0
- package/lib/cjs/bspline/BezierCurve3dH.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js +19 -3
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.d.ts +8 -2
- package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js +10 -4
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js +4 -4
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.d.ts +0 -3
- package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js +9 -2
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.d.ts +59 -9
- package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js +124 -55
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +1 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipVector.js +12 -8
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +0 -2
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js +19 -18
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +4 -5
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +0 -1
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +0 -1
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.js +2 -2
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +12 -4
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +52 -33
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +13 -6
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +13 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +12 -4
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +14 -5
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +5 -4
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +7 -4
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +25 -16
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +90 -72
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Path.d.ts +0 -3
- package/lib/cjs/curve/Path.d.ts.map +1 -1
- package/lib/cjs/curve/Path.js +9 -2
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +25 -31
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts +7 -1
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js +27 -36
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js +7 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +8 -5
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +6 -6
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +4 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +6 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +5 -21
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +29 -73
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +55 -13
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +238 -110
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +1 -4
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +9 -9
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +11 -14
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +18 -18
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts +7 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.d.ts +19 -7
- package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js +26 -11
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.d.ts.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js +11 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts +5 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js +11 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +49 -8
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +90 -37
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +100 -3
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +125 -0
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +10 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +53 -34
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts +49 -2
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js +67 -9
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +24 -32
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +147 -180
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +5 -5
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +13 -3
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts +0 -3
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +5 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.d.ts +2 -2
- package/lib/cjs/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js +14 -18
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts +8 -0
- package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Transform.js +15 -9
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.d.ts +4 -2
- package/lib/cjs/numerics/ClusterableArray.d.ts.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js +6 -4
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Newton.d.ts +3 -1
- package/lib/cjs/numerics/Newton.d.ts.map +1 -1
- package/lib/cjs/numerics/Newton.js +5 -1
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/polyface/AuxData.d.ts +1 -4
- package/lib/cjs/polyface/AuxData.d.ts.map +1 -1
- package/lib/cjs/polyface/AuxData.js +5 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +3 -3
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js +14 -16
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +84 -28
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +277 -217
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.d.ts +4 -3
- package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +11 -4
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +9 -7
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +3 -2
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +2 -2
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +14 -12
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +10 -6
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +4 -3
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +3 -5
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js +4 -8
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js +1 -0
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +37 -7
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.d.ts +4 -4
- package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js +24 -40
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +9 -3
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.d.ts +0 -3
- package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js +16 -7
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.d.ts +2 -2
- package/lib/cjs/solid/Box.d.ts.map +1 -1
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.d.ts +3 -2
- package/lib/cjs/solid/Cone.d.ts.map +1 -1
- package/lib/cjs/solid/Cone.js +4 -1
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
- package/lib/cjs/solid/LinearSweep.js +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js +1 -3
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.d.ts +4 -3
- package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.d.ts +4 -4
- package/lib/cjs/topology/ChainMerge.d.ts.map +1 -1
- package/lib/cjs/topology/ChainMerge.js +11 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +2 -0
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +5 -0
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +23 -16
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.d.ts +20 -9
- package/lib/cjs/topology/HalfEdgePositionDetail.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js +17 -13
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js +3 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts +6 -2
- package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js +41 -35
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.d.ts +7 -3
- package/lib/cjs/topology/MaskManager.d.ts.map +1 -1
- package/lib/cjs/topology/MaskManager.js +10 -4
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.d.ts.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +2 -1
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js +12 -7
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/esm/Geometry.d.ts +7 -0
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +9 -0
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +2 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js +4 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js +14 -4
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.d.ts +2 -0
- package/lib/esm/bspline/BezierCurve3dH.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js +19 -3
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.d.ts +8 -2
- package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js +10 -4
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js +4 -4
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.d.ts +0 -3
- package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPlane.js +9 -2
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.d.ts +59 -9
- package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js +124 -55
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +1 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.d.ts.map +1 -1
- package/lib/esm/clipping/ClipVector.js +12 -8
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +0 -2
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js +20 -19
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +4 -5
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +0 -1
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +0 -1
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.js +2 -2
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +12 -4
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +53 -34
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +13 -6
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +13 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +12 -4
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +14 -5
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +5 -4
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +7 -4
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +25 -16
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +90 -72
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Path.d.ts +0 -3
- package/lib/esm/curve/Path.d.ts.map +1 -1
- package/lib/esm/curve/Path.js +9 -2
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +25 -31
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.d.ts +7 -1
- package/lib/esm/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js +27 -36
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js +7 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +8 -5
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +6 -6
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +4 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +6 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +5 -21
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +29 -73
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +55 -13
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +239 -111
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +1 -4
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +9 -9
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +11 -14
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +18 -18
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts +7 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.d.ts +19 -7
- package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js +26 -11
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.d.ts.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js +11 -1
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.d.ts +5 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js +11 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +49 -8
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +90 -37
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +100 -3
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +125 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +10 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +53 -34
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts +49 -2
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js +67 -9
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js +1 -1
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +24 -32
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +147 -180
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +5 -5
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +13 -3
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts +0 -3
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +5 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.d.ts +2 -2
- package/lib/esm/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js +14 -18
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts +8 -0
- package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
- package/lib/esm/geometry3d/Transform.js +15 -9
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.d.ts +4 -2
- package/lib/esm/numerics/ClusterableArray.d.ts.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js +6 -4
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Newton.d.ts +3 -1
- package/lib/esm/numerics/Newton.d.ts.map +1 -1
- package/lib/esm/numerics/Newton.js +5 -1
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/polyface/AuxData.d.ts +1 -4
- package/lib/esm/polyface/AuxData.d.ts.map +1 -1
- package/lib/esm/polyface/AuxData.js +5 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +3 -3
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js +14 -16
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +84 -28
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +277 -217
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.d.ts +4 -3
- package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +11 -4
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +9 -7
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +3 -2
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +2 -2
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +14 -12
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +10 -6
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js +4 -3
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +3 -5
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js +4 -8
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js +1 -0
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +37 -7
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.d.ts +4 -4
- package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js +24 -40
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +9 -3
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.d.ts +0 -3
- package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js +16 -7
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.d.ts +2 -2
- package/lib/esm/solid/Box.d.ts.map +1 -1
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.d.ts +3 -2
- package/lib/esm/solid/Cone.d.ts.map +1 -1
- package/lib/esm/solid/Cone.js +4 -1
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.d.ts +1 -1
- package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
- package/lib/esm/solid/LinearSweep.js +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
- package/lib/esm/solid/RotationalSweep.js +1 -3
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/TorusPipe.d.ts +4 -3
- package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.d.ts +4 -4
- package/lib/esm/topology/ChainMerge.d.ts.map +1 -1
- package/lib/esm/topology/ChainMerge.js +11 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +2 -0
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +5 -0
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js +23 -16
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.d.ts +20 -9
- package/lib/esm/topology/HalfEdgePositionDetail.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js +17 -13
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js +4 -2
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.d.ts +6 -2
- package/lib/esm/topology/InsertAndRetriangulateContext.d.ts.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js +41 -35
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.d.ts +7 -3
- package/lib/esm/topology/MaskManager.d.ts.map +1 -1
- package/lib/esm/topology/MaskManager.js +10 -4
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.d.ts.map +1 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +2 -1
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js +12 -7
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/package.json +3 -3
- package/lib/cjs/serialization/GeometrySamples.d.ts +0 -705
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +0 -1
- package/lib/cjs/serialization/GeometrySamples.js +0 -2433
- package/lib/cjs/serialization/GeometrySamples.js.map +0 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +0 -705
- package/lib/esm/serialization/GeometrySamples.d.ts.map +0 -1
- package/lib/esm/serialization/GeometrySamples.js +0 -2428
- package/lib/esm/serialization/GeometrySamples.js.map +0 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Curve
|
|
7
7
|
*/
|
|
8
|
-
import { assert } from "@itwin/core-bentley";
|
|
8
|
+
import { assert, DuplicatePolicy, SortedArray } from "@itwin/core-bentley";
|
|
9
9
|
import { BSplineCurve3d, BSplineCurve3dBase } from "../../bspline/BSplineCurve";
|
|
10
10
|
import { Geometry } from "../../Geometry";
|
|
11
11
|
import { CoincidentGeometryQuery } from "../../geometry3d/CoincidentGeometryOps";
|
|
@@ -21,6 +21,7 @@ import { SmallSystem } from "../../numerics/SmallSystem";
|
|
|
21
21
|
import { Arc3d } from "../Arc3d";
|
|
22
22
|
import { CurveChainWithDistanceIndex } from "../CurveChainWithDistanceIndex";
|
|
23
23
|
import { CurveCollection } from "../CurveCollection";
|
|
24
|
+
import { CurveCurve } from "../CurveCurve";
|
|
24
25
|
import { CurveIntervalRole, CurveLocationDetail, CurveLocationDetailPair } from "../CurveLocationDetail";
|
|
25
26
|
import { CurvePrimitive } from "../CurvePrimitive";
|
|
26
27
|
import { LineSegment3d } from "../LineSegment3d";
|
|
@@ -87,9 +88,29 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
87
88
|
this._coincidentGeometryContext = CoincidentGeometryQuery.create(tolerance);
|
|
88
89
|
this._results = [];
|
|
89
90
|
}
|
|
90
|
-
/**
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Reset geometryA extension flags.
|
|
93
|
+
* * Undefined inputs are ignored.
|
|
94
|
+
* * All other instance data is unchanged, including accumulated intersections.
|
|
95
|
+
*/
|
|
96
|
+
resetGeometryA(extendA0, extendA1) {
|
|
97
|
+
if (extendA0 !== undefined)
|
|
98
|
+
this._extendA0 = extendA0;
|
|
99
|
+
if (extendA1 !== undefined)
|
|
100
|
+
this._extendA1 = extendA1;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Reset geometryB and its extension flags.
|
|
104
|
+
* * Undefined inputs are ignored.
|
|
105
|
+
* * All other instance data is unchanged, including accumulated intersections.
|
|
106
|
+
*/
|
|
107
|
+
resetGeometryB(geometryB, extendB0, extendB1) {
|
|
108
|
+
if (geometryB)
|
|
109
|
+
this._geometryB = geometryB;
|
|
110
|
+
if (extendB0 !== undefined)
|
|
111
|
+
this._extendB0 = extendB0;
|
|
112
|
+
if (extendB1 !== undefined)
|
|
113
|
+
this._extendB1 = extendB1;
|
|
93
114
|
}
|
|
94
115
|
/** Accept the fraction if it falls inside (possibly extended) fraction range. */
|
|
95
116
|
acceptFraction(extend0, fraction, extend1, fractionTol = 1.0e-12) {
|
|
@@ -131,14 +152,14 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
131
152
|
* @param fractionB1 end of the subcurve of cpB
|
|
132
153
|
* @param reversed whether to reverse the details in the recorded intersection pair
|
|
133
154
|
* @param intervalDetails optional data for a coincident segment intersection
|
|
155
|
+
* @param fractionTol relative tolerance for comparing fractions to avoid duplicating the last intersection. Defaults to [[Geometry.smallAngleRadians]].
|
|
134
156
|
*/
|
|
135
|
-
recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed, intervalDetails) {
|
|
157
|
+
recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed, intervalDetails, fractionTol) {
|
|
136
158
|
let globalFractionA, globalFractionB;
|
|
137
159
|
let globalFractionA1, globalFractionB1;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (isInterval) {
|
|
160
|
+
let isInterval = false;
|
|
161
|
+
if (intervalDetails && intervalDetails.detailA.isInterval() && intervalDetails.detailB.isInterval()) {
|
|
162
|
+
isInterval = true;
|
|
142
163
|
globalFractionA = Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
|
|
143
164
|
globalFractionB = Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
|
|
144
165
|
globalFractionA1 = Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
|
|
@@ -154,13 +175,13 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
154
175
|
const oldDetailA = this._results[numPrevious - 1].detailA;
|
|
155
176
|
const oldDetailB = this._results[numPrevious - 1].detailB;
|
|
156
177
|
if (reversed) {
|
|
157
|
-
if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
158
|
-
oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
178
|
+
if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }, fractionTol) &&
|
|
179
|
+
oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }, fractionTol))
|
|
159
180
|
return;
|
|
160
181
|
}
|
|
161
182
|
else {
|
|
162
|
-
if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
163
|
-
oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
183
|
+
if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }, fractionTol) &&
|
|
184
|
+
oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }, fractionTol))
|
|
164
185
|
return;
|
|
165
186
|
}
|
|
166
187
|
}
|
|
@@ -224,6 +245,8 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
224
245
|
* fraction mapping. Assumes caller knows the _worldToLocal is present.
|
|
225
246
|
*/
|
|
226
247
|
computeSegmentSegment3DH(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed) {
|
|
248
|
+
if (undefined === this._worldToLocalPerspective)
|
|
249
|
+
return;
|
|
227
250
|
const hA0 = CurveCurveIntersectXY._workPointA0H;
|
|
228
251
|
const hA1 = CurveCurveIntersectXY._workPointA1H;
|
|
229
252
|
const hB0 = CurveCurveIntersectXY._workPointB0H;
|
|
@@ -778,30 +801,30 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
778
801
|
* We take care of extend variables of geometry's children here if geometry is Path or Loop.
|
|
779
802
|
*/
|
|
780
803
|
dispatchCurveCollection(geomA, geomAHandler) {
|
|
781
|
-
const geomB = this._geometryB;
|
|
804
|
+
const geomB = this._geometryB;
|
|
782
805
|
if (!geomB || !geomB.children || !(geomB instanceof CurveCollection))
|
|
783
806
|
return;
|
|
784
807
|
const children = geomB.children;
|
|
785
|
-
const
|
|
786
|
-
const
|
|
808
|
+
const saveExtendB0 = this._extendB0;
|
|
809
|
+
const saveExtendB1 = this._extendB1;
|
|
787
810
|
for (let i = 0; i < children.length; i++) {
|
|
788
|
-
|
|
811
|
+
let extendB0 = saveExtendB0;
|
|
812
|
+
let extendB1 = saveExtendB1;
|
|
789
813
|
if (geomB instanceof Path && children.length > 1) {
|
|
790
814
|
if (i === 0)
|
|
791
|
-
|
|
815
|
+
extendB1 = false; // first child can only extend from start
|
|
792
816
|
else if (i === children.length - 1)
|
|
793
|
-
|
|
817
|
+
extendB0 = false; // last child can only extend from end
|
|
794
818
|
else
|
|
795
|
-
|
|
819
|
+
extendB0 = extendB1 = false; // middle children cannot extend
|
|
796
820
|
}
|
|
797
821
|
else if (geomB instanceof Loop) {
|
|
798
|
-
|
|
822
|
+
extendB0 = extendB1 = false; // Loops cannot extend
|
|
799
823
|
}
|
|
824
|
+
this.resetGeometryB(children[i], extendB0, extendB1);
|
|
800
825
|
geomAHandler(geomA);
|
|
801
|
-
this._extendB0 = extendB0; // restore
|
|
802
|
-
this._extendB1 = extendB1; // restore
|
|
803
826
|
}
|
|
804
|
-
this.
|
|
827
|
+
this.resetGeometryB(geomB, saveExtendB0, saveExtendB1);
|
|
805
828
|
}
|
|
806
829
|
/**
|
|
807
830
|
* Low level dispatch of CurveChainWithDistanceIndex.
|
|
@@ -815,36 +838,39 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
815
838
|
}
|
|
816
839
|
const index0 = this._results.length;
|
|
817
840
|
const geomB = this._geometryB; // save
|
|
818
|
-
this.
|
|
841
|
+
this.resetGeometryB(geomB.path);
|
|
819
842
|
this.dispatchCurveCollection(geomA, geomAHandler);
|
|
820
|
-
this.
|
|
843
|
+
this.resetGeometryB(geomB); // restore
|
|
821
844
|
this._results = CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
|
|
822
845
|
}
|
|
823
846
|
/**
|
|
824
|
-
* Invoke
|
|
825
|
-
*
|
|
847
|
+
* Invoke dispatch on each child of `g` as "geometryA".
|
|
848
|
+
* * If `g` is a `Path` or `Loop`, adjust extension flags for geometryA accordingly.
|
|
826
849
|
*/
|
|
827
850
|
handleChildren(g) {
|
|
828
851
|
const children = g.children;
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
else
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
this._extendA1 = extendA1; // restore
|
|
852
|
+
if (!children)
|
|
853
|
+
return;
|
|
854
|
+
const saveExtendA0 = this._extendA0;
|
|
855
|
+
const saveExtendA1 = this._extendA1;
|
|
856
|
+
for (let i = 0; i < children.length; i++) {
|
|
857
|
+
let extendA0 = saveExtendA0;
|
|
858
|
+
let extendA1 = saveExtendA1;
|
|
859
|
+
if (g instanceof Path && children.length > 1) {
|
|
860
|
+
if (i === 0)
|
|
861
|
+
extendA1 = false; // first child can only extend from start
|
|
862
|
+
else if (i === children.length - 1)
|
|
863
|
+
extendA0 = false; // last child can only extend from end
|
|
864
|
+
else
|
|
865
|
+
extendA0 = extendA1 = false; // middle children cannot extend
|
|
866
|
+
}
|
|
867
|
+
else if (g instanceof Loop) {
|
|
868
|
+
extendA0 = extendA1 = false; // Loops cannot extend
|
|
847
869
|
}
|
|
870
|
+
this.resetGeometryA(extendA0, extendA1);
|
|
871
|
+
children[i].dispatchToGeometryHandler(this);
|
|
872
|
+
}
|
|
873
|
+
this.resetGeometryA(saveExtendA0, saveExtendA1);
|
|
848
874
|
}
|
|
849
875
|
/** Double dispatch handler for strongly typed segment. */
|
|
850
876
|
handleLineSegment3d(segmentA) {
|
|
@@ -862,12 +888,7 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
862
888
|
this.dispatchSegmentBsplineCurve(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
863
889
|
}
|
|
864
890
|
else if (this._geometryB instanceof TransitionSpiral3d) {
|
|
865
|
-
|
|
866
|
-
this._geometryB.emitStrokes(spiralApproximation);
|
|
867
|
-
const numPreviousResults = this._results.length;
|
|
868
|
-
this.computeSegmentLineString(segmentA, this._extendA0, this._extendA1, spiralApproximation, false, false, false);
|
|
869
|
-
const numberOfNewResults = this._results.length - numPreviousResults;
|
|
870
|
-
this.refineSpiralResultsByNewton(segmentA, this._geometryB, numberOfNewResults);
|
|
891
|
+
this.dispatchCurveSpiral(segmentA, this._extendA0, this._extendA1, this._geometryB, false);
|
|
871
892
|
}
|
|
872
893
|
else if (this._geometryB instanceof CurveCollection) {
|
|
873
894
|
this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
|
|
@@ -893,12 +914,7 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
893
914
|
this.dispatchLineStringBSplineCurve(lsA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
894
915
|
}
|
|
895
916
|
else if (this._geometryB instanceof TransitionSpiral3d) {
|
|
896
|
-
|
|
897
|
-
this._geometryB.emitStrokes(spiralApproximation);
|
|
898
|
-
const numPreviousResults = this._results.length;
|
|
899
|
-
this.computeLineStringLineString(lsA, this._extendA0, this._extendA1, spiralApproximation, false, false, false);
|
|
900
|
-
const numberOfNewResults = this._results.length - numPreviousResults;
|
|
901
|
-
this.refineSpiralResultsByNewton(lsA, this._geometryB, numberOfNewResults);
|
|
917
|
+
this.dispatchCurveSpiral(lsA, this._extendA0, this._extendA1, this._geometryB, false);
|
|
902
918
|
}
|
|
903
919
|
else if (this._geometryB instanceof CurveCollection) {
|
|
904
920
|
this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
|
|
@@ -909,100 +925,212 @@ export class CurveCurveIntersectXY extends RecurseToCurvesGeometryHandler {
|
|
|
909
925
|
return undefined;
|
|
910
926
|
}
|
|
911
927
|
/** Double dispatch handler for strongly typed arc. */
|
|
912
|
-
handleArc3d(
|
|
928
|
+
handleArc3d(arcA) {
|
|
913
929
|
if (this._geometryB instanceof LineSegment3d) {
|
|
914
|
-
this.dispatchSegmentArc(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1,
|
|
930
|
+
this.dispatchSegmentArc(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, arcA, this._extendA0, this._extendA1, true);
|
|
915
931
|
}
|
|
916
932
|
else if (this._geometryB instanceof LineString3d) {
|
|
917
|
-
this.computeArcLineString(
|
|
933
|
+
this.computeArcLineString(arcA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
918
934
|
}
|
|
919
935
|
else if (this._geometryB instanceof Arc3d) {
|
|
920
|
-
this.dispatchArcArc(
|
|
936
|
+
this.dispatchArcArc(arcA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
921
937
|
}
|
|
922
938
|
else if (this._geometryB instanceof BSplineCurve3d) {
|
|
923
|
-
this.dispatchArcBsplineCurve3d(
|
|
939
|
+
this.dispatchArcBsplineCurve3d(arcA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
924
940
|
}
|
|
925
941
|
else if (this._geometryB instanceof TransitionSpiral3d) {
|
|
926
|
-
|
|
927
|
-
this._geometryB.emitStrokes(spiralApproximation);
|
|
928
|
-
const numPreviousResults = this._results.length;
|
|
929
|
-
this.computeArcLineString(arc0, this._extendA0, this._extendA1, spiralApproximation, false, false, false);
|
|
930
|
-
const numberOfNewResults = this._results.length - numPreviousResults;
|
|
931
|
-
this.refineSpiralResultsByNewton(arc0, this._geometryB, numberOfNewResults);
|
|
942
|
+
this.dispatchCurveSpiral(arcA, this._extendA0, this._extendA1, this._geometryB, false);
|
|
932
943
|
}
|
|
933
944
|
else if (this._geometryB instanceof CurveCollection) {
|
|
934
|
-
this.dispatchCurveCollection(
|
|
945
|
+
this.dispatchCurveCollection(arcA, this.handleArc3d.bind(this));
|
|
935
946
|
}
|
|
936
947
|
else if (this._geometryB instanceof CurveChainWithDistanceIndex) {
|
|
937
|
-
this.dispatchCurveChainWithDistanceIndex(
|
|
948
|
+
this.dispatchCurveChainWithDistanceIndex(arcA, this.handleArc3d.bind(this));
|
|
938
949
|
}
|
|
939
950
|
return undefined;
|
|
940
951
|
}
|
|
941
952
|
/** Double dispatch handler for strongly typed bspline curve. */
|
|
942
|
-
handleBSplineCurve3d(
|
|
953
|
+
handleBSplineCurve3d(curveA) {
|
|
943
954
|
if (this._geometryB instanceof LineSegment3d) {
|
|
944
|
-
this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1,
|
|
955
|
+
this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, curveA, this._extendA0, this._extendA1, true);
|
|
945
956
|
}
|
|
946
957
|
else if (this._geometryB instanceof LineString3d) {
|
|
947
|
-
this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB0, this._extendB1,
|
|
958
|
+
this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB0, this._extendB1, curveA, this._extendA0, this._extendA1, true);
|
|
948
959
|
}
|
|
949
960
|
else if (this._geometryB instanceof Arc3d) {
|
|
950
|
-
this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB0, this._extendB1,
|
|
961
|
+
this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB0, this._extendB1, curveA, this._extendA0, this._extendA1, true);
|
|
951
962
|
}
|
|
952
963
|
else if (this._geometryB instanceof BSplineCurve3dBase) {
|
|
953
|
-
this.dispatchBSplineCurve3dBSplineCurve3d(
|
|
964
|
+
this.dispatchBSplineCurve3dBSplineCurve3d(curveA, this._geometryB, false);
|
|
954
965
|
}
|
|
955
966
|
else if (this._geometryB instanceof TransitionSpiral3d) {
|
|
956
|
-
|
|
957
|
-
this._geometryB.emitStrokes(spiralApproximation);
|
|
958
|
-
const numPreviousResults = this._results.length;
|
|
959
|
-
this.dispatchLineStringBSplineCurve(spiralApproximation, false, false, curve, this._extendA0, this._extendA1, true);
|
|
960
|
-
const numberOfNewResults = this._results.length - numPreviousResults;
|
|
961
|
-
this.refineSpiralResultsByNewton(curve, this._geometryB, numberOfNewResults);
|
|
967
|
+
this.dispatchCurveSpiral(curveA, this._extendA0, this._extendA1, this._geometryB, false);
|
|
962
968
|
}
|
|
963
969
|
else if (this._geometryB instanceof CurveCollection) {
|
|
964
|
-
this.dispatchCurveCollection(
|
|
970
|
+
this.dispatchCurveCollection(curveA, this.handleBSplineCurve3d.bind(this));
|
|
965
971
|
}
|
|
966
972
|
else if (this._geometryB instanceof CurveChainWithDistanceIndex) {
|
|
967
|
-
this.dispatchCurveChainWithDistanceIndex(
|
|
973
|
+
this.dispatchCurveChainWithDistanceIndex(curveA, this.handleBSplineCurve3d.bind(this));
|
|
968
974
|
}
|
|
969
975
|
return undefined;
|
|
970
976
|
}
|
|
971
977
|
/**
|
|
972
|
-
*
|
|
973
|
-
*
|
|
974
|
-
*
|
|
975
|
-
* @param
|
|
976
|
-
* @param
|
|
977
|
-
* @param
|
|
978
|
-
* @param reversed Whether
|
|
978
|
+
* Process tail of `this._results` for xy-intersections between the curve and spiral.
|
|
979
|
+
* * If a result is not already an intersection, refine it via Newton iteration unless it doesn't converge, in which
|
|
980
|
+
* case remove it.
|
|
981
|
+
* @param curveA The other curve primitive. May also be a transition spiral.
|
|
982
|
+
* @param spiralB The transition spiral.
|
|
983
|
+
* @param index0 index of first entry in tail of `this._results` to refine.
|
|
984
|
+
* @param reversed Whether `spiralB` data is in `detailA` of each recorded pair, and `curveA` data in `detailB`.
|
|
979
985
|
*/
|
|
980
|
-
refineSpiralResultsByNewton(
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
986
|
+
refineSpiralResultsByNewton(curveA, spiralB, index0, reversed = false) {
|
|
987
|
+
if (index0 >= this._results.length)
|
|
988
|
+
return;
|
|
989
|
+
// ASSUME: seeds in results tail are ordered by most accurate first, as only the first convergence within tolerance is recorded.
|
|
990
|
+
const xyMatchingFunction = new CurveCurveIntersectionXYRRToRRD(curveA, spiralB);
|
|
991
|
+
const maxIterations = 100; // observed 73 iterations to convergence in tangent case
|
|
992
|
+
const newtonSearcher = new Newton2dUnboundedWithDerivative(xyMatchingFunction, maxIterations);
|
|
993
|
+
const fractionTol = 2 * newtonSearcher.stepSizeTolerance; // relative cluster diameter for Newton convergence
|
|
994
|
+
const comparePairs = (a, b) => {
|
|
995
|
+
assert(() => a.detailA.curve === b.detailA.curve && a.detailB.curve === b.detailB.curve, "pairs are compatible");
|
|
996
|
+
// sort on either fraction, then on the point, using appropriate tolerances for each
|
|
997
|
+
if (Geometry.isAlmostEqualNumber(a.detailA.fraction, b.detailA.fraction, fractionTol))
|
|
998
|
+
return 0;
|
|
999
|
+
if (a.detailA.point.isAlmostEqualXY(b.detailA.point, this._coincidentGeometryContext.tolerance))
|
|
1000
|
+
return 0;
|
|
1001
|
+
return a.detailA.fraction - b.detailA.fraction;
|
|
1002
|
+
};
|
|
1003
|
+
const myResults = new SortedArray(comparePairs, DuplicatePolicy.Retain);
|
|
1004
|
+
const pushToMyResults = (cpA, fA, cpB, fB) => {
|
|
1005
|
+
const detailA = CurveLocationDetail.createCurveFractionPoint(cpA, fA, cpA.fractionToPoint(fA));
|
|
1006
|
+
const detailB = CurveLocationDetail.createCurveFractionPoint(cpB, fB, cpB.fractionToPoint(fB));
|
|
1007
|
+
detailA.setIntervalRole(CurveIntervalRole.isolated);
|
|
1008
|
+
detailB.setIntervalRole(CurveIntervalRole.isolated);
|
|
1009
|
+
let pushed = false;
|
|
1010
|
+
myResults.insert(new CurveLocationDetailPair(reversed ? detailB : detailA, reversed ? detailA : detailB), () => pushed = true);
|
|
1011
|
+
return pushed;
|
|
1012
|
+
};
|
|
1013
|
+
for (let i = index0; i < this._results.length; i++) {
|
|
1014
|
+
const pair = this._results[i];
|
|
1015
|
+
const detailA = reversed ? pair.detailB : pair.detailA;
|
|
1016
|
+
const detailB = reversed ? pair.detailA : pair.detailB;
|
|
1017
|
+
assert(detailB.curve instanceof LineString3d, "Caller has discretized the spiral");
|
|
1018
|
+
const extendA0 = reversed ? this._extendB0 : this._extendA0;
|
|
1019
|
+
const extendA1 = reversed ? this._extendB1 : this._extendA1;
|
|
1020
|
+
newtonSearcher.setUV(detailA.fraction, detailB.fraction); // use linestring fraction as spiral param; it generally yields a closer point than fractional length!
|
|
989
1021
|
if (newtonSearcher.runIterations()) {
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
if (this.acceptFraction(
|
|
993
|
-
|
|
1022
|
+
const fractionA = newtonSearcher.getU();
|
|
1023
|
+
const fractionB = newtonSearcher.getV();
|
|
1024
|
+
if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false))
|
|
1025
|
+
pushToMyResults(curveA, fractionA, spiralB, fractionB);
|
|
1026
|
+
}
|
|
1027
|
+
else if (newtonSearcher.numIterations < 10) {
|
|
1028
|
+
// if Newton failed early due to vanishing (partial) derivative, check for a root there
|
|
1029
|
+
const fractionA = newtonSearcher.getU();
|
|
1030
|
+
const fractionB = newtonSearcher.getV();
|
|
1031
|
+
if (curveA.fractionToPoint(fractionA).isAlmostEqualXY(spiralB.fractionToPoint(fractionB), this._coincidentGeometryContext.tolerance))
|
|
1032
|
+
pushToMyResults(curveA, fractionA, spiralB, fractionB);
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
this._results.splice(index0, this._results.length - index0, ...myResults.extractArray());
|
|
1036
|
+
}
|
|
1037
|
+
/**
|
|
1038
|
+
* Append stroke points and return the line string.
|
|
1039
|
+
* * This is a convenient wrapper for [[CurvePrimitive.emitStrokes]] but the analogous instance method cannot be added
|
|
1040
|
+
* to that class due to the ensuing recursion with subclass [[LineString3d]].
|
|
1041
|
+
* @param options options for stroking the instance curve.
|
|
1042
|
+
* @param result object to receive appended stroke points; if omitted, a new object is created, populated, and returned.
|
|
1043
|
+
*/
|
|
1044
|
+
strokeCurve(curve, options, result) {
|
|
1045
|
+
const ls = result ? result : LineString3d.create();
|
|
1046
|
+
curve.emitStrokes(ls, options);
|
|
1047
|
+
return ls;
|
|
1048
|
+
}
|
|
1049
|
+
/** Compute an approximation to the max chord height error of the stroked spiral, and another curve if a spiral. */
|
|
1050
|
+
computeMaxSpiralStrokeError(spiral0, ls0, spiral1, ls1) {
|
|
1051
|
+
let maxError = 0;
|
|
1052
|
+
if (ls0.numEdges() > 0) {
|
|
1053
|
+
// the max error occurs at the spiral end with higher curvature
|
|
1054
|
+
const k0 = spiral0.fractionToCurvature(0);
|
|
1055
|
+
const k1 = spiral0.fractionToCurvature(1);
|
|
1056
|
+
const iChord = (k0 !== undefined && k1 !== undefined && Math.abs(k0) > Math.abs(k1)) ? 0 : ls0.numEdges() - 1;
|
|
1057
|
+
const midPoint = Point3d.create();
|
|
1058
|
+
const detail = CurveLocationDetail.create();
|
|
1059
|
+
if (ls0.packedPoints.interpolateIndexIndex(iChord, 0.5, iChord + 1, midPoint)) {
|
|
1060
|
+
if (spiral0.closestPoint(midPoint, false, detail))
|
|
1061
|
+
maxError = detail.a;
|
|
1062
|
+
}
|
|
1063
|
+
if (spiral1 && spiral1 instanceof TransitionSpiral3d && ls1 && ls1 instanceof LineString3d) {
|
|
1064
|
+
const maxError1 = this.computeMaxSpiralStrokeError(spiral1, ls1);
|
|
1065
|
+
if (maxError1 > maxError)
|
|
1066
|
+
maxError = maxError1;
|
|
994
1067
|
}
|
|
995
1068
|
}
|
|
1069
|
+
return maxError;
|
|
1070
|
+
}
|
|
1071
|
+
/**
|
|
1072
|
+
* Solve the intersection problem for stroked, unextended curveB.
|
|
1073
|
+
* * @return the number of results appended.
|
|
1074
|
+
*/
|
|
1075
|
+
appendDiscreteIntersectionResults(curveA, extendA0, extendA1, lsB, reversed) {
|
|
1076
|
+
const i0 = this._results.length;
|
|
1077
|
+
// handleLineString3d requires us to swap geometries:
|
|
1078
|
+
const geomB = this._geometryB;
|
|
1079
|
+
const extendB0 = this._extendB0;
|
|
1080
|
+
const extendB1 = this._extendB1;
|
|
1081
|
+
this.resetGeometryA(false, false); // lsB is never extended
|
|
1082
|
+
this.resetGeometryB(curveA, extendA0, extendA1);
|
|
1083
|
+
this.handleLineString3d(lsB); // this puts lsB data in detailA, as expected when reversed is true
|
|
1084
|
+
if (!reversed) { // swap lsB data to detailB
|
|
1085
|
+
for (let i = i0; i < this._results.length; i++)
|
|
1086
|
+
this._results[i].swapDetails();
|
|
1087
|
+
}
|
|
1088
|
+
this.resetGeometryA(extendA0, extendA1);
|
|
1089
|
+
this.resetGeometryB(geomB, extendB0, extendB1);
|
|
1090
|
+
return this._results.length - i0;
|
|
1091
|
+
}
|
|
1092
|
+
/**
|
|
1093
|
+
* Solve the close approach problem for stroked, unextended curveB.
|
|
1094
|
+
* * Sort the results shortest projection distance first.
|
|
1095
|
+
* @return the number of results appended.
|
|
1096
|
+
*/
|
|
1097
|
+
appendDiscreteCloseApproachResults(curveA, lsB, maxDistance, reversed) {
|
|
1098
|
+
const i0 = this._results.length;
|
|
1099
|
+
const closeApproachPairs = CurveCurve.closeApproachProjectedXYPairs(reversed ? lsB : curveA, reversed ? curveA : lsB, maxDistance);
|
|
1100
|
+
closeApproachPairs.sort((p0, p1) => p0.detailA.a - p1.detailA.a);
|
|
1101
|
+
this._results.push(...closeApproachPairs);
|
|
1102
|
+
return this._results.length - i0;
|
|
1103
|
+
}
|
|
1104
|
+
/**
|
|
1105
|
+
* Compute the xy-intersection of a curve and a spiral.
|
|
1106
|
+
* * When `curveA` is extended, duplicate solutions may be returned.
|
|
1107
|
+
* @param curveA curve to intersect with spiralB. May also be a transition spiral.
|
|
1108
|
+
* @param extendA0 whether to compute xy-intersections with curveA extended beyond its start.
|
|
1109
|
+
* @param extendA1 whether to compute xy-intersections with curveA extended beyond its end.
|
|
1110
|
+
* @param spiralB transition spiral to intersect with curveA.
|
|
1111
|
+
* @param reversed whether `spiralB` data will be recorded in `detailA` of each result, and `curveA` data in `detailB`.
|
|
1112
|
+
*/
|
|
1113
|
+
dispatchCurveSpiral(curveA, extendA0, extendA1, spiralB, reversed) {
|
|
1114
|
+
let cpA = curveA;
|
|
1115
|
+
if (curveA instanceof TransitionSpiral3d) {
|
|
1116
|
+
cpA = this.strokeCurve(curveA);
|
|
1117
|
+
extendA0 = extendA1 = false;
|
|
1118
|
+
}
|
|
1119
|
+
const cpB = this.strokeCurve(spiralB);
|
|
1120
|
+
const maxError = 1.01 * this.computeMaxSpiralStrokeError(spiralB, cpB, curveA, cpA);
|
|
1121
|
+
const index0 = this._results.length;
|
|
1122
|
+
// append seeds computed by solving discretized spiral problems, then refine the seeds via Newton
|
|
1123
|
+
this.appendDiscreteIntersectionResults(cpA, extendA0, extendA1, cpB, reversed); // recorded first because more accurate
|
|
1124
|
+
this.appendDiscreteCloseApproachResults(cpA, cpB, maxError, reversed); // seeds for finding tangent intersections
|
|
1125
|
+
this.refineSpiralResultsByNewton(curveA, spiralB, index0, reversed);
|
|
996
1126
|
}
|
|
997
1127
|
/** Double dispatch handler for strongly typed spiral curve. */
|
|
998
1128
|
handleTransitionSpiral(spiral) {
|
|
999
|
-
if (this._geometryB instanceof
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
this.
|
|
1004
|
-
const numberOfNewResults = this._results.length - numPreviousResults;
|
|
1005
|
-
this.refineSpiralResultsByNewton(this._geometryB, spiral, numberOfNewResults, true);
|
|
1129
|
+
if (this._geometryB instanceof CurveChainWithDistanceIndex) {
|
|
1130
|
+
this.dispatchCurveChainWithDistanceIndex(spiral, this.handleTransitionSpiral.bind(this));
|
|
1131
|
+
}
|
|
1132
|
+
else if (this._geometryB instanceof CurvePrimitive) {
|
|
1133
|
+
this.dispatchCurveSpiral(this._geometryB, this._extendB0, this._extendB1, spiral, true);
|
|
1006
1134
|
}
|
|
1007
1135
|
else if (this._geometryB instanceof CurveCollection) {
|
|
1008
1136
|
this.dispatchCurveCollection(spiral, this.handleTransitionSpiral.bind(this));
|