@itwin/core-geometry 5.1.0-dev.9 → 5.2.0-dev.1
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 +58 -1
- package/lib/cjs/Geometry.d.ts +18 -10
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +13 -3
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.d.ts +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +7 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.d.ts +4 -3
- package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js +4 -5
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.d.ts +7 -5
- package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js +9 -5
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +5 -3
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +1 -2
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js +13 -25
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +1 -2
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +2 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +2 -0
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +54 -32
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +56 -37
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +40 -1
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +90 -0
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts +3 -2
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +6 -5
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +27 -25
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +30 -25
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +9 -2
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +11 -0
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.d.ts +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.d.ts +2 -0
- package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js +4 -0
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +7 -0
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +15 -3
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +37 -8
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +34 -8
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +129 -33
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts +4 -3
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js +20 -9
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.d.ts +2 -1
- package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js +26 -41
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +74 -39
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +146 -46
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +36 -27
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +161 -55
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.d.ts +1 -1
- package/lib/cjs/curve/StrokeOptions.js +1 -1
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +2 -2
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +6 -6
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +0 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js +34 -0
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
- package/lib/cjs/geometry3d/AngleSweep.d.ts +25 -18
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js +32 -18
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +8 -7
- package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js +19 -25
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +8 -3
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +21 -3
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +11 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +21 -3
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.d.ts +2 -0
- package/lib/cjs/geometry3d/Plane3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js +6 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +18 -10
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js +0 -2
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +4 -4
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +4 -5
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.d.ts +7 -7
- package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js +66 -26
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +49 -2
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +38 -2
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts +5 -4
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +5 -4
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.d.ts +18 -10
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Range.js +32 -10
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js +0 -1
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts +7 -9
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +23 -45
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.d.ts +39 -29
- package/lib/cjs/geometry3d/ReusableObjectCache.d.ts.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js +49 -35
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.d.ts +1 -4
- package/lib/cjs/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js +48 -43
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts +21 -2
- package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Transform.js +32 -13
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.d.ts +8 -5
- package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js +27 -16
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.d.ts +2 -0
- package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js +11 -0
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/SmallSystem.d.ts +77 -36
- package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -1
- package/lib/cjs/numerics/SmallSystem.js +129 -73
- package/lib/cjs/numerics/SmallSystem.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.d.ts +1 -1
- package/lib/cjs/polyface/FacetOrientation.js +1 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +55 -40
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js +83 -75
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +47 -38
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +26 -19
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js +51 -32
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/cjs/polyface/Polyface.d.ts +19 -5
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js +18 -2
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +6 -6
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.d.ts +19 -18
- package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +39 -42
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts +1 -1
- package/lib/cjs/polyface/PolyfaceData.js +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +119 -78
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +315 -231
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +3 -3
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +2 -3
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js +2 -4
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +3 -3
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.d.ts +3 -3
- package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +5 -5
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/solid/Box.d.ts.map +1 -1
- package/lib/cjs/solid/Box.js +7 -0
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.d.ts.map +1 -1
- package/lib/cjs/solid/Cone.js +6 -0
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.d.ts +2 -3
- package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
- package/lib/cjs/solid/LinearSweep.js +11 -7
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.d.ts +2 -2
- package/lib/cjs/solid/RotationalSweep.js +2 -2
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.d.ts +1 -1
- package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
- package/lib/cjs/solid/RuledSweep.js +5 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/Sphere.d.ts.map +1 -1
- package/lib/cjs/solid/Sphere.js +6 -3
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.d.ts +1 -1
- package/lib/cjs/solid/SweepContour.js +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
- package/lib/cjs/solid/TorusPipe.js +4 -0
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.d.ts +1 -1
- package/lib/cjs/topology/ChainMerge.js +1 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +64 -14
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +149 -32
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +3 -2
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +3 -2
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/Merging.d.ts +0 -1
- package/lib/cjs/topology/Merging.d.ts.map +1 -1
- package/lib/cjs/topology/Merging.js +49 -46
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.d.ts.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js +2 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +9 -14
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js +29 -22
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/esm/Geometry.d.ts +18 -10
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +13 -3
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.d.ts +1 -1
- package/lib/esm/bspline/BSpline1dNd.js +1 -1
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +7 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.d.ts +4 -3
- package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js +4 -5
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.d.ts +7 -5
- package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPlane.js +9 -5
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +5 -3
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +1 -2
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js +13 -25
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +1 -2
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +1 -2
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +2 -0
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +2 -0
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +54 -32
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +56 -37
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +40 -1
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +90 -0
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts +3 -2
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +6 -5
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +27 -25
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +30 -25
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +9 -2
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +11 -0
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveTypes.d.ts +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.d.ts +2 -0
- package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/esm/curve/LineSegment3d.js +4 -0
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +7 -0
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +15 -3
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +37 -8
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts +34 -8
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +131 -35
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.d.ts +4 -3
- package/lib/esm/curve/Query/StrokeCountChain.d.ts.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js +20 -9
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.d.ts +2 -1
- package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js +26 -41
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +74 -39
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +146 -46
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +36 -27
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +161 -56
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.d.ts +1 -1
- package/lib/esm/curve/StrokeOptions.js +1 -1
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +2 -2
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +6 -6
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +0 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +58 -32
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +0 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts +14 -0
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js +30 -0
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -0
- package/lib/esm/geometry3d/AngleSweep.d.ts +25 -18
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js +32 -18
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +8 -7
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js +19 -25
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +8 -3
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +21 -3
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +11 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +21 -3
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.d.ts +2 -0
- package/lib/esm/geometry3d/Plane3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js +6 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +2 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +6 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +8 -2
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +18 -10
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js +0 -2
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +4 -4
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +4 -5
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.d.ts +7 -7
- package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js +66 -26
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +49 -2
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +38 -2
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +13 -6
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +16 -9
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts +5 -4
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +5 -4
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.d.ts +18 -10
- package/lib/esm/geometry3d/Range.d.ts.map +1 -1
- package/lib/esm/geometry3d/Range.js +32 -10
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js +0 -1
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts +7 -9
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +23 -45
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts +39 -29
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js +47 -33
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.d.ts +1 -4
- package/lib/esm/geometry3d/SortablePolygon.d.ts.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js +48 -43
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts +21 -2
- package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
- package/lib/esm/geometry3d/Transform.js +32 -13
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.d.ts +8 -5
- package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
- package/lib/esm/geometry4d/Point4d.js +27 -16
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.d.ts +2 -0
- package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js +11 -0
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/SmallSystem.d.ts +77 -36
- package/lib/esm/numerics/SmallSystem.d.ts.map +1 -1
- package/lib/esm/numerics/SmallSystem.js +129 -73
- package/lib/esm/numerics/SmallSystem.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.d.ts +1 -1
- package/lib/esm/polyface/FacetOrientation.js +1 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +55 -40
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js +83 -75
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +15 -14
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js +47 -38
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +26 -19
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.js +51 -32
- package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/esm/polyface/Polyface.d.ts +19 -5
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js +18 -2
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +6 -6
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.d.ts +19 -18
- package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +39 -42
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts +1 -1
- package/lib/esm/polyface/PolyfaceData.js +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +119 -78
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +316 -232
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +3 -3
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +3 -3
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +7 -6
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +8 -9
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +2 -3
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js +2 -4
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +3 -3
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.d.ts +3 -3
- package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +5 -5
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/solid/Box.d.ts.map +1 -1
- package/lib/esm/solid/Box.js +7 -0
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.d.ts.map +1 -1
- package/lib/esm/solid/Cone.js +6 -0
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.d.ts +2 -3
- package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
- package/lib/esm/solid/LinearSweep.js +11 -7
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.d.ts +2 -2
- package/lib/esm/solid/RotationalSweep.js +2 -2
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.d.ts +1 -1
- package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
- package/lib/esm/solid/RuledSweep.js +5 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/Sphere.d.ts.map +1 -1
- package/lib/esm/solid/Sphere.js +6 -3
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.d.ts +1 -1
- package/lib/esm/solid/SweepContour.js +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
- package/lib/esm/solid/TorusPipe.js +4 -0
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.d.ts +1 -1
- package/lib/esm/topology/ChainMerge.js +1 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +64 -14
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +149 -32
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +3 -2
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +3 -2
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/Merging.d.ts +0 -1
- package/lib/esm/topology/Merging.d.ts.map +1 -1
- package/lib/esm/topology/Merging.js +49 -46
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.d.ts.map +1 -1
- package/lib/esm/topology/RegularizeFace.js +2 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +9 -14
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js +29 -22
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,65 +1,64 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GrowableXYZArrayCache = exports.ReusableObjectCache = void 0;
|
|
4
2
|
/*---------------------------------------------------------------------------------------------
|
|
5
3
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
6
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
7
5
|
*--------------------------------------------------------------------------------------------*/
|
|
8
|
-
const GrowableXYZArray_1 = require("./GrowableXYZArray");
|
|
9
6
|
/** @packageDocumentation
|
|
10
7
|
* @module ArraysAndInterfaces
|
|
11
8
|
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.GrowableXYZArrayCache = exports.ReusableObjectCache = void 0;
|
|
11
|
+
const GrowableXYZArray_1 = require("./GrowableXYZArray");
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
* * Derived class must implement
|
|
15
|
-
*
|
|
16
|
-
* * `clearForCache (data: T)` -- tidy up `data` so it can be reused.
|
|
17
|
-
* @internal
|
|
13
|
+
* Abstract class managing an array of objects of type T, available for reuse by trusted callers.
|
|
14
|
+
* * Derived class must implement `createForCache` and `clearForCache`.
|
|
15
|
+
* @public
|
|
18
16
|
*/
|
|
19
17
|
class ReusableObjectCache {
|
|
20
18
|
_cachedObjects;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
_numDrop;
|
|
20
|
+
_numCreate;
|
|
21
|
+
_numReuse;
|
|
24
22
|
/**
|
|
25
|
-
*
|
|
23
|
+
* Create a new cache for objects of type T.
|
|
26
24
|
*/
|
|
27
25
|
constructor() {
|
|
28
26
|
this._cachedObjects = [];
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
27
|
+
this._numDrop = 0;
|
|
28
|
+
this._numCreate = 0;
|
|
29
|
+
this._numReuse = 0;
|
|
32
30
|
}
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
31
|
+
/**
|
|
32
|
+
* Present `data` for storage in the cache, and hence reuse by any subsequent [[grabFromCache]].
|
|
33
|
+
* * `data` will be sent to [[clearForCache]].
|
|
34
|
+
* * The caller should never refer to `data` again.
|
|
35
|
+
* @param data object to return to the cache.
|
|
36
36
|
*/
|
|
37
37
|
dropToCache(data) {
|
|
38
38
|
if (data) {
|
|
39
|
-
this.
|
|
39
|
+
this._numDrop++;
|
|
40
40
|
this.clearForCache(data);
|
|
41
41
|
this._cachedObjects.push(data);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* * That is, the cache does not remember it for any further management
|
|
48
|
-
* @param data
|
|
45
|
+
* Grab an object from the cache.
|
|
46
|
+
* * The returned object becomes property of the caller: the cache does not remember it for any further management.
|
|
49
47
|
*/
|
|
50
48
|
grabFromCache() {
|
|
51
49
|
let data = this._cachedObjects.pop();
|
|
52
50
|
if (data === undefined) {
|
|
53
51
|
data = this.createForCache();
|
|
54
|
-
this.
|
|
52
|
+
this._numCreate++;
|
|
55
53
|
}
|
|
56
54
|
else {
|
|
57
|
-
this.
|
|
55
|
+
this._numReuse++;
|
|
58
56
|
}
|
|
59
57
|
return data;
|
|
60
58
|
}
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
59
|
+
/**
|
|
60
|
+
* Drop multiple objects to the cache.
|
|
61
|
+
* @param data on input, the data to drop. On output, data is an empty array.
|
|
63
62
|
*/
|
|
64
63
|
dropAllToCache(data) {
|
|
65
64
|
while (data.length > 0) {
|
|
@@ -69,17 +68,32 @@ class ReusableObjectCache {
|
|
|
69
68
|
}
|
|
70
69
|
exports.ReusableObjectCache = ReusableObjectCache;
|
|
71
70
|
/**
|
|
72
|
-
* Cache of GrowableXYZArray.
|
|
73
|
-
*
|
|
74
|
-
* @
|
|
71
|
+
* Cache of [[GrowableXYZArray]].
|
|
72
|
+
* * Example usage includes clipping methods that can be structured to have disciplined reuse of a small number of arrays for a large number of steps.
|
|
73
|
+
* @public
|
|
75
74
|
*/
|
|
76
75
|
class GrowableXYZArrayCache extends ReusableObjectCache {
|
|
77
|
-
clearForCache(data) { data.length = 0; }
|
|
78
|
-
createForCache() { return new GrowableXYZArray_1.GrowableXYZArray(10); }
|
|
79
|
-
constructor() { super(); }
|
|
80
76
|
/**
|
|
81
|
-
*
|
|
82
|
-
|
|
77
|
+
* Create a new cache for [[GrowableXYZArray]] objects.
|
|
78
|
+
*/
|
|
79
|
+
constructor() {
|
|
80
|
+
super();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a new, ready-to-use [[GrowableXYZArray]].
|
|
84
|
+
* @param numPoints initial capacity in xyz triples (default 10)
|
|
85
|
+
* @param growthFactor reallocation expansion (default 1.5)
|
|
86
|
+
*/
|
|
87
|
+
createForCache(numPoints = 10, growthFactor = 1.5) {
|
|
88
|
+
return new GrowableXYZArray_1.GrowableXYZArray(numPoints, growthFactor);
|
|
89
|
+
}
|
|
90
|
+
/** Tidy up `data` so it can be reused. */
|
|
91
|
+
clearForCache(data) {
|
|
92
|
+
data.length = 0;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Grab an array from the cache and immediately fill from a source.
|
|
96
|
+
* @param source xyz to copy into the returned array.
|
|
83
97
|
*/
|
|
84
98
|
grabAndFill(source) {
|
|
85
99
|
const dest = this.grabFromCache();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReusableObjectCache.js","sourceRoot":"","sources":["../../../src/geometry3d/ReusableObjectCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReusableObjectCache.js","sourceRoot":"","sources":["../../../src/geometry3d/ReusableObjectCache.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,yDAAsD;AAGtD;;;;GAIG;AACH,MAAsB,mBAAmB;IAC/B,cAAc,CAAM;IACpB,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,SAAS,CAAS;IAC1B;;OAEG;IACH;QACE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAKD;;;;;OAKG;IACI,WAAW,CAAC,IAAmB;QACpC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD;;;OAGG;IACI,aAAa;QAClB,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;OAGG;IACI,cAAc,CAAC,IAAS;QAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAtDD,kDAsDC;AACD;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,mBAAqC;IAC9E;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IACD;;;;MAIE;IACQ,cAAc,CAAC,YAAoB,EAAE,EAAE,eAAuB,GAAG;QACzE,OAAO,IAAI,mCAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IACD,0CAA0C;IAChC,aAAa,CAAC,IAAsB;QAC5C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IACD;;;OAGG;IACI,WAAW,CAAC,MAA4B;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5BD,sDA4BC","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 ArraysAndInterfaces\n */\n\nimport { GrowableXYZArray } from \"./GrowableXYZArray\";\nimport { IndexedXYZCollection } from \"./IndexedXYZCollection\";\n\n/**\n * Abstract class managing an array of objects of type T, available for reuse by trusted callers.\n * * Derived class must implement `createForCache` and `clearForCache`.\n * @public\n */\nexport abstract class ReusableObjectCache<T> {\n private _cachedObjects: T[];\n private _numDrop: number;\n private _numCreate: number;\n private _numReuse: number;\n /**\n * Create a new cache for objects of type T.\n */\n protected constructor() {\n this._cachedObjects = [];\n this._numDrop = 0;\n this._numCreate = 0;\n this._numReuse = 0;\n }\n /** Create a new, ready-to-use object. */\n protected abstract createForCache(): T;\n /** Tidy up `data` so it can be reused. */\n protected abstract clearForCache(data: T): void;\n /**\n * Present `data` for storage in the cache, and hence reuse by any subsequent [[grabFromCache]].\n * * `data` will be sent to [[clearForCache]].\n * * The caller should never refer to `data` again.\n * @param data object to return to the cache.\n */\n public dropToCache(data: T | undefined) {\n if (data) {\n this._numDrop++;\n this.clearForCache(data);\n this._cachedObjects.push(data);\n }\n }\n /**\n * Grab an object from the cache.\n * * The returned object becomes property of the caller: the cache does not remember it for any further management.\n */\n public grabFromCache(): T {\n let data = this._cachedObjects.pop();\n if (data === undefined) {\n data = this.createForCache();\n this._numCreate++;\n } else {\n this._numReuse++;\n }\n return data;\n }\n /**\n * Drop multiple objects to the cache.\n * @param data on input, the data to drop. On output, data is an empty array.\n */\n public dropAllToCache(data: T[]) {\n while (data.length > 0) {\n this.dropToCache(data.pop());\n }\n }\n}\n/**\n * Cache of [[GrowableXYZArray]].\n * * Example usage includes clipping methods that can be structured to have disciplined reuse of a small number of arrays for a large number of steps.\n * @public\n */\nexport class GrowableXYZArrayCache extends ReusableObjectCache<GrowableXYZArray> {\n /**\n * Create a new cache for [[GrowableXYZArray]] objects.\n */\n public constructor() {\n super();\n }\n /**\n * Create a new, ready-to-use [[GrowableXYZArray]].\n * @param numPoints initial capacity in xyz triples (default 10)\n * @param growthFactor reallocation expansion (default 1.5)\n */\n protected createForCache(numPoints: number = 10, growthFactor: number = 1.5): GrowableXYZArray {\n return new GrowableXYZArray(numPoints, growthFactor);\n }\n /** Tidy up `data` so it can be reused. */\n protected clearForCache(data: GrowableXYZArray): void {\n data.length = 0;\n }\n /**\n * Grab an array from the cache and immediately fill from a source.\n * @param source xyz to copy into the returned array.\n */\n public grabAndFill(source: IndexedXYZCollection): GrowableXYZArray {\n const dest = this.grabFromCache();\n dest.pushFrom(source);\n return dest;\n }\n}\n"]}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
/** @packageDocumentation
|
|
2
|
-
* @module CartesianGeometry
|
|
3
|
-
*/
|
|
4
1
|
import { AnyRegion } from "../curve/CurveTypes";
|
|
5
2
|
import { Loop } from "../curve/Loop";
|
|
6
3
|
import { IndexedReadWriteXYZCollection, IndexedXYZCollection } from "./IndexedXYZCollection";
|
|
7
4
|
import { Point3d } from "./Point3dVector3d";
|
|
8
5
|
import { Range3d } from "./Range";
|
|
9
6
|
/**
|
|
10
|
-
* A `SortablePolygon` carries a (single) loop with data useful for sorting for inner-outer structure.
|
|
7
|
+
* A `SortablePolygon` carries a (single) xy-loop with data useful for sorting for inner-outer structure.
|
|
11
8
|
* @internal
|
|
12
9
|
*/
|
|
13
10
|
export declare class SortablePolygon {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortablePolygon.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/SortablePolygon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SortablePolygon.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/SortablePolygon.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAIrC,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA4KlC;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAsB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;gBACgB,IAAI,EAAE,6BAA6B,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO;IAS7E;;;OAGG;WACW,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,6BAA6B,GAAG,OAAO;IASjG;;;OAGG;WACW,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IASrE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAyBpC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAwBjC,OAAO,CAAC,MAAM,CAAC,eAAe;WAuChB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,SAAS;WAYpD,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,6BAA6B,EAAE,EAAE;IAIhG,WAAW,IAAI,oBAAoB,GAAG,SAAS;IAG/C,QAAQ,IAAI,IAAI,GAAG,SAAS;IAG5B,kBAAkB,CAAC,UAAU,EAAE,MAAM;IAGrC,mBAAmB,IAAI,OAAO,GAAG,SAAS;CAGlD"}
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.SortablePolygon = void 0;
|
|
8
|
+
/** @packageDocumentation
|
|
9
|
+
* @module CartesianGeometry
|
|
10
|
+
*/
|
|
8
11
|
const CurveCollection_1 = require("../curve/CurveCollection");
|
|
9
12
|
const CurvePrimitive_1 = require("../curve/CurvePrimitive");
|
|
10
13
|
const LineString3d_1 = require("../curve/LineString3d");
|
|
@@ -13,15 +16,39 @@ const ParityRegion_1 = require("../curve/ParityRegion");
|
|
|
13
16
|
const RegionOps_1 = require("../curve/RegionOps");
|
|
14
17
|
const UnionRegion_1 = require("../curve/UnionRegion");
|
|
15
18
|
const IndexedXYZCollection_1 = require("./IndexedXYZCollection");
|
|
19
|
+
const Point3dVector3d_1 = require("./Point3dVector3d");
|
|
16
20
|
const PolygonOps_1 = require("./PolygonOps");
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
const Ray3d_1 = require("./Ray3d");
|
|
22
|
+
/** Abstract base class for area-related queries of an xy-loop.
|
|
23
|
+
* * Subclasses have particular logic for `Loop` and polygon data.
|
|
19
24
|
* @internal
|
|
20
25
|
*/
|
|
21
26
|
class SimpleRegionCarrier {
|
|
27
|
+
/** Fractions for interior point search. */
|
|
28
|
+
searchFractions = [0.2349, 0.4142, 0.6587, 0.8193];
|
|
29
|
+
/**
|
|
30
|
+
* Given a region boundary tangent, construct a point interior to the region.
|
|
31
|
+
* @param ray point and tangent on an edge of the region (modified on return)
|
|
32
|
+
*/
|
|
33
|
+
constructInteriorPoint(ray) {
|
|
34
|
+
ray.direction.z = 0.0;
|
|
35
|
+
if (!ray.direction.normalizeInPlace())
|
|
36
|
+
return undefined; // loop has zero length edge, or a vertical (gap) edge
|
|
37
|
+
ray.direction.rotate90CCWXY(ray.direction);
|
|
38
|
+
if (this.signedArea < 0.0)
|
|
39
|
+
ray.direction.scaleInPlace(-1.0); // aim toward the region interior
|
|
40
|
+
const refDistance = Math.sqrt(Math.abs(this.signedArea));
|
|
41
|
+
const candidatePoint = Point3dVector3d_1.Point3d.create();
|
|
42
|
+
for (let fraction = 1.0e-5; fraction < 3; fraction *= 5.0) {
|
|
43
|
+
ray.fractionToPoint(fraction * refDistance, candidatePoint);
|
|
44
|
+
if (1 === this.classifyPointXY(candidatePoint))
|
|
45
|
+
return candidatePoint;
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
22
49
|
}
|
|
23
50
|
/**
|
|
24
|
-
* Implement `
|
|
51
|
+
* Implement `SimpleRegionCarrier` queries with the area as a polygon carried in an `IndexedReadWriteXYZCollection`.
|
|
25
52
|
*/
|
|
26
53
|
class PolygonCarrier extends SimpleRegionCarrier {
|
|
27
54
|
data;
|
|
@@ -40,14 +67,14 @@ class PolygonCarrier extends SimpleRegionCarrier {
|
|
|
40
67
|
classifyPointXY(xy) {
|
|
41
68
|
return PolygonOps_1.PolygonOps.classifyPointInPolygonXY(xy.x, xy.y, this.data);
|
|
42
69
|
}
|
|
43
|
-
/** Return some point "inside"
|
|
44
|
-
* NEEDS WORK: this returns a point ON --
|
|
45
|
-
*/
|
|
70
|
+
/** Return some point "inside". */
|
|
46
71
|
getAnyInteriorPoint() {
|
|
47
72
|
for (let childIndex = 0; childIndex < this.data.length; childIndex++) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
73
|
+
for (const fraction of this.searchFractions) {
|
|
74
|
+
const q = this.constructInteriorPointNearEdge(childIndex, fraction);
|
|
75
|
+
if (q !== undefined)
|
|
76
|
+
return q;
|
|
77
|
+
}
|
|
51
78
|
}
|
|
52
79
|
return undefined;
|
|
53
80
|
}
|
|
@@ -63,27 +90,14 @@ class PolygonCarrier extends SimpleRegionCarrier {
|
|
|
63
90
|
}
|
|
64
91
|
constructInteriorPointNearEdge(edgeIndex, fractionAlong) {
|
|
65
92
|
if (edgeIndex + 1 < this.data.length) {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
const vector = point0.vectorTo(point1);
|
|
69
|
-
const point = point0.interpolate(fractionAlong, point1);
|
|
70
|
-
vector.rotate90CCWXY(vector);
|
|
71
|
-
if (vector.normalizeInPlace()) {
|
|
72
|
-
if (this._signedArea < 0)
|
|
73
|
-
vector.scaleInPlace(-1.0);
|
|
74
|
-
const refDistance = Math.sqrt(Math.abs(this._signedArea));
|
|
75
|
-
for (let fraction = 1.0e-5; fraction < 3; fraction *= 5.0) {
|
|
76
|
-
const candidatePoint = point.plusScaled(vector, fraction * refDistance);
|
|
77
|
-
if (1 === this.classifyPointXY(candidatePoint))
|
|
78
|
-
return candidatePoint;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
93
|
+
const ray = Ray3d_1.Ray3d.createCapture(this.data.interpolateIndexIndex(edgeIndex, fractionAlong, edgeIndex + 1), this.data.vectorIndexIndex(edgeIndex, edgeIndex + 1));
|
|
94
|
+
return this.constructInteriorPoint(ray);
|
|
81
95
|
}
|
|
82
96
|
return undefined;
|
|
83
97
|
}
|
|
84
98
|
}
|
|
85
99
|
/**
|
|
86
|
-
* Implement `
|
|
100
|
+
* Implement `SimpleRegionCarrier` queries with the area as a strongly typed `Loop`.
|
|
87
101
|
*/
|
|
88
102
|
class LoopCarrier extends SimpleRegionCarrier {
|
|
89
103
|
data;
|
|
@@ -105,28 +119,19 @@ class LoopCarrier extends SimpleRegionCarrier {
|
|
|
105
119
|
}
|
|
106
120
|
constructInteriorPointNearChild(childIndex, fractionAlong) {
|
|
107
121
|
if (childIndex < this.data.children.length) {
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
ray.direction.rotate90CCWXY(ray.direction);
|
|
111
|
-
if (this._signedArea < 0.0)
|
|
112
|
-
ray.direction.scaleInPlace(-1.0);
|
|
113
|
-
const refDistance = Math.sqrt(Math.abs(this._signedArea));
|
|
114
|
-
for (let fraction = 1.0e-5; fraction < 3; fraction *= 5.0) {
|
|
115
|
-
const candidatePoint = ray.fractionToPoint(fraction * refDistance);
|
|
116
|
-
if (1 === this.classifyPointXY(candidatePoint))
|
|
117
|
-
return candidatePoint;
|
|
118
|
-
}
|
|
122
|
+
const ray = this.data.children[childIndex].fractionToPointAndDerivative(fractionAlong);
|
|
123
|
+
return this.constructInteriorPoint(ray);
|
|
119
124
|
}
|
|
120
125
|
return undefined;
|
|
121
126
|
}
|
|
122
|
-
/** Return some point "inside"
|
|
123
|
-
* NEEDS WORK: this returns a point ON --
|
|
124
|
-
*/
|
|
127
|
+
/** Return some point "inside". */
|
|
125
128
|
getAnyInteriorPoint() {
|
|
126
129
|
for (let childIndex = 0; childIndex < this.data.children.length; childIndex++) {
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
+
for (const fraction of this.searchFractions) {
|
|
131
|
+
const q = this.constructInteriorPointNearChild(childIndex, fraction);
|
|
132
|
+
if (q !== undefined)
|
|
133
|
+
return q;
|
|
134
|
+
}
|
|
130
135
|
}
|
|
131
136
|
return undefined;
|
|
132
137
|
}
|
|
@@ -154,7 +159,7 @@ class LoopCarrier extends SimpleRegionCarrier {
|
|
|
154
159
|
}
|
|
155
160
|
}
|
|
156
161
|
/**
|
|
157
|
-
* A `SortablePolygon` carries a (single) loop with data useful for sorting for inner-outer structure.
|
|
162
|
+
* A `SortablePolygon` carries a (single) xy-loop with data useful for sorting for inner-outer structure.
|
|
158
163
|
* @internal
|
|
159
164
|
*/
|
|
160
165
|
class SortablePolygon {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortablePolygon.js","sourceRoot":"","sources":["../../../src/geometry3d/SortablePolygon.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 CartesianGeometry\n */\nimport { AnyRegion } from \"../curve/CurveTypes\";\nimport { CurveChain } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { ParityRegion } from \"../curve/ParityRegion\";\nimport { RegionOps } from \"../curve/RegionOps\";\nimport { UnionRegion } from \"../curve/UnionRegion\";\nimport { IndexedReadWriteXYZCollection, IndexedXYZCollection } from \"./IndexedXYZCollection\";\nimport { Point3d } from \"./Point3dVector3d\";\nimport { PolygonOps } from \"./PolygonOps\";\nimport { Range3d } from \"./Range\";\nimport { XAndY } from \"./XYZProps\";\n\n/** abstract base class for area-related queries of a loop.\n * * subclasses have particular logic for `Loop` and polygon data.\n * @internal\n */\nabstract class SimpleRegionCarrier {\n public abstract classifyPointXY(xy: XAndY): number | undefined;\n // Find any point on an edge.\n // evaluate tangent.\n // move to left or right according to signedArea, producing an interior point for the loop.\n public abstract getAnyInteriorPoint(): Point3d | undefined;\n /**\n * * grab the loop formatted as a simple polygon.\n * * stroke if necessary.\n */\n public abstract grabPolygon(): IndexedReadWriteXYZCollection | undefined;\n /**\n * * grab the loop formatted as a strongly typed loop object\n */\n public abstract grabLoop(): Loop | undefined;\n /**\n * (Property access) Return the signed area of the loop\n */\n public abstract get signedArea(): number;\n /**\n * If the current `signedArea` has different sign versus `targetSign`, reverse the loop in place.\n */\n public abstract reverseForAreaSign(targetSign: number): void;\n}\n/**\n * Implement `LoopCarrier` queries with the area as a polygon carried in an `IndexedReadWriteXYZCollection`\n */\nclass PolygonCarrier extends SimpleRegionCarrier {\n public data: IndexedReadWriteXYZCollection;\n private _signedArea: number;\n public get signedArea(): number { return this._signedArea; }\n public constructor(data: IndexedReadWriteXYZCollection) {\n super();\n this.data = data;\n this._signedArea = PolygonOps.areaXY(data);\n }\n /**\n * classify xy parts of point wrt this loop.\n * @param xy\n * @internal\n */\n public classifyPointXY(xy: XAndY): number | undefined {\n return PolygonOps.classifyPointInPolygonXY(xy.x, xy.y, this.data);\n }\n /** Return some point \"inside\"\n * NEEDS WORK: this returns a point ON --\n */\n public getAnyInteriorPoint(): Point3d | undefined {\n for (let childIndex = 0; childIndex < this.data.length; childIndex++) {\n const q = this.constructInteriorPointNearEdge(childIndex, 0.2349);\n if (q !== undefined)\n return q;\n }\n return undefined;\n }\n public grabPolygon(): IndexedReadWriteXYZCollection | undefined { return this.data; }\n public grabLoop(): Loop | undefined {\n return Loop.createPolygon(this.data);\n }\n public reverseForAreaSign(targetSign: number) {\n if (targetSign * this._signedArea < 0.0) {\n this.data.reverseInPlace();\n this._signedArea *= -1.0;\n }\n }\n public constructInteriorPointNearEdge(edgeIndex: number, fractionAlong: number): Point3d | undefined {\n if (edgeIndex + 1 < this.data.length) {\n const point0 = this.data.getPoint3dAtUncheckedPointIndex(edgeIndex);\n const point1 = this.data.getPoint3dAtUncheckedPointIndex(edgeIndex + 1);\n const vector = point0.vectorTo(point1);\n const point = point0.interpolate(fractionAlong, point1);\n vector.rotate90CCWXY(vector);\n if (vector.normalizeInPlace()) {\n if (this._signedArea < 0)\n vector.scaleInPlace(-1.0);\n const refDistance = Math.sqrt(Math.abs(this._signedArea));\n for (let fraction = 1.0e-5; fraction < 3; fraction *= 5.0) {\n const candidatePoint = point.plusScaled(vector, fraction * refDistance);\n if (1 === this.classifyPointXY(candidatePoint))\n return candidatePoint;\n }\n }\n }\n return undefined;\n }\n\n}\n/**\n * Implement `LoopCarrier` queries with the area as a strongly typed `Loop`\n */\nclass LoopCarrier extends SimpleRegionCarrier {\n public data: Loop;\n private _signedArea: number;\n public get signedArea(): number { return this._signedArea; }\n public constructor(data: Loop) {\n super();\n this.data = data;\n const areaMoments = RegionOps.computeXYAreaMoments(data);\n this._signedArea = areaMoments !== undefined ? areaMoments.quantitySum : 0.0;\n }\n /**\n * classify xy parts of point wrt this loop.\n * @param xy\n * @internal\n */\n public classifyPointXY(xy: XAndY): number | undefined {\n return RegionOps.testPointInOnOutRegionXY(this.data, xy.x, xy.y);\n }\n public constructInteriorPointNearChild(childIndex: number, fractionAlong: number): Point3d | undefined {\n if (childIndex < this.data.children.length) {\n const primitive = this.data.children[childIndex];\n const ray = primitive.fractionToPointAndUnitTangent(fractionAlong);\n ray.direction.rotate90CCWXY(ray.direction);\n if (this._signedArea < 0.0)\n ray.direction.scaleInPlace(-1.0);\n const refDistance = Math.sqrt(Math.abs(this._signedArea));\n for (let fraction = 1.0e-5; fraction < 3; fraction *= 5.0) {\n const candidatePoint = ray.fractionToPoint(fraction * refDistance);\n if (1 === this.classifyPointXY(candidatePoint))\n return candidatePoint;\n }\n }\n return undefined;\n }\n /** Return some point \"inside\"\n * NEEDS WORK: this returns a point ON --\n */\n public getAnyInteriorPoint(): Point3d | undefined {\n for (let childIndex = 0; childIndex < this.data.children.length; childIndex++) {\n const q = this.constructInteriorPointNearChild(childIndex, 0.2349);\n if (q !== undefined)\n return q;\n }\n return undefined;\n }\n public grabPolygon(): IndexedReadWriteXYZCollection | undefined {\n const strokes = this.data.cloneStroked();\n if (strokes instanceof CurveChain) {\n const linestring = LineString3d.create();\n for (const child of strokes.children) {\n if (child instanceof CurvePrimitive) {\n child.emitStrokes(linestring);\n }\n }\n return linestring.numPoints() > 0 ? linestring.packedPoints : undefined;\n }\n return undefined;\n }\n public grabLoop(): Loop | undefined {\n return this.data;\n }\n public reverseForAreaSign(targetSign: number) {\n if (targetSign * this._signedArea < 0.0) {\n this.data.reverseChildrenInPlace();\n this._signedArea *= -1.0;\n }\n }\n}\n\n/**\n * A `SortablePolygon` carries a (single) loop with data useful for sorting for inner-outer structure.\n * @internal\n */\nexport class SortablePolygon {\n private _loopCarrier: SimpleRegionCarrier;\n public anyPoint?: Point3d;\n public sortKey: number;\n public range: Range3d;\n public parentIndex?: number;\n public isHole: boolean;\n public outputSetIndex?: number;\n /**\n *\n * @param loop Loop to capture.\n */\n public constructor(loop: IndexedReadWriteXYZCollection | Loop, range: Range3d) {\n if (loop instanceof IndexedReadWriteXYZCollection)\n this._loopCarrier = new PolygonCarrier(loop);\n else\n this._loopCarrier = new LoopCarrier(loop);\n this.range = range;\n this.sortKey = Math.abs(this._loopCarrier.signedArea);\n this.isHole = false;\n }\n /** Push loop with sort data onto the array.\n * * No action if no clear normal.\n * * return true if pushed.\n */\n public static pushPolygon(loops: SortablePolygon[], loop: IndexedReadWriteXYZCollection): boolean {\n const range = loop.getRange();\n const sortablePolygon = new SortablePolygon(loop, range);\n if (sortablePolygon.sortKey > 0.0) {\n loops.push(sortablePolygon);\n return true;\n }\n return false;\n }\n /** Push loop with sort data onto the array.\n * * No action if no clear normal.\n * * return true if pushed.\n */\n public static pushLoop(loops: SortablePolygon[], loop: Loop): boolean {\n const range = loop.range();\n const sortablePolygon = new SortablePolygon(loop, range);\n if (sortablePolygon.sortKey > 0.0) {\n loops.push(sortablePolygon);\n return true;\n }\n return false;\n }\n /** Push loop with sort data onto the array.\n * * No action if no clear normal.\n * * return true if pushed.\n */\n private static assignParentsAndDepth(loops: SortablePolygon[]): void {\n // Sort largest to smallest ...\n loops.sort((loopA: SortablePolygon, loopB: SortablePolygon) => (loopB.sortKey - loopA.sortKey));\n // starting with smallest loop, point each loop to smallest containing parent.\n for (let i = loops.length; i-- > 0;) {\n const thisLoop = loops[i];\n const xy = thisLoop._loopCarrier.getAnyInteriorPoint();\n if (xy !== undefined) {\n // find smallest containing parent (search forward only to hit)\n loops[i].parentIndex = undefined;\n loops[i].outputSetIndex = undefined;\n for (let j = i; j-- > 0;) {\n const otherLoop = loops[j];\n if (otherLoop.range.containsXY(xy.x, xy.y)) {\n if (1 === otherLoop._loopCarrier.classifyPointXY(xy)) {\n thisLoop.parentIndex = j;\n // The loops are searched from small area to larger. Any other containing loop is larger, so otherLoop must be the smallest.\n break;\n }\n }\n }\n }\n }\n }\n\n private static assemblePolygonSet(loops: SortablePolygon[]): IndexedReadWriteXYZCollection[][] {\n const outputSets: IndexedReadWriteXYZCollection[][] = [];\n\n // In large-to-small order:\n // If a loop has no parent or has a \"hole\" as parent it is outer.\n // otherwise (i.e. it has a non-hole parent) it becomes a hole in the parent.\n for (const loopData of loops) {\n loopData.isHole = false;\n const parentIndex = loopData.parentIndex;\n if (parentIndex !== undefined)\n loopData.isHole = !loops[parentIndex].isHole;\n if (!loopData.isHole) {\n loopData._loopCarrier.reverseForAreaSign(1.0);\n loopData.outputSetIndex = outputSets.length;\n outputSets.push([]);\n outputSets[loopData.outputSetIndex].push(loopData._loopCarrier.grabPolygon()!);\n } else {\n loopData._loopCarrier.reverseForAreaSign(-1.0);\n const outputSetIndex = loops[parentIndex!].outputSetIndex!;\n outputSets[outputSetIndex].push(loopData._loopCarrier.grabPolygon()!);\n }\n }\n return outputSets;\n }\n private static assembleLoopSet(loops: SortablePolygon[]): AnyRegion[] {\n const outputSets: AnyRegion[] = [];\n const numLoops = loops.length;\n // In large-to-small order:\n // If a loop has no parent or has a \"hole\" as parent it is outer.\n // otherwise (i.e. it has a non-hole parent) it becomes a hole in the parent.\n for (let candidateIndex = 0; candidateIndex < numLoops; candidateIndex++) {\n const candidateData = loops[candidateIndex];\n const parentIndex = candidateData.parentIndex;\n candidateData.isHole = parentIndex !== undefined ? !loops[parentIndex].isHole : false;\n\n if (!candidateData.isHole) {\n candidateData._loopCarrier.reverseForAreaSign(1.0);\n const candidateLoop = candidateData._loopCarrier.grabLoop()!;\n let candidateParityRegion: ParityRegion | undefined;\n // find all directly contained children . . .\n for (let childIndex = candidateIndex + 1; childIndex < numLoops; childIndex++) {\n const childData = loops[childIndex];\n if (childData.parentIndex === candidateIndex) {\n if (candidateParityRegion === undefined) {\n candidateParityRegion = ParityRegion.create();\n candidateParityRegion.tryAddChild(candidateLoop);\n childData._loopCarrier.reverseForAreaSign(-1.0);\n candidateParityRegion.tryAddChild(childData._loopCarrier.grabLoop());\n } else {\n childData._loopCarrier.reverseForAreaSign(-1.0);\n candidateParityRegion.tryAddChild(childData._loopCarrier.grabLoop());\n }\n }\n }\n if (candidateParityRegion !== undefined)\n outputSets.push(candidateParityRegion);\n else if (candidateLoop !== undefined)\n outputSets.push(candidateLoop);\n }\n }\n return outputSets;\n }\n\n public static sortAsAnyRegion(loops: SortablePolygon[]): AnyRegion {\n this.assignParentsAndDepth(loops);\n const regions = this.assembleLoopSet(loops);\n if (regions.length === 1)\n return regions[0];\n else {\n const unionRegion = UnionRegion.create();\n for (const region of regions)\n unionRegion.tryAddChild(region);\n return unionRegion;\n }\n }\n public static sortAsArrayOfArrayOfPolygons(loops: SortablePolygon[]): IndexedReadWriteXYZCollection[][] {\n this.assignParentsAndDepth(loops);\n return this.assemblePolygonSet(loops);\n }\n public grabPolygon(): IndexedXYZCollection | undefined {\n return this._loopCarrier.grabPolygon();\n }\n public grabLoop(): Loop | undefined {\n return this._loopCarrier.grabLoop();\n }\n public reverseForAreaSign(targetSign: number) {\n this._loopCarrier.reverseForAreaSign(targetSign);\n }\n public getAnyInteriorPoint(): Point3d | undefined {\n return this._loopCarrier.getAnyInteriorPoint();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SortablePolygon.js","sourceRoot":"","sources":["../../../src/geometry3d/SortablePolygon.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 CartesianGeometry\n */\n\nimport { CurveChain } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { AnyRegion } from \"../curve/CurveTypes\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { ParityRegion } from \"../curve/ParityRegion\";\nimport { RegionOps } from \"../curve/RegionOps\";\nimport { UnionRegion } from \"../curve/UnionRegion\";\nimport { IndexedReadWriteXYZCollection, IndexedXYZCollection } from \"./IndexedXYZCollection\";\nimport { Point3d } from \"./Point3dVector3d\";\nimport { PolygonOps } from \"./PolygonOps\";\nimport { Range3d } from \"./Range\";\nimport { Ray3d } from \"./Ray3d\";\nimport { XAndY } from \"./XYZProps\";\n\n/** Abstract base class for area-related queries of an xy-loop.\n * * Subclasses have particular logic for `Loop` and polygon data.\n * @internal\n */\nabstract class SimpleRegionCarrier {\n /** Fractions for interior point search. */\n protected searchFractions: number[] = [0.2349, 0.4142, 0.6587, 0.8193];\n\n public abstract classifyPointXY(xy: XAndY): number | undefined;\n // Find any point on an edge.\n // evaluate tangent.\n // move to left or right according to signedArea, producing an interior point for the loop.\n public abstract getAnyInteriorPoint(): Point3d | undefined;\n /**\n * * grab the loop formatted as a simple polygon.\n * * stroke if necessary.\n */\n public abstract grabPolygon(): IndexedReadWriteXYZCollection | undefined;\n /**\n * * grab the loop formatted as a strongly typed loop object\n */\n public abstract grabLoop(): Loop | undefined;\n /**\n * (Property access) Return the signed area of the loop\n */\n public abstract get signedArea(): number;\n /**\n * If the current `signedArea` has different sign versus `targetSign`, reverse the loop in place.\n */\n public abstract reverseForAreaSign(targetSign: number): void;\n /**\n * Given a region boundary tangent, construct a point interior to the region.\n * @param ray point and tangent on an edge of the region (modified on return)\n */\n protected constructInteriorPoint(ray: Ray3d): Point3d | undefined {\n ray.direction.z = 0.0;\n if (!ray.direction.normalizeInPlace())\n return undefined; // loop has zero length edge, or a vertical (gap) edge\n ray.direction.rotate90CCWXY(ray.direction);\n if (this.signedArea < 0.0)\n ray.direction.scaleInPlace(-1.0); // aim toward the region interior\n const refDistance = Math.sqrt(Math.abs(this.signedArea));\n const candidatePoint = Point3d.create();\n for (let fraction = 1.0e-5; fraction < 3; fraction *= 5.0) {\n ray.fractionToPoint(fraction * refDistance, candidatePoint);\n if (1 === this.classifyPointXY(candidatePoint))\n return candidatePoint;\n }\n return undefined;\n }\n}\n\n/**\n * Implement `SimpleRegionCarrier` queries with the area as a polygon carried in an `IndexedReadWriteXYZCollection`.\n */\nclass PolygonCarrier extends SimpleRegionCarrier {\n public data: IndexedReadWriteXYZCollection;\n private _signedArea: number;\n public get signedArea(): number { return this._signedArea; }\n public constructor(data: IndexedReadWriteXYZCollection) {\n super();\n this.data = data;\n this._signedArea = PolygonOps.areaXY(data);\n }\n /**\n * classify xy parts of point wrt this loop.\n * @param xy\n * @internal\n */\n public classifyPointXY(xy: XAndY): number | undefined {\n return PolygonOps.classifyPointInPolygonXY(xy.x, xy.y, this.data);\n }\n /** Return some point \"inside\". */\n public getAnyInteriorPoint(): Point3d | undefined {\n for (let childIndex = 0; childIndex < this.data.length; childIndex++) {\n for (const fraction of this.searchFractions) {\n const q = this.constructInteriorPointNearEdge(childIndex, fraction);\n if (q !== undefined)\n return q;\n }\n }\n return undefined;\n }\n public grabPolygon(): IndexedReadWriteXYZCollection | undefined { return this.data; }\n public grabLoop(): Loop | undefined {\n return Loop.createPolygon(this.data);\n }\n public reverseForAreaSign(targetSign: number) {\n if (targetSign * this._signedArea < 0.0) {\n this.data.reverseInPlace();\n this._signedArea *= -1.0;\n }\n }\n public constructInteriorPointNearEdge(edgeIndex: number, fractionAlong: number): Point3d | undefined {\n if (edgeIndex + 1 < this.data.length) {\n const ray = Ray3d.createCapture(\n this.data.interpolateIndexIndex(edgeIndex, fractionAlong, edgeIndex + 1)!,\n this.data.vectorIndexIndex(edgeIndex, edgeIndex + 1)!\n );\n return this.constructInteriorPoint(ray);\n }\n return undefined;\n }\n}\n\n/**\n * Implement `SimpleRegionCarrier` queries with the area as a strongly typed `Loop`.\n */\nclass LoopCarrier extends SimpleRegionCarrier {\n public data: Loop;\n private _signedArea: number;\n public get signedArea(): number { return this._signedArea; }\n public constructor(data: Loop) {\n super();\n this.data = data;\n const areaMoments = RegionOps.computeXYAreaMoments(data);\n this._signedArea = areaMoments !== undefined ? areaMoments.quantitySum : 0.0;\n }\n /**\n * classify xy parts of point wrt this loop.\n * @param xy\n * @internal\n */\n public classifyPointXY(xy: XAndY): number | undefined {\n return RegionOps.testPointInOnOutRegionXY(this.data, xy.x, xy.y);\n }\n public constructInteriorPointNearChild(childIndex: number, fractionAlong: number): Point3d | undefined {\n if (childIndex < this.data.children.length) {\n const ray = this.data.children[childIndex].fractionToPointAndDerivative(fractionAlong);\n return this.constructInteriorPoint(ray);\n }\n return undefined;\n }\n /** Return some point \"inside\". */\n public getAnyInteriorPoint(): Point3d | undefined {\n for (let childIndex = 0; childIndex < this.data.children.length; childIndex++) {\n for (const fraction of this.searchFractions) {\n const q = this.constructInteriorPointNearChild(childIndex, fraction);\n if (q !== undefined)\n return q;\n }\n }\n return undefined;\n }\n public grabPolygon(): IndexedReadWriteXYZCollection | undefined {\n const strokes = this.data.cloneStroked();\n if (strokes instanceof CurveChain) {\n const linestring = LineString3d.create();\n for (const child of strokes.children) {\n if (child instanceof CurvePrimitive) {\n child.emitStrokes(linestring);\n }\n }\n return linestring.numPoints() > 0 ? linestring.packedPoints : undefined;\n }\n return undefined;\n }\n public grabLoop(): Loop | undefined {\n return this.data;\n }\n public reverseForAreaSign(targetSign: number) {\n if (targetSign * this._signedArea < 0.0) {\n this.data.reverseChildrenInPlace();\n this._signedArea *= -1.0;\n }\n }\n}\n\n/**\n * A `SortablePolygon` carries a (single) xy-loop with data useful for sorting for inner-outer structure.\n * @internal\n */\nexport class SortablePolygon {\n private _loopCarrier: SimpleRegionCarrier;\n public anyPoint?: Point3d;\n public sortKey: number;\n public range: Range3d;\n public parentIndex?: number;\n public isHole: boolean;\n public outputSetIndex?: number;\n /**\n *\n * @param loop Loop to capture.\n */\n public constructor(loop: IndexedReadWriteXYZCollection | Loop, range: Range3d) {\n if (loop instanceof IndexedReadWriteXYZCollection)\n this._loopCarrier = new PolygonCarrier(loop);\n else\n this._loopCarrier = new LoopCarrier(loop);\n this.range = range;\n this.sortKey = Math.abs(this._loopCarrier.signedArea);\n this.isHole = false;\n }\n /** Push loop with sort data onto the array.\n * * No action if no clear normal.\n * * return true if pushed.\n */\n public static pushPolygon(loops: SortablePolygon[], loop: IndexedReadWriteXYZCollection): boolean {\n const range = loop.getRange();\n const sortablePolygon = new SortablePolygon(loop, range);\n if (sortablePolygon.sortKey > 0.0) {\n loops.push(sortablePolygon);\n return true;\n }\n return false;\n }\n /** Push loop with sort data onto the array.\n * * No action if no clear normal.\n * * return true if pushed.\n */\n public static pushLoop(loops: SortablePolygon[], loop: Loop): boolean {\n const range = loop.range();\n const sortablePolygon = new SortablePolygon(loop, range);\n if (sortablePolygon.sortKey > 0.0) {\n loops.push(sortablePolygon);\n return true;\n }\n return false;\n }\n /** Push loop with sort data onto the array.\n * * No action if no clear normal.\n * * return true if pushed.\n */\n private static assignParentsAndDepth(loops: SortablePolygon[]): void {\n // Sort largest to smallest ...\n loops.sort((loopA: SortablePolygon, loopB: SortablePolygon) => (loopB.sortKey - loopA.sortKey));\n // starting with smallest loop, point each loop to smallest containing parent.\n for (let i = loops.length; i-- > 0;) {\n const thisLoop = loops[i];\n const xy = thisLoop._loopCarrier.getAnyInteriorPoint();\n if (xy !== undefined) {\n // find smallest containing parent (search forward only to hit)\n loops[i].parentIndex = undefined;\n loops[i].outputSetIndex = undefined;\n for (let j = i; j-- > 0;) {\n const otherLoop = loops[j];\n if (otherLoop.range.containsXY(xy.x, xy.y)) {\n if (1 === otherLoop._loopCarrier.classifyPointXY(xy)) {\n thisLoop.parentIndex = j;\n // The loops are searched from small area to larger. Any other containing loop is larger, so otherLoop must be the smallest.\n break;\n }\n }\n }\n }\n }\n }\n\n private static assemblePolygonSet(loops: SortablePolygon[]): IndexedReadWriteXYZCollection[][] {\n const outputSets: IndexedReadWriteXYZCollection[][] = [];\n\n // In large-to-small order:\n // If a loop has no parent or has a \"hole\" as parent it is outer.\n // otherwise (i.e. it has a non-hole parent) it becomes a hole in the parent.\n for (const loopData of loops) {\n loopData.isHole = false;\n const parentIndex = loopData.parentIndex;\n if (parentIndex !== undefined)\n loopData.isHole = !loops[parentIndex].isHole;\n if (!loopData.isHole) {\n loopData._loopCarrier.reverseForAreaSign(1.0);\n loopData.outputSetIndex = outputSets.length;\n outputSets.push([]);\n outputSets[loopData.outputSetIndex].push(loopData._loopCarrier.grabPolygon()!);\n } else {\n loopData._loopCarrier.reverseForAreaSign(-1.0);\n const outputSetIndex = loops[parentIndex!].outputSetIndex!;\n outputSets[outputSetIndex].push(loopData._loopCarrier.grabPolygon()!);\n }\n }\n return outputSets;\n }\n private static assembleLoopSet(loops: SortablePolygon[]): AnyRegion[] {\n const outputSets: AnyRegion[] = [];\n const numLoops = loops.length;\n // In large-to-small order:\n // If a loop has no parent or has a \"hole\" as parent it is outer.\n // otherwise (i.e. it has a non-hole parent) it becomes a hole in the parent.\n for (let candidateIndex = 0; candidateIndex < numLoops; candidateIndex++) {\n const candidateData = loops[candidateIndex];\n const parentIndex = candidateData.parentIndex;\n candidateData.isHole = parentIndex !== undefined ? !loops[parentIndex].isHole : false;\n\n if (!candidateData.isHole) {\n candidateData._loopCarrier.reverseForAreaSign(1.0);\n const candidateLoop = candidateData._loopCarrier.grabLoop()!;\n let candidateParityRegion: ParityRegion | undefined;\n // find all directly contained children . . .\n for (let childIndex = candidateIndex + 1; childIndex < numLoops; childIndex++) {\n const childData = loops[childIndex];\n if (childData.parentIndex === candidateIndex) {\n if (candidateParityRegion === undefined) {\n candidateParityRegion = ParityRegion.create();\n candidateParityRegion.tryAddChild(candidateLoop);\n childData._loopCarrier.reverseForAreaSign(-1.0);\n candidateParityRegion.tryAddChild(childData._loopCarrier.grabLoop());\n } else {\n childData._loopCarrier.reverseForAreaSign(-1.0);\n candidateParityRegion.tryAddChild(childData._loopCarrier.grabLoop());\n }\n }\n }\n if (candidateParityRegion !== undefined)\n outputSets.push(candidateParityRegion);\n else if (candidateLoop !== undefined)\n outputSets.push(candidateLoop);\n }\n }\n return outputSets;\n }\n\n public static sortAsAnyRegion(loops: SortablePolygon[]): AnyRegion {\n this.assignParentsAndDepth(loops);\n const regions = this.assembleLoopSet(loops);\n if (regions.length === 1)\n return regions[0];\n else {\n const unionRegion = UnionRegion.create();\n for (const region of regions)\n unionRegion.tryAddChild(region);\n return unionRegion;\n }\n }\n public static sortAsArrayOfArrayOfPolygons(loops: SortablePolygon[]): IndexedReadWriteXYZCollection[][] {\n this.assignParentsAndDepth(loops);\n return this.assemblePolygonSet(loops);\n }\n public grabPolygon(): IndexedXYZCollection | undefined {\n return this._loopCarrier.grabPolygon();\n }\n public grabLoop(): Loop | undefined {\n return this._loopCarrier.grabLoop();\n }\n public reverseForAreaSign(targetSign: number) {\n this._loopCarrier.reverseForAreaSign(targetSign);\n }\n public getAnyInteriorPoint(): Point3d | undefined {\n return this._loopCarrier.getAnyInteriorPoint();\n }\n}\n"]}
|
|
@@ -135,10 +135,29 @@ export declare class Transform implements BeJSONFunctions {
|
|
|
135
135
|
/** Create a Transform using the given `origin` and columns of the `matrix` */
|
|
136
136
|
static createOriginAndMatrixColumns(origin: XYZ, vectorX: Vector3d, vectorY: Vector3d, vectorZ: Vector3d, result?: Transform): Transform;
|
|
137
137
|
/**
|
|
138
|
-
* Create a Transform
|
|
139
|
-
* @
|
|
138
|
+
* Create a Transform with given origin and a rigid matrix constructed from two column vectors.
|
|
139
|
+
* @param origin origin of the local coordinate system. Default is the global origin (zero).
|
|
140
|
+
* @param vectorX first axis passed into `Matrix3d.createRigidFromColumns`.
|
|
141
|
+
* @param vectorY second axis passed into `Matrix3d.createRigidFromColumns`.
|
|
142
|
+
* @param axisOrder order of axis construction in `Matrix3d.createRigidFromColumns(vectorX, vectorY, axisOrder)`.
|
|
143
|
+
* @param result optional pre-allocated result to populate and return.
|
|
144
|
+
* @returns localToWorld transform for a local coordinate system with given origin and ordered axes, or `undefined`
|
|
145
|
+
* if the rigid matrix could not be created.
|
|
146
|
+
* @see [[Matrix3d.createRigidFromColumns]]
|
|
140
147
|
*/
|
|
141
148
|
static createRigidFromOriginAndColumns(origin: XYZ | undefined, vectorX: Vector3d, vectorY: Vector3d, axisOrder: AxisOrder, result?: Transform): Transform | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* Create a Transform with given origin and a rigid matrix constructed from one column vector.
|
|
151
|
+
* @param origin origin of the local coordinate system. Default is the global origin (zero).
|
|
152
|
+
* @param vector direction of the axis of the local coordinate system indicated by the first letter of `axisOrder`.
|
|
153
|
+
* @param axisOrder order of axis construction in `Matrix3d.createRigidHeadsUp(vector, axisOrder)`. Default value
|
|
154
|
+
* is `AxisOrder.ZXY`, which means the z-column of the returned Transform is in the direction of `vector`.
|
|
155
|
+
* @param result optional pre-allocated result to populate and return.
|
|
156
|
+
* @returns localToWorld transform for a local coordinate system with given origin and axis, or `undefined`
|
|
157
|
+
* if the rigid matrix could not be created.
|
|
158
|
+
* @see [[Matrix3d.createRigidHeadsUp]]
|
|
159
|
+
*/
|
|
160
|
+
static createRigidFromOriginAndVector(origin: XYZ | undefined, vector: Vector3d, axisOrder?: AxisOrder, result?: Transform): Transform | undefined;
|
|
142
161
|
/**
|
|
143
162
|
* Create a Transform with the specified `matrix`. Compute an `origin` (different from the given `fixedPoint`)
|
|
144
163
|
* so that the `fixedPoint` maps back to itself. The returned Transform, transforms a point `p` to `M*p + (f - M*f)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -266,27 +266,46 @@ class Transform {
|
|
|
266
266
|
return result;
|
|
267
267
|
}
|
|
268
268
|
/**
|
|
269
|
-
* Create a Transform
|
|
270
|
-
* @
|
|
269
|
+
* Create a Transform with given origin and a rigid matrix constructed from two column vectors.
|
|
270
|
+
* @param origin origin of the local coordinate system. Default is the global origin (zero).
|
|
271
|
+
* @param vectorX first axis passed into `Matrix3d.createRigidFromColumns`.
|
|
272
|
+
* @param vectorY second axis passed into `Matrix3d.createRigidFromColumns`.
|
|
273
|
+
* @param axisOrder order of axis construction in `Matrix3d.createRigidFromColumns(vectorX, vectorY, axisOrder)`.
|
|
274
|
+
* @param result optional pre-allocated result to populate and return.
|
|
275
|
+
* @returns localToWorld transform for a local coordinate system with given origin and ordered axes, or `undefined`
|
|
276
|
+
* if the rigid matrix could not be created.
|
|
277
|
+
* @see [[Matrix3d.createRigidFromColumns]]
|
|
271
278
|
*/
|
|
272
279
|
static createRigidFromOriginAndColumns(origin, vectorX, vectorY, axisOrder, result) {
|
|
273
|
-
const matrix = Matrix3d_1.Matrix3d.createRigidFromColumns(vectorX, vectorY, axisOrder, result
|
|
280
|
+
const matrix = Matrix3d_1.Matrix3d.createRigidFromColumns(vectorX, vectorY, axisOrder, result?._matrix);
|
|
274
281
|
if (!matrix)
|
|
275
282
|
return undefined;
|
|
276
283
|
if (result) {
|
|
277
|
-
// result._matrix was already modified to become rigid via createRigidFromColumns
|
|
278
284
|
result._origin.setFrom(origin);
|
|
279
285
|
return result;
|
|
280
286
|
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
287
|
+
return Transform.createRefs(origin?.cloneAsPoint3d(), matrix);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Create a Transform with given origin and a rigid matrix constructed from one column vector.
|
|
291
|
+
* @param origin origin of the local coordinate system. Default is the global origin (zero).
|
|
292
|
+
* @param vector direction of the axis of the local coordinate system indicated by the first letter of `axisOrder`.
|
|
293
|
+
* @param axisOrder order of axis construction in `Matrix3d.createRigidHeadsUp(vector, axisOrder)`. Default value
|
|
294
|
+
* is `AxisOrder.ZXY`, which means the z-column of the returned Transform is in the direction of `vector`.
|
|
295
|
+
* @param result optional pre-allocated result to populate and return.
|
|
296
|
+
* @returns localToWorld transform for a local coordinate system with given origin and axis, or `undefined`
|
|
297
|
+
* if the rigid matrix could not be created.
|
|
298
|
+
* @see [[Matrix3d.createRigidHeadsUp]]
|
|
299
|
+
*/
|
|
300
|
+
static createRigidFromOriginAndVector(origin, vector, axisOrder = Geometry_1.AxisOrder.ZXY, result) {
|
|
301
|
+
const matrix = Matrix3d_1.Matrix3d.createRigidHeadsUp(vector, axisOrder, result?._matrix);
|
|
302
|
+
if (!matrix)
|
|
303
|
+
return undefined;
|
|
304
|
+
if (result) {
|
|
305
|
+
result._origin.setFrom(origin);
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
308
|
+
return Transform.createRefs(origin?.cloneAsPoint3d(), matrix);
|
|
290
309
|
}
|
|
291
310
|
/**
|
|
292
311
|
* Create a Transform with the specified `matrix`. Compute an `origin` (different from the given `fixedPoint`)
|