@itwin/core-geometry 4.1.0-dev.4 → 4.1.0-dev.40
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 +32 -1
- package/lib/cjs/Constant.js.map +1 -1
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/bspline/KnotVector.js.map +1 -1
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +1 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +4 -1
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +71 -86
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +110 -96
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ChainCollectorContext.js.map +1 -1
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChain.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +61 -41
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +69 -46
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +73 -46
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +100 -64
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +45 -46
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +39 -41
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +138 -92
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +115 -75
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.d.ts +26 -20
- package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js +11 -9
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.d.ts +38 -27
- package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js +77 -39
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +70 -51
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +120 -71
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.d.ts +7 -5
- package/lib/cjs/curve/Loop.d.ts.map +1 -1
- package/lib/cjs/curve/Loop.js +18 -6
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.d.ts +7 -7
- package/lib/cjs/curve/ParityRegion.d.ts.map +1 -1
- package/lib/cjs/curve/ParityRegion.js +19 -11
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.d.ts +6 -6
- package/lib/cjs/curve/Path.d.ts.map +1 -1
- package/lib/cjs/curve/Path.js +15 -9
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.d.ts +4 -6
- package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js +7 -7
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.d.ts +14 -13
- package/lib/cjs/curve/Query/StrokeCountMap.d.ts.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.js +9 -8
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +69 -47
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +70 -47
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.d.ts +29 -21
- package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js +50 -24
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.d.ts +6 -5
- package/lib/cjs/curve/UnionRegion.d.ts.map +1 -1
- package/lib/cjs/curve/UnionRegion.js +17 -8
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts +2 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js +6 -2
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +4 -0
- package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js +5 -2
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts +56 -34
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +152 -87
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js +4 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +2 -2
- package/lib/cjs/geometry3d/Matrix3d.js +2 -2
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +35 -32
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.d.ts +133 -93
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Range.js +296 -144
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/MomentData.js.map +1 -1
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BandedSystem.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Complex.js.map +1 -1
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
- package/lib/cjs/numerics/PolarData.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/numerics/Quadrature.js.map +1 -1
- package/lib/cjs/numerics/Range1dArray.js.map +1 -1
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/cjs/numerics/UnionFind.js.map +1 -1
- package/lib/cjs/numerics/UsageSums.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/BoxTopology.js.map +1 -1
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
- package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Constant.js.map +1 -1
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/bspline/KnotVector.js.map +1 -1
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +1 -0
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +2 -0
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +71 -86
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +110 -96
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ChainCollectorContext.js.map +1 -1
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChain.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +61 -41
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +69 -46
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +73 -46
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +100 -64
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +45 -46
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +39 -41
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +138 -92
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +115 -75
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.d.ts +26 -20
- package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
- package/lib/esm/curve/GeometryQuery.js +11 -9
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.d.ts +38 -27
- package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
- package/lib/esm/curve/LineSegment3d.js +77 -39
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +70 -51
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +120 -71
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.d.ts +7 -5
- package/lib/esm/curve/Loop.d.ts.map +1 -1
- package/lib/esm/curve/Loop.js +18 -6
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/ParityRegion.d.ts +7 -7
- package/lib/esm/curve/ParityRegion.d.ts.map +1 -1
- package/lib/esm/curve/ParityRegion.js +19 -11
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.d.ts +6 -6
- package/lib/esm/curve/Path.d.ts.map +1 -1
- package/lib/esm/curve/Path.js +15 -9
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.d.ts +4 -6
- package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
- package/lib/esm/curve/ProxyCurve.js +7 -7
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.d.ts +14 -13
- package/lib/esm/curve/Query/StrokeCountMap.d.ts.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.js +9 -8
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +69 -47
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +70 -47
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.d.ts +29 -21
- package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/esm/curve/StrokeOptions.js +50 -24
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.d.ts +6 -5
- package/lib/esm/curve/UnionRegion.d.ts.map +1 -1
- package/lib/esm/curve/UnionRegion.js +17 -8
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.d.ts +2 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js +6 -2
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +4 -0
- package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js +5 -2
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +14 -8
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +14 -8
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +56 -34
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +152 -87
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js +4 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +2 -2
- package/lib/esm/geometry3d/Matrix3d.js +2 -2
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +36 -32
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +35 -32
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.d.ts +133 -93
- package/lib/esm/geometry3d/Range.d.ts.map +1 -1
- package/lib/esm/geometry3d/Range.js +296 -144
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/MomentData.js.map +1 -1
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BandedSystem.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Complex.js.map +1 -1
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
- package/lib/esm/numerics/PolarData.js.map +1 -1
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/numerics/Quadrature.js.map +1 -1
- package/lib/esm/numerics/Range1dArray.js.map +1 -1
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/esm/numerics/UnionFind.js.map +1 -1
- package/lib/esm/numerics/UsageSums.js.map +1 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/BoxTopology.js.map +1 -1
- package/lib/esm/polyface/FacetFaceData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeLengthData.js.map +1 -1
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SolidPrimitive.js.map +1 -1
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/SignedDataSummary.js.map +1 -1
- package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +3 -3
|
@@ -8,7 +8,7 @@ import { CurvePrimitive } from "./CurvePrimitive";
|
|
|
8
8
|
export declare enum CurveIntervalRole {
|
|
9
9
|
/** This point is an isolated point NOT at a primary vertex. */
|
|
10
10
|
isolated = 0,
|
|
11
|
-
/**
|
|
11
|
+
/** This point is an isolated vertex hit */
|
|
12
12
|
isolatedAtVertex = 1,
|
|
13
13
|
/** This is the beginning of an interval */
|
|
14
14
|
intervalStart = 10,
|
|
@@ -22,11 +22,11 @@ export declare enum CurveIntervalRole {
|
|
|
22
22
|
* @public
|
|
23
23
|
*/
|
|
24
24
|
export declare enum CurveSearchStatus {
|
|
25
|
-
/**
|
|
25
|
+
/** Unimplemented or zero length curve */
|
|
26
26
|
error = 0,
|
|
27
|
-
/**
|
|
27
|
+
/** Complete success of search */
|
|
28
28
|
success = 1,
|
|
29
|
-
/**
|
|
29
|
+
/** Search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */
|
|
30
30
|
stoppedAtBoundary = 2
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -38,7 +38,7 @@ export declare enum CurveSearchStatus {
|
|
|
38
38
|
export declare class CurveLocationDetail {
|
|
39
39
|
/** The curve being evaluated */
|
|
40
40
|
curve?: CurvePrimitive;
|
|
41
|
-
/**
|
|
41
|
+
/** Optional ray */
|
|
42
42
|
ray?: Ray3d;
|
|
43
43
|
/** The fractional position along the curve */
|
|
44
44
|
fraction: number;
|
|
@@ -48,43 +48,49 @@ export declare class CurveLocationDetail {
|
|
|
48
48
|
point: Point3d;
|
|
49
49
|
/** A vector (e.g. tangent vector) in context */
|
|
50
50
|
vectorInCurveLocationDetail?: Vector3d;
|
|
51
|
-
/** A context-specific numeric value.
|
|
51
|
+
/** A context-specific numeric value. (e.g. a distance) */
|
|
52
52
|
a: number;
|
|
53
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Optional CurveLocationDetail with more detail of location. For instance, a detail for fractional position within
|
|
54
55
|
* a CurveChainWithDistanceIndex returns fraction and distance along the chain as its primary data and
|
|
55
56
|
* further detail of the particular curve within the chain in the childDetail.
|
|
56
57
|
*/
|
|
57
58
|
childDetail?: CurveLocationDetail;
|
|
58
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* A status indicator for certain searches.
|
|
59
61
|
* * e.g. CurvePrimitive.moveSignedDistanceFromFraction
|
|
60
62
|
*/
|
|
61
63
|
curveSearchStatus?: CurveSearchStatus;
|
|
62
|
-
/** (
|
|
64
|
+
/** (Optional) second fraction, e.g. end of interval of coincident curves */
|
|
63
65
|
fraction1?: number;
|
|
64
|
-
/** (
|
|
66
|
+
/** (Optional) second point, e.g. end of interval of coincident curves */
|
|
65
67
|
point1?: Point3d;
|
|
66
68
|
/** A context-specific additional point */
|
|
67
69
|
pointQ: Point3d;
|
|
70
|
+
/** Constructor */
|
|
68
71
|
constructor();
|
|
69
72
|
/** Set the (optional) intervalRole field */
|
|
70
73
|
setIntervalRole(value: CurveIntervalRole): void;
|
|
71
74
|
/** Set the (optional) fraction1 and point1, using direct assignment (capture!) to point1 */
|
|
72
75
|
captureFraction1Point1(fraction1: number, point1: Point3d): void;
|
|
73
|
-
/**
|
|
76
|
+
/** Test if this pair has fraction1 defined */
|
|
74
77
|
get hasFraction1(): boolean;
|
|
75
|
-
/**
|
|
78
|
+
/** Test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */
|
|
76
79
|
get isIsolated(): boolean;
|
|
77
|
-
/**
|
|
80
|
+
/** Return the fraction delta. (0 if no fraction1) */
|
|
78
81
|
get fractionDelta(): number;
|
|
79
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* If (fraction1, point1) are defined, make them the primary (and only) data.
|
|
80
84
|
* * No action if undefined.
|
|
81
85
|
*/
|
|
82
86
|
collapseToEnd(): void;
|
|
83
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Make (fraction, point) the primary (and only) data.
|
|
84
89
|
* * No action if undefined.
|
|
85
90
|
*/
|
|
86
91
|
collapseToStart(): void;
|
|
87
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Return a complete copy, WITH CAVEATS . . .
|
|
88
94
|
* * curve member is copied as a reference.
|
|
89
95
|
* * point and vector members are cloned.
|
|
90
96
|
*/
|
|
@@ -108,41 +114,30 @@ export declare class CurveLocationDetail {
|
|
|
108
114
|
* @param a (optional) numeric value to install.
|
|
109
115
|
*/
|
|
110
116
|
setFR(fraction: number, ray: Ray3d, a?: number): void;
|
|
111
|
-
/** Set the CurvePrimitive pointer, leaving all other properties untouched.
|
|
112
|
-
*/
|
|
117
|
+
/** Set the CurvePrimitive pointer, leaving all other properties untouched. */
|
|
113
118
|
setCurve(curve: CurvePrimitive): void;
|
|
114
|
-
/**
|
|
119
|
+
/** Record the distance from the CurveLocationDetail's point to the parameter point. */
|
|
115
120
|
setDistanceTo(point: Point3d): void;
|
|
116
|
-
/**
|
|
117
|
-
*/
|
|
121
|
+
/** Create with a CurvePrimitive pointer but no coordinate data. */
|
|
118
122
|
static create(curve?: CurvePrimitive, result?: CurveLocationDetail): CurveLocationDetail;
|
|
119
|
-
/**
|
|
120
|
-
*/
|
|
123
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates. */
|
|
121
124
|
static createCurveFractionPoint(curve: CurvePrimitive | undefined, fraction: number, point: Point3d, result?: CurveLocationDetail): CurveLocationDetail;
|
|
122
|
-
/**
|
|
123
|
-
* Create a new detail with only ray, fraction, and point.
|
|
124
|
-
*/
|
|
125
|
+
/** Create a new detail with only ray, fraction, and point. */
|
|
125
126
|
static createRayFractionPoint(ray: Ray3d, fraction: number, point: Point3d, result?: CurveLocationDetail): CurveLocationDetail;
|
|
126
|
-
/**
|
|
127
|
-
*/
|
|
127
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates */
|
|
128
128
|
static createCurveFractionPointDistanceCurveSearchStatus(curve: CurvePrimitive | undefined, fraction: number, point: Point3d, distance: number, status: CurveSearchStatus, result?: CurveLocationDetail): CurveLocationDetail;
|
|
129
|
-
/**
|
|
130
|
-
* *
|
|
131
|
-
*/
|
|
129
|
+
/** Create with curveSearchStatus affected by allowExtension. */
|
|
132
130
|
static createConditionalMoveSignedDistance(allowExtension: boolean, curve: CurvePrimitive, startFraction: number, endFraction: number, requestedSignedDistance: number, result?: CurveLocationDetail): CurveLocationDetail;
|
|
133
|
-
/**
|
|
134
|
-
*/
|
|
131
|
+
/** Create with CurvePrimitive pointer and fraction for evaluation. */
|
|
135
132
|
static createCurveEvaluatedFraction(curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail): CurveLocationDetail;
|
|
136
|
-
/**
|
|
137
|
-
*/
|
|
133
|
+
/** Create with CurvePrimitive pointer and fraction for evaluation. */
|
|
138
134
|
static createCurveEvaluatedFractionPointAndDerivative(curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail): CurveLocationDetail;
|
|
139
|
-
/**
|
|
140
|
-
*/
|
|
135
|
+
/** Create with CurvePrimitive pointer and 2 fractions for evaluation. */
|
|
141
136
|
static createCurveEvaluatedFractionFraction(curve: CurvePrimitive, fraction0: number, fraction1: number, result?: CurveLocationDetail): CurveLocationDetail;
|
|
142
|
-
/**
|
|
143
|
-
*/
|
|
137
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates. */
|
|
144
138
|
static createCurveFractionPointDistance(curve: CurvePrimitive, fraction: number, point: Point3d, a: number, result?: CurveLocationDetail): CurveLocationDetail;
|
|
145
|
-
/**
|
|
139
|
+
/**
|
|
140
|
+
* Update or create if closer than current contents.
|
|
146
141
|
* @param curve candidate curve
|
|
147
142
|
* @param fraction candidate fraction
|
|
148
143
|
* @param point candidate point
|
|
@@ -151,12 +146,12 @@ export declare class CurveLocationDetail {
|
|
|
151
146
|
*/
|
|
152
147
|
updateIfCloserCurveFractionPointDistance(curve: CurvePrimitive, fraction: number, point: Point3d, a: number): boolean;
|
|
153
148
|
/**
|
|
154
|
-
*
|
|
149
|
+
* Exchange the (fraction,fraction1) and (point, point1) pairs.
|
|
155
150
|
* * (Skip each swap if its "1" value is undefined)
|
|
156
151
|
*/
|
|
157
152
|
swapFractionsAndPoints(): void;
|
|
158
153
|
/**
|
|
159
|
-
*
|
|
154
|
+
* Return the fraction where f falls between fraction and fraction1.
|
|
160
155
|
* * ASSUME fraction1 defined
|
|
161
156
|
*/
|
|
162
157
|
inverseInterpolateFraction(f: number, defaultFraction?: number): number;
|
|
@@ -167,7 +162,8 @@ export declare class CurveLocationDetail {
|
|
|
167
162
|
*/
|
|
168
163
|
static chooseSmallerA(detailA: CurveLocationDetail | undefined, detailB: CurveLocationDetail | undefined): CurveLocationDetail | undefined;
|
|
169
164
|
}
|
|
170
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* Enumeration of configurations for intersections and min/max distance-between-curve
|
|
171
167
|
* @public
|
|
172
168
|
*/
|
|
173
169
|
export declare enum CurveCurveApproachType {
|
|
@@ -180,7 +176,8 @@ export declare enum CurveCurveApproachType {
|
|
|
180
176
|
/** Completely parallel geometry. */
|
|
181
177
|
ParallelGeometry = 3
|
|
182
178
|
}
|
|
183
|
-
/**
|
|
179
|
+
/**
|
|
180
|
+
* A pair of CurveLocationDetail.
|
|
184
181
|
* @public
|
|
185
182
|
*/
|
|
186
183
|
export declare class CurveLocationDetailPair {
|
|
@@ -188,14 +185,16 @@ export declare class CurveLocationDetailPair {
|
|
|
188
185
|
detailA: CurveLocationDetail;
|
|
189
186
|
/** The second of the two details ... */
|
|
190
187
|
detailB: CurveLocationDetail;
|
|
191
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* Enumeration of how the detail pairs relate.
|
|
192
190
|
* * This is set only by certain closeApproach calculations.
|
|
193
191
|
*/
|
|
194
192
|
approachType?: CurveCurveApproachType;
|
|
195
193
|
constructor(detailA?: CurveLocationDetail, detailB?: CurveLocationDetail);
|
|
196
194
|
/** Create a curve detail pair using references to two CurveLocationDetails */
|
|
197
195
|
static createCapture(detailA: CurveLocationDetail, detailB: CurveLocationDetail, result?: CurveLocationDetailPair): CurveLocationDetailPair;
|
|
198
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* Create a curve detail pair using references to two CurveLocationDetails.
|
|
199
198
|
* * optionally install in reversed positions
|
|
200
199
|
*/
|
|
201
200
|
static createCaptureOptionalReverse(detailA: CurveLocationDetail, detailB: CurveLocationDetail, reversed: boolean, result?: CurveLocationDetailPair): CurveLocationDetailPair;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurveLocationDetail.d.ts","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,+DAA+D;IAC/D,QAAQ,IAAI;IACZ,
|
|
1
|
+
{"version":3,"file":"CurveLocationDetail.d.ts","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ var CurveIntervalRole;
|
|
|
18
18
|
(function (CurveIntervalRole) {
|
|
19
19
|
/** This point is an isolated point NOT at a primary vertex. */
|
|
20
20
|
CurveIntervalRole[CurveIntervalRole["isolated"] = 0] = "isolated";
|
|
21
|
-
/**
|
|
21
|
+
/** This point is an isolated vertex hit */
|
|
22
22
|
CurveIntervalRole[CurveIntervalRole["isolatedAtVertex"] = 1] = "isolatedAtVertex";
|
|
23
23
|
/** This is the beginning of an interval */
|
|
24
24
|
CurveIntervalRole[CurveIntervalRole["intervalStart"] = 10] = "intervalStart";
|
|
@@ -33,15 +33,15 @@ var CurveIntervalRole;
|
|
|
33
33
|
*/
|
|
34
34
|
var CurveSearchStatus;
|
|
35
35
|
(function (CurveSearchStatus) {
|
|
36
|
-
/**
|
|
36
|
+
/** Unimplemented or zero length curve */
|
|
37
37
|
CurveSearchStatus[CurveSearchStatus["error"] = 0] = "error";
|
|
38
|
-
/**
|
|
38
|
+
/** Complete success of search */
|
|
39
39
|
CurveSearchStatus[CurveSearchStatus["success"] = 1] = "success";
|
|
40
|
-
/**
|
|
40
|
+
/** Search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */
|
|
41
41
|
CurveSearchStatus[CurveSearchStatus["stoppedAtBoundary"] = 2] = "stoppedAtBoundary";
|
|
42
42
|
})(CurveSearchStatus = exports.CurveSearchStatus || (exports.CurveSearchStatus = {}));
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* Use to update a vector in case where source and prior result are both possibly undefined.
|
|
45
45
|
* * Any undefined source returns undefined.
|
|
46
46
|
* * For defined source, reuse optional result if available.
|
|
47
47
|
* @param source optional source
|
|
@@ -60,6 +60,7 @@ function optionalVectorUpdate(source, result) {
|
|
|
60
60
|
* @public
|
|
61
61
|
*/
|
|
62
62
|
class CurveLocationDetail {
|
|
63
|
+
/** Constructor */
|
|
63
64
|
constructor() {
|
|
64
65
|
this.pointQ = Point3dVector3d_1.Point3d.createZero();
|
|
65
66
|
this.fraction = 0;
|
|
@@ -75,21 +76,22 @@ class CurveLocationDetail {
|
|
|
75
76
|
this.fraction1 = fraction1;
|
|
76
77
|
this.point1 = point1;
|
|
77
78
|
}
|
|
78
|
-
/**
|
|
79
|
+
/** Test if this pair has fraction1 defined */
|
|
79
80
|
get hasFraction1() {
|
|
80
81
|
return this.fraction1 !== undefined;
|
|
81
82
|
}
|
|
82
|
-
/**
|
|
83
|
+
/** Test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */
|
|
83
84
|
get isIsolated() {
|
|
84
85
|
return this.intervalRole === undefined
|
|
85
86
|
|| this.intervalRole === CurveIntervalRole.isolated
|
|
86
87
|
|| this.intervalRole === CurveIntervalRole.isolatedAtVertex;
|
|
87
88
|
}
|
|
88
|
-
/**
|
|
89
|
+
/** Return the fraction delta. (0 if no fraction1) */
|
|
89
90
|
get fractionDelta() {
|
|
90
91
|
return this.fraction1 !== undefined ? this.fraction1 - this.fraction : 0.0;
|
|
91
92
|
}
|
|
92
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* If (fraction1, point1) are defined, make them the primary (and only) data.
|
|
93
95
|
* * No action if undefined.
|
|
94
96
|
*/
|
|
95
97
|
collapseToEnd() {
|
|
@@ -102,14 +104,16 @@ class CurveLocationDetail {
|
|
|
102
104
|
this.point1 = undefined;
|
|
103
105
|
}
|
|
104
106
|
}
|
|
105
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Make (fraction, point) the primary (and only) data.
|
|
106
109
|
* * No action if undefined.
|
|
107
110
|
*/
|
|
108
111
|
collapseToStart() {
|
|
109
112
|
this.fraction1 = undefined;
|
|
110
113
|
this.point1 = undefined;
|
|
111
114
|
}
|
|
112
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Return a complete copy, WITH CAVEATS . . .
|
|
113
117
|
* * curve member is copied as a reference.
|
|
114
118
|
* * point and vector members are cloned.
|
|
115
119
|
*/
|
|
@@ -153,22 +157,21 @@ class CurveLocationDetail {
|
|
|
153
157
|
setFR(fraction, ray, a = 0) {
|
|
154
158
|
return this.setFP(fraction, ray.origin, ray.direction, a);
|
|
155
159
|
}
|
|
156
|
-
/** Set the CurvePrimitive pointer, leaving all other properties untouched.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
+
/** Set the CurvePrimitive pointer, leaving all other properties untouched. */
|
|
161
|
+
setCurve(curve) {
|
|
162
|
+
this.curve = curve;
|
|
163
|
+
}
|
|
164
|
+
/** Record the distance from the CurveLocationDetail's point to the parameter point. */
|
|
160
165
|
setDistanceTo(point) {
|
|
161
166
|
this.a = this.point.distance(point);
|
|
162
167
|
}
|
|
163
|
-
/**
|
|
164
|
-
*/
|
|
168
|
+
/** Create with a CurvePrimitive pointer but no coordinate data. */
|
|
165
169
|
static create(curve, result) {
|
|
166
170
|
result = result ? result : new CurveLocationDetail();
|
|
167
171
|
result.curve = curve;
|
|
168
172
|
return result;
|
|
169
173
|
}
|
|
170
|
-
/**
|
|
171
|
-
*/
|
|
174
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates. */
|
|
172
175
|
static createCurveFractionPoint(curve, fraction, point, result) {
|
|
173
176
|
result = result ? result : new CurveLocationDetail();
|
|
174
177
|
result.curve = curve;
|
|
@@ -179,9 +182,7 @@ class CurveLocationDetail {
|
|
|
179
182
|
result.curveSearchStatus = undefined;
|
|
180
183
|
return result;
|
|
181
184
|
}
|
|
182
|
-
/**
|
|
183
|
-
* Create a new detail with only ray, fraction, and point.
|
|
184
|
-
*/
|
|
185
|
+
/** Create a new detail with only ray, fraction, and point. */
|
|
185
186
|
static createRayFractionPoint(ray, fraction, point, result) {
|
|
186
187
|
result = result ? result : new CurveLocationDetail();
|
|
187
188
|
result.fraction = fraction;
|
|
@@ -189,8 +190,7 @@ class CurveLocationDetail {
|
|
|
189
190
|
result.point.setFromPoint3d(point);
|
|
190
191
|
return result;
|
|
191
192
|
}
|
|
192
|
-
/**
|
|
193
|
-
*/
|
|
193
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates */
|
|
194
194
|
static createCurveFractionPointDistanceCurveSearchStatus(curve, fraction, point, distance, status, result) {
|
|
195
195
|
result = result ? result : new CurveLocationDetail();
|
|
196
196
|
result.curve = curve;
|
|
@@ -201,9 +201,7 @@ class CurveLocationDetail {
|
|
|
201
201
|
result.curveSearchStatus = status;
|
|
202
202
|
return result;
|
|
203
203
|
}
|
|
204
|
-
/**
|
|
205
|
-
* *
|
|
206
|
-
*/
|
|
204
|
+
/** Create with curveSearchStatus affected by allowExtension. */
|
|
207
205
|
static createConditionalMoveSignedDistance(allowExtension, curve, startFraction, endFraction, requestedSignedDistance, result) {
|
|
208
206
|
let a = requestedSignedDistance;
|
|
209
207
|
let status = CurveSearchStatus.success;
|
|
@@ -229,8 +227,7 @@ class CurveLocationDetail {
|
|
|
229
227
|
result.curveSearchStatus = status;
|
|
230
228
|
return result;
|
|
231
229
|
}
|
|
232
|
-
/**
|
|
233
|
-
*/
|
|
230
|
+
/** Create with CurvePrimitive pointer and fraction for evaluation. */
|
|
234
231
|
static createCurveEvaluatedFraction(curve, fraction, result) {
|
|
235
232
|
result = result ? result : new CurveLocationDetail();
|
|
236
233
|
result.curve = curve;
|
|
@@ -241,8 +238,7 @@ class CurveLocationDetail {
|
|
|
241
238
|
result.a = 0.0;
|
|
242
239
|
return result;
|
|
243
240
|
}
|
|
244
|
-
/**
|
|
245
|
-
*/
|
|
241
|
+
/** Create with CurvePrimitive pointer and fraction for evaluation. */
|
|
246
242
|
static createCurveEvaluatedFractionPointAndDerivative(curve, fraction, result) {
|
|
247
243
|
result = result ? result : new CurveLocationDetail();
|
|
248
244
|
result.curve = curve;
|
|
@@ -254,8 +250,7 @@ class CurveLocationDetail {
|
|
|
254
250
|
result.a = 0.0;
|
|
255
251
|
return result;
|
|
256
252
|
}
|
|
257
|
-
/**
|
|
258
|
-
*/
|
|
253
|
+
/** Create with CurvePrimitive pointer and 2 fractions for evaluation. */
|
|
259
254
|
static createCurveEvaluatedFractionFraction(curve, fraction0, fraction1, result) {
|
|
260
255
|
result = result ? result : new CurveLocationDetail();
|
|
261
256
|
result.curve = curve;
|
|
@@ -268,8 +263,7 @@ class CurveLocationDetail {
|
|
|
268
263
|
result.a = 0.0;
|
|
269
264
|
return result;
|
|
270
265
|
}
|
|
271
|
-
/**
|
|
272
|
-
*/
|
|
266
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates. */
|
|
273
267
|
static createCurveFractionPointDistance(curve, fraction, point, a, result) {
|
|
274
268
|
result = result ? result : new CurveLocationDetail();
|
|
275
269
|
result.curve = curve;
|
|
@@ -280,7 +274,8 @@ class CurveLocationDetail {
|
|
|
280
274
|
result.curveSearchStatus = undefined;
|
|
281
275
|
return result;
|
|
282
276
|
}
|
|
283
|
-
/**
|
|
277
|
+
/**
|
|
278
|
+
* Update or create if closer than current contents.
|
|
284
279
|
* @param curve candidate curve
|
|
285
280
|
* @param fraction candidate fraction
|
|
286
281
|
* @param point candidate point
|
|
@@ -294,7 +289,7 @@ class CurveLocationDetail {
|
|
|
294
289
|
return true;
|
|
295
290
|
}
|
|
296
291
|
/**
|
|
297
|
-
*
|
|
292
|
+
* Exchange the (fraction,fraction1) and (point, point1) pairs.
|
|
298
293
|
* * (Skip each swap if its "1" value is undefined)
|
|
299
294
|
*/
|
|
300
295
|
swapFractionsAndPoints() {
|
|
@@ -310,7 +305,7 @@ class CurveLocationDetail {
|
|
|
310
305
|
}
|
|
311
306
|
}
|
|
312
307
|
/**
|
|
313
|
-
*
|
|
308
|
+
* Return the fraction where f falls between fraction and fraction1.
|
|
314
309
|
* * ASSUME fraction1 defined
|
|
315
310
|
*/
|
|
316
311
|
inverseInterpolateFraction(f, defaultFraction = 0) {
|
|
@@ -334,7 +329,8 @@ class CurveLocationDetail {
|
|
|
334
329
|
}
|
|
335
330
|
}
|
|
336
331
|
exports.CurveLocationDetail = CurveLocationDetail;
|
|
337
|
-
/**
|
|
332
|
+
/**
|
|
333
|
+
* Enumeration of configurations for intersections and min/max distance-between-curve
|
|
338
334
|
* @public
|
|
339
335
|
*/
|
|
340
336
|
var CurveCurveApproachType;
|
|
@@ -348,7 +344,8 @@ var CurveCurveApproachType;
|
|
|
348
344
|
/** Completely parallel geometry. */
|
|
349
345
|
CurveCurveApproachType[CurveCurveApproachType["ParallelGeometry"] = 3] = "ParallelGeometry";
|
|
350
346
|
})(CurveCurveApproachType = exports.CurveCurveApproachType || (exports.CurveCurveApproachType = {}));
|
|
351
|
-
/**
|
|
347
|
+
/**
|
|
348
|
+
* A pair of CurveLocationDetail.
|
|
352
349
|
* @public
|
|
353
350
|
*/
|
|
354
351
|
class CurveLocationDetailPair {
|
|
@@ -363,7 +360,8 @@ class CurveLocationDetailPair {
|
|
|
363
360
|
result.detailB = detailB;
|
|
364
361
|
return result;
|
|
365
362
|
}
|
|
366
|
-
/**
|
|
363
|
+
/**
|
|
364
|
+
* Create a curve detail pair using references to two CurveLocationDetails.
|
|
367
365
|
* * optionally install in reversed positions
|
|
368
366
|
*/
|
|
369
367
|
static createCaptureOptionalReverse(detailA, detailB, reversed, result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurveLocationDetail.js","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\nimport { Geometry } from \"../Geometry\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\n\r\n/**\r\n * An enumeration of special conditions being described by a CurveLocationDetail.\r\n * @public\r\n */\r\nexport enum CurveIntervalRole {\r\n /** This point is an isolated point NOT at a primary vertex. */\r\n isolated = 0,\r\n /** This point is an isolated vertex hit */\r\n isolatedAtVertex = 1,\r\n /** This is the beginning of an interval */\r\n intervalStart = 10,\r\n /** This is an interior point of an interval. */\r\n intervalInterior = 11,\r\n /** This is the end of an interval */\r\n intervalEnd = 12,\r\n}\r\n/**\r\n * Return code for CurvePrimitive method `moveSignedDistanceFromFraction`\r\n * @public\r\n */\r\nexport enum CurveSearchStatus {\r\n /** unimplemented or zero length curve */\r\n error,\r\n /** complete success of search */\r\n success = 1,\r\n /** search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */\r\n stoppedAtBoundary = 2,\r\n}\r\n\r\n/**\r\n * use to update a vector in case where source and prior result are both possibly undefined.\r\n * * Any undefined source returns undefined.\r\n * * For defined source, reuse optional result if available.\r\n * @param source optional source\r\n * @param result optional result\r\n */\r\nfunction optionalVectorUpdate(source: Vector3d | undefined, result: Vector3d | undefined): Vector3d | undefined {\r\n if (source) {\r\n return source.clone(result);\r\n }\r\n return undefined;\r\n}\r\n/**\r\n * CurveLocationDetail carries point and parameter data about a point evaluated on a curve.\r\n * * These are returned by a variety of queries.\r\n * * Particular contents can vary among the queries.\r\n * @public\r\n */\r\nexport class CurveLocationDetail {\r\n /** The curve being evaluated */\r\n public curve?: CurvePrimitive;\r\n /** optional ray */\r\n public ray?: Ray3d;\r\n /** The fractional position along the curve */\r\n public fraction: number;\r\n /** Detail condition of the role this point has in some context */\r\n public intervalRole?: CurveIntervalRole;\r\n /** The point on the curve */\r\n public point: Point3d;\r\n /** A vector (e.g. tangent vector) in context */\r\n public vectorInCurveLocationDetail?: Vector3d;\r\n /** A context-specific numeric value. (E.g. a distance) */\r\n public a: number;\r\n /** optional CurveLocationDetail with more detail of location. For instance, a detail for fractional position within\r\n * a CurveChainWithDistanceIndex returns fraction and distance along the chain as its primary data and\r\n * further detail of the particular curve within the chain in the childDetail.\r\n */\r\n public childDetail?: CurveLocationDetail;\r\n /** A status indicator for certain searches.\r\n * * e.g. CurvePrimitive.moveSignedDistanceFromFraction\r\n */\r\n public curveSearchStatus?: CurveSearchStatus;\r\n /** (optional) second fraction, e.g. end of interval of coincident curves */\r\n public fraction1?: number;\r\n /** (optional) second point, e.g. end of interval of coincident curves */\r\n public point1?: Point3d;\r\n /** A context-specific additional point */\r\n public pointQ: Point3d; // extra point for use in computations\r\n\r\n public constructor() {\r\n this.pointQ = Point3d.createZero();\r\n this.fraction = 0;\r\n this.point = Point3d.createZero();\r\n this.a = 0.0;\r\n }\r\n /** Set the (optional) intervalRole field */\r\n public setIntervalRole(value: CurveIntervalRole): void {\r\n this.intervalRole = value;\r\n }\r\n /** Set the (optional) fraction1 and point1, using direct assignment (capture!) to point1 */\r\n public captureFraction1Point1(fraction1: number, point1: Point3d): void {\r\n this.fraction1 = fraction1;\r\n this.point1 = point1;\r\n }\r\n\r\n /** test if this pair has fraction1 defined */\r\n public get hasFraction1(): boolean {\r\n return this.fraction1 !== undefined;\r\n }\r\n\r\n /** test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */\r\n public get isIsolated(): boolean {\r\n return this.intervalRole === undefined\r\n || this.intervalRole === CurveIntervalRole.isolated\r\n || this.intervalRole === CurveIntervalRole.isolatedAtVertex;\r\n }\r\n\r\n /** return the fraction delta. (0 if no fraction1) */\r\n public get fractionDelta(): number {\r\n return this.fraction1 !== undefined ? this.fraction1 - this.fraction : 0.0;\r\n }\r\n\r\n /** If (fraction1, point1) are defined, make them the primary (and only) data.\r\n * * No action if undefined.\r\n */\r\n public collapseToEnd() {\r\n if (this.fraction1 !== undefined) {\r\n this.fraction = this.fraction1;\r\n this.fraction1 = undefined;\r\n }\r\n if (this.point1) {\r\n this.point = this.point1;\r\n this.point1 = undefined;\r\n }\r\n }\r\n\r\n /** make (fraction, point) the primary (and only) data.\r\n * * No action if undefined.\r\n */\r\n public collapseToStart() {\r\n this.fraction1 = undefined;\r\n this.point1 = undefined;\r\n }\r\n\r\n /** Return a complete copy, WITH CAVEATS . . .\r\n * * curve member is copied as a reference.\r\n * * point and vector members are cloned.\r\n */\r\n public clone(result?: CurveLocationDetail): CurveLocationDetail {\r\n if (result === this)\r\n return result;\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = this.curve;\r\n result.fraction = this.fraction;\r\n result.fraction1 = this.fraction1;\r\n result.point1 = this.point1;\r\n result.point.setFromPoint3d(this.point);\r\n result.vectorInCurveLocationDetail = optionalVectorUpdate(this.vectorInCurveLocationDetail, result.vectorInCurveLocationDetail);\r\n result.a = this.a;\r\n result.curveSearchStatus = this.curveSearchStatus;\r\n return result;\r\n }\r\n\r\n /**\r\n * Updated in this instance.\r\n * * Note that if caller omits `vector` and `a`, those fields are updated to the call-list defaults (NOT left as-is)\r\n * * point and vector updates are by data copy (not capture of pointers)\r\n * @param fraction (required) fraction to install\r\n * @param point (required) point to install\r\n * @param vector (optional) vector to install.\r\n * @param a (optional) numeric value to install.\r\n */\r\n public setFP(fraction: number, point: Point3d, vector?: Vector3d, a: number = 0.0) {\r\n this.fraction = fraction;\r\n this.point.setFrom(point);\r\n this.vectorInCurveLocationDetail = optionalVectorUpdate(vector, this.vectorInCurveLocationDetail);\r\n this.a = a;\r\n }\r\n\r\n /**\r\n * Updated in this instance.\r\n * * Note that if caller omits a`, that field is updated to the call-list default (NOT left as-is)\r\n * * point and vector updates are by data copy (not capture of the ray members)\r\n * @param fraction (required) fraction to install\r\n * @param ray (required) point and vector to install\r\n * @param a (optional) numeric value to install.\r\n */\r\n public setFR(fraction: number, ray: Ray3d, a: number = 0) {\r\n return this.setFP(fraction, ray.origin, ray.direction, a);\r\n }\r\n /** Set the CurvePrimitive pointer, leaving all other properties untouched.\r\n */\r\n public setCurve(curve: CurvePrimitive) { this.curve = curve; }\r\n\r\n /** record the distance from the CurveLocationDetail's point to the parameter point. */\r\n public setDistanceTo(point: Point3d) {\r\n this.a = this.point.distance(point);\r\n }\r\n\r\n /** create with a CurvePrimitive pointer but no coordinate data.\r\n */\r\n public static create(\r\n curve?: CurvePrimitive,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer, fraction, and point coordinates.\r\n */\r\n public static createCurveFractionPoint(\r\n curve: CurvePrimitive | undefined,\r\n fraction: number,\r\n point: Point3d,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point.setFromPoint3d(point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = 0.0;\r\n result.curveSearchStatus = undefined;\r\n return result;\r\n }\r\n /**\r\n * Create a new detail with only ray, fraction, and point.\r\n */\r\n public static createRayFractionPoint(ray: Ray3d, fraction: number, point: Point3d, result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.fraction = fraction;\r\n result.ray = ray;\r\n result.point.setFromPoint3d(point);\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer, fraction, and point coordinates\r\n */\r\n public static createCurveFractionPointDistanceCurveSearchStatus(\r\n curve: CurvePrimitive | undefined,\r\n fraction: number,\r\n point: Point3d,\r\n distance: number,\r\n status: CurveSearchStatus,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point.setFromPoint3d(point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = distance;\r\n result.curveSearchStatus = status;\r\n return result;\r\n }\r\n /** create with curveSearchStatus affected by allowExtension.\r\n * *\r\n */\r\n public static createConditionalMoveSignedDistance(\r\n allowExtension: boolean,\r\n curve: CurvePrimitive,\r\n startFraction: number,\r\n endFraction: number,\r\n requestedSignedDistance: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n let a = requestedSignedDistance;\r\n let status = CurveSearchStatus.success;\r\n if (!allowExtension && !Geometry.isIn01(endFraction)) {\r\n // cap the movement at the endpoint\r\n if (endFraction < 0.0) {\r\n a = - curve.curveLengthBetweenFractions(startFraction, 0.0);\r\n endFraction = 0.0;\r\n status = CurveSearchStatus.stoppedAtBoundary;\r\n } else if (endFraction > 1.0) {\r\n endFraction = 1.0;\r\n a = curve.curveLengthBetweenFractions(startFraction, 1.0);\r\n status = CurveSearchStatus.stoppedAtBoundary;\r\n }\r\n }\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = endFraction;\r\n result.point = curve.fractionToPoint(endFraction, result.point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = a;\r\n result.curveSearchStatus = status;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer and fraction for evaluation.\r\n */\r\n public static createCurveEvaluatedFraction(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point = curve.fractionToPoint(fraction);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.curveSearchStatus = undefined;\r\n result.a = 0.0;\r\n return result;\r\n }\r\n /** create with CurvePrimitive pointer and fraction for evaluation.\r\n */\r\n public static createCurveEvaluatedFractionPointAndDerivative(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n const ray = curve.fractionToPointAndDerivative(fraction);\r\n result.point = ray.origin;\r\n result.vectorInCurveLocationDetail = ray.direction;\r\n result.curveSearchStatus = undefined;\r\n result.a = 0.0;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer and 2 fractions for evaluation.\r\n */\r\n public static createCurveEvaluatedFractionFraction(\r\n curve: CurvePrimitive,\r\n fraction0: number,\r\n fraction1: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction0;\r\n result.point = curve.fractionToPoint(fraction0);\r\n result.fraction1 = fraction1;\r\n result.point1 = curve.fractionToPoint(fraction1);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.curveSearchStatus = undefined;\r\n result.a = 0.0;\r\n return result;\r\n }\r\n\r\n /** create with CurvePrimitive pointer, fraction, and point coordinates.\r\n */\r\n public static createCurveFractionPointDistance(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n point: Point3d,\r\n a: number,\r\n result?: CurveLocationDetail): CurveLocationDetail {\r\n result = result ? result : new CurveLocationDetail();\r\n result.curve = curve;\r\n result.fraction = fraction;\r\n result.point.setFromPoint3d(point);\r\n result.vectorInCurveLocationDetail = undefined;\r\n result.a = a;\r\n result.curveSearchStatus = undefined;\r\n return result;\r\n }\r\n\r\n /** update or create if closer than current contents.\r\n * @param curve candidate curve\r\n * @param fraction candidate fraction\r\n * @param point candidate point\r\n * @param a candidate distance\r\n * @returns true if the given distance is smaller (and hence this detail was updated.)\r\n */\r\n public updateIfCloserCurveFractionPointDistance(\r\n curve: CurvePrimitive,\r\n fraction: number,\r\n point: Point3d,\r\n a: number): boolean {\r\n if (this.a < a)\r\n return false;\r\n CurveLocationDetail.createCurveFractionPointDistance(curve, fraction, point, a, this);\r\n return true;\r\n }\r\n /**\r\n * * Exchange the (fraction,fraction1) and (point, point1) pairs.\r\n * * (Skip each swap if its \"1\" value is undefined)\r\n */\r\n public swapFractionsAndPoints() {\r\n if (this.fraction1 !== undefined) {\r\n const f = this.fraction; this.fraction = this.fraction1; this.fraction1 = f;\r\n }\r\n if (this.point1 !== undefined) {\r\n const p = this.point; this.point = this.point1; this.point1 = p;\r\n }\r\n }\r\n /**\r\n * * return the fraction where f falls between fraction and fraction1.\r\n * * ASSUME fraction1 defined\r\n */\r\n public inverseInterpolateFraction(f: number, defaultFraction: number = 0): number {\r\n const a = Geometry.inverseInterpolate01(this.fraction, this.fraction1!, f);\r\n if (a === undefined)\r\n return defaultFraction;\r\n return a;\r\n }\r\n /**\r\n * Return the detail with smaller `a` value -- detailA returned if equal.\r\n * @param detailA first candidate\r\n * @param detailB second candidate\r\n */\r\n public static chooseSmallerA(detailA: CurveLocationDetail | undefined, detailB: CurveLocationDetail | undefined): CurveLocationDetail | undefined {\r\n if (detailA) {\r\n if (!detailB)\r\n return detailA;\r\n return detailA.a <= detailB.a ? detailA : detailB;\r\n }\r\n return detailB;\r\n }\r\n}\r\n/** Enumeration of configurations for intersections and min/max distance-between-curve\r\n * @public\r\n */\r\nexport enum CurveCurveApproachType {\r\n /** Intersection at a single point */\r\n Intersection = 0,\r\n /** Distinct points on the two curves, with each curve's tangent perpendicular to the chord between the points */\r\n PerpendicularChord = 1,\r\n /** Completely coincident geometry */\r\n CoincidentGeometry = 2,\r\n /** Completely parallel geometry. */\r\n ParallelGeometry = 3,\r\n}\r\n/** A pair of CurveLocationDetail.\r\n * @public\r\n */\r\nexport class CurveLocationDetailPair {\r\n /** The first of the two details ... */\r\n public detailA: CurveLocationDetail;\r\n /** The second of the two details ... */\r\n public detailB: CurveLocationDetail;\r\n /** enumeration of how the detail pairs relate.\r\n * * This is set only by certain closeApproach calculations.\r\n */\r\n public approachType?: CurveCurveApproachType;\r\n\r\n public constructor(detailA?: CurveLocationDetail, detailB?: CurveLocationDetail) {\r\n this.detailA = detailA ? detailA : new CurveLocationDetail();\r\n this.detailB = detailB ? detailB : new CurveLocationDetail();\r\n }\r\n\r\n /** Create a curve detail pair using references to two CurveLocationDetails */\r\n public static createCapture(detailA: CurveLocationDetail, detailB: CurveLocationDetail, result?: CurveLocationDetailPair): CurveLocationDetailPair {\r\n result = result ? result : new CurveLocationDetailPair();\r\n result.detailA = detailA;\r\n result.detailB = detailB;\r\n return result;\r\n }\r\n /** Create a curve detail pair using references to two CurveLocationDetails.\r\n * * optionally install in reversed positions\r\n */\r\n public static createCaptureOptionalReverse(detailA: CurveLocationDetail, detailB: CurveLocationDetail,\r\n reversed: boolean,\r\n result?: CurveLocationDetailPair): CurveLocationDetailPair {\r\n result = result ? result : new CurveLocationDetailPair();\r\n if (reversed) {\r\n result.detailA = detailA;\r\n result.detailB = detailB;\r\n\r\n } else {\r\n result.detailA = detailA;\r\n result.detailB = detailB;\r\n }\r\n return result;\r\n }\r\n\r\n /** Make a deep copy of this CurveLocationDetailPair */\r\n public clone(result?: CurveLocationDetailPair): CurveLocationDetailPair {\r\n result = result ? result : new CurveLocationDetailPair();\r\n result.detailA = this.detailA.clone();\r\n result.detailB = this.detailB.clone();\r\n result.approachType = this.approachType;\r\n return result;\r\n }\r\n /** Swap the details of A, B */\r\n public swapDetails() {\r\n const q = this.detailA;\r\n this.detailA = this.detailB;\r\n this.detailB = q;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"CurveLocationDetail.js","sourceRoot":"","sources":["../../../src/curve/CurveLocationDetail.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Curve\n */\nimport { Geometry } from \"../Geometry\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { CurvePrimitive } from \"./CurvePrimitive\";\n\n/**\n * An enumeration of special conditions being described by a CurveLocationDetail.\n * @public\n */\nexport enum CurveIntervalRole {\n /** This point is an isolated point NOT at a primary vertex. */\n isolated = 0,\n /** This point is an isolated vertex hit */\n isolatedAtVertex = 1,\n /** This is the beginning of an interval */\n intervalStart = 10,\n /** This is an interior point of an interval. */\n intervalInterior = 11,\n /** This is the end of an interval */\n intervalEnd = 12,\n}\n\n/**\n * Return code for CurvePrimitive method `moveSignedDistanceFromFraction`\n * @public\n */\nexport enum CurveSearchStatus {\n /** Unimplemented or zero length curve */\n error,\n /** Complete success of search */\n success = 1,\n /** Search ended prematurely (e.g. at incomplete distance moved) at start or end of curve */\n stoppedAtBoundary = 2,\n}\n\n/**\n * Use to update a vector in case where source and prior result are both possibly undefined.\n * * Any undefined source returns undefined.\n * * For defined source, reuse optional result if available.\n * @param source optional source\n * @param result optional result\n */\nfunction optionalVectorUpdate(source: Vector3d | undefined, result: Vector3d | undefined): Vector3d | undefined {\n if (source) {\n return source.clone(result);\n }\n return undefined;\n}\n\n/**\n * CurveLocationDetail carries point and parameter data about a point evaluated on a curve.\n * * These are returned by a variety of queries.\n * * Particular contents can vary among the queries.\n * @public\n */\nexport class CurveLocationDetail {\n /** The curve being evaluated */\n public curve?: CurvePrimitive;\n /** Optional ray */\n public ray?: Ray3d;\n /** The fractional position along the curve */\n public fraction: number;\n /** Detail condition of the role this point has in some context */\n public intervalRole?: CurveIntervalRole;\n /** The point on the curve */\n public point: Point3d;\n /** A vector (e.g. tangent vector) in context */\n public vectorInCurveLocationDetail?: Vector3d;\n /** A context-specific numeric value. (e.g. a distance) */\n public a: number;\n /**\n * Optional CurveLocationDetail with more detail of location. For instance, a detail for fractional position within\n * a CurveChainWithDistanceIndex returns fraction and distance along the chain as its primary data and\n * further detail of the particular curve within the chain in the childDetail.\n */\n public childDetail?: CurveLocationDetail;\n /**\n * A status indicator for certain searches.\n * * e.g. CurvePrimitive.moveSignedDistanceFromFraction\n */\n public curveSearchStatus?: CurveSearchStatus;\n /** (Optional) second fraction, e.g. end of interval of coincident curves */\n public fraction1?: number;\n /** (Optional) second point, e.g. end of interval of coincident curves */\n public point1?: Point3d;\n /** A context-specific additional point */\n public pointQ: Point3d; // extra point for use in computations\n /** Constructor */\n public constructor() {\n this.pointQ = Point3d.createZero();\n this.fraction = 0;\n this.point = Point3d.createZero();\n this.a = 0.0;\n }\n /** Set the (optional) intervalRole field */\n public setIntervalRole(value: CurveIntervalRole): void {\n this.intervalRole = value;\n }\n /** Set the (optional) fraction1 and point1, using direct assignment (capture!) to point1 */\n public captureFraction1Point1(fraction1: number, point1: Point3d): void {\n this.fraction1 = fraction1;\n this.point1 = point1;\n }\n /** Test if this pair has fraction1 defined */\n public get hasFraction1(): boolean {\n return this.fraction1 !== undefined;\n }\n /** Test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */\n public get isIsolated(): boolean {\n return this.intervalRole === undefined\n || this.intervalRole === CurveIntervalRole.isolated\n || this.intervalRole === CurveIntervalRole.isolatedAtVertex;\n }\n /** Return the fraction delta. (0 if no fraction1) */\n public get fractionDelta(): number {\n return this.fraction1 !== undefined ? this.fraction1 - this.fraction : 0.0;\n }\n /**\n * If (fraction1, point1) are defined, make them the primary (and only) data.\n * * No action if undefined.\n */\n public collapseToEnd() {\n if (this.fraction1 !== undefined) {\n this.fraction = this.fraction1;\n this.fraction1 = undefined;\n }\n if (this.point1) {\n this.point = this.point1;\n this.point1 = undefined;\n }\n }\n /**\n * Make (fraction, point) the primary (and only) data.\n * * No action if undefined.\n */\n public collapseToStart() {\n this.fraction1 = undefined;\n this.point1 = undefined;\n }\n /**\n * Return a complete copy, WITH CAVEATS . . .\n * * curve member is copied as a reference.\n * * point and vector members are cloned.\n */\n public clone(result?: CurveLocationDetail): CurveLocationDetail {\n if (result === this)\n return result;\n result = result ? result : new CurveLocationDetail();\n result.curve = this.curve;\n result.fraction = this.fraction;\n result.fraction1 = this.fraction1;\n result.point1 = this.point1;\n result.point.setFromPoint3d(this.point);\n result.vectorInCurveLocationDetail = optionalVectorUpdate(\n this.vectorInCurveLocationDetail, result.vectorInCurveLocationDetail\n );\n result.a = this.a;\n result.curveSearchStatus = this.curveSearchStatus;\n return result;\n }\n /**\n * Updated in this instance.\n * * Note that if caller omits `vector` and `a`, those fields are updated to the call-list defaults (NOT left as-is)\n * * point and vector updates are by data copy (not capture of pointers)\n * @param fraction (required) fraction to install\n * @param point (required) point to install\n * @param vector (optional) vector to install.\n * @param a (optional) numeric value to install.\n */\n public setFP(fraction: number, point: Point3d, vector?: Vector3d, a: number = 0.0): void {\n this.fraction = fraction;\n this.point.setFrom(point);\n this.vectorInCurveLocationDetail = optionalVectorUpdate(vector, this.vectorInCurveLocationDetail);\n this.a = a;\n }\n /**\n * Updated in this instance.\n * * Note that if caller omits a`, that field is updated to the call-list default (NOT left as-is)\n * * point and vector updates are by data copy (not capture of the ray members)\n * @param fraction (required) fraction to install\n * @param ray (required) point and vector to install\n * @param a (optional) numeric value to install.\n */\n public setFR(fraction: number, ray: Ray3d, a: number = 0): void {\n return this.setFP(fraction, ray.origin, ray.direction, a);\n }\n /** Set the CurvePrimitive pointer, leaving all other properties untouched. */\n public setCurve(curve: CurvePrimitive) {\n this.curve = curve;\n }\n /** Record the distance from the CurveLocationDetail's point to the parameter point. */\n public setDistanceTo(point: Point3d) {\n this.a = this.point.distance(point);\n }\n /** Create with a CurvePrimitive pointer but no coordinate data. */\n public static create(curve?: CurvePrimitive, result?: CurveLocationDetail): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n return result;\n }\n /** Create with CurvePrimitive pointer, fraction, and point coordinates. */\n public static createCurveFractionPoint(\n curve: CurvePrimitive | undefined, fraction: number, point: Point3d, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point.setFromPoint3d(point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = 0.0;\n result.curveSearchStatus = undefined;\n return result;\n }\n /** Create a new detail with only ray, fraction, and point. */\n public static createRayFractionPoint(\n ray: Ray3d, fraction: number, point: Point3d, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.fraction = fraction;\n result.ray = ray;\n result.point.setFromPoint3d(point);\n return result;\n }\n /** Create with CurvePrimitive pointer, fraction, and point coordinates */\n public static createCurveFractionPointDistanceCurveSearchStatus(\n curve: CurvePrimitive | undefined,\n fraction: number,\n point: Point3d,\n distance: number,\n status: CurveSearchStatus,\n result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point.setFromPoint3d(point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = distance;\n result.curveSearchStatus = status;\n return result;\n }\n /** Create with curveSearchStatus affected by allowExtension. */\n public static createConditionalMoveSignedDistance(\n allowExtension: boolean,\n curve: CurvePrimitive,\n startFraction: number,\n endFraction: number,\n requestedSignedDistance: number,\n result?: CurveLocationDetail\n ): CurveLocationDetail {\n let a = requestedSignedDistance;\n let status = CurveSearchStatus.success;\n if (!allowExtension && !Geometry.isIn01(endFraction)) {\n // cap the movement at the endpoint\n if (endFraction < 0.0) {\n a = - curve.curveLengthBetweenFractions(startFraction, 0.0);\n endFraction = 0.0;\n status = CurveSearchStatus.stoppedAtBoundary;\n } else if (endFraction > 1.0) {\n endFraction = 1.0;\n a = curve.curveLengthBetweenFractions(startFraction, 1.0);\n status = CurveSearchStatus.stoppedAtBoundary;\n }\n }\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = endFraction;\n result.point = curve.fractionToPoint(endFraction, result.point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = a;\n result.curveSearchStatus = status;\n return result;\n }\n /** Create with CurvePrimitive pointer and fraction for evaluation. */\n public static createCurveEvaluatedFraction(\n curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point = curve.fractionToPoint(fraction);\n result.vectorInCurveLocationDetail = undefined;\n result.curveSearchStatus = undefined;\n result.a = 0.0;\n return result;\n }\n /** Create with CurvePrimitive pointer and fraction for evaluation. */\n public static createCurveEvaluatedFractionPointAndDerivative(\n curve: CurvePrimitive, fraction: number, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n const ray = curve.fractionToPointAndDerivative(fraction);\n result.point = ray.origin;\n result.vectorInCurveLocationDetail = ray.direction;\n result.curveSearchStatus = undefined;\n result.a = 0.0;\n return result;\n }\n /** Create with CurvePrimitive pointer and 2 fractions for evaluation. */\n public static createCurveEvaluatedFractionFraction(\n curve: CurvePrimitive, fraction0: number, fraction1: number, result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction0;\n result.point = curve.fractionToPoint(fraction0);\n result.fraction1 = fraction1;\n result.point1 = curve.fractionToPoint(fraction1);\n result.vectorInCurveLocationDetail = undefined;\n result.curveSearchStatus = undefined;\n result.a = 0.0;\n return result;\n }\n /** Create with CurvePrimitive pointer, fraction, and point coordinates. */\n public static createCurveFractionPointDistance(\n curve: CurvePrimitive,\n fraction: number,\n point: Point3d,\n a: number,\n result?: CurveLocationDetail\n ): CurveLocationDetail {\n result = result ? result : new CurveLocationDetail();\n result.curve = curve;\n result.fraction = fraction;\n result.point.setFromPoint3d(point);\n result.vectorInCurveLocationDetail = undefined;\n result.a = a;\n result.curveSearchStatus = undefined;\n return result;\n }\n /**\n * Update or create if closer than current contents.\n * @param curve candidate curve\n * @param fraction candidate fraction\n * @param point candidate point\n * @param a candidate distance\n * @returns true if the given distance is smaller (and hence this detail was updated.)\n */\n public updateIfCloserCurveFractionPointDistance(\n curve: CurvePrimitive, fraction: number, point: Point3d, a: number\n ): boolean {\n if (this.a < a)\n return false;\n CurveLocationDetail.createCurveFractionPointDistance(curve, fraction, point, a, this);\n return true;\n }\n /**\n * Exchange the (fraction,fraction1) and (point, point1) pairs.\n * * (Skip each swap if its \"1\" value is undefined)\n */\n public swapFractionsAndPoints(): void {\n if (this.fraction1 !== undefined) {\n const f = this.fraction;\n this.fraction = this.fraction1;\n this.fraction1 = f;\n }\n if (this.point1 !== undefined) {\n const p = this.point;\n this.point = this.point1;\n this.point1 = p;\n }\n }\n /**\n * Return the fraction where f falls between fraction and fraction1.\n * * ASSUME fraction1 defined\n */\n public inverseInterpolateFraction(f: number, defaultFraction: number = 0): number {\n const a = Geometry.inverseInterpolate01(this.fraction, this.fraction1!, f);\n if (a === undefined)\n return defaultFraction;\n return a;\n }\n /**\n * Return the detail with smaller `a` value -- detailA returned if equal.\n * @param detailA first candidate\n * @param detailB second candidate\n */\n public static chooseSmallerA(\n detailA: CurveLocationDetail | undefined, detailB: CurveLocationDetail | undefined\n ): CurveLocationDetail | undefined {\n if (detailA) {\n if (!detailB)\n return detailA;\n return detailA.a <= detailB.a ? detailA : detailB;\n }\n return detailB;\n }\n}\n\n/**\n * Enumeration of configurations for intersections and min/max distance-between-curve\n * @public\n */\nexport enum CurveCurveApproachType {\n /** Intersection at a single point */\n Intersection = 0,\n /** Distinct points on the two curves, with each curve's tangent perpendicular to the chord between the points */\n PerpendicularChord = 1,\n /** Completely coincident geometry */\n CoincidentGeometry = 2,\n /** Completely parallel geometry. */\n ParallelGeometry = 3,\n}\n\n/**\n * A pair of CurveLocationDetail.\n * @public\n */\nexport class CurveLocationDetailPair {\n /** The first of the two details ... */\n public detailA: CurveLocationDetail;\n /** The second of the two details ... */\n public detailB: CurveLocationDetail;\n /**\n * Enumeration of how the detail pairs relate.\n * * This is set only by certain closeApproach calculations.\n */\n public approachType?: CurveCurveApproachType;\n\n public constructor(detailA?: CurveLocationDetail, detailB?: CurveLocationDetail) {\n this.detailA = detailA ? detailA : new CurveLocationDetail();\n this.detailB = detailB ? detailB : new CurveLocationDetail();\n }\n /** Create a curve detail pair using references to two CurveLocationDetails */\n public static createCapture(\n detailA: CurveLocationDetail, detailB: CurveLocationDetail, result?: CurveLocationDetailPair\n ): CurveLocationDetailPair {\n result = result ? result : new CurveLocationDetailPair();\n result.detailA = detailA;\n result.detailB = detailB;\n return result;\n }\n /**\n * Create a curve detail pair using references to two CurveLocationDetails.\n * * optionally install in reversed positions\n */\n public static createCaptureOptionalReverse(\n detailA: CurveLocationDetail, detailB: CurveLocationDetail, reversed: boolean, result?: CurveLocationDetailPair\n ): CurveLocationDetailPair {\n result = result ? result : new CurveLocationDetailPair();\n if (reversed) {\n result.detailA = detailA;\n result.detailB = detailB;\n\n } else {\n result.detailA = detailA;\n result.detailB = detailB;\n }\n return result;\n }\n /** Make a deep copy of this CurveLocationDetailPair */\n public clone(result?: CurveLocationDetailPair): CurveLocationDetailPair {\n result = result ? result : new CurveLocationDetailPair();\n result.detailA = this.detailA.clone();\n result.detailB = this.detailB.clone();\n result.approachType = this.approachType;\n return result;\n }\n /** Swap the details of A, B */\n public swapDetails() {\n const q = this.detailA;\n this.detailA = this.detailB;\n this.detailB = q;\n }\n}\n"]}
|