@itwin/core-geometry 5.2.0-dev.7 → 5.3.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 +36 -1
- package/lib/cjs/Geometry.d.ts +30 -10
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +74 -10
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.d.ts +19 -6
- package/lib/cjs/bspline/AkimaCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js +21 -5
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts +3 -3
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +6 -6
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.d.ts +2 -2
- package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js +4 -6
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.d.ts +27 -17
- package/lib/cjs/bspline/InterpolationCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js +17 -7
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.d.ts +19 -6
- package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js +17 -2
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.d.ts +14 -1
- package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +21 -3
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +14 -11
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js +23 -16
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts +20 -3
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +22 -5
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +27 -17
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +61 -35
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +1 -0
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +1 -0
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +8 -7
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.d.ts +51 -1
- package/lib/cjs/curve/CurveOps.d.ts.map +1 -1
- package/lib/cjs/curve/CurveOps.js +97 -3
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +4 -4
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +8 -8
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +3 -3
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +6 -2
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +12 -7
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +9 -4
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +10 -5
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +2 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +4 -4
- package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js +21 -18
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +30 -50
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +2 -2
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +6 -2
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +2 -2
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +6 -2
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +5 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js +0 -3
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.d.ts +6 -2
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js +12 -3
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.d.ts +2 -1
- package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js +14 -18
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.d.ts +18 -2
- package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js +37 -4
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +1 -0
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.d.ts +8 -0
- package/lib/cjs/geometry3d/PointStreaming.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js +18 -2
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +18 -9
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js +53 -26
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts +8 -2
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +10 -4
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts +14 -3
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +20 -4
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.d.ts +34 -32
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Range.js +28 -21
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.d.ts +16 -6
- package/lib/cjs/geometry3d/Ray2d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js +28 -4
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +3 -4
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts +1 -1
- package/lib/cjs/geometry3d/Transform.js +1 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.d.ts +12 -1
- package/lib/cjs/geometry3d/XYZProps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js +17 -2
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.d.ts +16 -0
- package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js +26 -0
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js +5 -9
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/SmallSystem.d.ts +13 -7
- package/lib/cjs/numerics/SmallSystem.d.ts.map +1 -1
- package/lib/cjs/numerics/SmallSystem.js +13 -7
- package/lib/cjs/numerics/SmallSystem.js.map +1 -1
- package/lib/cjs/polyface/Polyface.d.ts +1 -3
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js +2 -6
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +25 -6
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +59 -8
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts +2 -0
- package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js +7 -3
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +8 -10
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +8 -5
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +8 -4
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +3 -3
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +4 -2
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +9 -12
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +8 -3
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +13 -6
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js +1 -1
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts +2 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +2 -1
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +38 -12
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +91 -23
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +5 -4
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +6 -5
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +20 -11
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +43 -39
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/Merging.d.ts +7 -4
- package/lib/cjs/topology/Merging.d.ts.map +1 -1
- package/lib/cjs/topology/Merging.js +16 -11
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +13 -11
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js +40 -36
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/Voronoi.d.ts +195 -0
- package/lib/cjs/topology/Voronoi.d.ts.map +1 -0
- package/lib/cjs/topology/Voronoi.js +700 -0
- package/lib/cjs/topology/Voronoi.js.map +1 -0
- package/lib/cjs/topology/XYParitySearchContext.d.ts +1 -1
- package/lib/cjs/topology/XYParitySearchContext.d.ts.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Geometry.d.ts +30 -10
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +74 -10
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.d.ts +19 -6
- package/lib/esm/bspline/AkimaCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js +21 -5
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts +3 -3
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +6 -6
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.d.ts +2 -2
- package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js +4 -6
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.d.ts +27 -17
- package/lib/esm/bspline/InterpolationCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js +17 -7
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.d.ts +19 -6
- package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
- package/lib/esm/clipping/ClipPlane.js +17 -2
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.d.ts +14 -1
- package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +21 -3
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +14 -11
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js +23 -16
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +20 -3
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +22 -5
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +27 -17
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +61 -35
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +1 -0
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +1 -0
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +8 -7
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.d.ts +51 -1
- package/lib/esm/curve/CurveOps.d.ts.map +1 -1
- package/lib/esm/curve/CurveOps.js +98 -4
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +4 -4
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +8 -8
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +3 -3
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts +6 -2
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +12 -7
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +9 -4
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +10 -5
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +2 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +4 -4
- package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js +21 -18
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +30 -50
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +2 -2
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +6 -2
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +2 -2
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +6 -2
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +5 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js +0 -3
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.d.ts +6 -2
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js +12 -3
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.d.ts +2 -1
- package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js +14 -18
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +1 -1
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.d.ts +18 -2
- package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js +37 -4
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +1 -0
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.d.ts +8 -0
- package/lib/esm/geometry3d/PointStreaming.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js +18 -2
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +18 -9
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js +53 -26
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +8 -2
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +10 -4
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts +14 -3
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +20 -4
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.d.ts +34 -32
- package/lib/esm/geometry3d/Range.d.ts.map +1 -1
- package/lib/esm/geometry3d/Range.js +28 -21
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.d.ts +16 -6
- package/lib/esm/geometry3d/Ray2d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js +28 -4
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +3 -4
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts +1 -1
- package/lib/esm/geometry3d/Transform.js +1 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.d.ts +12 -1
- package/lib/esm/geometry3d/XYZProps.d.ts.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js +16 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.d.ts +16 -0
- package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js +26 -0
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js +5 -9
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/SmallSystem.d.ts +13 -7
- package/lib/esm/numerics/SmallSystem.d.ts.map +1 -1
- package/lib/esm/numerics/SmallSystem.js +13 -7
- package/lib/esm/numerics/SmallSystem.js.map +1 -1
- package/lib/esm/polyface/Polyface.d.ts +1 -3
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js +2 -6
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +25 -6
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +59 -8
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts +2 -0
- package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js +7 -3
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +8 -10
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts +8 -5
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +8 -4
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts +3 -3
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +4 -2
- package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +9 -12
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts +8 -3
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +13 -6
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js +1 -1
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +2 -1
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +2 -1
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +38 -12
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +92 -24
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +5 -4
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +6 -5
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +20 -11
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +43 -39
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/Merging.d.ts +7 -4
- package/lib/esm/topology/Merging.d.ts.map +1 -1
- package/lib/esm/topology/Merging.js +17 -12
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +13 -11
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js +40 -36
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/Voronoi.d.ts +195 -0
- package/lib/esm/topology/Voronoi.d.ts.map +1 -0
- package/lib/esm/topology/Voronoi.js +696 -0
- package/lib/esm/topology/Voronoi.js.map +1 -0
- package/lib/esm/topology/XYParitySearchContext.d.ts +1 -1
- package/lib/esm/topology/XYParitySearchContext.d.ts.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnionOfConvexClipPlaneSets.js","sourceRoot":"","sources":["../../../src/clipping/UnionOfConvexClipPlaneSets.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAKH,0CAAuC;AACvC,6EAA0E;AAC1E,qEAAkE;AAGlE,+CAAuD;AAGvD,uDAAoD;AAGpD,2CAA2F;AAC3F,6DAAmF;AAQnF;;;;;GAKG;AACH,MAAa,0BAA0B;IAC7B,WAAW,CAAuB;IAC1C,uFAAuF;IACvF,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD;QACE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IACD,0EAA0E;IACnE,MAAM;QACX,MAAM,GAAG,GAA8B,EAAE,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW;YACnC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,sEAAsE;IAC/D,MAAM,CAAC,QAAQ,CACpB,IAAiD,EAAE,MAAmC;QAEtF,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,0BAA0B,EAAE,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACtB,OAAO,MAAM,CAAC;QAEhB,KAAK,MAAM,QAAQ,IAAI,IAAI;YACzB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,uCAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,6DAA6D;IACtD,MAAM,CAAC,WAAW,CAAC,MAAmC;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IACD;;;;OAIG;IACI,aAAa,CAAC,KAAiC;QACpD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,WAAW,CAAC,MAAM;YACtD,OAAO,KAAK,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC1D,OAAO,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,qFAAqF;IAC9E,MAAM,CAAC,gBAAgB,CAC5B,UAAgC,EAAE,MAAmC;QAErE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,0BAA0B,EAAE,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,UAAU;YAC1B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0BAA0B;IACnB,KAAK,CAAC,MAAmC;QAC9C,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,0BAA0B,EAAE,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW;YACtC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,YAAY,CAAC,KAAqC;QACvD,IAAI,KAAK;YACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD;;;;;;;OAOG;IACI,sBAAsB,CAAC,GAAU,EAAE,YAAsB;QAC9D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,6DAA6D;YAC7D,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC;oBACtC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,eAAO,CAAC,UAAU,EAAE,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC9C,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;IAC9B,CAAC;IACD;;;OAGG;IACI,aAAa,CAAC,KAAc;QACjC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;;OAGG;IACI,iBAAiB,CAAC,KAAc,EAAE,YAAoB,mBAAQ,CAAC,mBAAmB;QACvF,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;gBAC/C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;;OAGG;IACI,cAAc,CAAC,KAAc,EAAE,MAAc;QAClD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;gBACzC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,+DAA+D;IACxD,2BAA2B,CAAC,OAAsB;QACvD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,+BAA+B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;gBAC3F,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,qHAAqH;IACrH,2EAA2E;IAC3E,sGAAsG;IAC/F,0BAA0B,CAAC,OAAsB,EAAE,SAAsB;QAC9E,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,SAAS,CAAC,+BAA+B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EACtF,CAAC,SAAiB,EAAE,SAAiB,EAAE,EAAE,CACvC,SAAS,CAAC,IAAI,CAAC,qBAAS,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,yDAAyD;IAClD,gBAAgB,CAAC,SAAoB;QAC1C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,iHAAiH;IAC1G,wBAAwB,CAAC,MAAiB,EAAE,WAAoB;QACrE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC3E,IAAI,UAAU,KAAK,gCAAoB,CAAC,eAAe;gBACrD,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,OAAO,gCAAoB,CAAC,eAAe,CAAC;IAC9C,CAAC;IACD;;;OAGG;IACI,WAAW,CAAC,KAAmC,EAAE,MAA0B;QAChF,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACtB,KAAK,GAAG,mCAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,mCAAgB,EAAE,CAAC;QACpC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,IAAI,mCAAgB,EAAE,CAAC;YAC/C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD;;;;;;;;;;OAUG;IACI,+BAA+B,CACpC,EAAU,EAAE,EAAU,EAAE,MAAe,EAAE,MAAe,EAAE,QAAyD;QAEnH,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAC7E,WAAW,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;IACO,MAAM,CAAC,qBAAqB,GAAG,IAAI,2CAAoB,EAAE,CAAC;IAClE;;;OAGG;IACI,2BAA2B,CAAC,GAAU,EAAE,QAA6C;QAC1F,MAAM,MAAM,GAAG,0BAA0B,CAAC,qBAAqB,CAAC;QAChE,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACzC,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,yBAAa,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC;IACD;;;;;;;;OAQG;IACI,kDAAkD,CACvD,MAA6B,EAAE,aAAkC,EAAE,SAAqB,EAAE,kBAA2B,IAAI;QAEzH,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,CAAC,IAAI,SAAS,CAAC,mCAAmC,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD;;;;;;;;;;OAUG;IACI,wBAAwB,CAAC,MAAgB,EAAE,SAAkB,IAAI,EAAE,YAAqB,IAAI;QACjG,IAAI,MAAM,EAAE,CAAC,CAAE,+CAA+C;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO;gBACV,OAAO,KAAK,CAAC;YACf,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;QACD,yCAAyC;QACzC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,iEAAiE;IAC1D,YAAY,CAAC,SAAkB;QACpC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,wEAAwE;IACjE,mBAAmB,CAAC,SAAkB,EAAE,IAAa,EAAE,KAAc;QAC1E,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,SAAS,GAAG,uCAAkB,CAAC,WAAW,EAAE,CAAC;YACnD,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,uCAAkB,CAAC,WAAW,EAAE,CAAC;YACnD,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,mCAAmC;IAC5B,cAAc,CAAC,MAAkC;QACtD,IAAI,SAAS,CAAC;QACd,OAAO,CAAC,SAAS,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD;;;;;;;;OAQG;IACI,iBAAiB,CACtB,GAAyB,EACzB,eAAmC,EACnC,gBAAoC,EACpC,UAAiC;QAEjC,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAChD,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC;QAC9C,IAAI,aAAa,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,aAAa,GAAuB,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC;QACX,IAAI,KAAK,CAAC;QACV,0GAA0G;QAC1G,6HAA6H;QAC7H,kDAAkD;QAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,OAAO,SAAS,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBACnD,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;gBACvE,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,GAAG,aAAa,CAAC;YACvB,aAAa,GAAG,aAAa,CAAC,CAAE,oBAAoB;YACpD,aAAa,GAAG,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,SAAS,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACnD,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,KAAK,eAAe;YAC7C,yBAAa,CAAC,uCAAuC,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;aACrG,IAAI,eAAe,CAAC,MAAM,KAAK,cAAc;YAChD,yBAAa,CAAC,uCAAuC,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC9G,CAAC;;AAxUH,gEAyUC;AAED;;;;;;;;;;;;;;EAcE","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 CartesianGeometry\n */\n\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { AnnounceNumberNumberCurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { Geometry } from \"../Geometry\";\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\nimport { IndexedXYZCollection } from \"../geometry3d/IndexedXYZCollection\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range1d, Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { GrowableXYZArrayCache } from \"../geometry3d/ReusableObjectCache\";\nimport { Segment1d } from \"../geometry3d/Segment1d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Matrix4d } from \"../geometry4d/Matrix4d\";\nimport { Clipper, ClipPlaneContainment, ClipUtilities, PolygonClipper } from \"./ClipUtils\";\nimport { ConvexClipPlaneSet, ConvexClipPlaneSetProps } from \"./ConvexClipPlaneSet\";\n\n/**\n * Wire format describing a [[UnionOfConvexClipPlaneSets]].\n * @public\n */\nexport type UnionOfConvexClipPlaneSetsProps = ConvexClipPlaneSetProps[];\n\n/**\n * A collection of ConvexClipPlaneSets.\n * * A point is \"in\" the clip plane set if it is \"in\" one or more of the ConvexClipPlaneSet\n * * Hence the boolean logic is that the ClipPlaneSet is a UNION of its constituents.\n * @public\n */\nexport class UnionOfConvexClipPlaneSets implements Clipper, PolygonClipper {\n private _convexSets: ConvexClipPlaneSet[];\n /** (property accessor) Return the (reference to the) array of `ConvexClipPlaneSet` */\n public get convexSets(): ConvexClipPlaneSet[] {\n return this._convexSets;\n }\n private constructor() {\n this._convexSets = [];\n }\n /** Return an array with the `toJSON` form of each `ConvexClipPlaneSet` */\n public toJSON(): UnionOfConvexClipPlaneSetsProps {\n const val: ConvexClipPlaneSetProps[] = [];\n for (const convex of this._convexSets)\n val.push(convex.toJSON());\n return val;\n }\n /** Convert json `UnionOfConvexClipPlaneSets`, using `setFromJSON`. */\n public static fromJSON(\n json: UnionOfConvexClipPlaneSetsProps | undefined, result?: UnionOfConvexClipPlaneSets,\n ): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n result._convexSets.length = 0;\n if (!Array.isArray(json))\n return result;\n\n for (const thisJson of json)\n result._convexSets.push(ConvexClipPlaneSet.fromJSON(thisJson));\n return result;\n }\n /** Create a `UnionOfConvexClipPlaneSets` with no members. */\n public static createEmpty(result?: UnionOfConvexClipPlaneSets): UnionOfConvexClipPlaneSets {\n if (result) {\n result._convexSets.length = 0;\n return result;\n }\n return new UnionOfConvexClipPlaneSets();\n }\n /**\n * Return true if all member convex sets are almostEqual to corresponding members of other. This includes\n * identical order in array.\n * @param other clip plane to compare.\n */\n public isAlmostEqual(other: UnionOfConvexClipPlaneSets): boolean {\n if (this._convexSets.length !== other._convexSets.length)\n return false;\n for (let i = 0; i < this._convexSets.length; i++)\n if (!this._convexSets[i].isAlmostEqual(other._convexSets[i]))\n return false;\n return true;\n }\n /** Create a `UnionOfConvexClipPlaneSets` with given `ConvexClipPlaneSet` members. */\n public static createConvexSets(\n convexSets: ConvexClipPlaneSet[], result?: UnionOfConvexClipPlaneSets,\n ): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n for (const set of convexSets)\n result._convexSets.push(set);\n return result;\n }\n /** Return a deep copy. */\n public clone(result?: UnionOfConvexClipPlaneSets): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n result._convexSets.length = 0;\n for (const convexSet of this._convexSets)\n result._convexSets.push(convexSet.clone());\n return result;\n }\n /**\n * Append `toAdd` to the array of `ConvexClipPlaneSet`.\n * * undefined toAdd is ignored.\n */\n public addConvexSet(toAdd: ConvexClipPlaneSet | undefined) {\n if (toAdd)\n this._convexSets.push(toAdd);\n }\n /**\n * Test if there is any intersection with a ray defined by origin and direction.\n * * Optionally record the range (null or otherwise) in caller-allocated result.\n * * If the ray is unbounded inside the clip, result can contain positive or negative\n * \"Geometry.largeCoordinateResult\" values.\n * * If no result is provide, there are no object allocations.\n * @param maximalRange optional Range1d to receive parameters along the ray.\n */\n public hasIntersectionWithRay(ray: Ray3d, maximalRange?: Range1d): boolean {\n if (maximalRange === undefined) {\n // if complete result is not requested, return after any hit.\n for (const planeSet of this._convexSets) {\n if (planeSet.hasIntersectionWithRay(ray))\n return true;\n }\n return false;\n }\n maximalRange.setNull();\n const rangeA = Range1d.createNull();\n for (const planeSet of this._convexSets) {\n if (planeSet.hasIntersectionWithRay(ray, rangeA))\n maximalRange.extendRange(rangeA);\n }\n return !maximalRange.isNull;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isPointInside (point, tolerance)`.\n */\n public isPointInside(point: Point3d): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.isPointInside(point)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isPointOnOrInside (point, tolerance)`.\n */\n public isPointOnOrInside(point: Point3d, tolerance: number = Geometry.smallMetricDistance): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.isPointOnOrInside(point, tolerance))\n return true;\n }\n return false;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isSphereOnOrInside (point, tolerance)`.\n */\n public isSphereInside(point: Point3d, radius: number) {\n for (const convexSet of this._convexSets) {\n if (convexSet.isSphereInside(point, radius))\n return true;\n }\n return false;\n }\n /** Test if any part of a line segment is within the volume. */\n public isAnyPointInOrOnFromSegment(segment: LineSegment3d): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.announceClippedSegmentIntervals(0.0, 1.0, segment.point0Ref, segment.point1Ref))\n return true;\n }\n return false;\n }\n // Intervals must be Segment1d array, as there may be multiple intervals along segment that pass through set regions,\n // and so splitting the intervals into segments aids in better organization\n /** Returns the fractions of the segment that pass through the set region, as 1 dimensional pieces. */\n public appendIntervalsFromSegment(segment: LineSegment3d, intervals: Segment1d[]) {\n for (const convexSet of this._convexSets) {\n convexSet.announceClippedSegmentIntervals(0.0, 1.0, segment.point0Ref, segment.point1Ref,\n (fraction0: number, fraction1: number) =>\n intervals.push(Segment1d.create(fraction0, fraction1)));\n }\n }\n /** Apply `transform` to all the ConvexClipPlaneSet's. */\n public transformInPlace(transform: Transform) {\n for (const convexSet of this._convexSets) {\n convexSet.transformInPlace(transform);\n }\n }\n /** Returns 1, 2, or 3 based on whether point is strongly inside, ambiguous, or strongly outside respectively. */\n public classifyPointContainment(points: Point3d[], onIsOutside: boolean): number {\n for (const convexSet of this._convexSets) {\n const thisStatus = convexSet.classifyPointContainment(points, onIsOutside);\n if (thisStatus !== ClipPlaneContainment.StronglyOutside)\n return thisStatus;\n }\n return ClipPlaneContainment.StronglyOutside;\n }\n /**\n * Clip a polygon using this ClipPlaneSet, returning new polygon boundaries. Note that each polygon may lie\n * next to the previous, or be disconnected.\n */\n public polygonClip(input: GrowableXYZArray | Point3d[], output: GrowableXYZArray[]) {\n output.length = 0;\n if (Array.isArray(input))\n input = GrowableXYZArray.create(input);\n const work = new GrowableXYZArray();\n for (const convexSet of this._convexSets) {\n const convexSetOutput = new GrowableXYZArray();\n convexSet.polygonClip(input, convexSetOutput, work);\n if (convexSetOutput.length !== 0)\n output.push(convexSetOutput);\n }\n }\n /**\n * Announce clipSegment() for each convexSet in this ClipPlaneSet.\n * * all clipPlaneSets are inspected.\n * * announced intervals are for each individual clipPlaneSet -- adjacent intervals are not consolidated.\n * @param f0 active interval start.\n * @param f1 active interval end.\n * @param pointA line segment start.\n * @param pointB line segment end.\n * @param announce function to announce interval.\n * @returns Return true if any announcements are made.\n */\n public announceClippedSegmentIntervals(\n f0: number, f1: number, pointA: Point3d, pointB: Point3d, announce?: (fraction0: number, fraction1: number) => void,\n ): boolean {\n let numAnnounce = 0;\n for (const convexSet of this._convexSets) {\n if (convexSet.announceClippedSegmentIntervals(f0, f1, pointA, pointB, announce))\n numAnnounce++;\n }\n return numAnnounce > 0;\n }\n private static _clipArcFractionArray = new GrowableFloat64Array();\n /**\n * Find parts of an arc that are inside any member clipper.\n * Announce each with `announce(startFraction, endFraction, this)`\n */\n public announceClippedArcIntervals(arc: Arc3d, announce?: AnnounceNumberNumberCurvePrimitive): boolean {\n const breaks = UnionOfConvexClipPlaneSets._clipArcFractionArray;\n breaks.clear();\n for (const convexSet of this._convexSets) {\n for (const clipPlane of convexSet.planes) {\n clipPlane.appendIntersectionRadians(arc, breaks);\n }\n }\n arc.sweep.radiansArrayToPositivePeriodicFractions(breaks);\n return ClipUtilities.selectIntervals01(arc, breaks, this, announce);\n }\n /**\n * Collect the output from computePlanePlanePlaneIntersections in all the contained convex sets.\n * @param points (optional) array to which computed points are to be added.\n * @param rangeToExtend (optional) range to be extended by the computed points.\n * @param transform (optional) transform to apply to the accepted points.\n * @param testContainment if true, test each point to see if it is within the convex set (send false if confident\n * that the convex set is rectilinear set such as a slab. Send true if chiseled corners are possible).\n * @returns number of points.\n */\n public computePlanePlanePlaneIntersectionsInAllConvexSets(\n points: Point3d[] | undefined, rangeToExtend: Range3d | undefined, transform?: Transform, testContainment: boolean = true,\n ): number {\n let n = 0;\n for (const convexSet of this._convexSets) {\n n += convexSet.computePlanePlanePlaneIntersections(points, rangeToExtend, transform, testContainment);\n }\n return n;\n }\n /**\n * Multiply all ClipPlanes DPoint4d by matrix.\n * @param matrix matrix to apply.\n * @param invert if true, use in verse of the matrix.\n * @param transpose if true, use the transpose of the matrix (or inverse, per invert parameter).\n * * Note that if matrixA is applied to all of space, the matrix to send to this method to get a corresponding effect\n * on the plane is the inverse transpose of matrixA.\n * * Callers that will apply the same matrix to many planes should pre-invert the matrix for efficiency.\n * * Both params default to true to get the full effect of transforming space.\n * @param matrix matrix to apply\n */\n public multiplyPlanesByMatrix4d(matrix: Matrix4d, invert: boolean = true, transpose: boolean = true): boolean {\n if (invert) { // form inverse once here, reuse for all planes\n const inverse = matrix.createInverse();\n if (!inverse)\n return false;\n return this.multiplyPlanesByMatrix4d(inverse, false, transpose);\n }\n // (no inversion -- no failures possible)\n for (const convexSet of this._convexSets) {\n convexSet.multiplyPlanesByMatrix4d(matrix, false, transpose);\n }\n return true;\n }\n /** Recursively call `setInvisible` on all member convex sets. */\n public setInvisible(invisible: boolean) {\n for (const convexSet of this._convexSets) {\n convexSet.setInvisible(invisible);\n }\n }\n /** add convex sets that accept points below `zLow` and above `zHigh` */\n public addOutsideZClipSets(invisible: boolean, zLow?: number, zHigh?: number) {\n if (zLow) {\n const convexSet = ConvexClipPlaneSet.createEmpty();\n convexSet.addZClipPlanes(invisible, zLow);\n this._convexSets.push(convexSet);\n }\n if (zHigh) {\n const convexSet = ConvexClipPlaneSet.createEmpty();\n convexSet.addZClipPlanes(invisible, undefined, zHigh);\n this._convexSets.push(convexSet);\n }\n }\n /** Move convex sets from source.*/\n public takeConvexSets(source: UnionOfConvexClipPlaneSets) {\n let convexSet;\n while ((undefined !== (convexSet = source._convexSets.pop()))) {\n this._convexSets.push(convexSet);\n }\n }\n /**\n * Implement appendPolygonClip, as defined in interface PolygonClipper.\n * @param xyz convex polygon. This is not changed.\n * @param insideFragments Array to receive \"inside\" fragments. Each fragment is a GrowableXYZArray grabbed from\n * the cache. This is NOT cleared.\n * @param outsideFragments Array to receive \"outside\" fragments. Each fragment is a GrowableXYZArray grabbed from\n * the cache. This is NOT cleared.\n * @param arrayCache cache for reusable GrowableXYZArray.\n */\n public appendPolygonClip(\n xyz: IndexedXYZCollection,\n insideFragments: GrowableXYZArray[],\n outsideFragments: GrowableXYZArray[],\n arrayCache: GrowableXYZArrayCache,\n ): void {\n const oldOutsideCount = outsideFragments.length;\n const oldInsideCount = insideFragments.length;\n let carryForwardA = [arrayCache.grabAndFill(xyz)];\n let carryForwardB: GrowableXYZArray[] = [];\n let tempAB;\n let shard;\n // At each convex set, carryForwardA is all the fragments that have been outside all previous convex sets.\n // Clip each such fragment to the current set, sending the outside parts to carryForwardB, which will got to the next clipper\n // The final surviving carryForward really is out.\n for (const c of this._convexSets) {\n while (undefined !== (shard = carryForwardA.pop())) {\n c.appendPolygonClip(shard, insideFragments, carryForwardB, arrayCache);\n arrayCache.dropToCache(shard);\n }\n tempAB = carryForwardB;\n carryForwardB = carryForwardA; // and that is empty\n carryForwardA = tempAB;\n }\n while (undefined !== (shard = carryForwardA.pop())) {\n outsideFragments.push(shard);\n }\n if (outsideFragments.length === oldOutsideCount)\n ClipUtilities.restoreSingletonInPlaceOfMultipleShards(insideFragments, oldInsideCount, xyz, arrayCache);\n else if (insideFragments.length === oldInsideCount)\n ClipUtilities.restoreSingletonInPlaceOfMultipleShards(outsideFragments, oldOutsideCount, xyz, arrayCache);\n }\n}\n\n/* FUNCTIONS SKIPPED DUE TO BSPLINES, VU, OR NON-USAGE IN NATIVE CODE----------------------------------------------------------------\n\nInvolves vu: skipping for now...\n public fromSweptPolygon(points: Point3d[], directions: Vector3d[]): ClipPlaneSet;\n public parseConcavePolygonPlanes(...)\n\nUses bsplines... skipping for now:\n public appendIntervalsClipPlaneSetFromCurve();\n\nUses bsplines... skipping for now:\n public isAnyPointInOrOnFrom();\n\nSkipped fromSweptPolygon(...), which is overloaded function from first, due to presence of vu\n public fromSweptPolygon(points: Point3d[], directions: Vector3d[], shapes: Point3d[])\n*/\n"]}
|
|
1
|
+
{"version":3,"file":"UnionOfConvexClipPlaneSets.js","sourceRoot":"","sources":["../../../src/clipping/UnionOfConvexClipPlaneSets.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 CartesianGeometry\n */\n\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { AnnounceNumberNumberCurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { Geometry } from \"../Geometry\";\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\nimport { IndexedXYZCollection } from \"../geometry3d/IndexedXYZCollection\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range1d, Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { GrowableXYZArrayCache } from \"../geometry3d/ReusableObjectCache\";\nimport { Segment1d } from \"../geometry3d/Segment1d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Matrix4d } from \"../geometry4d/Matrix4d\";\nimport { ClipPlane } from \"./ClipPlane\";\nimport { Clipper, ClipPlaneContainment, ClipUtilities, PolygonClipper } from \"./ClipUtils\";\nimport { ConvexClipPlaneSet, ConvexClipPlaneSetProps } from \"./ConvexClipPlaneSet\";\n\n/**\n * Wire format describing a [[UnionOfConvexClipPlaneSets]].\n * @public\n */\nexport type UnionOfConvexClipPlaneSetsProps = ConvexClipPlaneSetProps[];\n\n/**\n * A collection of ConvexClipPlaneSets.\n * * A point is \"in\" the clip plane set if it is \"in\" one or more of the ConvexClipPlaneSet\n * * Hence the boolean logic is that the ClipPlaneSet is a UNION of its constituents.\n * @public\n */\nexport class UnionOfConvexClipPlaneSets implements Clipper, PolygonClipper {\n private _convexSets: ConvexClipPlaneSet[];\n /** (property accessor) Return the (reference to the) array of `ConvexClipPlaneSet` */\n public get convexSets(): ConvexClipPlaneSet[] {\n return this._convexSets;\n }\n private constructor() {\n this._convexSets = [];\n }\n /** Return an array with the `toJSON` form of each `ConvexClipPlaneSet` */\n public toJSON(): UnionOfConvexClipPlaneSetsProps {\n const val: ConvexClipPlaneSetProps[] = [];\n for (const convex of this._convexSets)\n val.push(convex.toJSON());\n return val;\n }\n /** Convert json `UnionOfConvexClipPlaneSets`, using `setFromJSON`. */\n public static fromJSON(\n json: UnionOfConvexClipPlaneSetsProps | undefined, result?: UnionOfConvexClipPlaneSets,\n ): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n result._convexSets.length = 0;\n if (!Array.isArray(json))\n return result;\n\n for (const thisJson of json)\n result._convexSets.push(ConvexClipPlaneSet.fromJSON(thisJson));\n return result;\n }\n /** Create a `UnionOfConvexClipPlaneSets` with no members. */\n public static createEmpty(result?: UnionOfConvexClipPlaneSets): UnionOfConvexClipPlaneSets {\n if (result) {\n result._convexSets.length = 0;\n return result;\n }\n return new UnionOfConvexClipPlaneSets();\n }\n /**\n * Return true if all member convex sets are almostEqual to corresponding members of other. This includes\n * identical order in array.\n * @param other clip plane to compare.\n */\n public isAlmostEqual(other: UnionOfConvexClipPlaneSets): boolean {\n if (this._convexSets.length !== other._convexSets.length)\n return false;\n for (let i = 0; i < this._convexSets.length; i++)\n if (!this._convexSets[i].isAlmostEqual(other._convexSets[i]))\n return false;\n return true;\n }\n /** Create a `UnionOfConvexClipPlaneSets` with given `ConvexClipPlaneSet` members. */\n public static createConvexSets(\n convexSets: ConvexClipPlaneSet[], result?: UnionOfConvexClipPlaneSets,\n ): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n for (const set of convexSets)\n result._convexSets.push(set);\n return result;\n }\n /** Return a deep copy. */\n public clone(result?: UnionOfConvexClipPlaneSets): UnionOfConvexClipPlaneSets {\n result = result ? result : new UnionOfConvexClipPlaneSets();\n result._convexSets.length = 0;\n for (const convexSet of this._convexSets)\n result._convexSets.push(convexSet.clone());\n return result;\n }\n /**\n * Append `toAdd` to the array of `ConvexClipPlaneSet`.\n * * undefined toAdd is ignored.\n */\n public addConvexSet(toAdd: ConvexClipPlaneSet | undefined) {\n if (toAdd)\n this._convexSets.push(toAdd);\n }\n /**\n * Test if there is any intersection with a ray defined by origin and direction.\n * * Optionally record the range (null or otherwise) in caller-allocated result.\n * * If the ray is unbounded inside the clip, result can contain positive or negative\n * \"Geometry.largeCoordinateResult\" values.\n * * If no result is provide, there are no object allocations.\n * @param maximalRange optional Range1d to receive parameters along the ray.\n */\n public hasIntersectionWithRay(ray: Ray3d, maximalRange?: Range1d): boolean {\n if (maximalRange === undefined) {\n // if complete result is not requested, return after any hit.\n for (const planeSet of this._convexSets) {\n if (planeSet.hasIntersectionWithRay(ray))\n return true;\n }\n return false;\n }\n maximalRange.setNull();\n const rangeA = Range1d.createNull();\n for (const planeSet of this._convexSets) {\n if (planeSet.hasIntersectionWithRay(ray, rangeA))\n maximalRange.extendRange(rangeA);\n }\n return !maximalRange.isNull;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isPointInside (point, tolerance)`.\n */\n public isPointInside(point: Point3d): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.isPointInside(point)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isPointOnOrInside (point, tolerance)`.\n */\n public isPointOnOrInside(point: Point3d, tolerance: number = Geometry.smallMetricDistance): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.isPointOnOrInside(point, tolerance))\n return true;\n }\n return false;\n }\n /**\n * Return true if true is returned for any contained convex set returns true for\n * `convexSet.isSphereOnOrInside (point, tolerance)`.\n */\n public isSphereInside(point: Point3d, radius: number) {\n for (const convexSet of this._convexSets) {\n if (convexSet.isSphereInside(point, radius))\n return true;\n }\n return false;\n }\n /** Test if any part of a line segment is within the volume. */\n public isAnyPointInOrOnFromSegment(segment: LineSegment3d): boolean {\n for (const convexSet of this._convexSets) {\n if (convexSet.announceClippedSegmentIntervals(0.0, 1.0, segment.point0Ref, segment.point1Ref))\n return true;\n }\n return false;\n }\n // Intervals must be Segment1d array, as there may be multiple intervals along segment that pass through set regions,\n // and so splitting the intervals into segments aids in better organization\n /** Returns the fractions of the segment that pass through the set region, as 1 dimensional pieces. */\n public appendIntervalsFromSegment(segment: LineSegment3d, intervals: Segment1d[]) {\n for (const convexSet of this._convexSets) {\n convexSet.announceClippedSegmentIntervals(0.0, 1.0, segment.point0Ref, segment.point1Ref,\n (fraction0: number, fraction1: number) =>\n intervals.push(Segment1d.create(fraction0, fraction1)));\n }\n }\n /** Apply `transform` to all the ConvexClipPlaneSet's. */\n public transformInPlace(transform: Transform) {\n for (const convexSet of this._convexSets) {\n convexSet.transformInPlace(transform);\n }\n }\n /** Returns 1, 2, or 3 based on whether point is strongly inside, ambiguous, or strongly outside respectively. */\n public classifyPointContainment(points: Point3d[], onIsOutside: boolean): number {\n for (const convexSet of this._convexSets) {\n const thisStatus = convexSet.classifyPointContainment(points, onIsOutside);\n if (thisStatus !== ClipPlaneContainment.StronglyOutside)\n return thisStatus;\n }\n return ClipPlaneContainment.StronglyOutside;\n }\n /**\n * Clip a polygon to the planes of the clip sets, returning new polygon boundaries.\n * * The output polygons may lie next to each other, or be disconnected.\n * * For a convex input polygon, the output polygon(s) are also convex.\n * * For non-convex input, the output polygon(s) may have double-back edges along plane intersections. This is still a\n * valid clip in a parity sense (overlapping regions cancel).\n * * This method differs from [[appendPolygonClip]] by clipping the same input polygon with each [[ConvexClipPlaneSet]]\n * in the instance, and returning only the inside pieces.\n * @param input polygon, usually convex. Unchanged.\n * @param output output polygon\n * @param work optional work array.\n * @param planeToSkip if this plane is found in the convex set, it is NOT applied.\n * This is useful when caller knows the polygon lies in one of the instance planes.\n * @param tolerance distance tolerance for \"on plane\" decision. Default value is [[Geometry.smallMetricDistance]].\n * @see appendPolygonClip\n */\n public polygonClip(\n input: GrowableXYZArray | Point3d[],\n output: GrowableXYZArray[],\n work?: GrowableXYZArray,\n planeToSkip?: ClipPlane,\n tolerance: number = Geometry.smallMetricDistance,\n ): void {\n output.length = 0;\n if (Array.isArray(input))\n input = GrowableXYZArray.create(input);\n if (!work)\n work = new GrowableXYZArray();\n for (const convexSet of this._convexSets) {\n const convexSetOutput = new GrowableXYZArray();\n convexSet.polygonClip(input, convexSetOutput, work, planeToSkip, tolerance);\n if (convexSetOutput.length !== 0)\n output.push(convexSetOutput);\n }\n }\n /**\n * Announce clipSegment() for each convexSet in this ClipPlaneSet.\n * * all clipPlaneSets are inspected.\n * * announced intervals are for each individual clipPlaneSet -- adjacent intervals are not consolidated.\n * @param f0 active interval start.\n * @param f1 active interval end.\n * @param pointA line segment start.\n * @param pointB line segment end.\n * @param announce function to announce interval.\n * @returns Return true if any announcements are made.\n */\n public announceClippedSegmentIntervals(\n f0: number, f1: number, pointA: Point3d, pointB: Point3d, announce?: (fraction0: number, fraction1: number) => void,\n ): boolean {\n let numAnnounce = 0;\n for (const convexSet of this._convexSets) {\n if (convexSet.announceClippedSegmentIntervals(f0, f1, pointA, pointB, announce))\n numAnnounce++;\n }\n return numAnnounce > 0;\n }\n private static _clipArcFractionArray = new GrowableFloat64Array();\n /**\n * Find parts of an arc that are inside any member clipper.\n * Announce each with `announce(startFraction, endFraction, this)`\n */\n public announceClippedArcIntervals(arc: Arc3d, announce?: AnnounceNumberNumberCurvePrimitive): boolean {\n const breaks = UnionOfConvexClipPlaneSets._clipArcFractionArray;\n breaks.clear();\n for (const convexSet of this._convexSets) {\n for (const clipPlane of convexSet.planes) {\n clipPlane.appendIntersectionRadians(arc, breaks);\n }\n }\n arc.sweep.radiansArrayToPositivePeriodicFractions(breaks);\n return ClipUtilities.selectIntervals01(arc, breaks, this, announce);\n }\n /**\n * Collect the output from computePlanePlanePlaneIntersections in all the contained convex sets.\n * @param points (optional) array to which computed points are to be added.\n * @param rangeToExtend (optional) range to be extended by the computed points.\n * @param transform (optional) transform to apply to the accepted points.\n * @param testContainment if true, test each point to see if it is within the convex set (send false if confident\n * that the convex set is rectilinear set such as a slab. Send true if chiseled corners are possible).\n * @returns number of points.\n */\n public computePlanePlanePlaneIntersectionsInAllConvexSets(\n points: Point3d[] | undefined, rangeToExtend: Range3d | undefined, transform?: Transform, testContainment: boolean = true,\n ): number {\n let n = 0;\n for (const convexSet of this._convexSets) {\n n += convexSet.computePlanePlanePlaneIntersections(points, rangeToExtend, transform, testContainment);\n }\n return n;\n }\n /**\n * Multiply all ClipPlanes DPoint4d by matrix.\n * @param matrix matrix to apply.\n * @param invert if true, use in verse of the matrix.\n * @param transpose if true, use the transpose of the matrix (or inverse, per invert parameter).\n * * Note that if matrixA is applied to all of space, the matrix to send to this method to get a corresponding effect\n * on the plane is the inverse transpose of matrixA.\n * * Callers that will apply the same matrix to many planes should pre-invert the matrix for efficiency.\n * * Both params default to true to get the full effect of transforming space.\n * @param matrix matrix to apply\n */\n public multiplyPlanesByMatrix4d(matrix: Matrix4d, invert: boolean = true, transpose: boolean = true): boolean {\n if (invert) { // form inverse once here, reuse for all planes\n const inverse = matrix.createInverse();\n if (!inverse)\n return false;\n return this.multiplyPlanesByMatrix4d(inverse, false, transpose);\n }\n // (no inversion -- no failures possible)\n for (const convexSet of this._convexSets) {\n convexSet.multiplyPlanesByMatrix4d(matrix, false, transpose);\n }\n return true;\n }\n /** Recursively call `setInvisible` on all member convex sets. */\n public setInvisible(invisible: boolean) {\n for (const convexSet of this._convexSets) {\n convexSet.setInvisible(invisible);\n }\n }\n /** add convex sets that accept points below `zLow` and above `zHigh` */\n public addOutsideZClipSets(invisible: boolean, zLow?: number, zHigh?: number) {\n if (zLow) {\n const convexSet = ConvexClipPlaneSet.createEmpty();\n convexSet.addZClipPlanes(invisible, zLow);\n this._convexSets.push(convexSet);\n }\n if (zHigh) {\n const convexSet = ConvexClipPlaneSet.createEmpty();\n convexSet.addZClipPlanes(invisible, undefined, zHigh);\n this._convexSets.push(convexSet);\n }\n }\n /** Move convex sets from source.*/\n public takeConvexSets(source: UnionOfConvexClipPlaneSets) {\n let convexSet;\n while ((undefined !== (convexSet = source._convexSets.pop()))) {\n this._convexSets.push(convexSet);\n }\n }\n /**\n * Implement appendPolygonClip, as defined in interface PolygonClipper.\n * * This method differs from [[polygonClip]] by clipping the outside fragments resulting from the previous\n * [[ConvexClipPlaneSet]] with the following one, and returning both inside and outside pieces.\n * In this way, it always produces disjoint inside fragments, even if the clippers are not disjoint (uncommon).\n * @param xyz convex polygon. This is not changed.\n * @param insideFragments Array to receive \"inside\" fragments. Each fragment is a GrowableXYZArray grabbed from\n * the cache. This is NOT cleared.\n * @param outsideFragments Array to receive \"outside\" fragments. Each fragment is a GrowableXYZArray grabbed from\n * the cache. This is NOT cleared.\n * @param arrayCache cache for reusable GrowableXYZArray.\n * @see polygonClip\n */\n public appendPolygonClip(\n xyz: IndexedXYZCollection,\n insideFragments: GrowableXYZArray[],\n outsideFragments: GrowableXYZArray[],\n arrayCache: GrowableXYZArrayCache,\n ): void {\n const oldOutsideCount = outsideFragments.length;\n const oldInsideCount = insideFragments.length;\n let carryForwardA = [arrayCache.grabAndFill(xyz)];\n let carryForwardB: GrowableXYZArray[] = [];\n let tempAB;\n let shard;\n // At each convex set, carryForwardA is all the fragments that have been outside all previous convex sets.\n // Clip each such fragment to the current set, sending the outside parts to carryForwardB, which will got to the next clipper\n // The final surviving carryForward really is out.\n for (const c of this._convexSets) {\n while (undefined !== (shard = carryForwardA.pop())) {\n c.appendPolygonClip(shard, insideFragments, carryForwardB, arrayCache);\n arrayCache.dropToCache(shard);\n }\n tempAB = carryForwardB;\n carryForwardB = carryForwardA; // and that is empty\n carryForwardA = tempAB;\n }\n while (undefined !== (shard = carryForwardA.pop())) {\n outsideFragments.push(shard);\n }\n if (outsideFragments.length === oldOutsideCount)\n ClipUtilities.restoreSingletonInPlaceOfMultipleShards(insideFragments, oldInsideCount, xyz, arrayCache);\n else if (insideFragments.length === oldInsideCount)\n ClipUtilities.restoreSingletonInPlaceOfMultipleShards(outsideFragments, oldOutsideCount, xyz, arrayCache);\n }\n}\n\n/* FUNCTIONS SKIPPED DUE TO BSPLINES, VU, OR NON-USAGE IN NATIVE CODE----------------------------------------------------------------\n\nInvolves vu: skipping for now...\n public fromSweptPolygon(points: Point3d[], directions: Vector3d[]): ClipPlaneSet;\n public parseConcavePolygonPlanes(...)\n\nUses bsplines... skipping for now:\n public appendIntervalsClipPlaneSetFromCurve();\n\nUses bsplines... skipping for now:\n public isAnyPointInOrOnFrom();\n\nSkipped fromSweptPolygon(...), which is overloaded function from first, due to presence of vu\n public fromSweptPolygon(points: Point3d[], directions: Vector3d[], shapes: Point3d[])\n*/\n"]}
|
package/lib/cjs/curve/Arc3d.d.ts
CHANGED
|
@@ -226,24 +226,28 @@ export declare class Arc3d extends CurvePrimitive implements BeJSONFunctions {
|
|
|
226
226
|
*/
|
|
227
227
|
setRefs(center: Point3d, matrix: Matrix3d, sweep: AngleSweep): void;
|
|
228
228
|
/**
|
|
229
|
-
* Redefine the arc with (
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
* @param
|
|
233
|
-
|
|
234
|
-
|
|
229
|
+
* Redefine the arc with (copies of) the given data.
|
|
230
|
+
* * Even if an input is omitted, the corresponding instance data is set to the default value.
|
|
231
|
+
* * For example, all default inputs result in a unit circle centered at the origin in the xy-plane.
|
|
232
|
+
* @param center arc center. Default is zero.
|
|
233
|
+
* @param matrix matrix with columns vector0, vector90, and their unit cross product. Default is identity.
|
|
234
|
+
* @param sweep angle sweep. Default is full sweep.
|
|
235
|
+
* @returns the instance
|
|
236
|
+
*/
|
|
237
|
+
set(center?: Point3d, matrix?: Matrix3d, sweep?: AngleSweep): Arc3d;
|
|
235
238
|
/** Copy center, matrix, and sweep from other Arc3d. */
|
|
236
239
|
setFrom(other: Arc3d): void;
|
|
237
240
|
/** Return a clone of this arc. */
|
|
238
241
|
clone(): Arc3d;
|
|
239
242
|
/**
|
|
240
243
|
* Create an arc, capturing references to center, matrix and sweep.
|
|
241
|
-
*
|
|
242
|
-
* @param
|
|
243
|
-
* @param
|
|
244
|
-
* @param
|
|
244
|
+
* * Default inputs construct a unit circle centered at the origin in the xy-plane.
|
|
245
|
+
* @param center center point. Default is zero.
|
|
246
|
+
* @param matrix matrix with columns vector0, vector90, and their unit cross product. Default is identity.
|
|
247
|
+
* @param sweep sweep limits. Default is full sweep.
|
|
248
|
+
* @param result optional preallocated result to receive copies of the inputs (or default values) and return.
|
|
245
249
|
*/
|
|
246
|
-
static createRefs(center
|
|
250
|
+
static createRefs(center?: Point3d, matrix?: Matrix3d, sweep?: AngleSweep, result?: Arc3d): Arc3d;
|
|
247
251
|
/**
|
|
248
252
|
* Create an arc from center, x column to be scaled, and y column to be scaled.
|
|
249
253
|
* @param center center of ellipse.
|
|
@@ -305,9 +309,10 @@ export declare class Arc3d extends CurvePrimitive implements BeJSONFunctions {
|
|
|
305
309
|
* @param start start point of the arc.
|
|
306
310
|
* @param end end point of the arc.
|
|
307
311
|
* @param helper a third point near the arc in its plane, or a vector in the direction of the arc normal.
|
|
312
|
+
* @param result optional preallocated result to populate and return.
|
|
308
313
|
* @returns the constructed arc, or undefined if desired arc cannot be constructed.
|
|
309
314
|
*/
|
|
310
|
-
static createCircularStartEndRadius(start: Point3d, end: Point3d, radius: number, helper: Point3d | Vector3d): Arc3d | undefined;
|
|
315
|
+
static createCircularStartEndRadius(start: Point3d, end: Point3d, radius: number, helper: Point3d | Vector3d, result?: Arc3d): Arc3d | undefined;
|
|
311
316
|
/**
|
|
312
317
|
* Return a clone of this arc, projected to given z value.
|
|
313
318
|
* * If `z` is omitted, the clone is at the z of the center.
|
|
@@ -499,23 +504,28 @@ export declare class Arc3d extends CurvePrimitive implements BeJSONFunctions {
|
|
|
499
504
|
* @internal
|
|
500
505
|
*/
|
|
501
506
|
getPlaneAltitudeSineCosinePolynomial(plane: PlaneAltitudeEvaluator, result?: SineCosinePolynomial): SineCosinePolynomial;
|
|
502
|
-
/**
|
|
503
|
-
|
|
507
|
+
/**
|
|
508
|
+
* Create a new arc which is a unit circle in the xy-plane centered at the origin.
|
|
509
|
+
* @param result optional preallocated object to populate and return.
|
|
510
|
+
*/
|
|
511
|
+
static createUnitCircle(result?: Arc3d): Arc3d;
|
|
504
512
|
/**
|
|
505
513
|
* Create a new arc which is parallel to the xy plane, with given center and radius and optional angle sweep.
|
|
506
514
|
* @param center center of arc.
|
|
507
515
|
* @param radius radius of arc.
|
|
508
516
|
* @param sweep sweep limits; defaults to full circle.
|
|
517
|
+
* @param result optional preallocated object to populate and return.
|
|
509
518
|
*/
|
|
510
|
-
static createXY(center: Point3d, radius: number, sweep?: AngleSweep): Arc3d;
|
|
519
|
+
static createXY(center: Point3d, radius: number, sweep?: AngleSweep, result?: Arc3d): Arc3d;
|
|
511
520
|
/**
|
|
512
521
|
* Create a new arc which is parallel to the xy plane, with given center and x,y radii, and optional angle sweep
|
|
513
522
|
* @param center center of ellipse.
|
|
514
523
|
* @param radiusA x axis radius.
|
|
515
524
|
* @param radiusB y axis radius.
|
|
516
|
-
* @param sweep angle sweep.
|
|
525
|
+
* @param sweep angle sweep. Default is full circle.
|
|
526
|
+
* @param result optional preallocated object to populate and return.
|
|
517
527
|
*/
|
|
518
|
-
static createXYEllipse(center: Point3d, radiusA: number, radiusB: number, sweep?: AngleSweep): Arc3d;
|
|
528
|
+
static createXYEllipse(center: Point3d, radiusA: number, radiusB: number, sweep?: AngleSweep, result?: Arc3d): Arc3d;
|
|
519
529
|
/**
|
|
520
530
|
* Replace the arc's 0 and 90 degree vectors.
|
|
521
531
|
* @param vector0 vector from center to ellipse point at 0 degrees in parameter space.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Arc3d.d.ts","sourceRoot":"","sources":["../../../src/curve/Arc3d.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAa,eAAe,EAAY,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAkB,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAuC,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAqB,mBAAmB,EAAqB,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,kCAAkC,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,QAAQ,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,EAAE,QAAQ,CAAC;IACnB,sFAAsF;IACtF,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,oBAAY,yBAAyB;IACnC,+GAA+G;IAC/G,gBAAgB,IAAI;IACpB,+GAA+G;IAC/G,gBAAgB,IAAI;IACpB;;;OAGG;IACH,mBAAmB,IAAI;IACvB;;;OAGG;IACH,mBAAmB,IAAI;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnD;;;;GAIG;AACH,qBAAa,iCAAiC;IAC5C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAU;IAE5B,+BAA+B;IAC/B,OAAc,eAAe,SAA0B;IAEvD,OAAO;IAaP;;;;;;;;;OASG;WACW,MAAM,CAClB,MAAM,GAAE,yBAAyE,EACjF,oBAAoB,GAAE,MAAU,EAChC,QAAQ,GAAE,MAA6B,EACvC,aAAa,GAAE,cAAqC,EACpD,SAAS,GAAE,OAAe;IAQ5B,yBAAyB;IAClB,KAAK,IAAI,iCAAiC;IAKjD,gDAAgD;IAChD,IAAW,YAAY,IAAI,yBAAyB,CAEnD;IACD,IAAW,YAAY,CAAC,MAAM,EAAE,yBAAyB,EAExD;IACD;;;;;;OAMG;IACH,IAAW,oBAAoB,IAAI,MAAM,CAExC;IACD,IAAW,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAEjD;IACD;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEhC;IACD;;;OAGG;IACH,IAAW,aAAa,IAAI,cAAc,CAEzC;IACD,IAAW,aAAa,CAAC,CAAC,EAAE,cAAc,EAEzC;IACD,qGAAqG;IACrG,IAAW,SAAS,IAAI,OAAO,CAE9B;IACD,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAElC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,KAAM,SAAQ,cAAe,YAAW,eAAe;IAClE,yCAAyC;IACzC,SAAgB,kBAAkB,SAAS;IAC3C,0DAA0D;IACnD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAGzD,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoB;IAC9C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoB;IAC9C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoB;IAC9C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAqB;IAChD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAqB;IAChD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAqB;IAChD,mDAAmD;IACnD,IAAW,MAAM,IAAI,OAAO,CAE3B;IACD,IAAW,MAAM,CAAC,MAAM,EAAE,MAAM,EAE/B;IACD,uDAAuD;IACvD,IAAW,SAAS,IAAI,OAAO,CAE9B;IACD;;;OAGG;IACH,IAAW,OAAO,IAAI,QAAQ,CAE7B;IACD;;;OAGG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IACD;;;;OAIG;IACI,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAIlD;;;;OAIG;IACH,IAAW,mBAAmB,IAAI,QAAQ,CAEzC;IACD,wCAAwC;IACjC,WAAW,IAAI,QAAQ;IAG9B,uDAAuD;IACvD,IAAW,SAAS,IAAI,QAAQ,CAE/B;IACD,sDAAsD;IACtD,IAAW,KAAK,IAAI,UAAU,CAE7B;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,UAAU,EAEjC;IACD,wDAAwD;IACxD,IAAoB,yBAAyB,IAAI,OAAO,CAEvD;IACD,wCAAwC;IACxC,OAAO;IAMP,yDAAyD;IAClD,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK;IAKpD;;;;;OAKG;IACI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU;IAKnE;;;;;OAKG;IACI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS;IAG3E,uDAAuD;IAChD,OAAO,CAAC,KAAK,EAAE,KAAK;IAK3B,kCAAkC;IAC3B,KAAK,IAAI,KAAK;IAGrB;;;;;;OAMG;WACW,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;IAOrG;;;;;;;;;OASG;WACW,qBAAqB,CACjC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,GACnH,KAAK;IAKR;;;;;;OAMG;WACW,wBAAwB,CACpC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAC5E,KAAK;IAIR;;;;;;;OAOG;WACW,MAAM,CAClB,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,GACrG,KAAK;IAUR;;;;;;;;;;OAUG;WACW,oBAAoB,CAChC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,GAC7E,KAAK,GAAG,SAAS;IAkBpB;;;;OAIG;WACW,6BAA6B,CACzC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,GACrE,KAAK,GAAG,aAAa;IAyBxB;;;;;;;;OAQG;WACW,gCAAgC,CAC5C,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,GACxG,KAAK,GAAG,SAAS;IAYpB;;;;;;OAMG;WACW,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS;IA2BvI;;;;;OAKG;IACI,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK;IAUlC;;;;OAIG;WACW,eAAe,CAC3B,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAClC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAClC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAClC,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,GACjC,KAAK;IAKR;;;;;OAKG;IACI,iBAAiB,IAAI,MAAM;IAOlC;;;OAGG;WACW,4BAA4B,CACxC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAC7D,KAAK,GAAG,YAAY;IAgCvB,sFAAsF;IACtE,0BAA0B,IAAI,MAAM,GAAG,SAAS;IAMhE;;;;OAIG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAInE;;;;OAIG;IACI,gCAAgC,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAM/G;;;;OAIG;IACI,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;IAK5E;;;;;;OAMG;IACI,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,yBAAyB,GAAG,yBAAyB;IAatH;;;;OAIG;IACI,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;IAQ1E;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAOjE;;;;;;;OAOG;IACI,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,yBAAyB,GAAG,yBAAyB;IAS5G;;;;OAIG;IACI,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;IAQrE;;;OAGG;IACa,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAGrD;;;OAGG;IACa,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAGnD;;;OAGG;IACa,WAAW,IAAI,MAAM;IAGrC;;;OAGG;IACH,gBAAuB,oBAAoB,KAAK;IAChD,wHAAwH;IACxH,gBAAuB,oBAAoB,KAAK;IAChD,sFAAsF;IACtF,gBAAuB,8BAA8B,MAAQ;IAC7D;;;OAGG;IACa,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAsBzF;;;;;;;;OAQG;IACI,WAAW,IAAI,MAAM;IAwB5B;;;;OAIG;IACa,8BAA8B,CAC5C,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,mBAAmB,GACjG,mBAAmB;IAiBtB;;;;;OAKG;IACI,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,GAAE,OAAc,EAAE,SAAS,GAAE,OAAe,GAAG,MAAM,EAAE;IAqBjH;;;;;;OAMG;IACa,YAAY,CAC1B,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,CAAC,EAAE,mBAAmB,GACrF,mBAAmB;IAsCtB,6DAA6D;IAC7C,YAAY,CAC1B,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,GACpG,IAAI;IAkCP,qCAAqC;IAC9B,cAAc,IAAI,IAAI;IAG7B;;;;OAIG;IACI,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAOzD,4EAA4E;IACrE,SAAS,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO;IAO9D,qFAAqF;IACrF,IAAW,UAAU,IAAI,OAAO,CAK/B;IACD,kGAAkG;IAC3F,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAY7C,6EAA6E;IACtE,cAAc,IAAI,MAAM,GAAG,SAAS;IAI3C,4DAA4D;IACrD,eAAe,IAAI,MAAM;IAGhC;;;;OAIG;IACa,6BAA6B,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM;IAwBnH;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAG/D;;;;OAIG;IACI,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAsBzF;;;OAGG;IACa,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO;IAQ3G;;;;;;OAMG;IACI,oCAAoC,CACzC,KAAK,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAC3D,oBAAoB;IAWvB,sFAAsF;WACxE,gBAAgB,IAAI,KAAK;IAGvC;;;;;OAKG;WACW,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,UAAmC,GAAG,KAAK;IAG1G;;;;;;OAMG;WACW,eAAe,CAC3B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,UAAmC,GAAG,KAAK;IAGpD;;;;OAIG;IACI,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAK/D;;;;;OAKG;IACI,gBAAgB,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE;IAkB1G,2EAA2E;IACpE,SAAS,IAAI,UAAU;IAQ9B,mGAAmG;IAC5F,oBAAoB,CACzB,SAAS,CAAC,EAAE,SAAS,GACpB;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE;IAchF,qGAAqG;IAC9F,oBAAoB,CACzB,MAAM,EAAE,QAAQ,GACf;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE;IAQ9E;;;;;;OAMG;IACI,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG;IAe7B;;;OAGG;IACI,MAAM,IAAI,GAAG;IAQpB,wEAAwE;IACxD,aAAa,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,GAAE,MAAqC,EAAE,SAAS,GAAE,MAAmC,GAAG,OAAO;IASxK,kDAAkD;IAC3C,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAIrE,+CAA+C;IACxC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAMjF;;;OAGG;IACI,4BAA4B,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;IAUpE,uEAAuE;IAChE,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;IAG/D;;;;OAIG;IACa,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK;IAa9E;;;;;;;OAOG;IACI,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAW/C;;;;;;;;;;;;;OAaG;IACI,gBAAgB,IAAI,KAAK,GAAG,SAAS;IAmB5C;;;;;;OAMG;IACa,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,kCAAkC,GAAG,OAAO;IAG/G,kGAAkG;IAC3F,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS;IAkBnE;;;;;;;;;;;;;;;;;;;OAmBG;WACW,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY;IAgC9G,+DAA+D;IACxD,uBAAuB,CAAC,WAAW,EAAE,MAAM;IAGlD,6GAA6G;IACtG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAelE;;;OAGG;IACa,iBAAiB,CAC/B,uBAAuB,EAAE,MAAM,GAAG,aAAa,GAC9C,cAAc,GAAG,cAAc,EAAE,GAAG,SAAS;IA4BhD;;;;;OAKG;IACa,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAGtG;;;;;;OAMG;IACI,sCAAsC,CAAC,OAAO,CAAC,EAAE,iCAAiC,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS;CAS3H"}
|
|
1
|
+
{"version":3,"file":"Arc3d.d.ts","sourceRoot":"","sources":["../../../src/curve/Arc3d.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/curve/Arc3d.js
CHANGED
|
@@ -266,16 +266,31 @@ class Arc3d extends CurvePrimitive_1.CurvePrimitive {
|
|
|
266
266
|
setRefs(center, matrix, sweep) {
|
|
267
267
|
this._center = center;
|
|
268
268
|
this._matrix = matrix;
|
|
269
|
-
this._sweep
|
|
269
|
+
sweep.clampToFullCircle(this._sweep);
|
|
270
270
|
}
|
|
271
271
|
/**
|
|
272
|
-
* Redefine the arc with (
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
* @param
|
|
272
|
+
* Redefine the arc with (copies of) the given data.
|
|
273
|
+
* * Even if an input is omitted, the corresponding instance data is set to the default value.
|
|
274
|
+
* * For example, all default inputs result in a unit circle centered at the origin in the xy-plane.
|
|
275
|
+
* @param center arc center. Default is zero.
|
|
276
|
+
* @param matrix matrix with columns vector0, vector90, and their unit cross product. Default is identity.
|
|
277
|
+
* @param sweep angle sweep. Default is full sweep.
|
|
278
|
+
* @returns the instance
|
|
276
279
|
*/
|
|
277
280
|
set(center, matrix, sweep) {
|
|
278
|
-
|
|
281
|
+
if (center)
|
|
282
|
+
this._center.setFrom(center);
|
|
283
|
+
else
|
|
284
|
+
this._center.setZero();
|
|
285
|
+
if (matrix)
|
|
286
|
+
this._matrix.setFrom(matrix);
|
|
287
|
+
else
|
|
288
|
+
this._matrix.setIdentity();
|
|
289
|
+
if (sweep)
|
|
290
|
+
sweep.clampToFullCircle(this._sweep);
|
|
291
|
+
else
|
|
292
|
+
AngleSweep_1.AngleSweep.create360(0, this._sweep);
|
|
293
|
+
return this;
|
|
279
294
|
}
|
|
280
295
|
/** Copy center, matrix, and sweep from other Arc3d. */
|
|
281
296
|
setFrom(other) {
|
|
@@ -289,17 +304,16 @@ class Arc3d extends CurvePrimitive_1.CurvePrimitive {
|
|
|
289
304
|
}
|
|
290
305
|
/**
|
|
291
306
|
* Create an arc, capturing references to center, matrix and sweep.
|
|
292
|
-
*
|
|
293
|
-
* @param
|
|
294
|
-
* @param
|
|
295
|
-
* @param
|
|
307
|
+
* * Default inputs construct a unit circle centered at the origin in the xy-plane.
|
|
308
|
+
* @param center center point. Default is zero.
|
|
309
|
+
* @param matrix matrix with columns vector0, vector90, and their unit cross product. Default is identity.
|
|
310
|
+
* @param sweep sweep limits. Default is full sweep.
|
|
311
|
+
* @param result optional preallocated result to receive copies of the inputs (or default values) and return.
|
|
296
312
|
*/
|
|
297
313
|
static createRefs(center, matrix, sweep, result) {
|
|
298
|
-
if (result)
|
|
299
|
-
result.
|
|
300
|
-
|
|
301
|
-
}
|
|
302
|
-
return new Arc3d(center, matrix, sweep);
|
|
314
|
+
if (result)
|
|
315
|
+
return result.set(center, matrix, sweep);
|
|
316
|
+
return new Arc3d(center ?? Point3dVector3d_1.Point3d.createZero(), matrix ?? Matrix3d_1.Matrix3d.createIdentity(), sweep ?? AngleSweep_1.AngleSweep.create360());
|
|
303
317
|
}
|
|
304
318
|
/**
|
|
305
319
|
* Create an arc from center, x column to be scaled, and y column to be scaled.
|
|
@@ -337,8 +351,10 @@ class Arc3d extends CurvePrimitive_1.CurvePrimitive {
|
|
|
337
351
|
*/
|
|
338
352
|
static create(center, vector0, vector90, sweep, result) {
|
|
339
353
|
const normal = vector0.unitCrossProductWithDefault(vector90, 0, 0, 0); // normal will be 000 for degenerate case
|
|
340
|
-
const matrix = Matrix3d_1.Matrix3d.createColumns(vector0, vector90, normal);
|
|
341
|
-
|
|
354
|
+
const matrix = Matrix3d_1.Matrix3d.createColumns(vector0, vector90, normal, result?._matrix);
|
|
355
|
+
if (result)
|
|
356
|
+
return result.set(center, matrix, sweep);
|
|
357
|
+
return this.createRefs(center?.clone(), matrix, sweep?.clone());
|
|
342
358
|
}
|
|
343
359
|
/**
|
|
344
360
|
* Create an elliptical arc from three points on the ellipse: two points on an axis and one in between.
|
|
@@ -425,9 +441,10 @@ class Arc3d extends CurvePrimitive_1.CurvePrimitive {
|
|
|
425
441
|
* @param start start point of the arc.
|
|
426
442
|
* @param end end point of the arc.
|
|
427
443
|
* @param helper a third point near the arc in its plane, or a vector in the direction of the arc normal.
|
|
444
|
+
* @param result optional preallocated result to populate and return.
|
|
428
445
|
* @returns the constructed arc, or undefined if desired arc cannot be constructed.
|
|
429
446
|
*/
|
|
430
|
-
static createCircularStartEndRadius(start, end, radius, helper) {
|
|
447
|
+
static createCircularStartEndRadius(start, end, radius, helper, result) {
|
|
431
448
|
// Construct a line segment from start to end. It is a chord of the circle,
|
|
432
449
|
// so the circle center is on its perpendicular bisector.
|
|
433
450
|
const semiChordLen2 = 0.25 * start.distanceSquared(end);
|
|
@@ -445,13 +462,14 @@ class Arc3d extends CurvePrimitive_1.CurvePrimitive {
|
|
|
445
462
|
// the normal and chord direction give us the side of the chord on which the center resides
|
|
446
463
|
if (!normal.normalizeInPlace() || !normal.crossProductStartEnd(start, end, vecToCenter).scaleToLength(height, vecToCenter))
|
|
447
464
|
return undefined;
|
|
448
|
-
const center = Point3dVector3d_1.Point3d.createZero();
|
|
465
|
+
const center = Point3dVector3d_1.Point3d.createZero(result?.centerRef);
|
|
449
466
|
start.interpolate(0.5, end, center).addInPlace(vecToCenter);
|
|
450
467
|
const vector0 = Point3dVector3d_1.Vector3d.createStartEnd(center, start, this._workVectorW);
|
|
451
468
|
const endVector = Point3dVector3d_1.Vector3d.createStartEnd(center, end, this._workVectorV); // reuse static
|
|
452
|
-
const sweep = AngleSweep_1.AngleSweep.
|
|
469
|
+
const sweep = AngleSweep_1.AngleSweep.createStartEndRadians(0, vector0.signedRadiansTo(endVector, normal), result?.sweep);
|
|
453
470
|
const vector90 = normal.crossProduct(vector0, this._workVectorV); // has length radius (reuse static)
|
|
454
|
-
|
|
471
|
+
const matrix = Matrix3d_1.Matrix3d.createColumns(vector0, vector90, normal, result?.matrixRef);
|
|
472
|
+
return this.createRefs(center, matrix, sweep, result);
|
|
455
473
|
}
|
|
456
474
|
/**
|
|
457
475
|
* Return a clone of this arc, projected to given z value.
|
|
@@ -970,28 +988,39 @@ class Arc3d extends CurvePrimitive_1.CurvePrimitive {
|
|
|
970
988
|
result.set(plane.altitude(this._center), plane.velocityXYZ(this._matrix.coffs[0], this._matrix.coffs[3], this._matrix.coffs[6]), plane.velocityXYZ(this._matrix.coffs[1], this._matrix.coffs[4], this._matrix.coffs[7]));
|
|
971
989
|
return result;
|
|
972
990
|
}
|
|
973
|
-
/**
|
|
974
|
-
|
|
975
|
-
|
|
991
|
+
/**
|
|
992
|
+
* Create a new arc which is a unit circle in the xy-plane centered at the origin.
|
|
993
|
+
* @param result optional preallocated object to populate and return.
|
|
994
|
+
*/
|
|
995
|
+
static createUnitCircle(result) {
|
|
996
|
+
return Arc3d.createRefs(undefined, undefined, undefined, result);
|
|
976
997
|
}
|
|
977
998
|
/**
|
|
978
999
|
* Create a new arc which is parallel to the xy plane, with given center and radius and optional angle sweep.
|
|
979
1000
|
* @param center center of arc.
|
|
980
1001
|
* @param radius radius of arc.
|
|
981
1002
|
* @param sweep sweep limits; defaults to full circle.
|
|
1003
|
+
* @param result optional preallocated object to populate and return.
|
|
982
1004
|
*/
|
|
983
|
-
static createXY(center, radius, sweep
|
|
984
|
-
|
|
1005
|
+
static createXY(center, radius, sweep, result) {
|
|
1006
|
+
const matrix = Matrix3d_1.Matrix3d.createScale(radius, radius, 1.0, result?.matrixRef);
|
|
1007
|
+
if (result)
|
|
1008
|
+
return result.set(center, matrix, sweep);
|
|
1009
|
+
return Arc3d.createRefs(center.clone(), matrix, sweep?.clone());
|
|
985
1010
|
}
|
|
986
1011
|
/**
|
|
987
1012
|
* Create a new arc which is parallel to the xy plane, with given center and x,y radii, and optional angle sweep
|
|
988
1013
|
* @param center center of ellipse.
|
|
989
1014
|
* @param radiusA x axis radius.
|
|
990
1015
|
* @param radiusB y axis radius.
|
|
991
|
-
* @param sweep angle sweep.
|
|
1016
|
+
* @param sweep angle sweep. Default is full circle.
|
|
1017
|
+
* @param result optional preallocated object to populate and return.
|
|
992
1018
|
*/
|
|
993
|
-
static createXYEllipse(center, radiusA, radiusB, sweep
|
|
994
|
-
|
|
1019
|
+
static createXYEllipse(center, radiusA, radiusB, sweep, result) {
|
|
1020
|
+
const matrix = Matrix3d_1.Matrix3d.createScale(radiusA, radiusB, 1.0, result?.matrixRef);
|
|
1021
|
+
if (result)
|
|
1022
|
+
return result.set(center, matrix, sweep);
|
|
1023
|
+
return Arc3d.createRefs(center.clone(), matrix, sweep?.clone());
|
|
995
1024
|
}
|
|
996
1025
|
/**
|
|
997
1026
|
* Replace the arc's 0 and 90 degree vectors.
|
|
@@ -1306,13 +1335,10 @@ class Arc3d extends CurvePrimitive_1.CurvePrimitive {
|
|
|
1306
1335
|
&& (this.isCircular || (!Geometry_1.Geometry.isSmallMetricDistance(r90new) && (r90 * r90new > 0.0)))) {
|
|
1307
1336
|
const factor0 = r0new / r0;
|
|
1308
1337
|
const factor90 = this.isCircular ? factor0 : r90new / r90;
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
return Arc3d.createRefs(arcXY.center.clone(), matrix, arcXY.sweep.clone());
|
|
1312
|
-
}
|
|
1313
|
-
else {
|
|
1314
|
-
return undefined; // zero radius
|
|
1338
|
+
arcXY.matrixRef.scaleColumnsInPlace(factor0, factor90, 1.0);
|
|
1339
|
+
return arcXY;
|
|
1315
1340
|
}
|
|
1341
|
+
return undefined; // zero radius
|
|
1316
1342
|
}
|
|
1317
1343
|
// default impl
|
|
1318
1344
|
const handler = new CurveOffsetXYHandler_1.CurveOffsetXYHandler(this, options.leftOffsetDistance);
|