@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loop.js","sourceRoot":"","sources":["../../../src/curve/Loop.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAQ/F,+EAA4E;AAC5E,uDAA+C;AAI/C,iDAA8C;AAG9C;;;;GAIG;AACH,MAAa,IAAK,SAAQ,4BAAU;
|
|
1
|
+
{"version":3,"file":"Loop.js","sourceRoot":"","sources":["../../../src/curve/Loop.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { IndexedXYZCollection } from \"../geometry3d/IndexedXYZCollection\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { CurveChainWithDistanceIndex } from \"./CurveChainWithDistanceIndex\";\nimport { CurveChain } from \"./CurveCollection\";\nimport { CurvePrimitive } from \"./CurvePrimitive\";\nimport { RecursiveCurveProcessor } from \"./CurveProcessor\";\nimport { GeometryQuery } from \"./GeometryQuery\";\nimport { LineString3d } from \"./LineString3d\";\nimport { StrokeOptions } from \"./StrokeOptions\";\n\n/**\n * A `Loop` is a curve chain that is the boundary of a closed (planar) loop.\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\n * @public\n */\nexport class Loop extends CurveChain {\n /** String name for schema properties */\n public readonly curveCollectionType = \"loop\";\n /** Tag value that can be set to true for user code to mark inner and outer loops. */\n public override isInner: boolean = false;\n /** Test if `other` is a `Loop` */\n public isSameGeometryClass(other: GeometryQuery): boolean {\n return other instanceof Loop;\n }\n public constructor() {\n super();\n }\n /**\n * Create a loop from a variable length list of [[CurvePrimitive]]s.\n * * A significant gap between the end of one curve and the start of the next, or between chain start and end,\n * is not bridged and may cause unexpected behavior.\n * @param curves array of individual curve primitives, assumed to form a closed planar loop.\n */\n public static create(...curves: CurvePrimitive[]): Loop {\n const result = new Loop();\n for (const curve of curves) {\n if (curve instanceof CurveChainWithDistanceIndex)\n result.children.push(...curve.path.children);\n else\n result.children.push(curve);\n }\n return result;\n }\n /**\n * Create a loop from an array of [[CurvePrimitive]]s.\n * * A significant gap between the end of one curve and the start of the next, or between chain start and end,\n * is not bridged and may cause unexpected behavior.\n * @param curves array of individual curve primitives, assumed to form a closed planar loop.\n */\n public static createArray(curves: CurvePrimitive[]): Loop {\n return this.create(...curves);\n }\n /**\n * Create a loop from an array of coplanar points.\n * @param points vertices of polygon, closure point optional.\n */\n public static createPolygon(points: IndexedXYZCollection | Point3d[]): Loop {\n const linestring = LineString3d.create(points);\n linestring.addClosurePoint();\n return Loop.create(linestring);\n }\n /** Create a loop with the stroked form of this loop. */\n public cloneStroked(options?: StrokeOptions): Loop {\n const strokes = LineString3d.create();\n for (const curve of this.children)\n curve.emitStrokes(strokes, options);\n // eliminate near-duplicate points between children\n strokes.removeDuplicatePoints();\n if (strokes.isPhysicallyClosed) {\n strokes.popPoint();\n strokes.addClosurePoint();\n }\n return Loop.create(strokes);\n }\n /** Return the boundary type (2) of a corresponding MicroStation CurveVector */\n public dgnBoundaryType(): number {\n /**\n * All \"Loop\" become \"outer\". TypeScript Loop object is equivalent to a native CurveVector with\n * boundaryType = BOUNDARY_TYPE_Outer. In other words, TypeScript has no flavor of Loop that\n * carries \"hole\" semantics.\n */\n return 2;\n }\n /** Invoke `processor.announceLoop(this, indexInParent)` */\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\n return processor.announceLoop(this, indexInParent);\n }\n /** Create a new `Loop` with no children */\n public cloneEmptyPeer(): Loop {\n return new Loop();\n }\n /** Second step of double dispatch: call `handler.handleLoop(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleLoop(this);\n }\n}\n\n/**\n * Structure carrying a pair of loops with curve geometry.\n * @public\n */\nexport class LoopCurveLoopCurve {\n /** First loop */\n public loopA?: Loop;\n /** A curve (typically an edge of loopA) */\n public curveA?: CurvePrimitive;\n /** second loop */\n public loopB?: Loop;\n /** A curve (typically an edge of loopB) */\n public curveB?: CurvePrimitive;\n /** Constructor */\n public constructor(\n loopA: Loop | undefined, curveA: CurvePrimitive | undefined, loopB: Loop | undefined, curveB: CurvePrimitive | undefined,\n ) {\n this.loopA = loopA;\n this.curveA = curveA;\n this.loopB = loopB;\n this.curveB = curveB;\n }\n /** Set the loopA and curveA members */\n public setA(loop: Loop, curve: CurvePrimitive) {\n this.loopA = loop;\n this.curveA = curve;\n }\n /** Set the loopB and curveB members */\n public setB(loop: Loop, curve: CurvePrimitive) {\n this.loopB = loop;\n this.curveB = curve;\n }\n}\n\n/**\n * Carrier object for loops characterized by area sign\n * @public\n */\nexport interface SignedLoops {\n /** Array of loops that have positive area sign (i.e. counterclockwise loops). */\n positiveAreaLoops: Loop[];\n /** Array of loops that have negative area sign (i.e. clockwise loops). */\n negativeAreaLoops: Loop[];\n /** Slivers where there are coincident sections of input curves. */\n slivers: Loop[];\n /** Array indicating edges between loops */\n edges?: LoopCurveLoopCurve[];\n}\n"]}
|
|
@@ -26,33 +26,33 @@ const StrokeOptions_1 = require("./StrokeOptions");
|
|
|
26
26
|
* @public
|
|
27
27
|
*/
|
|
28
28
|
class JointOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Smallest arc to construct.
|
|
31
|
+
* * If this control angle is 180 degrees or more, arcs are never created.
|
|
32
|
+
*/
|
|
33
|
+
minArcDegrees = 180.0;
|
|
34
|
+
/** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
|
|
35
|
+
maxChamferTurnDegrees = 91.0;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to remove the internal turn angle upper bound for sharp corner construction.
|
|
38
|
+
* * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
|
|
39
|
+
* ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
|
|
40
|
+
* * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
|
|
41
|
+
* up to `maxChamferTurnDegrees`.
|
|
42
|
+
* * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
|
|
43
|
+
* sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
|
|
44
|
+
*/
|
|
45
|
+
allowSharpestCorners = false;
|
|
46
|
+
/** Offset distance, positive to left of base curve. */
|
|
47
|
+
leftOffsetDistance = 0;
|
|
48
|
+
/** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
|
|
49
|
+
preserveEllipticalArcs = false;
|
|
29
50
|
/**
|
|
30
51
|
* Construct JointOptions.
|
|
31
52
|
* * leftOffsetDistance is required
|
|
32
53
|
* * minArcDegrees and maxChamferDegrees are optional.
|
|
33
54
|
*/
|
|
34
55
|
constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 91, preserveEllipticalArcs = false, allowSharpestCorners = false) {
|
|
35
|
-
/**
|
|
36
|
-
* Smallest arc to construct.
|
|
37
|
-
* * If this control angle is 180 degrees or more, arcs are never created.
|
|
38
|
-
*/
|
|
39
|
-
this.minArcDegrees = 180.0;
|
|
40
|
-
/** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
|
|
41
|
-
this.maxChamferTurnDegrees = 91.0;
|
|
42
|
-
/**
|
|
43
|
-
* Whether to remove the internal turn angle upper bound for sharp corner construction.
|
|
44
|
-
* * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
|
|
45
|
-
* ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
|
|
46
|
-
* * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
|
|
47
|
-
* up to `maxChamferTurnDegrees`.
|
|
48
|
-
* * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
|
|
49
|
-
* sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
|
|
50
|
-
*/
|
|
51
|
-
this.allowSharpestCorners = false;
|
|
52
|
-
/** Offset distance, positive to left of base curve. */
|
|
53
|
-
this.leftOffsetDistance = 0;
|
|
54
|
-
/** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
|
|
55
|
-
this.preserveEllipticalArcs = false;
|
|
56
56
|
this.leftOffsetDistance = leftOffsetDistance;
|
|
57
57
|
this.minArcDegrees = minArcDegrees;
|
|
58
58
|
this.maxChamferTurnDegrees = maxChamferDegrees;
|
|
@@ -106,6 +106,10 @@ exports.JointOptions = JointOptions;
|
|
|
106
106
|
* @public
|
|
107
107
|
*/
|
|
108
108
|
class OffsetOptions {
|
|
109
|
+
/** Options for offsetting and joining CurvePrimitives */
|
|
110
|
+
jointOptions;
|
|
111
|
+
/** Options for generating a B-spline curve offset */
|
|
112
|
+
strokeOptions;
|
|
109
113
|
/** Options that are provided are captured. */
|
|
110
114
|
constructor(offsetDistanceOrOptions, strokeOptions) {
|
|
111
115
|
this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OffsetOptions.js","sourceRoot":"","sources":["../../../src/curve/OffsetOptions.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\n\r\nimport { Geometry } from \"../Geometry\";\r\nimport { Angle } from \"../geometry3d/Angle\";\r\nimport { StrokeOptions } from \"./StrokeOptions\";\r\n\r\n/**\r\n * Control parameters for joint construction, used in offset construction methods such as [[RegionOps.constructPolygonWireXYOffset]] and [[RegionOps.constructCurveXYOffset]].\r\n * * Define a \"joint\" as the common point between adjacent segments of the input curve.\r\n * * Define the \"turn angle\" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of\r\n * the segments at the joint.\r\n * * When creating offsets, if an offset needs to do an \"outside\" turn, the first applicable construction is applied:\r\n * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.\r\n * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to\r\n * single intersection point (to create a sharp corner).\r\n * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:\r\n * * lie outside the arc that would have been created by the first construction\r\n * * have uniform turn angle less than `options.maxChamferDegrees`\r\n * * touch the arc at their midpoint (except first and last edge).\r\n * @public\r\n */\r\nexport class JointOptions {\r\n /**\r\n * Smallest arc to construct.\r\n * * If this control angle is 180 degrees or more, arcs are never created.\r\n */\r\n public minArcDegrees = 180.0;\r\n /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */\r\n public maxChamferTurnDegrees = 91.0;\r\n /**\r\n * Whether to remove the internal turn angle upper bound for sharp corner construction.\r\n * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose\r\n * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.\r\n * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles\r\n * up to `maxChamferTurnDegrees`.\r\n * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with\r\n * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.\r\n */\r\n public allowSharpestCorners = false;\r\n /** Offset distance, positive to left of base curve. */\r\n public leftOffsetDistance: number = 0;\r\n /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */\r\n public preserveEllipticalArcs = false;\r\n /**\r\n * Construct JointOptions.\r\n * * leftOffsetDistance is required\r\n * * minArcDegrees and maxChamferDegrees are optional.\r\n */\r\n constructor(\r\n leftOffsetDistance: number, minArcDegrees = 180, maxChamferDegrees = 91,\r\n preserveEllipticalArcs = false, allowSharpestCorners = false,\r\n ) {\r\n this.leftOffsetDistance = leftOffsetDistance;\r\n this.minArcDegrees = minArcDegrees;\r\n this.maxChamferTurnDegrees = maxChamferDegrees;\r\n this.preserveEllipticalArcs = preserveEllipticalArcs;\r\n this.allowSharpestCorners = allowSharpestCorners;\r\n }\r\n /** Return a deep clone. */\r\n public clone(): JointOptions {\r\n return new JointOptions(\r\n this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees,\r\n this.preserveEllipticalArcs, this.allowSharpestCorners,\r\n );\r\n }\r\n /** Copy values of input options */\r\n public setFrom(other: JointOptions) {\r\n this.leftOffsetDistance = other.leftOffsetDistance;\r\n this.minArcDegrees = other.minArcDegrees;\r\n this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;\r\n this.preserveEllipticalArcs = other.preserveEllipticalArcs;\r\n this.allowSharpestCorners = other.allowSharpestCorners;\r\n }\r\n /**\r\n * Parse a number or JointOptions up to JointOptions:\r\n * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.\r\n * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.\r\n * @param leftOffsetDistanceOrOptions\r\n */\r\n public static create(leftOffsetDistanceOrOptions: number | JointOptions): JointOptions {\r\n if (leftOffsetDistanceOrOptions instanceof JointOptions)\r\n return leftOffsetDistanceOrOptions;\r\n return new JointOptions(leftOffsetDistanceOrOptions);\r\n }\r\n /** Return true if the options indicate this amount of turn should be handled with an arc. */\r\n public needArc(theta: Angle): boolean {\r\n return Math.abs(theta.degrees) >= this.minArcDegrees - Geometry.smallAngleDegrees;\r\n }\r\n /** Return the number of corners needed to chamfer the given turn angle. */\r\n public numChamferPoints(theta: Angle): number {\r\n const degrees = Math.abs(theta.degrees);\r\n const minStepDegreesClamp = 10;\r\n let maxStepDegreesClamp = 120;\r\n if (this.allowSharpestCorners) {\r\n maxStepDegreesClamp = this.maxChamferTurnDegrees;\r\n }\r\n const stepDegrees = Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);\r\n if (degrees <= stepDegrees + Geometry.smallAngleDegrees)\r\n return 1;\r\n return Math.ceil(degrees / stepDegrees);\r\n }\r\n}\r\n\r\n/**\r\n * Options for offsetting a curve, used in offset construction methods such as [[CurvePrimitive.constructOffsetXY]], [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].\r\n * @public\r\n */\r\nexport class OffsetOptions {\r\n /** Options for offsetting and joining CurvePrimitives */\r\n public jointOptions: JointOptions;\r\n /** Options for generating a B-spline curve offset */\r\n public strokeOptions: StrokeOptions;\r\n /** Options that are provided are captured. */\r\n constructor(offsetDistanceOrOptions: number | JointOptions, strokeOptions?: StrokeOptions) {\r\n this.jointOptions = JointOptions.create(offsetDistanceOrOptions);\r\n this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : StrokeOptions.createForCurves();\r\n }\r\n public get minArcDegrees(): number {\r\n return this.jointOptions.minArcDegrees;\r\n }\r\n public set minArcDegrees(value: number) {\r\n this.jointOptions.minArcDegrees = value;\r\n }\r\n public get maxChamferTurnDegrees(): number {\r\n return this.jointOptions.maxChamferTurnDegrees;\r\n }\r\n public set maxChamferTurnDegrees(value: number) {\r\n this.jointOptions.maxChamferTurnDegrees = value;\r\n }\r\n public get allowSharpestCorners(): boolean {\r\n return this.jointOptions.allowSharpestCorners;\r\n }\r\n public set allowSharpestCorners(value: boolean) {\r\n this.jointOptions.allowSharpestCorners = value;\r\n }\r\n public get leftOffsetDistance(): number {\r\n return this.jointOptions.leftOffsetDistance;\r\n }\r\n public set leftOffsetDistance(value: number) {\r\n this.jointOptions.leftOffsetDistance = value;\r\n }\r\n public get preserveEllipticalArcs(): boolean {\r\n return this.jointOptions.preserveEllipticalArcs;\r\n }\r\n public set preserveEllipticalArcs(value: boolean) {\r\n this.jointOptions.preserveEllipticalArcs = value;\r\n }\r\n /**\r\n * Convert variant input into OffsetOptions.\r\n * * If a JointOptions is provided, it is captured.\r\n * * If an OffsetOptions is provided, a reference to it is returned.\r\n */\r\n public static create(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): OffsetOptions {\r\n if (offsetDistanceOrOptions instanceof OffsetOptions)\r\n return offsetDistanceOrOptions;\r\n return new OffsetOptions(offsetDistanceOrOptions);\r\n }\r\n /** Convert variant input into offset distance */\r\n public static getOffsetDistance(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): number {\r\n if (typeof offsetDistanceOrOptions === \"number\")\r\n return offsetDistanceOrOptions;\r\n return offsetDistanceOrOptions.leftOffsetDistance;\r\n }\r\n /** Return a deep clone. */\r\n public clone(): OffsetOptions {\r\n return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"OffsetOptions.js","sourceRoot":"","sources":["../../../src/curve/OffsetOptions.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { StrokeOptions } from \"./StrokeOptions\";\n\n/**\n * Control parameters for joint construction, used in offset construction methods such as [[RegionOps.constructPolygonWireXYOffset]] and [[RegionOps.constructCurveXYOffset]].\n * * Define a \"joint\" as the common point between adjacent segments of the input curve.\n * * Define the \"turn angle\" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of\n * the segments at the joint.\n * * When creating offsets, if an offset needs to do an \"outside\" turn, the first applicable construction is applied:\n * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.\n * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to\n * single intersection point (to create a sharp corner).\n * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:\n * * lie outside the arc that would have been created by the first construction\n * * have uniform turn angle less than `options.maxChamferDegrees`\n * * touch the arc at their midpoint (except first and last edge).\n * @public\n */\nexport class JointOptions {\n /**\n * Smallest arc to construct.\n * * If this control angle is 180 degrees or more, arcs are never created.\n */\n public minArcDegrees = 180.0;\n /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */\n public maxChamferTurnDegrees = 91.0;\n /**\n * Whether to remove the internal turn angle upper bound for sharp corner construction.\n * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose\n * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.\n * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles\n * up to `maxChamferTurnDegrees`.\n * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with\n * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.\n */\n public allowSharpestCorners = false;\n /** Offset distance, positive to left of base curve. */\n public leftOffsetDistance: number = 0;\n /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */\n public preserveEllipticalArcs = false;\n /**\n * Construct JointOptions.\n * * leftOffsetDistance is required\n * * minArcDegrees and maxChamferDegrees are optional.\n */\n constructor(\n leftOffsetDistance: number, minArcDegrees = 180, maxChamferDegrees = 91,\n preserveEllipticalArcs = false, allowSharpestCorners = false,\n ) {\n this.leftOffsetDistance = leftOffsetDistance;\n this.minArcDegrees = minArcDegrees;\n this.maxChamferTurnDegrees = maxChamferDegrees;\n this.preserveEllipticalArcs = preserveEllipticalArcs;\n this.allowSharpestCorners = allowSharpestCorners;\n }\n /** Return a deep clone. */\n public clone(): JointOptions {\n return new JointOptions(\n this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees,\n this.preserveEllipticalArcs, this.allowSharpestCorners,\n );\n }\n /** Copy values of input options */\n public setFrom(other: JointOptions) {\n this.leftOffsetDistance = other.leftOffsetDistance;\n this.minArcDegrees = other.minArcDegrees;\n this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;\n this.preserveEllipticalArcs = other.preserveEllipticalArcs;\n this.allowSharpestCorners = other.allowSharpestCorners;\n }\n /**\n * Parse a number or JointOptions up to JointOptions:\n * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.\n * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.\n * @param leftOffsetDistanceOrOptions\n */\n public static create(leftOffsetDistanceOrOptions: number | JointOptions): JointOptions {\n if (leftOffsetDistanceOrOptions instanceof JointOptions)\n return leftOffsetDistanceOrOptions;\n return new JointOptions(leftOffsetDistanceOrOptions);\n }\n /** Return true if the options indicate this amount of turn should be handled with an arc. */\n public needArc(theta: Angle): boolean {\n return Math.abs(theta.degrees) >= this.minArcDegrees - Geometry.smallAngleDegrees;\n }\n /** Return the number of corners needed to chamfer the given turn angle. */\n public numChamferPoints(theta: Angle): number {\n const degrees = Math.abs(theta.degrees);\n const minStepDegreesClamp = 10;\n let maxStepDegreesClamp = 120;\n if (this.allowSharpestCorners) {\n maxStepDegreesClamp = this.maxChamferTurnDegrees;\n }\n const stepDegrees = Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);\n if (degrees <= stepDegrees + Geometry.smallAngleDegrees)\n return 1;\n return Math.ceil(degrees / stepDegrees);\n }\n}\n\n/**\n * Options for offsetting a curve, used in offset construction methods such as [[CurvePrimitive.constructOffsetXY]], [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].\n * @public\n */\nexport class OffsetOptions {\n /** Options for offsetting and joining CurvePrimitives */\n public jointOptions: JointOptions;\n /** Options for generating a B-spline curve offset */\n public strokeOptions: StrokeOptions;\n /** Options that are provided are captured. */\n constructor(offsetDistanceOrOptions: number | JointOptions, strokeOptions?: StrokeOptions) {\n this.jointOptions = JointOptions.create(offsetDistanceOrOptions);\n this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : StrokeOptions.createForCurves();\n }\n public get minArcDegrees(): number {\n return this.jointOptions.minArcDegrees;\n }\n public set minArcDegrees(value: number) {\n this.jointOptions.minArcDegrees = value;\n }\n public get maxChamferTurnDegrees(): number {\n return this.jointOptions.maxChamferTurnDegrees;\n }\n public set maxChamferTurnDegrees(value: number) {\n this.jointOptions.maxChamferTurnDegrees = value;\n }\n public get allowSharpestCorners(): boolean {\n return this.jointOptions.allowSharpestCorners;\n }\n public set allowSharpestCorners(value: boolean) {\n this.jointOptions.allowSharpestCorners = value;\n }\n public get leftOffsetDistance(): number {\n return this.jointOptions.leftOffsetDistance;\n }\n public set leftOffsetDistance(value: number) {\n this.jointOptions.leftOffsetDistance = value;\n }\n public get preserveEllipticalArcs(): boolean {\n return this.jointOptions.preserveEllipticalArcs;\n }\n public set preserveEllipticalArcs(value: boolean) {\n this.jointOptions.preserveEllipticalArcs = value;\n }\n /**\n * Convert variant input into OffsetOptions.\n * * If a JointOptions is provided, it is captured.\n * * If an OffsetOptions is provided, a reference to it is returned.\n */\n public static create(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): OffsetOptions {\n if (offsetDistanceOrOptions instanceof OffsetOptions)\n return offsetDistanceOrOptions;\n return new OffsetOptions(offsetDistanceOrOptions);\n }\n /** Convert variant input into offset distance */\n public static getOffsetDistance(offsetDistanceOrOptions: number | JointOptions | OffsetOptions): number {\n if (typeof offsetDistanceOrOptions === \"number\")\n return offsetDistanceOrOptions;\n return offsetDistanceOrOptions.leftOffsetDistance;\n }\n /** Return a deep clone. */\n public clone(): OffsetOptions {\n return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());\n }\n}\n"]}
|
|
@@ -15,10 +15,14 @@ const Loop_1 = require("./Loop");
|
|
|
15
15
|
* @public
|
|
16
16
|
*/
|
|
17
17
|
class ParityRegion extends CurveCollection_1.CurveCollection {
|
|
18
|
+
/** String name for schema properties */
|
|
19
|
+
curveCollectionType = "parityRegion";
|
|
18
20
|
/** Test if `other` is an instance of `ParityRegion` */
|
|
19
21
|
isSameGeometryClass(other) {
|
|
20
22
|
return other instanceof ParityRegion;
|
|
21
23
|
}
|
|
24
|
+
/** Array of loops in this parity region. */
|
|
25
|
+
_children;
|
|
22
26
|
/** Return the array of loops in this parity region. */
|
|
23
27
|
get children() {
|
|
24
28
|
return this._children;
|
|
@@ -26,8 +30,6 @@ class ParityRegion extends CurveCollection_1.CurveCollection {
|
|
|
26
30
|
/** Construct parity region with empty loop array */
|
|
27
31
|
constructor() {
|
|
28
32
|
super();
|
|
29
|
-
/** String name for schema properties */
|
|
30
|
-
this.curveCollectionType = "parityRegion";
|
|
31
33
|
this._children = [];
|
|
32
34
|
}
|
|
33
35
|
/** Add loops (recursively) to this region's children */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParityRegion.js","sourceRoot":"","sources":["../../../src/curve/ParityRegion.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAQ/F,uDAAoD;AAGpD,iCAA8B;AAG9B;;;;;;GAMG;AACH,MAAa,YAAa,SAAQ,iCAAe;
|
|
1
|
+
{"version":3,"file":"ParityRegion.js","sourceRoot":"","sources":["../../../src/curve/ParityRegion.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { AnyCurve } from \"./CurveTypes\";\nimport { CurveCollection } from \"./CurveCollection\";\nimport { RecursiveCurveProcessor } from \"./CurveProcessor\";\nimport { GeometryQuery } from \"./GeometryQuery\";\nimport { Loop } from \"./Loop\";\nimport { StrokeOptions } from \"./StrokeOptions\";\n\n/**\n * * A `ParityRegion` is a collection of `Loop` objects.\n * * The loops collectively define a planar region.\n * * A point is \"in\" the composite region if it is \"in\" an odd number of the loops.\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\n * @public\n */\nexport class ParityRegion extends CurveCollection {\n /** String name for schema properties */\n public readonly curveCollectionType = \"parityRegion\";\n /** Test if `other` is an instance of `ParityRegion` */\n public isSameGeometryClass(other: GeometryQuery): boolean {\n return other instanceof ParityRegion;\n }\n /** Array of loops in this parity region. */\n protected _children: Loop[];\n /** Return the array of loops in this parity region. */\n public override get children(): Loop[] {\n return this._children;\n }\n /** Construct parity region with empty loop array */\n public constructor() {\n super();\n this._children = [];\n }\n /** Add loops (recursively) to this region's children */\n public addLoops(data?: Loop | Loop[] | Loop[][]): void {\n if (data === undefined) {\n } else if (data instanceof Loop)\n this.children.push(data);\n else if (Array.isArray(data)) {\n for (const child of data) {\n if (child instanceof Loop)\n this.children.push(child);\n else if (Array.isArray(child))\n this.addLoops(child);\n }\n }\n }\n /**\n * Return a single loop or parity region with given loops.\n * * The returned structure CAPTURES the loops.\n * * The loops are NOT reorganized by hole analysis.\n */\n public static createLoops(data?: Loop | Loop[] | Loop[][]): Loop | ParityRegion {\n if (data instanceof Loop)\n return data;\n const result = new ParityRegion();\n result.addLoops(data);\n return result;\n }\n /** Create a parity region by capturing the given loops as children. */\n public static create(...data: Loop[]): ParityRegion {\n const result = new ParityRegion();\n for (const child of data) {\n result.children.push(child);\n }\n return result;\n }\n /** Return the boundary type (4) of a corresponding MicroStation CurveVector */\n public dgnBoundaryType(): number {\n return 4;\n }\n /** Invoke `processor.announceParityRegion(this, indexInParent)` */\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\n return processor.announceParityRegion(this, indexInParent);\n }\n /** Return a deep copy. */\n public override clone(): ParityRegion {\n const clone = new ParityRegion();\n let child;\n for (child of this.children) {\n const childClone = child.clone();\n if (childClone instanceof Loop)\n clone.children.push(childClone);\n }\n return clone;\n }\n /** Stroke these curves into a new ParityRegion. */\n public cloneStroked(options?: StrokeOptions): ParityRegion {\n const clone = new ParityRegion();\n let child;\n for (child of this.children) {\n const childStrokes = child.cloneStroked(options);\n if (childStrokes)\n clone.children.push(childStrokes);\n }\n return clone;\n }\n /** Create a new empty parity region. */\n public cloneEmptyPeer(): ParityRegion {\n return new ParityRegion();\n }\n /**\n * Add `child` to this parity region (by capturing it).\n * * Any child type other than `Loop` is ignored.\n */\n public tryAddChild(child: AnyCurve | undefined): boolean {\n if (child && child instanceof Loop) {\n this._children.push(child);\n return true;\n }\n return false;\n }\n /** Get child `i` by index. */\n public getChild(i: number): Loop | undefined {\n if (i < this._children.length)\n return this._children[i];\n return undefined;\n }\n /** Second step of double dispatch: call `handler.handleRegion(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleParityRegion(this);\n }\n}\n"]}
|
package/lib/cjs/curve/Path.js
CHANGED
|
@@ -19,6 +19,8 @@ const LineString3d_1 = require("./LineString3d");
|
|
|
19
19
|
* @public
|
|
20
20
|
*/
|
|
21
21
|
class Path extends CurveCollection_1.CurveChain {
|
|
22
|
+
/** String name for schema properties */
|
|
23
|
+
curveCollectionType = "path";
|
|
22
24
|
/** Test if `other` is an instance of `Path` */
|
|
23
25
|
isSameGeometryClass(other) {
|
|
24
26
|
return other instanceof Path;
|
|
@@ -30,8 +32,6 @@ class Path extends CurveCollection_1.CurveChain {
|
|
|
30
32
|
/** Construct an empty path. */
|
|
31
33
|
constructor() {
|
|
32
34
|
super();
|
|
33
|
-
/** String name for schema properties */
|
|
34
|
-
this.curveCollectionType = "path";
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Create a path from a variable length list of curve primitives
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../src/curve/Path.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAO/F,mEAAwD;AACxD,+EAA4E;AAC5E,uDAA+C;AAC/C,uDAAqG;AACrG,+DAA4D;AAC5D,qDAAkD;AAGlD,iDAA8C;AAG9C;;;;;GAKG;AACH,MAAa,IAAK,SAAQ,4BAAU;
|
|
1
|
+
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../src/curve/Path.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { CurveChainWithDistanceIndex } from \"./CurveChainWithDistanceIndex\";\nimport { CurveChain } from \"./CurveCollection\";\nimport { CurveExtendMode, CurveExtendOptions, VariantCurveExtendParameter } from \"./CurveExtendMode\";\nimport { CurveLocationDetail } from \"./CurveLocationDetail\";\nimport { CurvePrimitive } from \"./CurvePrimitive\";\nimport { RecursiveCurveProcessor } from \"./CurveProcessor\";\nimport { GeometryQuery } from \"./GeometryQuery\";\nimport { LineString3d } from \"./LineString3d\";\nimport { StrokeOptions } from \"./StrokeOptions\";\n\n/**\n * * A `Path` object is a collection of curves that join head-to-tail to form a path.\n * * A `Path` object does not bound a planar region. Use `Loop` to indicate region bounding.\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\n * @public\n */\nexport class Path extends CurveChain {\n /** String name for schema properties */\n public readonly curveCollectionType = \"path\";\n /** Test if `other` is an instance of `Path` */\n public isSameGeometryClass(other: GeometryQuery): boolean {\n return other instanceof Path;\n }\n /** Invoke `processor.announcePath(this, indexInParent)` */\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\n return processor.announcePath(this, indexInParent);\n }\n /** Construct an empty path. */\n public constructor() {\n super();\n }\n /**\n * Create a path from a variable length list of curve primitives\n * * CurvePrimitive params are captured.\n * @param curves variable length list of individual curve primitives or point arrays.\n */\n public static create(...curves: Array<CurvePrimitive | Point3d[]>): Path {\n const result = new Path();\n for (const curve of curves) {\n if (curve instanceof CurveChainWithDistanceIndex)\n result.children.push(...curve.path.children);\n else if (curve instanceof CurvePrimitive)\n result.children.push(curve);\n else if (Array.isArray(curve) && curve.length > 0 && curve[0] instanceof Point3d) {\n result.children.push(LineString3d.create(curve));\n }\n }\n return result;\n }\n /**\n * Create a path from a an array of curve primitives.\n * @param curves array of individual curve primitives.\n */\n public static createArray(curves: CurvePrimitive[]): Path {\n return this.create(...curves);\n }\n /** Return a deep copy, with leaf-level curve primitives stroked. */\n public cloneStroked(options?: StrokeOptions): Path {\n const strokes = LineString3d.create();\n for (const curve of this.children)\n curve.emitStrokes(strokes, options);\n return Path.create(strokes);\n }\n /**\n * Return the closest point on the contained curves.\n * @param spacePoint point in space.\n * @param extend compute the closest point to the path extended according to variant type:\n * * false: do not extend the path\n * * true: extend the path at both start and end\n * * CurveExtendOptions: extend the path in the specified manner at both start and end\n * * CurveExtendOptions[]: first entry applies to path start; second, to path end; any other entries ignored\n * @param result optional pre-allocated detail to populate and return.\n * @returns details of the closest point.\n */\n public override closestPoint(\n spacePoint: Point3d, extend: VariantCurveExtendParameter = false, result?: CurveLocationDetail,\n ): CurveLocationDetail | undefined {\n let detailA: CurveLocationDetail | undefined;\n const detailB = new CurveLocationDetail();\n if (this.children !== undefined) {\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i]; // head only extends at start; tail, only at end. NOTE: child may be both head and tail!\n const mode0 = (i === 0) ? CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 0) : CurveExtendMode.None;\n const mode1 = (i === this.children.length - 1) ? CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 1) : CurveExtendMode.None;\n if (child.closestPoint(spacePoint, [mode0, mode1], detailB))\n detailA = result = CurveLocationDetail.chooseSmallerA(detailA, detailB)!.clone(result);\n }\n }\n return detailA;\n }\n /** Return the boundary type (1) of a corresponding MicroStation CurveVector */\n public dgnBoundaryType(): number {\n return 1;\n }\n /** Clone as a new `Path` with no primitives */\n public cloneEmptyPeer(): Path {\n return new Path();\n }\n /** Second step of double dispatch: call `handler.handlePath(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handlePath(this);\n }\n}\n"]}
|
|
@@ -19,18 +19,19 @@ const GeometryQuery_1 = require("./GeometryQuery");
|
|
|
19
19
|
* @public
|
|
20
20
|
*/
|
|
21
21
|
class PointString3d extends GeometryQuery_1.GeometryQuery {
|
|
22
|
+
/** String name for schema properties */
|
|
23
|
+
geometryCategory = "pointCollection";
|
|
22
24
|
/** Test if `other` is a PointString3d */
|
|
23
25
|
isSameGeometryClass(other) {
|
|
24
26
|
return other instanceof PointString3d;
|
|
25
27
|
}
|
|
28
|
+
_points;
|
|
26
29
|
/** Return a clone of the points array. */
|
|
27
30
|
get points() {
|
|
28
31
|
return this._points;
|
|
29
32
|
}
|
|
30
33
|
constructor() {
|
|
31
34
|
super();
|
|
32
|
-
/** String name for schema properties */
|
|
33
|
-
this.geometryCategory = "pointCollection";
|
|
34
35
|
this._points = [];
|
|
35
36
|
}
|
|
36
37
|
/** Clone and apply a transform. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointString3d.js","sourceRoot":"","sources":["../../../src/curve/PointString3d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\n\r\nimport { BeJSONFunctions, Geometry } from \"../Geometry\";\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Point3dArray } from \"../geometry3d/PointHelpers\";\r\nimport { Range3d } from \"../geometry3d/Range\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { XYZProps } from \"../geometry3d/XYZProps\";\r\nimport { GeometryQuery } from \"./GeometryQuery\";\r\n\r\n/**\r\n * A PointString3d is an array of points.\r\n * * PointString3D is first class (displayable, possibly persistent) geometry derived from the GeometryQuery base class.\r\n * * The various points in the PointString3d are NOT connected by line segments for display or other calculations.\r\n * @public\r\n */\r\nexport class PointString3d extends GeometryQuery implements BeJSONFunctions {\r\n /** String name for schema properties */\r\n public readonly geometryCategory = \"pointCollection\";\r\n /** Test if `other` is a PointString3d */\r\n public isSameGeometryClass(other: GeometryQuery): boolean {\r\n return other instanceof PointString3d;\r\n }\r\n private _points: Point3d[];\r\n /** Return a clone of the points array. */\r\n public get points(): Point3d[] {\r\n return this._points;\r\n }\r\n private constructor() {\r\n super();\r\n this._points = [];\r\n }\r\n /** Clone and apply a transform. */\r\n public cloneTransformed(transform: Transform): PointString3d {\r\n const c = this.clone();\r\n c.tryTransformInPlace(transform); // we know tryTransformInPlace succeeds\r\n return c;\r\n }\r\n /**\r\n * Turn any array (possibly nested) into a \"flat\" array of objects that are not arrays. This allows processing\r\n * the objects without recursion into nested arrays.\r\n */\r\n private static flattenArray(arr: any): any {\r\n return arr.reduce(\r\n // a callback function to execute for each element in the array. Its return value becomes\r\n // the value of the \"flat\" parameter on the next invocation of the callback function.\r\n (flat: any, toFlatten: any) => {\r\n return flat.concat(Array.isArray(toFlatten) ? PointString3d.flattenArray(toFlatten) : toFlatten);\r\n },\r\n [], // initial value (empty array)\r\n );\r\n }\r\n /** Create a PointString3d from points. */\r\n public static create(...points: any[]): PointString3d {\r\n const result = new PointString3d();\r\n result.addPoints(points);\r\n return result;\r\n }\r\n /** Add multiple points to the PointString3d. */\r\n public addPoints(...points: any[]) {\r\n const toAdd: any[] = PointString3d.flattenArray(points);\r\n for (const p of toAdd) {\r\n if (p instanceof Point3d)\r\n this._points.push(p);\r\n }\r\n }\r\n /** Add a single point to the PointString3d. */\r\n public addPoint(point: Point3d) {\r\n this._points.push(point);\r\n }\r\n /** Remove the last point added to the PointString3d. */\r\n public popPoint() {\r\n this._points.pop();\r\n }\r\n /** Replace this PointString3d's point array by a clone of the array in `other`. */\r\n public setFrom(other: PointString3d) {\r\n this._points = Point3dArray.clonePoint3dArray(other._points);\r\n }\r\n /** Create from an array of Point3d. */\r\n public static createPoints(points: Point3d[]): PointString3d {\r\n const ps = new PointString3d();\r\n ps._points = Point3dArray.clonePoint3dArray(points);\r\n return ps;\r\n }\r\n /** Create a PointString3d from xyz coordinates packed in a Float64Array. */\r\n public static createFloat64Array(xyzData: Float64Array): PointString3d {\r\n const ps = new PointString3d();\r\n for (let i = 0; i + 3 <= xyzData.length; i += 3)\r\n ps._points.push(Point3d.create(xyzData[i], xyzData[i + 1], xyzData[i + 2]));\r\n return ps;\r\n }\r\n /** Return a deep clone. */\r\n public clone(): PointString3d {\r\n const retVal = new PointString3d();\r\n retVal.setFrom(this);\r\n return retVal;\r\n }\r\n /** Replace this instance's points by those from a json array, e.g. `[[1,2,3], [4,5,6]]`. */\r\n public setFromJSON(json?: any) {\r\n this._points.length = 0;\r\n if (Array.isArray(json)) {\r\n let xyz;\r\n for (xyz of json)\r\n this._points.push(Point3d.fromJSON(xyz));\r\n }\r\n }\r\n /**\r\n * Convert an PointString3d to a JSON object.\r\n * @return {*} e.g., `[[1,2,3], [4,5,6]]`.\r\n */\r\n public toJSON(): XYZProps[] {\r\n const value = [];\r\n for (const p of this._points)\r\n value.push(p.toJSON());\r\n return value;\r\n }\r\n /** Create a PointString3d from a json array, e.g. `[[1,2,3], [4,5,6]]`. */\r\n public static fromJSON(json?: any): PointString3d {\r\n const ps = new PointString3d();\r\n ps.setFromJSON(json);\r\n return ps;\r\n }\r\n /** Access a single point by index. */\r\n public pointAt(i: number, result?: Point3d): Point3d | undefined {\r\n if (i >= 0 && i < this._points.length) {\r\n if (result) {\r\n result.setFrom(this._points[i]);\r\n return result;\r\n }\r\n return this._points[i].clone();\r\n }\r\n return undefined;\r\n }\r\n /** Return the number of points. */\r\n public numPoints(): number {\r\n return this._points.length;\r\n }\r\n /** Reverse the point order */\r\n public reverseInPlace(): void {\r\n if (this._points.length >= 2) {\r\n let i0 = 0;\r\n let i1 = this._points.length - 1;\r\n while (i0 < i1) {\r\n const a = this._points[i1];\r\n this._points[i1] = this._points[i0];\r\n this._points[i0] = a;\r\n i0++;\r\n i1--;\r\n }\r\n }\r\n }\r\n /** Apply transform on points in place. */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n transform.multiplyPoint3dArrayInPlace(this._points);\r\n return true;\r\n }\r\n /** Return the index and coordinates of the closest point to spacePoint. */\r\n public closestPoint(spacePoint: Point3d): { index: number, xyz: Point3d } {\r\n const result = { index: -1, xyz: Point3d.create() };\r\n const index = Point3dArray.closestPointIndex(this._points, spacePoint);\r\n if (index >= 0) {\r\n result.index = index;\r\n result.xyz.setFrom(this._points[index]);\r\n }\r\n return result;\r\n }\r\n /** Return true if all points are in the given plane. */\r\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\r\n return Point3dArray.isCloseToPlane(this._points, plane, Geometry.smallMetricDistance);\r\n }\r\n /** Extend a range to include the points in this PointString3d (optionally transformed). */\r\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\r\n rangeToExtend.extendArray(this._points, transform);\r\n }\r\n /** Return true if corresponding points are almost equal. */\r\n public override isAlmostEqual(other: GeometryQuery): boolean {\r\n if (!(other instanceof PointString3d))\r\n return false;\r\n return Point3dArray.isAlmostEqual(this._points, other._points);\r\n }\r\n /** Reduce to empty set of points. */\r\n public clear() {\r\n this._points.length = 0;\r\n }\r\n /** Second step of double dispatch: call `handler.handlePointString(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handlePointString3d(this);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PointString3d.js","sourceRoot":"","sources":["../../../src/curve/PointString3d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { BeJSONFunctions, Geometry } from \"../Geometry\";\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { Point3dArray } from \"../geometry3d/PointHelpers\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { XYZProps } from \"../geometry3d/XYZProps\";\nimport { GeometryQuery } from \"./GeometryQuery\";\n\n/**\n * A PointString3d is an array of points.\n * * PointString3D is first class (displayable, possibly persistent) geometry derived from the GeometryQuery base class.\n * * The various points in the PointString3d are NOT connected by line segments for display or other calculations.\n * @public\n */\nexport class PointString3d extends GeometryQuery implements BeJSONFunctions {\n /** String name for schema properties */\n public readonly geometryCategory = \"pointCollection\";\n /** Test if `other` is a PointString3d */\n public isSameGeometryClass(other: GeometryQuery): boolean {\n return other instanceof PointString3d;\n }\n private _points: Point3d[];\n /** Return a clone of the points array. */\n public get points(): Point3d[] {\n return this._points;\n }\n private constructor() {\n super();\n this._points = [];\n }\n /** Clone and apply a transform. */\n public cloneTransformed(transform: Transform): PointString3d {\n const c = this.clone();\n c.tryTransformInPlace(transform); // we know tryTransformInPlace succeeds\n return c;\n }\n /**\n * Turn any array (possibly nested) into a \"flat\" array of objects that are not arrays. This allows processing\n * the objects without recursion into nested arrays.\n */\n private static flattenArray(arr: any): any {\n return arr.reduce(\n // a callback function to execute for each element in the array. Its return value becomes\n // the value of the \"flat\" parameter on the next invocation of the callback function.\n (flat: any, toFlatten: any) => {\n return flat.concat(Array.isArray(toFlatten) ? PointString3d.flattenArray(toFlatten) : toFlatten);\n },\n [], // initial value (empty array)\n );\n }\n /** Create a PointString3d from points. */\n public static create(...points: any[]): PointString3d {\n const result = new PointString3d();\n result.addPoints(points);\n return result;\n }\n /** Add multiple points to the PointString3d. */\n public addPoints(...points: any[]) {\n const toAdd: any[] = PointString3d.flattenArray(points);\n for (const p of toAdd) {\n if (p instanceof Point3d)\n this._points.push(p);\n }\n }\n /** Add a single point to the PointString3d. */\n public addPoint(point: Point3d) {\n this._points.push(point);\n }\n /** Remove the last point added to the PointString3d. */\n public popPoint() {\n this._points.pop();\n }\n /** Replace this PointString3d's point array by a clone of the array in `other`. */\n public setFrom(other: PointString3d) {\n this._points = Point3dArray.clonePoint3dArray(other._points);\n }\n /** Create from an array of Point3d. */\n public static createPoints(points: Point3d[]): PointString3d {\n const ps = new PointString3d();\n ps._points = Point3dArray.clonePoint3dArray(points);\n return ps;\n }\n /** Create a PointString3d from xyz coordinates packed in a Float64Array. */\n public static createFloat64Array(xyzData: Float64Array): PointString3d {\n const ps = new PointString3d();\n for (let i = 0; i + 3 <= xyzData.length; i += 3)\n ps._points.push(Point3d.create(xyzData[i], xyzData[i + 1], xyzData[i + 2]));\n return ps;\n }\n /** Return a deep clone. */\n public clone(): PointString3d {\n const retVal = new PointString3d();\n retVal.setFrom(this);\n return retVal;\n }\n /** Replace this instance's points by those from a json array, e.g. `[[1,2,3], [4,5,6]]`. */\n public setFromJSON(json?: any) {\n this._points.length = 0;\n if (Array.isArray(json)) {\n let xyz;\n for (xyz of json)\n this._points.push(Point3d.fromJSON(xyz));\n }\n }\n /**\n * Convert an PointString3d to a JSON object.\n * @return {*} e.g., `[[1,2,3], [4,5,6]]`.\n */\n public toJSON(): XYZProps[] {\n const value = [];\n for (const p of this._points)\n value.push(p.toJSON());\n return value;\n }\n /** Create a PointString3d from a json array, e.g. `[[1,2,3], [4,5,6]]`. */\n public static fromJSON(json?: any): PointString3d {\n const ps = new PointString3d();\n ps.setFromJSON(json);\n return ps;\n }\n /** Access a single point by index. */\n public pointAt(i: number, result?: Point3d): Point3d | undefined {\n if (i >= 0 && i < this._points.length) {\n if (result) {\n result.setFrom(this._points[i]);\n return result;\n }\n return this._points[i].clone();\n }\n return undefined;\n }\n /** Return the number of points. */\n public numPoints(): number {\n return this._points.length;\n }\n /** Reverse the point order */\n public reverseInPlace(): void {\n if (this._points.length >= 2) {\n let i0 = 0;\n let i1 = this._points.length - 1;\n while (i0 < i1) {\n const a = this._points[i1];\n this._points[i1] = this._points[i0];\n this._points[i0] = a;\n i0++;\n i1--;\n }\n }\n }\n /** Apply transform on points in place. */\n public tryTransformInPlace(transform: Transform): boolean {\n transform.multiplyPoint3dArrayInPlace(this._points);\n return true;\n }\n /** Return the index and coordinates of the closest point to spacePoint. */\n public closestPoint(spacePoint: Point3d): { index: number, xyz: Point3d } {\n const result = { index: -1, xyz: Point3d.create() };\n const index = Point3dArray.closestPointIndex(this._points, spacePoint);\n if (index >= 0) {\n result.index = index;\n result.xyz.setFrom(this._points[index]);\n }\n return result;\n }\n /** Return true if all points are in the given plane. */\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\n return Point3dArray.isCloseToPlane(this._points, plane, Geometry.smallMetricDistance);\n }\n /** Extend a range to include the points in this PointString3d (optionally transformed). */\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\n rangeToExtend.extendArray(this._points, transform);\n }\n /** Return true if corresponding points are almost equal. */\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (!(other instanceof PointString3d))\n return false;\n return Point3dArray.isAlmostEqual(this._points, other._points);\n }\n /** Reduce to empty set of points. */\n public clear() {\n this._points.length = 0;\n }\n /** Second step of double dispatch: call `handler.handlePointString(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handlePointString3d(this);\n }\n}\n"]}
|
|
@@ -27,6 +27,7 @@ class ProxyCurve extends CurvePrimitive_1.CurvePrimitive {
|
|
|
27
27
|
dispatchToGeometryHandler(handler) {
|
|
28
28
|
return this._proxyCurve.dispatchToGeometryHandler(handler);
|
|
29
29
|
}
|
|
30
|
+
_proxyCurve;
|
|
30
31
|
/** Constructor CAPTURES the proxyCurve pointer */
|
|
31
32
|
constructor(proxyCurve) {
|
|
32
33
|
super();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyCurve.js","sourceRoot":"","sources":["../../../src/curve/ProxyCurve.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,4DAAyD;AAazD;;;;;;;;;;;;;GAaG;AACH,MAAsB,UAAW,SAAQ,+BAAc;IAC9C,yBAAyB,CAAC,OAAwB;QACvD,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;
|
|
1
|
+
{"version":3,"file":"ProxyCurve.js","sourceRoot":"","sources":["../../../src/curve/ProxyCurve.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\n\nimport type { GeometryHandler, IStrokeHandler } from \"../geometry3d/GeometryHandler\";\nimport type { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\nimport type { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport type { Ray3d } from \"../geometry3d/Ray3d\";\nimport type { Transform } from \"../geometry3d/Transform\";\nimport type { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport type { Range1d, Range3d } from \"../geometry3d/Range\";\nimport type { OffsetOptions } from \"./OffsetOptions\";\nimport type { LineString3d } from \"./LineString3d\";\nimport type { StrokeOptions } from \"./StrokeOptions\";\n\n/**\n * A ProxyCurve is expected to be used as a base class for curve types that use some existing curve (the proxy)\n * for evaluation and display but carry other defining data.\n * * The ProxyCurve implements all required CurvePrimitive methods by dispatching to the proxy.\n * * These methods presumably require support from the application class and are left abstract:\n * * clone\n * * curvePrimitiveType\n * * isSameCurvePrimitiveType\n * * isSameGeometryClass\n * * tryTransformInPlace\n * * reverseInPlace\n *\n * @public\n */\nexport abstract class ProxyCurve extends CurvePrimitive {\n public dispatchToGeometryHandler(handler: GeometryHandler) {\n return this._proxyCurve.dispatchToGeometryHandler(handler);\n }\n protected _proxyCurve: CurvePrimitive;\n /** Constructor CAPTURES the proxyCurve pointer */\n public constructor(proxyCurve: CurvePrimitive) {\n super();\n this._proxyCurve = proxyCurve;\n }\n /** Return the (pointer to) the proxy curve. */\n public get proxyCurve(): CurvePrimitive {\n return this._proxyCurve;\n }\n /** Implement by proxyCurve */\n public computeStrokeCountForOptions(options?: StrokeOptions): number {\n return this._proxyCurve.computeStrokeCountForOptions(options);\n }\n /** Implement by proxyCurve */\n public emitStrokableParts(dest: IStrokeHandler, options?: StrokeOptions): void {\n this._proxyCurve.emitStrokableParts(dest, options);\n }\n /** Return a deep clone. This override removes the undefined variant return. */\n public abstract override clone(): ProxyCurve;\n /** Return a transformed clone. */\n public override cloneTransformed(transform: Transform): ProxyCurve | undefined {\n const myClone = this.clone();\n if (myClone.tryTransformInPlace(transform))\n return myClone;\n return undefined;\n }\n /** Implement by proxyCurve. Subclasses may eventually override this default implementation. */\n public override clonePartialCurve(fractionA: number, fractionB: number): CurvePrimitive | undefined {\n return this._proxyCurve.clonePartialCurve(fractionA, fractionB);\n }\n /** Implement by proxyCurve */\n public emitStrokes(dest: LineString3d, options?: StrokeOptions): void {\n this._proxyCurve.emitStrokes(dest, options);\n }\n /** Implement by proxyCurve */\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\n this._proxyCurve.extendRange(rangeToExtend, transform);\n }\n /** Implement by proxyCurve */\n public override range(transform?: Transform, result?: Range3d): Range3d {\n return this._proxyCurve.range(transform, result);\n }\n /** Implement by proxyCurve */\n public fractionToPoint(fraction: number, result?: Point3d): Point3d {\n return this._proxyCurve.fractionToPoint(fraction, result);\n }\n /** Implement by proxyCurve */\n public fractionToPointAndDerivative(fraction: number, result?: Ray3d): Ray3d {\n return this._proxyCurve.fractionToPointAndDerivative(fraction, result);\n }\n /** Implement by proxyCurve */\n public fractionToPointAnd2Derivatives(\n fraction: number, result?: Plane3dByOriginAndVectors,\n ): Plane3dByOriginAndVectors | undefined {\n return this._proxyCurve.fractionToPointAnd2Derivatives(fraction, result);\n }\n /** Implement by proxyCurve */\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\n return this._proxyCurve.isInPlane(plane);\n }\n /** Implement by proxyCurve */\n public quickLength(): number {\n return this._proxyCurve.quickLength();\n }\n /** Implement by proxyCurve */\n public override constructOffsetXY(\n offsetDistanceOrOptions: number | OffsetOptions,\n ): CurvePrimitive | CurvePrimitive[] | undefined {\n return this._proxyCurve.constructOffsetXY(offsetDistanceOrOptions);\n }\n /** Implement by proxyCurve */\n public override projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): Range1d | undefined {\n return this._proxyCurve.projectedParameterRange(ray, lowHigh);\n }\n}\n"]}
|
|
@@ -22,6 +22,7 @@ const RegionOps_1 = require("../RegionOps");
|
|
|
22
22
|
* @internal
|
|
23
23
|
*/
|
|
24
24
|
class ConsolidateAdjacentCurvePrimitivesContext extends GeometryHandler_1.NullGeometryHandler {
|
|
25
|
+
_options;
|
|
25
26
|
constructor(options) {
|
|
26
27
|
super();
|
|
27
28
|
this._options = options ? options : new RegionOps_1.ConsolidateAdjacentCurvePrimitivesOptions();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolidateAdjacentPrimitivesContext.js","sourceRoot":"","sources":["../../../../src/curve/Query/ConsolidateAdjacentPrimitivesContext.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sEAAuE;AAEvE,sGAA8F;AAC9F,8DAA2D;AAC3D,oCAAiC;AAEjC,kDAA+C;AAC/C,oDAAiD;AACjD,kDAA+C;AAI/C,4CAAyE;AAGzE;;;;GAIG;AACH,MAAa,yCAA0C,SAAQ,qCAAmB;
|
|
1
|
+
{"version":3,"file":"ConsolidateAdjacentPrimitivesContext.js","sourceRoot":"","sources":["../../../../src/curve/Query/ConsolidateAdjacentPrimitivesContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { NullGeometryHandler } from \"../../geometry3d/GeometryHandler\";\nimport { Point3d } from \"../../geometry3d/Point3dVector3d\";\nimport { PolylineCompressionContext } from \"../../geometry3d/PolylineCompressionByEdgeOffset\";\nimport { PolylineOps } from \"../../geometry3d/PolylineOps\";\nimport { Arc3d } from \"../Arc3d\";\nimport { CurveChain } from \"../CurveCollection\";\nimport { CurveFactory } from \"../CurveFactory\";\nimport { LineSegment3d } from \"../LineSegment3d\";\nimport { LineString3d } from \"../LineString3d\";\nimport { Loop } from \"../Loop\";\nimport { ParityRegion } from \"../ParityRegion\";\nimport { Path } from \"../Path\";\nimport { ConsolidateAdjacentCurvePrimitivesOptions } from \"../RegionOps\";\nimport { UnionRegion } from \"../UnionRegion\";\n\n/**\n * * Implementation class for ConsolidateAdjacentCurvePrimitives.\n *\n * @internal\n */\nexport class ConsolidateAdjacentCurvePrimitivesContext extends NullGeometryHandler {\n private _options: ConsolidateAdjacentCurvePrimitivesOptions;\n public constructor(options?: ConsolidateAdjacentCurvePrimitivesOptions) {\n super();\n this._options = options ? options : new ConsolidateAdjacentCurvePrimitivesOptions();\n }\n /** look for adjacent compatible primitives in a path or loop. */\n public handleCurveChain(g: CurveChain) {\n const children = g.children;\n const numOriginal = children.length;\n const points: Point3d[] = [];\n let numAccept = 0;\n // i0 <=i < i1 is a range of child indices.\n // numAccept is the number of children accepted (contiguously at front of children)\n for (let i0 = 0; i0 < numOriginal;) {\n const basePrimitive = g.children[i0];\n if (this._options.consolidateLinearGeometry && (basePrimitive instanceof LineSegment3d || basePrimitive instanceof LineString3d)) {\n points.length = 0;\n let i1 = i0;\n // on exit, i1 is beyond the block of linear primitives . ..\n for (; i1 < g.children.length; i1++) {\n const nextPrimitive = g.children[i1];\n if (nextPrimitive instanceof LineSegment3d) {\n points.push(nextPrimitive.startPoint());\n points.push(nextPrimitive.endPoint());\n } else if (nextPrimitive instanceof LineString3d) {\n const source = nextPrimitive.packedPoints;\n for (let k = 0; k < source.length; k++) {\n points.push(source.getPoint3dAtUncheckedPointIndex(k));\n }\n } else {\n break;\n }\n }\n if (points.length > 1) {\n const compressedPointsA = PolylineOps.compressShortEdges(points, this._options.duplicatePointTolerance);\n const compressedPointsB = PolylineOps.compressByPerpendicularDistance(compressedPointsA, this._options.colinearPointTolerance);\n if (i0 === 0 && i1 === numOriginal) {\n // points is the entire curve, and the curve is closed. Maybe the first and last segments are colinear.\n PolylineCompressionContext.compressColinearWrapInPlace(compressedPointsB, this._options.duplicatePointTolerance, this._options.colinearPointTolerance);\n }\n if (compressedPointsB.length < 2) {\n // Collapsed to a point? Make a single point linestring\n g.children[numAccept++] = LineString3d.create(compressedPointsB[0]);\n } else if (compressedPointsB.length === 2) {\n g.children[numAccept++] = LineSegment3d.create(compressedPointsB[0], compressedPointsB[1]);\n } else {\n g.children[numAccept++] = LineString3d.createPoints(compressedPointsB);\n }\n } else {\n g.children[numAccept++] = basePrimitive;\n }\n i0 = i1;\n } else if (this._options.consolidateCompatibleArcs && basePrimitive instanceof Arc3d) {\n // subsume subsequent arcs into basePrimitive.\n // always accept base primitive.\n for (; ++i0 < g.children.length;) {\n const nextPrimitive = g.children[i0];\n if (!(nextPrimitive instanceof Arc3d))\n break;\n if (!CurveFactory.appendToArcInPlace(basePrimitive, nextPrimitive))\n break;\n }\n // i0 has already advanced\n g.children[numAccept++] = basePrimitive; // which has been extended 0 or more times.\n } else {\n g.children[numAccept++] = basePrimitive;\n i0++;\n }\n }\n g.children.length = numAccept;\n }\n\n public override handlePath(g: Path): any { return this.handleCurveChain(g); }\n public override handleLoop(g: Loop): any { return this.handleCurveChain(g); }\n public override handleParityRegion(g: ParityRegion): any {\n for (const child of g.children)\n child.dispatchToGeometryHandler(this);\n }\n public override handleUnionRegion(g: UnionRegion): any {\n for (const child of g.children)\n child.dispatchToGeometryHandler(this);\n }\n}\n"]}
|
|
@@ -17,6 +17,9 @@ const Path_1 = require("../Path");
|
|
|
17
17
|
* Data about a curve cut.
|
|
18
18
|
*/
|
|
19
19
|
class CutFractionDescriptor {
|
|
20
|
+
/** Fractional position along the curve */
|
|
21
|
+
fraction;
|
|
22
|
+
otherCurveDetail;
|
|
20
23
|
constructor(fraction, otherCurveDetail) {
|
|
21
24
|
this.fraction = fraction;
|
|
22
25
|
this.otherCurveDetail = otherCurveDetail;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurveSplitContext.js","sourceRoot":"","sources":["../../../../src/curve/Query/CurveSplitContext.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,6CAA0C;AAE1C,wDAAiE;AACjE,8CAA2C;AAE3C,sDAAmD;AACnD,kCAA+B;AAE/B;;GAEG;AACH,MAAM,qBAAqB;
|
|
1
|
+
{"version":3,"file":"CurveSplitContext.js","sourceRoot":"","sources":["../../../../src/curve/Query/CurveSplitContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\n\nimport { Geometry } from \"../../Geometry\";\nimport { AnyCurve } from \"../CurveTypes\";\nimport { CurveChain, CurveCollection } from \"../CurveCollection\";\nimport { CurveCurve } from \"../CurveCurve\";\nimport { CurveLocationDetail, CurveLocationDetailPair } from \"../CurveLocationDetail\";\nimport { CurvePrimitive } from \"../CurvePrimitive\";\nimport { Path } from \"../Path\";\n\n/**\n * Data about a curve cut.\n */\nclass CutFractionDescriptor {\n /** Fractional position along the curve */\n public fraction: number;\n public otherCurveDetail?: CurveLocationDetail;\n public constructor(fraction: number, otherCurveDetail?: CurveLocationDetail) {\n this.fraction = fraction;\n this.otherCurveDetail = otherCurveDetail;\n }\n /** Transfer data from other to this.\n * * Optionally look at both to set `otherCurveDetail`\n * * `other.otherCurveDetail` wins over `this.otherCurveDetail`\n */\n public setFrom(other: CutFractionDescriptor, combineCutFlag: boolean) {\n if (combineCutFlag && this.isSameFraction(other))\n this.otherCurveDetail = other.otherCurveDetail ? other.otherCurveDetail : this.otherCurveDetail;\n this.fraction = other.fraction;\n }\n /** Test if a the fractions are almost equal. */\n public isSameFraction(other: CutFractionDescriptor): boolean {\n return Geometry.isSmallAngleRadians(this.fraction - other.fraction);\n }\n /** set from direct data */\n public set(fraction: number, otherCurveDetail?: CurveLocationDetail) {\n this.fraction = fraction;\n this.otherCurveDetail = otherCurveDetail;\n }\n}\n/**\n * Context for splitting curves.\n * * Sets startCut and endCut details on CurvePrimitive fragments.\n * @internal\n */\nexport class CurveSplitContext {\n // return true if data has one or more non-endpoint intersections.\n private static hasInteriorDetailAIntersections(data: CurveLocationDetailPair[], fractionTolerance: number = Geometry.smallAngleRadians): boolean {\n if (data.length === 0)\n return false;\n for (const pair of data) {\n if (pair.detailA.fraction > fractionTolerance || pair.detailA.fraction < 1 - fractionTolerance)\n return true;\n }\n return false;\n }\n private collectFragmentAndAdvanceCut(curveToCut: CurvePrimitive, cutA: CutFractionDescriptor, cutB: CutFractionDescriptor, dest: CurvePrimitive[]) {\n if (!cutA.isSameFraction(cutB)) {\n const fragment = curveToCut.clonePartialCurve(cutA.fraction, cutB.fraction);\n if (fragment !== undefined) {\n fragment.startCut = cutA.otherCurveDetail;\n fragment.endCut = cutB.otherCurveDetail;\n dest.push(fragment);\n }\n }\n cutA.setFrom(cutB, true);\n }\n /** Collect fragments from an intersections array, with the array detailA entries all referencing to curveToCut.\n * * The `intersections` array is sorted on its detailA field.\n */\n private collectSinglePrimitiveFragments(curveToCut: CurvePrimitive, intersections: CurveLocationDetailPair[] | undefined, fragments: CurvePrimitive[]) {\n\n if (intersections === undefined || !CurveSplitContext.hasInteriorDetailAIntersections(intersections)) {\n fragments.push(curveToCut.clone());\n return;\n }\n intersections.sort((pairA: CurveLocationDetailPair, pairB: CurveLocationDetailPair) => (pairA.detailA.fraction - pairB.detailA.fraction));\n const cutA = new CutFractionDescriptor(0.0, undefined);\n const cutB = new CutFractionDescriptor(1.0, undefined); // but those values are immediately reset before use.\n for (const pair of intersections) {\n cutB.set(pair.detailA.fraction, pair.detailB);\n this.collectFragmentAndAdvanceCut(curveToCut, cutA, cutB, fragments);\n }\n cutB.set(1.0, undefined);\n this.collectFragmentAndAdvanceCut(curveToCut, cutA, cutB, fragments);\n }\n public static cloneCurvesWithXYSplits(curvesToCut: AnyCurve | undefined, cutterCurves: CurveCollection): AnyCurve | undefined {\n const context = new CurveSplitContext();\n if (curvesToCut instanceof CurvePrimitive) {\n const result: CurvePrimitive[] = [];\n const intersections = CurveCurve.intersectionXYPairs(curvesToCut, false, cutterCurves, false);\n context.collectSinglePrimitiveFragments(curvesToCut, intersections, result);\n if (result.length === 1)\n return result[0];\n return Path.createArray(result);\n } else if (curvesToCut instanceof CurveChain) {\n const result: CurvePrimitive[] = [];\n for (const primitive of curvesToCut.children) {\n const intersections = CurveCurve.intersectionXYPairs(primitive, false, cutterCurves, false);\n context.collectSinglePrimitiveFragments(primitive, intersections, result);\n }\n return Path.createArray(result);\n }\n return undefined;\n }\n}\n"]}
|
|
@@ -17,15 +17,19 @@ const StrokeOptions_1 = require("../StrokeOptions");
|
|
|
17
17
|
* * The publicly called method is `computeZRRange (ray, geometry)
|
|
18
18
|
*/
|
|
19
19
|
class CylindricalRangeQuery extends GeometryHandler_1.RecurseToCurvesGeometryHandler {
|
|
20
|
+
// private geometry0: GeometryQuery; <-- Never used
|
|
21
|
+
_perpVector;
|
|
22
|
+
_maxDistance;
|
|
23
|
+
_localToWorld;
|
|
20
24
|
/** capture ray and initialize evolving ranges. */
|
|
21
25
|
constructor(ray) {
|
|
22
26
|
super();
|
|
23
|
-
this._localPoint = Point3dVector3d_1.Point3d.create();
|
|
24
|
-
this._worldPoint = Point3dVector3d_1.Point3d.create();
|
|
25
27
|
this._perpVector = Point3dVector3d_1.Vector3d.createZero();
|
|
26
28
|
this._maxDistance = 0.0;
|
|
27
29
|
this._localToWorld = ray.toRigidZFrame();
|
|
28
30
|
}
|
|
31
|
+
_localPoint = Point3dVector3d_1.Point3d.create();
|
|
32
|
+
_worldPoint = Point3dVector3d_1.Point3d.create();
|
|
29
33
|
announcePoint(xyz) {
|
|
30
34
|
this._localToWorld.multiplyInversePoint3d(xyz, this._localPoint);
|
|
31
35
|
const distance = this._localPoint.magnitudeXY();
|