@itwin/core-geometry 5.1.2 → 5.1.3-experimental.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 +6 -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.js.map +1 -1
- package/lib/cjs/curve/Arc3d.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/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/OffsetOptions.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- 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.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.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/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.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/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- 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.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.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.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.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.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js.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/SmallSystem.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/IndexedPolyfaceWalker.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/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.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/serialization/SerializationHelpers.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.js.map +1 -1
- package/lib/esm/curve/Arc3d.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/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/OffsetOptions.js.map +1 -1
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js.map +1 -1
- 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.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ChainCollectorContext.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/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.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/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- 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.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.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.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.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.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js.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/SmallSystem.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/IndexedPolyfaceWalker.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/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.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/serialization/SerializationHelpers.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bezier1dNd.js","sourceRoot":"","sources":["../../../src/bspline/Bezier1dNd.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 Bspline\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\nimport { Point3dArray } from \"../geometry3d/PointHelpers\";\nimport { Segment1d } from \"../geometry3d/Segment1d\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { BezierCoffs, UnivariateBezier } from \"../numerics/BezierPolynomials\";\nimport { KnotVector } from \"./KnotVector\";\n\n/**\n * Shared implementation details for derived bezier curve classes\n * * BezierCurve3d implements with blockSize 3.\n * * BezierCurve3dH implements with blockSize 4.\n * @public\n */\nexport class Bezier1dNd {\n private _packedData: Float64Array;\n private _order: number; // bezier order. probably low\n private _blockSize: number; // loosely expected to be 1 to 4.\n private _basis: BezierCoffs; // server for basis queries. It carries coefficients that we don't use.\n // constructor CAPTURES the control points array.\n public constructor(blockSize: number, polygon: Float64Array) {\n this._blockSize = blockSize;\n this._order = Math.floor(polygon.length / blockSize); // This should be an integer!!!\n this._packedData = polygon;\n this._basis = new UnivariateBezier(this._order);\n }\n /**\n * Return a clone of the data array.\n * @param result optional destination array. If not the _same_ size as the data array, a new array is returned.\n */\n public clonePolygon(result?: Float64Array): Float64Array {\n const n = this._packedData.length;\n if (!result || result.length !== n)\n return this._packedData.slice();\n /** move data into the supplied result */\n for (let i = 0; i < n; i++)\n result[i] = this._packedData[i];\n return result;\n }\n /** Return the bezier order */\n public get order() { return this._order; }\n /** return the packed data array. This is a REFERENCE to the array. */\n public get packedData() { return this._packedData; }\n /** Create a Bezier1dNd, using the structure of `data[0]` to determine the bezier order. */\n public static create(data: Point2d[] | Point3d[] | Point4d[]): Bezier1dNd | undefined {\n if (data.length < 1)\n return undefined;\n if (data[0] instanceof Point3d) {\n const polygon = new Float64Array(data.length * 3);\n let i = 0;\n for (const p of (data as Point3d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n polygon[i++] = p.z;\n }\n return new Bezier1dNd(3, polygon);\n } else if (data[0] instanceof Point4d) {\n const polygon = new Float64Array(data.length * 4);\n let i = 0;\n for (const p of (data as Point4d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n polygon[i++] = p.z;\n polygon[i++] = p.w;\n }\n return new Bezier1dNd(4, polygon);\n } else if (data[0] instanceof Point2d) {\n const polygon = new Float64Array(data.length * 2);\n let i = 0;\n for (const p of (data as Point2d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n }\n return new Bezier1dNd(2, polygon);\n }\n return undefined;\n }\n /**\n * Return the curve value at bezier fraction `s`.\n * @param s bezier parameter for evaluation\n * @param buffer optional destination of length `blockSize`. If insufficient length, a new array is returned.\n * @return buffer of length `blockSize`.\n */\n public evaluate(s: number, buffer?: Float64Array): Float64Array {\n return this._basis.sumBasisFunctions(s, this._packedData, this._blockSize, buffer);\n }\n /**\n * Return the curve derivative value at bezier fraction `s`.\n * @param s bezier parameter for evaluation\n * @param buffer optional destination of length `blockSize`. If insufficient length, a new array is returned.\n * @return buffer of length `blockSize`.\n */\n public evaluateDerivative(s: number, buffer?: Float64Array): Float64Array {\n return this._basis.sumBasisFunctionDerivatives(s, this._packedData, this._blockSize, buffer);\n }\n /**\n * Return a point of the polygon as a simple array.\n * @param i index of desired point\n * @param buffer optional destination of length `blockSize`. If insufficient length, a new array is returned.\n * @return point as simple array of length `blockSize`, or undefined if index out of range.\n */\n public getPolygonPoint(i: number, buffer?: Float64Array): Float64Array | undefined {\n if (!buffer || buffer.length < this._blockSize)\n buffer = new Float64Array(this._blockSize);\n if (i >= 0 && i < this._order) {\n const k0 = this._blockSize * i;\n for (let k = 0; k < this._blockSize; k++)\n buffer[k] = this._packedData[k0 + k];\n return buffer;\n }\n return undefined;\n }\n /** set a single point of the polygon as a simple array. */\n public setPolygonPoint(i: number, buffer: Float64Array) {\n if (i >= 0 && i < this._order) {\n const k0 = this._blockSize * i;\n for (let k = 0; k < this._blockSize; k++)\n this._packedData[k0 + k] = buffer[k];\n }\n }\n /** Load order * dimension doubles from data[dimension * spanIndex] as poles\n * @param data packed source array. block size in `data` assumed to match dimension for this.\n * @param spanIndex block index in data.\n */\n public loadSpanPoles(data: Float64Array, spanIndex: number) {\n let k = spanIndex * this._blockSize;\n for (let i = 0; i < this._packedData.length; i++)\n this._packedData[i] = data[k++];\n }\n /** Load order * (dataDimension + 1) doubles from data[dataDimension * spanIndex] as poles with weight inserted\n * @param data packed array of data.\n * @param dataDimension dimension of data. Must have `dataDimension+1=this.order`\n * @param spanIndex index of first data block to access.\n * @param weight weight to append to each block\n */\n public loadSpanPolesWithWeight(data: Float64Array, dataDimension: number, spanIndex: number, weight: number) {\n let destIndex = 0;\n const order = this._order;\n let dataIndex = spanIndex * dataDimension;\n for (let i = 0; i < order; i++) {\n for (let j = 0; j < dataDimension; j++)\n this._packedData[destIndex++] = data[dataIndex++];\n this._packedData[destIndex++] = weight;\n }\n }\n /** return a json array of arrays with each control point as a lower level array of numbers */\n public unpackToJsonArrays(): any[] {\n return Point3dArray.unpackNumbersToNestedArrays(this._packedData, this._blockSize);\n }\n /** equality test with usual metric tolerances */\n public isAlmostEqual(other: any): boolean {\n if (other instanceof Bezier1dNd) {\n if (this._blockSize !== other._blockSize)\n return false;\n if (this._order !== other._order)\n return false;\n if (this._packedData.length !== other._packedData.length)\n return false;\n for (let i = 0; i < this._packedData.length; i++) {\n if (!Geometry.isSameCoordinate(this._packedData[i], other._packedData[i]))\n return false;\n }\n return true;\n }\n return false;\n }\n /** block-by-block reversal */\n public reverseInPlace() {\n const m = this._blockSize;\n const n = this._order;\n let i, j;\n let a;\n for (i = 0, j = (n - 1) * m; i < j; i += m, j -= m) {\n for (let k = 0; k < m; k++) {\n a = this._packedData[i + k];\n this._packedData[i + k] = this._packedData[j + k];\n this._packedData[j + k] = a;\n }\n }\n }\n\n /**\n * interpolate at `fraction` between poleA and poleB.\n * * Data is left \"in place\" in poleIndexA\n * @param poleIndexA first pole index\n * @param fraction fractional position\n * @param poleIndexB second pole index\n */\n public interpolatePoleInPlace(poleIndexA: number, fraction: number, poleIndexB: number) {\n let i0 = poleIndexA * this._blockSize;\n let i1 = poleIndexB * this._blockSize;\n const data = this._packedData;\n for (let i = 0; i < this._blockSize; i++ , i0++ , i1++) {\n data[i0] += fraction * (data[i1] - data[i0]);\n }\n }\n\n /**\n * Compute new control points to \"clamp\" bspline unsaturated support to saturated form.\n * * At input time, the control points are associated with the input knots (unsaturated)\n * * At output, the control points are modified by repeated knot insertion to be fully clamped.\n * @param knots knot values for the current (unsaturated) pole set\n * @param spanIndex index of span whose (unsaturated) poles are in the bezier.\n */\n public saturateInPlace(knots: KnotVector, spanIndex: number): boolean {\n const degree = knots.degree;\n const kA = spanIndex + degree - 1; // left knot index of the active span\n const kB = kA + 1;\n if (spanIndex < 0 || spanIndex >= knots.numSpans)\n return false;\n const knotArray = knots.knots;\n const knotA = knotArray[kA];\n const knotB = knotArray[kB];\n this.setInterval(knotA, knotB);\n if (knotB <= knotA + KnotVector.knotTolerance)\n return false;\n for (let numInsert = degree - 1; numInsert > 0; numInsert--) {\n // left numInsert poles are pulled forward\n let k0 = kA - numInsert;\n if (knotArray[k0] < knotA) {\n let k1 = kB;\n for (let i = 0; i < numInsert; i++ , k0++ , k1++) {\n const knot0 = knotArray[k0];\n const knot1 = knotArray[k1];\n const fraction = (knotA - knot0) / (knot1 - knot0);\n this.interpolatePoleInPlace(i, fraction, i + 1);\n }\n }\n }\n for (let numInsert = degree - 1; numInsert > 0; numInsert--) {\n let k2 = kB + numInsert;\n if (knotArray[k2] > knotB) {\n for (let i = 0; i < numInsert; i++ , k2--) {\n const knot2 = knotArray[k2]; // right side of moving window\n // left side of window ia always the (previously saturated) knotA\n const fraction = (knotB - knot2) / (knotA - knot2);\n this.interpolatePoleInPlace(degree - i, fraction, degree - i - 1);\n }\n }\n }\n return true;\n }\n /**\n * Saturate a univariate bspline coefficient array in place\n * * On input, the array is the coefficients of one span of a bspline, packed in an array of `(knots.order)` values.\n * * These are modified in place, and on return are a bezier for the same knot interval.\n * @param coffs input as bspline coefficients, returned as bezier coefficients\n * @param knots knot vector\n * @param spanIndex index of span whose (unsaturated) poles are in the coefficients.\n */\n public static saturate1dInPlace(coffs: Float64Array, knots: KnotVector, spanIndex: number): boolean {\n const degree = knots.degree;\n const kA = spanIndex + degree - 1; // left knot index of the active span\n const kB = kA + 1;\n if (spanIndex < 0 || spanIndex >= knots.numSpans)\n return false;\n const knotArray = knots.knots;\n const knotA = knotArray[kA];\n const knotB = knotArray[kB];\n if (knotB <= knotA + KnotVector.knotTolerance)\n return false;\n for (let numInsert = degree - 1; numInsert > 0; numInsert--) {\n // left numInsert poles are pulled forward\n let k0 = kA - numInsert;\n if (knotArray[k0] < knotA) {\n let k1 = kB;\n for (let i = 0; i < numInsert; i++ , k0++ , k1++) {\n const knot0 = knotArray[k0];\n const knot1 = knotArray[k1];\n const fraction = (knotA - knot0) / (knot1 - knot0);\n coffs[i] = coffs[i] + fraction * (coffs[i + 1] - coffs[i]);\n }\n }\n }\n for (let numInsert = degree - 1; numInsert > 0; numInsert--) {\n let k2 = kB + numInsert;\n let k;\n if (knotArray[k2] > knotB) {\n for (let i = 0; i < numInsert; i++ , k2--) {\n const knot2 = knotArray[k2]; // right side of moving window\n // left side of window is always the (previously saturated) knotA\n const fraction = (knotB - knot2) / (knotA - knot2);\n k = degree - i;\n coffs[k] += fraction * (coffs[k - 1] - coffs[k]);\n }\n }\n }\n return true;\n }\n /**\n * Apply deCasteljau interpolations to isolate a smaller bezier polygon, representing interval 0..fraction of the original\n * @param fraction \"end\" fraction for split.\n * @returns false if fraction is 0 or 1 -- no changes applied.\n */\n public subdivideInPlaceKeepLeft(fraction: number): boolean {\n if (Geometry.isAlmostEqualNumber(fraction, 1.0))\n return true;\n if (Geometry.isAlmostEqualNumber(fraction, 0.0))\n return false;\n const g = 1.0 - fraction; // interpolations will pull towards right indices\n const order = this.order;\n for (let level = 1; level < order; level++) {\n for (let i1 = order - 1; i1 >= level; i1--) {\n this.interpolatePoleInPlace(i1, g, i1 - 1); // leave updates to right\n }\n }\n return true;\n }\n\n /**\n * Apply deCasteljau interpolations to isolate a smaller bezier polygon, representing interval fraction..1 of the original\n * @param fraction \"start\" fraction for split.\n * @returns false if fraction is 0 or 1 -- no changes applied.\n */\n public subdivideInPlaceKeepRight(fraction: number): boolean {\n if (Geometry.isAlmostEqualNumber(fraction, 0.0))\n return true;\n if (Geometry.isAlmostEqualNumber(fraction, 1.0))\n return false;\n const order = this.order;\n for (let level = 1; level < order; level++) {\n for (let i0 = 0; i0 + level < order; i0++)\n this.interpolatePoleInPlace(i0, fraction, i0 + 1); // leave updates to left.\n }\n return true;\n }\n\n /**\n * Saturate a univariate bspline coefficient array in place\n * @param fraction0 fraction for first split. This is the start of the output polygon\n * @param fraction1 fraction for second split. This is the end of the output polygon\n * @return false if fractions are (almost) identical.\n */\n public subdivideToIntervalInPlace(fraction0: number, fraction1: number): boolean {\n if (Geometry.isAlmostEqualNumber(fraction0, fraction1))\n return false;\n if (fraction1 < fraction0) {\n this.subdivideToIntervalInPlace(fraction1, fraction0);\n this.reverseInPlace();\n return true;\n }\n this.subdivideInPlaceKeepLeft(fraction1);\n this.subdivideInPlaceKeepRight(fraction0 / fraction1);\n return true;\n }\n\n /** optional interval for mapping to a parent object */\n public interval?: Segment1d;\n /** create or update the mapping to parent curve. */\n public setInterval(a: number, b: number) {\n this.interval = Segment1d.create(a, b, this.interval);\n }\n /** map a fraction to the parent space. */\n public fractionToParentFraction(fraction: number): number { return this.interval ? this.interval.fractionToPoint(fraction) : fraction; }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Bezier1dNd.js","sourceRoot":"","sources":["../../../src/bspline/Bezier1dNd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BezierCurve3d.js","sourceRoot":"","sources":["../../../src/bspline/BezierCurve3d.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 Bspline\n */\n\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { BezierPolynomialAlgebra } from \"../numerics/BezierPolynomials\";\nimport { BezierCurveBase } from \"./BezierCurveBase\";\n\n\n/**\n * 3d Bezier curve class.\n * * Use BezierCurve3dH if the curve has weights.\n * * The control points (xyz) are managed as the _packedData buffer in the _polygon member of BezierCurveBase.\n * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Bezier/\n * @public\n */\nexport class BezierCurve3d extends BezierCurveBase {\n /** test if `other` is also a BezierCurve3d. */\n public isSameGeometryClass(other: any): boolean { return other instanceof BezierCurve3d; }\n /** apply the transform to the control points. */\n public tryTransformInPlace(transform: Transform): boolean {\n const data = this._workData0;\n for (let i = 0; i < this._polygon.order; i++) {\n this._polygon.getPolygonPoint(i, data);\n transform.multiplyXYZToFloat64Array(data[0], data[1], data[2], data);\n this._polygon.setPolygonPoint(i, data);\n }\n return true;\n }\n private _workRay0: Ray3d;\n private _workRay1: Ray3d;\n /** Return a specific pole as a full `[x,y,z] Point3d` */\n public getPolePoint3d(i: number, result?: Point3d): Point3d | undefined {\n const data = this._polygon.getPolygonPoint(i, this._workData0);\n if (data)\n return Point3d.create(data[0], data[1], data[2], result);\n return undefined;\n }\n /** Return a specific pole as a full `[w*x,w*y,w*z, w] Point4d` */\n public getPolePoint4d(i: number, result?: Point4d): Point4d | undefined {\n const data = this._polygon.getPolygonPoint(i, this._workData0);\n if (data)\n return Point4d.create(data[0], data[1], data[2], 1.0, result);\n return undefined;\n }\n /**\n * Capture a polygon as the data for a new `BezierCurve3d`\n * @param polygon complete packed data and order.\n */\n private constructor(polygon: Float64Array) {\n super(3, polygon);\n this._workRay0 = Ray3d.createXAxis();\n this._workRay1 = Ray3d.createXAxis();\n }\n /** Return poles as a linestring */\n public copyPointsAsLineString(): LineString3d {\n const result = LineString3d.create();\n for (let i = 0; i < this._polygon.order; i++)\n result.addPoint(this.getPolePoint3d(i)!);\n return result;\n }\n /** Create a curve with given points.\n * * If input is `Point2d[]`, the points are promoted with `z=0` and `w=1`\n * * If input is `Point3d[]`, the points are promoted with w=1`\n *\n */\n public static create(data: Point3d[] | Point2d[]): BezierCurve3d | undefined {\n if (data.length < 1)\n return undefined;\n const polygon = new Float64Array(data.length * 3);\n if (data[0] instanceof Point3d) {\n let i = 0;\n for (const p of (data as Point3d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n polygon[i++] = p.z;\n }\n return new BezierCurve3d(polygon);\n } else if (data[0] instanceof Point2d) {\n let i = 0;\n for (const p of (data as Point2d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n polygon[i++] = 0.0;\n }\n return new BezierCurve3d(polygon);\n }\n return undefined;\n }\n /** create a bezier curve of specified order, filled with zeros */\n public static createOrder(order: number): BezierCurve3d {\n const polygonArray = new Float64Array(order * 3); // This is initialized to zeros!!\n return new BezierCurve3d(polygonArray);\n }\n /** Load order * 3 doubles from data[3 * spanIndex] as poles */\n public loadSpanPoles(data: Float64Array, spanIndex: number) {\n this._polygon.loadSpanPoles(data, spanIndex);\n }\n /** Clone as a bezier 3d. */\n public override clone(): BezierCurve3d {\n return new BezierCurve3d(this._polygon.clonePolygon());\n }\n /** Return a (de-weighted) point on the curve. If de-weight fails, returns 000 */\n public fractionToPoint(fraction: number, result?: Point3d): Point3d {\n this._polygon.evaluate(fraction, this._workData0);\n return Point3d.create(this._workData0[0], this._workData0[1], this._workData0[2], result);\n }\n /** Return the cartesian point and derivative vector. */\n public fractionToPointAndDerivative(fraction: number, result?: Ray3d): Ray3d {\n this._polygon.evaluate(fraction, this._workData0);\n this._polygon.evaluateDerivative(fraction, this._workData1);\n return Ray3d.createXYZUVW(this._workData0[0], this._workData0[1], this._workData0[2], this._workData1[0], this._workData1[1], this._workData1[2], result);\n }\n /** Construct a plane with\n * * origin at the fractional position along the arc\n * * x axis is the first derivative, i.e. tangent along the arc\n * * y axis is the second derivative, i.e. in the plane and on the center side of the tangent.\n * If the arc is circular, the second derivative is directly towards the center\n */\n public fractionToPointAnd2Derivatives(fraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const epsilon = 1.0e-8;\n const a = 1.0 / (2.0 * epsilon);\n if (!result)\n result = Plane3dByOriginAndVectors.createXYPlane();\n const ray = this.fractionToPointAndDerivative(fraction, this._workRay0);\n result.origin.setFrom(ray.origin);\n result.vectorU.setFrom(ray.direction);\n const ray0 = this.fractionToPointAndDerivative(fraction - epsilon, this._workRay0);\n const ray1 = this.fractionToPointAndDerivative(fraction + epsilon, this._workRay1);\n Vector3d.createAdd2Scaled(ray0.direction, -a, ray1.direction, a, result.vectorV);\n return result;\n }\n /** Near-equality test on poles. */\n public override isAlmostEqual(other: any): boolean {\n if (other instanceof BezierCurve3d) {\n return this._polygon.isAlmostEqual(other._polygon);\n }\n return false;\n }\n /** Second step of double dispatch: call `handler.handleBezierCurve3d(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleBezierCurve3d(this);\n }\n /** Extend `rangeToExtend`, using candidate extrema at\n * * both end points\n * * any internal extrema in x,y,z\n */\n public extendRange(rangeToExtend: Range3d, transform?: Transform) {\n const order = this.order;\n if (!transform) {\n this.allocateAndZeroBezierWorkData(order - 1, 0, 0);\n const bezier = this._workBezier!;\n this.getPolePoint3d(0, this._workPoint0);\n rangeToExtend.extend(this._workPoint0);\n this.getPolePoint3d(order - 1, this._workPoint0);\n rangeToExtend.extend(this._workPoint0);\n for (let axisIndex = 0; axisIndex < 3; axisIndex++) {\n BezierPolynomialAlgebra.componentDifference(bezier.coffs, this._polygon.packedData, 3, order, axisIndex);\n const roots = bezier.roots(0.0, true);\n if (roots) {\n for (const r of roots) {\n this.fractionToPoint(r, this._workPoint0);\n rangeToExtend.extend(this._workPoint0);\n }\n }\n }\n } else {\n this.allocateAndZeroBezierWorkData(order - 1, order, 0);\n const bezier = this._workBezier!;\n const componentCoffs = this._workCoffsA!; // to hold transformed copy of x,y,z in turn.\n\n this.getPolePoint3d(0, this._workPoint0);\n rangeToExtend.extendTransformedPoint(transform, this._workPoint0);\n this.getPolePoint3d(order - 1, this._workPoint0);\n rangeToExtend.extendTransformedPoint(transform, this._workPoint0);\n const data = this._polygon.packedData;\n for (let axisIndex = 0; axisIndex < 3; axisIndex++) {\n // apply one row of the transform to get the transformed coff by itself\n for (let i = 0, k = 0; i < order; i++, k += 3)\n componentCoffs[i] = transform.multiplyComponentXYZ(axisIndex, data[k], data[k + 1], data[k + 2]);\n BezierPolynomialAlgebra.univariateDifference(componentCoffs, bezier.coffs);\n const roots = bezier.roots(0.0, true);\n if (roots && roots.length > 0) {\n for (const r of roots) {\n this.fractionToPoint(r, this._workPoint0);\n rangeToExtend.extendTransformedPoint(transform, this._workPoint0);\n }\n }\n }\n\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BezierCurve3d.js","sourceRoot":"","sources":["../../../src/bspline/BezierCurve3d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BezierCurve3dH.js","sourceRoot":"","sources":["../../../src/bspline/BezierCurve3dH.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 Bspline\n */\n\nimport { CurveLocationDetail } from \"../curve/CurveLocationDetail\";\nimport { Geometry } from \"../Geometry\";\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Matrix4d } from \"../geometry4d/Matrix4d\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { BezierPolynomialAlgebra } from \"../numerics/BezierPolynomials\";\nimport { BezierCurveBase } from \"./BezierCurveBase\";\n\n/** 3d curve with homogeneous weights.\n * * A control point with weight w and cartesian (projected) coordinates x,y,z has the weight multiplied into the coordinates,\n * hence the control point as stored is (xw, yw, zw, w).\n * @public\n */\nexport class BezierCurve3dH extends BezierCurveBase {\n /** test if `other` is also a BezierCurve3dH. */\n public isSameGeometryClass(other: any): boolean { return other instanceof BezierCurve3dH; }\n /**\n * Apply (multiply by) an affine transform\n * @param transform\n */\n public tryTransformInPlace(transform: Transform): boolean {\n const data = this._workData0;\n for (let i = 0; i < this._polygon.order; i++) {\n this._polygon.getPolygonPoint(i, data);\n transform.multiplyXYZWToFloat64Array(data[0], data[1], data[2], data[3], data);\n this._polygon.setPolygonPoint(i, data);\n }\n return true;\n }\n /**\n * Apply (multiply by) a perspective transform\n * @param matrix\n */\n public tryMultiplyMatrix4dInPlace(matrix: Matrix4d) {\n matrix.multiplyBlockedFloat64ArrayInPlace(this._polygon.packedData);\n }\n private _workRay0: Ray3d;\n private _workRay1: Ray3d;\n /** Return a specific pole as a full `[x,y,z,x] Point4d` */\n public getPolePoint4d(i: number, result?: Point4d): Point4d | undefined {\n const data = this._polygon.getPolygonPoint(i, this._workData0);\n if (data)\n return Point4d.create(data[0], data[1], data[2], data[3], result);\n return undefined;\n }\n /** Return a specific pole normalized to weight 1\n */\n public getPolePoint3d(i: number, result?: Point3d): Point3d | undefined {\n const data = this._polygon.getPolygonPoint(i, this._workData0);\n if (data)\n return Point3d.createFromPackedXYZW(data, 0, result);\n return undefined;\n }\n /**\n * Returns true if all weights are within tolerance of 1.0\n */\n public isUnitWeight(tolerance?: number): boolean {\n if (tolerance === undefined)\n tolerance = Geometry.smallAngleRadians;\n const aLow = 1.0 - tolerance;\n const aHigh = 1.0 + tolerance;\n const data = this._polygon.packedData;\n const n = data.length;\n let a;\n for (let i = 3; i < n; i += 4) {\n a = data[i];\n if (a < aLow || a > aHigh)\n return false;\n }\n return true;\n }\n /**\n * Capture a polygon as the data for a new `BezierCurve3dH`\n * @param polygon complete packed data and order.\n */\n private constructor(polygon: Float64Array) {\n super(4, polygon);\n this._workRay0 = Ray3d.createXAxis();\n this._workRay1 = Ray3d.createXAxis();\n }\n /** Create a curve with given points.\n * * If input is `Point2d[]`, the points are promoted with `z=0` and `w=1`\n * * If input is `Point3d[]`, the points are promoted with w=1`\n *\n */\n public static create(data: Point3d[] | Point4d[] | Point2d[]): BezierCurve3dH | undefined {\n if (data.length < 1)\n return undefined;\n const polygon = new Float64Array(data.length * 4);\n if (data[0] instanceof Point3d) {\n let i = 0;\n for (const p of (data as Point3d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n polygon[i++] = p.z;\n polygon[i++] = 1.0;\n }\n return new BezierCurve3dH(polygon);\n } else if (data[0] instanceof Point4d) {\n let i = 0;\n for (const p of (data as Point4d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n polygon[i++] = p.z;\n polygon[i++] = p.w;\n }\n return new BezierCurve3dH(polygon);\n } else if (data[0] instanceof Point2d) {\n let i = 0;\n for (const p of (data as Point2d[])) {\n polygon[i++] = p.x;\n polygon[i++] = p.y;\n polygon[i++] = 0.0;\n polygon[i++] = 1.0;\n }\n return new BezierCurve3dH(polygon);\n }\n return undefined;\n }\n /** create a bezier curve of specified order, filled with zeros */\n public static createOrder(order: number): BezierCurve3dH {\n const polygonArray = new Float64Array(order * 4); // and we trust that this is all zeros !!!\n return new BezierCurve3dH(polygonArray);\n }\n /** Load order * 4 doubles from data[3 * spanIndex] as poles (with added weight) */\n public loadSpan3dPolesWithWeight(data: Float64Array, spanIndex: number, weight: number) {\n this._polygon.loadSpanPolesWithWeight(data, 3, spanIndex, weight);\n }\n /** Load order * 4 doubles from data[3 * spanIndex] as poles (with added weight) */\n public loadSpan4dPoles(data: Float64Array, spanIndex: number) {\n this._polygon.loadSpanPoles(data, spanIndex);\n }\n /** Clone the entire curve. */\n public override clone(): BezierCurve3dH {\n return new BezierCurve3dH(this._polygon.clonePolygon());\n }\n /** Return a (deweighted) point on the curve. If deweight fails, returns 000 */\n public fractionToPoint(fraction: number, result?: Point3d): Point3d {\n this._polygon.evaluate(fraction, this._workData0);\n result = Point3d.createFromPackedXYZW(this._workData0, 0, result);\n return result ? result : Point3d.createZero();\n }\n /** Return a (deweighted) point on the curve. If deweight fails, returns 000 */\n public fractionToPoint4d(fraction: number, result?: Point4d): Point4d {\n this._polygon.evaluate(fraction, this._workData0);\n result = Point4d.createFromPacked(this._workData0, 0, result);\n return result ? result : Point4d.createZero();\n }\n /** Return the cartesian point and derivative vector. */\n public fractionToPointAndDerivative(fraction: number, result?: Ray3d): Ray3d {\n this._polygon.evaluate(fraction, this._workData0);\n this._polygon.evaluateDerivative(fraction, this._workData1);\n result = Ray3d.createWeightedDerivative(this._workData0, this._workData1, result);\n if (result)\n return result;\n // Bad. Very Bad. Return origin and x axis. Should be undefined, but usual cartesian types do not allow that\n return Ray3d.createXAxis();\n }\n /** Construct a plane with\n * * origin at the fractional position along the arc\n * * x axis is the first derivative, i.e. tangent along the arc\n * * y axis is the second derivative, i.e. in the plane and on the center side of the tangent.\n * If the arc is circular, the second derivative is directly towards the center\n */\n public fractionToPointAnd2Derivatives(fraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const epsilon = 1.0e-8;\n const a = 1.0 / (2.0 * epsilon);\n if (!result)\n result = Plane3dByOriginAndVectors.createXYPlane();\n const ray = this.fractionToPointAndDerivative(fraction, this._workRay0);\n result.origin.setFrom(ray.origin);\n result.vectorU.setFrom(ray.direction);\n const ray0 = this.fractionToPointAndDerivative(fraction - epsilon, this._workRay0);\n const ray1 = this.fractionToPointAndDerivative(fraction + epsilon, this._workRay1);\n Vector3d.createAdd2Scaled(ray0.direction, -a, ray1.direction, a, result.vectorV);\n return result;\n }\n /** test for nearly equal control points */\n public override isAlmostEqual(other: any): boolean {\n if (other instanceof BezierCurve3dH) {\n return this._polygon.isAlmostEqual(other._polygon);\n }\n return false;\n }\n /** Second step of double dispatch: call `handler.handleBezierCurve3dH(this)` */\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\n return handler.handleBezierCurve3dH(this);\n }\n /**\n * Form dot products of each pole with given coefficients. Return as entries in products array.\n * @param products array of (scalar) dot products\n * @param ax x coefficient\n * @param ay y coefficient\n * @param az z coefficient\n * @param aw w coefficient\n */\n public poleProductsXYZW(products: Float64Array, ax: number, ay: number, az: number, aw: number) {\n const n = this.numPoles;\n const data = this._polygon.packedData;\n for (let i = 0, k = 0; i < n; i++, k += 4)\n products[i] = ax * data[k] + ay * data[k + 1] + az * data[k + 2] + aw * data[k + 3];\n }\n /** Find the closest point within the bezier span, using true perpendicular test (but no endpoint test)\n * * If closer than previously recorded, update the CurveLocationDetail\n * * This assumes this bezier is saturated.\n * @param spacePoint point being projected\n * @param detail pre-allocated detail to record (evolving) closest point.\n * @returns true if an updated occurred, false if either (a) no perpendicular projections or (b) perpendiculars were not closer.\n */\n public updateClosestPointByTruePerpendicular(spacePoint: Point3d, detail: CurveLocationDetail,\n testAt0: boolean = false,\n testAt1: boolean = false): boolean {\n let numUpdates = 0;\n let roots: number[] | undefined;\n if (this.isUnitWeight()) {\n // unweighted !!!\n const productOrder = 2 * this.order - 2;\n this.allocateAndZeroBezierWorkData(productOrder, 0, 0);\n const bezier = this._workBezier!;\n // closestPoint condition is:\n // (spacePoint - curvePoint) DOT curveTangent = 0;\n // Each product (x,y,z) of the DOT is the product of two bezier polynomials\n BezierPolynomialAlgebra.accumulateScaledShiftedComponentTimesComponentDelta(bezier.coffs, this._polygon.packedData, 4, this.order, 1.0, 0, -spacePoint.x, 0);\n BezierPolynomialAlgebra.accumulateScaledShiftedComponentTimesComponentDelta(bezier.coffs, this._polygon.packedData, 4, this.order, 1.0, 1, -spacePoint.y, 1);\n BezierPolynomialAlgebra.accumulateScaledShiftedComponentTimesComponentDelta(bezier.coffs, this._polygon.packedData, 4, this.order, 1.0, 2, -spacePoint.z, 2);\n roots = bezier.roots(0.0, true);\n } else {\n // This bezier has weights.\n // The pure cartesian closest point condition is\n // (spacePoint - X/w) DOT (X' w - w' X)/ w^2 = 0\n // ignoring denominator and using bezier coefficient differences for the derivative, making the numerator 0 is\n // (w * spacePoint - X) DOT ( DELTA X * w - DELTA w * X) = 0\n const orderA = this.order;\n const orderB = 2 * this.order - 2; // products of component and component difference.\n const productOrder = orderA + orderB - 1;\n this.allocateAndZeroBezierWorkData(productOrder, orderA, orderB);\n const bezier = this._workBezier!;\n const workA = this._workCoffsA!;\n const workB = this._workCoffsB!;\n const packedData = this._polygon.packedData;\n for (let i = 0; i < 3; i++) {\n // x representing loop pass: (w * spacePoint.x - curve.x(s)) * (curveDelta.x(s) * curve.w(s) - curve.x(s) * curveDelta.w(s))\n // (and p.w is always 1)\n for (let k = 0; k < workA.length; k++)workA[k] = 0;\n for (let k = 0; k < workB.length; k++)workB[k] = 0;\n BezierPolynomialAlgebra.scaledComponentSum(workA, packedData, 4, orderA, 3, spacePoint.at(i), // w * spacePoint.x\n i, -1.0); // curve.x(s) * 1.0\n BezierPolynomialAlgebra.accumulateScaledShiftedComponentTimesComponentDelta(workB, packedData, 4, orderA, 1.0, 3, 0.0, i);\n BezierPolynomialAlgebra.accumulateScaledShiftedComponentTimesComponentDelta(workB, packedData, 4, orderA, -1.0, i, 0.0, 3);\n BezierPolynomialAlgebra.accumulateProduct(bezier.coffs, workA, workB);\n }\n roots = bezier.roots(0.0, true);\n }\n if (roots) {\n for (const fraction of roots) {\n const xyz = this.fractionToPoint(fraction);\n const a = xyz.distance(spacePoint);\n numUpdates += detail.updateIfCloserCurveFractionPointDistance(this, fraction, xyz, a) ? 1 : 0;\n }\n }\n if (testAt0)\n numUpdates += this.updateDetailAtFraction (detail, 0.0, spacePoint) ? 1 : 0;\n if (testAt1)\n numUpdates += this.updateDetailAtFraction (detail, 1.0, spacePoint) ? 1 : 0;\n return numUpdates > 0;\n }\n private updateDetailAtFraction(detail: CurveLocationDetail, fraction: number, spacePoint: Point3d): boolean{\n const xyz = this.fractionToPoint(fraction);\n const a = xyz.distance(spacePoint);\n return detail.updateIfCloserCurveFractionPointDistance (this, fraction, xyz, a);\n }\n /** Extend `rangeToExtend`, using candidate extrema at\n * * both end points\n * * any internal extrema in x,y,z\n */\n public extendRange(rangeToExtend: Range3d, transform?: Transform) {\n const order = this.order;\n if (!transform) {\n this.allocateAndZeroBezierWorkData(order * 2 - 2, 0, 0);\n const bezier = this._workBezier!;\n const data = this._polygon.packedData;\n this.getPolePoint3d(0, this._workPoint0);\n rangeToExtend.extend(this._workPoint0);\n this.getPolePoint3d(order - 1, this._workPoint0);\n rangeToExtend.extend(this._workPoint0);\n // Example:\n // For x component ...\n // coefficients of (weighted x) are at axisIndex=0\n // deweighted polynomial is (x(s)/w(s))\n // its derivative (to be zeroed) is\n // (x'(s)*w(s) -x(s) * w'(s)) / w^2(s)\n // The coefficients of the derivatives are (degree times) differences of successive coffs.\n // Make the numerator zero to get extrema\n for (let axisIndex = 0; axisIndex < 3; axisIndex++) {\n bezier.zero();\n BezierPolynomialAlgebra.accumulateScaledShiftedComponentTimesComponentDelta(\n bezier.coffs,\n data, 4, order,\n 1.0,\n axisIndex, 0.0,\n 3);\n BezierPolynomialAlgebra.accumulateScaledShiftedComponentTimesComponentDelta(\n bezier.coffs,\n data, 4, order,\n -1.0,\n 3, 0.0,\n axisIndex);\n const roots = bezier.roots(0.0, true);\n if (roots) {\n for (const r of roots) {\n this.fractionToPoint(r, this._workPoint0);\n rangeToExtend.extend(this._workPoint0);\n }\n }\n }\n } else {\n this.allocateAndZeroBezierWorkData(order * 2 - 2, order, order);\n const componentCoffs = this._workCoffsA!; // to hold transformed copy of x,y,z in turn.\n const weightCoffs = this._workCoffsB!; // to hold weights\n const bezier = this._workBezier!;\n\n this.getPolePoint3d(0, this._workPoint0);\n rangeToExtend.extendTransformedPoint(transform, this._workPoint0);\n this.getPolePoint3d(order - 1, this._workPoint0);\n rangeToExtend.extendTransformedPoint(transform, this._workPoint0);\n\n const data = this._polygon.packedData; // Example:\n // For x component ...\n // coefficients of (weighted x) are at axisIndex=0\n // deweighted polynomial is (x(s)/w(s))\n // its derivative (to be zeroed) is\n // (x'(s)*w(s) -x(s) * w'(s)) / w^2(s)\n // The coefficients of the derivatives are (degree times) differences of successive coffs.\n // Make the numerator zero to get extrema\n // apply one row of the transform to get the transformed coff by itself\n let weight;\n for (let axisIndex = 0; axisIndex < 3; axisIndex++) {\n bezier.zero();\n for (let i = 0, k = 0; i < order; i++, k += 4) {\n weight = data[k + 3];\n componentCoffs[i] = transform.multiplyComponentXYZW(axisIndex, data[k], data[k + 1], data[k + 2], weight);\n weightCoffs[i] = weight;\n }\n BezierPolynomialAlgebra.accumulateProductWithDifferences(bezier.coffs, componentCoffs, weightCoffs, 1.0);\n BezierPolynomialAlgebra.accumulateProductWithDifferences(bezier.coffs, weightCoffs, componentCoffs, -1.0);\n const roots = bezier.roots(0.0, true);\n if (roots && roots.length > 0) {\n for (const r of roots) {\n this.fractionToPoint(r, this._workPoint0);\n rangeToExtend.extendTransformedPoint(transform, this._workPoint0);\n }\n }\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BezierCurve3dH.js","sourceRoot":"","sources":["../../../src/bspline/BezierCurve3dH.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BezierCurveBase.js","sourceRoot":"","sources":["../../../src/bspline/BezierCurveBase.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 Bspline\n */\n\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { CurveOffsetXYHandler } from \"../curve/internalContexts/CurveOffsetXYHandler\";\nimport { PlaneAltitudeRangeContext } from \"../curve/internalContexts/PlaneAltitudeRangeContext\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { OffsetOptions } from \"../curve/OffsetOptions\";\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\nimport { Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { IStrokeHandler } from \"../geometry3d/GeometryHandler\";\nimport { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Range1d, Range3d } from \"../geometry3d/Range\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { UnivariateBezier } from \"../numerics/BezierPolynomials\";\nimport { Bezier1dNd } from \"./Bezier1dNd\";\nimport { KnotVector } from \"./KnotVector\";\n\n/**\n * Base class for CurvePrimitive (necessarily 3D) with _polygon.\n * * This has a Bezier1dNd polygon as a member, and implements dimension-independent methods\n * * This exists to support\n * * BezierCurve3d -- 3 coordinates x,y,z per block in the Bezier1dNd poles\n * * BezierCurve3dH -- 4 coordinates x,y,z,w per block in the Bezier1dNd poles\n * * The implementations of \"pure 3d\" queries is based on calling `getPolePoint3d`.\n * * This has the subtle failure difference that `getPolePoint3d` call with a valid index on on a 3d curve always succeeds, but on 3dH curve fails when weight is zero.\n * @public\n */\nexport abstract class BezierCurveBase extends CurvePrimitive {\n /** String name for schema properties */\n public readonly curvePrimitiveType = \"bezierCurve\";\n\n /** Control points */\n protected _polygon: Bezier1dNd;\n /** scratch data blocks accessible by concrete class. Initialized to correct blockSize in constructor. */\n protected _workData0: Float64Array;\n /** scratch data blocks accessible by concrete class. Initialized to correct blockSize in constructor. */\n protected _workData1: Float64Array;\n /** Scratch xyz point accessible by derived classes. */\n protected _workPoint0: Point3d;\n /** Scratch xyz point accessible by derived classes. */\n protected _workPoint1: Point3d;\n\n protected constructor(blockSize: number, data: Float64Array) {\n super();\n this._polygon = new Bezier1dNd(blockSize, data);\n this._workPoint0 = Point3d.create();\n this._workPoint1 = Point3d.create();\n this._workData0 = new Float64Array(blockSize);\n this._workData1 = new Float64Array(blockSize);\n\n }\n /** reverse the poles in place */\n public reverseInPlace(): void { this._polygon.reverseInPlace(); }\n /** saturate the pole in place, using knot intervals from `spanIndex` of the `knotVector` */\n public saturateInPlace(knotVector: KnotVector, spanIndex: number): boolean {\n const boolStat = this._polygon.saturateInPlace(knotVector, spanIndex);\n if (boolStat) {\n this.setInterval(\n knotVector.spanFractionToFraction(spanIndex, 0.0),\n knotVector.spanFractionToFraction(spanIndex, 1.0));\n }\n return boolStat;\n }\n /** (property accessor) Return the polynomial degree (one less than order) */\n public get degree(): number {\n return this._polygon.order - 1;\n }\n /** (property accessor) Return the polynomial order */\n public get order(): number { return this._polygon.order; }\n /** (property accessor) Return the number of poles (aka control points) */\n public get numPoles(): number { return this._polygon.order; }\n /** Get pole `i` as a Point3d.\n * * For 3d curve, this is simple a pole access, and only fails (return `undefined`) for invalid index\n * * For 4d curve, this deweights the homogeneous pole and can fail due to 0 weight.\n */\n public abstract getPolePoint3d(i: number, point?: Point3d): Point3d | undefined;\n\n /** Get pole `i` as a Point4d.\n * * For 3d curve, this accesses the simple pole and returns with weight 1.\n * * For 4d curve, this accesses the (weighted) pole.\n */\n public abstract getPolePoint4d(i: number, point?: Point4d): Point4d | undefined;\n /** Set mapping to parent curve (e.g. if this bezier is a span extracted from a bspline, this is the knot interval of the span) */\n public setInterval(a: number, b: number) { this._polygon.setInterval(a, b); }\n /** map `fraction` from this Bezier curves inherent 0..1 range to the (a,b) range of parent\n * * ( The parent range should have been previously defined with `setInterval`)\n */\n public fractionToParentFraction(fraction: number): number { return this._polygon.fractionToParentFraction(fraction); }\n\n /** append stroke points to a linestring, based on `strokeCount` and `fractionToPoint` from derived class*/\n public emitStrokes(dest: LineString3d, options?: StrokeOptions): void {\n const numPerSpan = this.computeStrokeCountForOptions(options);\n const fractionStep = 1.0 / numPerSpan;\n for (let i = 0; i <= numPerSpan; i++) {\n const fraction = i * fractionStep;\n this.fractionToPoint(fraction, this._workPoint0);\n dest.appendStrokePoint(this._workPoint0);\n }\n }\n /** announce intervals with stroke counts */\n public emitStrokableParts(handler: IStrokeHandler, _options?: StrokeOptions): void {\n const numPerSpan = this.computeStrokeCountForOptions(_options);\n handler.announceIntervalForUniformStepStrokes(this, numPerSpan, 0.0, 1.0);\n }\n /** Return a simple array of arrays with the control points as `[[x,y,z],[x,y,z],..]` */\n public copyPolesAsJsonArray(): any[] { return this._polygon.unpackToJsonArrays(); }\n\n /** return true if all poles are on a plane. */\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\n let point: Point3d | undefined = this._workPoint0;\n for (let i = 0; ; i++) {\n point = this.getPolePoint3d(i, point);\n if (!point)\n return true;\n if (!plane.isPointInPlane(point))\n break; // which gets to return false, which is otherwise unreachable . . .\n }\n return false;\n }\n /** Return the length of the control polygon. */\n public polygonLength(): number {\n if (!this.getPolePoint3d(0, this._workPoint0))\n return 0.0;\n let i = 0;\n let sum = 0.0;\n while (this.getPolePoint3d(++i, this._workPoint1)) {\n sum += this._workPoint0.distance(this._workPoint1);\n this._workPoint0.setFrom(this._workPoint1);\n }\n return sum;\n }\n /** Return the start point. (first control point) */\n public override startPoint(): Point3d {\n const result = this.getPolePoint3d(0)!; // ASSUME non-trivial pole set -- if null comes back, it bubbles out\n return result;\n }\n /** Return the end point. (last control point) */\n public override endPoint(): Point3d {\n const result = this.getPolePoint3d(this.order - 1)!; // ASSUME non-trivial pole set\n return result;\n }\n /** Return the control polygon length as a quick length estimate. */\n public quickLength(): number { return this.polygonLength(); }\n /** Concrete classes must implement extendRange . . . */\n public abstract override extendRange(rangeToExtend: Range3d, transform?: Transform): void;\n /**\n * 1D bezier coefficients for use in range computations.\n * @internal\n */\n protected _workBezier?: UnivariateBezier; // available for bezier logic within a method\n /** scratch array for use by derived classes, using allocateAndZeroBezierWorkData for sizing. */\n protected _workCoffsA?: Float64Array;\n /** scratch array for use by derived classes, using allocateAndZeroBezierWorkData for sizing. */\n protected _workCoffsB?: Float64Array;\n\n /**\n * set up the _workBezier members with specific order.\n * * Try to reuse existing members if their sizes match.\n * * Ignore members corresponding to args that are 0 or negative.\n * @param primaryBezierOrder order of expected bezier\n * @param orderA length of _workCoffsA (simple array)\n * @param orderB length of _workCoffsB (simple array)\n */\n protected allocateAndZeroBezierWorkData(primaryBezierOrder: number, orderA: number, orderB: number) {\n if (primaryBezierOrder > 0) {\n if (this._workBezier !== undefined && this._workBezier.order === primaryBezierOrder) {\n this._workBezier.zero();\n } else\n this._workBezier = new UnivariateBezier(primaryBezierOrder);\n }\n if (orderA > 0) {\n if (this._workCoffsA !== undefined && this._workCoffsA.length === orderA)\n this._workCoffsA.fill(0);\n else\n this._workCoffsA = new Float64Array(orderA);\n }\n if (orderB > 0) {\n if (this._workCoffsB !== undefined && this._workCoffsB.length === orderB)\n this._workCoffsB.fill(0);\n else\n this._workCoffsB = new Float64Array(orderB);\n }\n }\n /**\n * Assess length and turn to determine a stroke count.\n * * this method is used by both BSplineCurve3d and BSplineCurve3dH.\n * * points are accessed via getPolePoint3d.\n * * Hence a zero-weight pole will be a problem\n * @param options stroke options structure.\n */\n public computeStrokeCountForOptions(options?: StrokeOptions): number {\n\n this.getPolePoint3d(0, this._workPoint0);\n this.getPolePoint3d(1, this._workPoint1);\n let numStrokes = 1;\n if (this._workPoint0 && this._workPoint1) {\n let dx0 = this._workPoint1.x - this._workPoint0.x;\n let dy0 = this._workPoint1.y - this._workPoint0.y;\n let dz0 = this._workPoint1.z - this._workPoint0.z;\n let dx1, dy1, dz1; // first differences of leading edge\n let sumRadians = 0.0;\n let thisLength = Geometry.hypotenuseXYZ(dx0, dy0, dz0);\n this._workPoint1.setFromPoint3d(this._workPoint0);\n let sumLength = thisLength;\n let maxLength = thisLength;\n let maxRadians = 0.0;\n let thisRadians;\n for (let i = 2; this.getPolePoint3d(i, this._workPoint1); i++) {\n dx1 = this._workPoint1.x - this._workPoint0.x;\n dy1 = this._workPoint1.y - this._workPoint0.y;\n dz1 = this._workPoint1.z - this._workPoint0.z;\n thisRadians = Angle.radiansBetweenVectorsXYZ(dx0, dy0, dz0, dx1, dy1, dz1);\n sumRadians += thisRadians;\n maxRadians = Geometry.maxAbsXY(thisRadians, maxRadians);\n thisLength = Geometry.hypotenuseXYZ(dx1, dy1, dz1);\n sumLength += thisLength;\n maxLength = Geometry.maxXY(maxLength, thisLength);\n dx0 = dx1;\n dy0 = dy1;\n dz0 = dz1;\n this._workPoint0.setFrom(this._workPoint1);\n }\n const length1 = maxLength * this.degree; // This may be larger than sumLength\n const length2 = Math.sqrt(length1 * sumLength); // This is in between\n let radians1 = maxRadians * (this.degree - 1); // As if worst case keeps happening.\n if (this.degree < 3)\n radians1 *= 3; // so quadratics aren't under-stroked\n const radians2 = Math.sqrt(radians1 * sumRadians);\n const minCount = this.degree; // NOTE: this means 1) a small, nontrivial, straight Bezier is over-stroked, and 2) options.minStrokesPerPrimitive is ignored\n numStrokes = StrokeOptions.applyAngleTol(\n options, StrokeOptions.applyMaxEdgeLength(options, minCount, length2), radians2, 0.1,\n );\n if (options) {\n numStrokes = options.applyChordTolToLengthAndRadians(numStrokes, sumLength, radians1);\n }\n }\n return numStrokes;\n }\n\n /** Return a deep clone. */\n public abstract override clone(): BezierCurveBase;\n\n /** Return a transformed deep clone. */\n public override cloneTransformed(transform: Transform): BezierCurveBase {\n const curve1 = this.clone();\n curve1.tryTransformInPlace(transform);\n return curve1;\n }\n\n /**\n * Construct an offset of the instance curve as viewed in the xy-plane (ignoring z).\n * * No attempt is made to join the offsets of smaller constituent primitives. To construct a fully joined offset\n * for an aggregate instance (e.g., LineString3d, CurveChainWithDistanceIndex), use RegionOps.constructCurveXYOffset() instead.\n * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object\n */\n public override constructOffsetXY(offsetDistanceOrOptions: number | OffsetOptions): CurvePrimitive | CurvePrimitive[] | undefined {\n const options = OffsetOptions.create(offsetDistanceOrOptions);\n const handler = new CurveOffsetXYHandler(this, options.leftOffsetDistance);\n this.emitStrokableParts(handler, options.strokeOptions);\n return handler.claimResult();\n }\n\n /** Return a curve primitive which is a portion of this curve.\n * @param fractionA [in] start fraction\n * @param fractionB [in] end fraction\n */\n public override clonePartialCurve(fractionA: number, fractionB: number): BezierCurveBase {\n const partialCurve = this.clone();\n partialCurve._polygon.subdivideToIntervalInPlace(fractionA, fractionB);\n return partialCurve;\n }\n\n /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.\n * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.\n * @param lowHigh optional receiver for output\n * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.\n */\n public override projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): Range1d | undefined {\n return PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BezierCurveBase.js","sourceRoot":"","sources":["../../../src/bspline/BezierCurveBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterpolationCurve3d.js","sourceRoot":"","sources":["../../../src/bspline/InterpolationCurve3d.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 Bspline\n */\n\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { Geometry } from \"../Geometry\";\nimport { Point3dArray } from \"../geometry3d/PointHelpers\";\nimport { ProxyCurve } from \"../curve/ProxyCurve\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { BSplineCurveOps } from \"../bspline/BSplineCurveOps\";\nimport { BSplineCurve3d } from \"./BSplineCurve\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\nimport { XYZProps } from \"../geometry3d/XYZProps\";\n\n/**\n * fitPoints and end condition data for [[InterpolationCurve3d]]\n * * This is a \"json compatible\" version of [[InterpolationCurve3dOptions]]\n * @public\n */\nexport interface InterpolationCurve3dProps {\n /** order of the computed bspline (one more than degree) */\n order?: number;\n /** true if the B-spline construction should be periodic */\n closed?: boolean;\n /** if closed and no knots, compute chord length knots (1) or uniform knots (0). Chord length knots give best fit. */\n isChordLenKnots?: number;\n /** if !closed but first and last fitPoints are equal, pivot computed start/end tangent(s) so that they are colinear (1) or leave them be (0). */\n isColinearTangents?: number;\n /** if !closed and start/endTangent is given, set its magnitude to the first/last fit point chord length (1) or to the magnitude of the Bessel tangent (0). Bessel gives best fit. */\n isChordLenTangents?: number;\n /** if !closed and start/endTangent is absent, compute it using the natural end condition (1) or Bessel (0). Bessel gives best fit. */\n isNaturalTangents?: number;\n /** optional start tangent, pointing into curve. Magnitude is ignored. */\n startTangent?: XYZProps;\n /** optional end tangent, pointing into curve. Magnitude is ignored. */\n endTangent?: XYZProps;\n /** points that the curve must pass through */\n fitPoints: XYZProps[];\n /** parameters for curve fitting, one per fit point */\n knots?: number[];\n}\n\n/**\n * fitPoints and end condition data for [[InterpolationCurve3d]]\n * * This is a \"typed object\" version of the serializer-friendly [[InterpolationCurve3dProps]]\n * * Typical use cases rarely require all parameters, so the constructor does not itemize them as parameters.\n * @public\n */\nexport class InterpolationCurve3dOptions {\n /**\n * Constructor.\n * @param fitPoints points to CAPTURE\n * @param knots array to CAPTURE\n */\n public constructor(fitPoints?: Point3d[], knots?: number[]) {\n this._fitPoints = fitPoints ? fitPoints : [];\n this._knots = knots;\n }\n\n private _order?: number;\n private _closed?: boolean;\n private _isChordLenKnots?: number;\n private _isColinearTangents?: number;\n private _isChordLenTangents?: number;\n private _isNaturalTangents?: number;\n private _startTangent?: Vector3d;\n private _endTangent?: Vector3d;\n private _fitPoints: Point3d[];\n private _knots?: number[];\n\n /** `order` as property */\n public get order(): number { return Geometry.resolveNumber(this._order, 4); }\n public set order(val: number) { this._order = val; }\n /** `closed` as property */\n public get closed(): boolean { return Geometry.resolveValue(this._closed, false); }\n public set closed(val: boolean) { this._closed = val; }\n /** `isChordLenKnots` as property */\n public get isChordLenKnots(): number { return Geometry.resolveNumber(this._isChordLenKnots, 0); }\n public set isChordLenKnots(val: number) { this._isChordLenKnots = val; }\n /** `isColinearTangents` as property */\n public get isColinearTangents(): number { return Geometry.resolveNumber(this._isColinearTangents, 0); }\n public set isColinearTangents(val: number) { this._isColinearTangents = val; }\n /** `isChordLenTangents` as property */\n public get isChordLenTangents(): number { return Geometry.resolveNumber(this._isChordLenTangents, 0); }\n public set isChordLenTangents(val: number) { this._isChordLenTangents = val; }\n /** `isNaturalTangents` as property */\n public get isNaturalTangents(): number { return Geometry.resolveNumber(this._isNaturalTangents, 0); }\n public set isNaturalTangents(val: number) { this._isNaturalTangents = val; }\n /** access POSSIBLY UNDEFINED start tangent. Setter CAPTURES. */\n public get startTangent(): Vector3d | undefined { return this._startTangent; }\n public set startTangent(val: Vector3d | undefined) { this._startTangent = val; }\n /** access POSSIBLY UNDEFINED end tangent. Setter CAPTURES. */\n public get endTangent(): Vector3d | undefined { return this._endTangent; }\n public set endTangent(val: Vector3d | undefined) { this._endTangent = val; }\n /** access POINTER TO fit points. Setter CAPTURES. */\n public get fitPoints(): Point3d[] { return this._fitPoints; }\n public set fitPoints(val: Point3d[]) { this._fitPoints = val; }\n /** access POSSIBLY UNDEFINED knots array. Setter CAPTURES. */\n public get knots(): number[] | undefined { return this._knots; }\n public set knots(val: number[] | undefined) { this._knots = val; }\n\n /** One step setup of properties not named in constructor.\n * * CAPTURE pointers to tangents.\n * * OPTIONALLY downgrade \"0\" values to undefined.\n */\n public captureOptionalProps(\n order: number | undefined,\n closed: boolean | undefined,\n isChordLenKnots: number | undefined,\n isColinearTangents: number | undefined,\n isChordLenTangent: number | undefined,\n isNaturalTangents: number | undefined,\n startTangent: Vector3d | undefined,\n endTangent: Vector3d | undefined,\n ) {\n this._order = Geometry.resolveToUndefined(order, 0);\n this._closed = Geometry.resolveToUndefined(closed, false);\n this._isChordLenKnots = Geometry.resolveToUndefined(isChordLenKnots, 0);\n this._isColinearTangents = Geometry.resolveToUndefined(isColinearTangents, 0);\n this._isChordLenTangents = Geometry.resolveToUndefined(isChordLenTangent, 0);\n this._isNaturalTangents = Geometry.resolveToUndefined(isNaturalTangents, 0);\n this._startTangent = startTangent;\n this._endTangent = endTangent;\n\n }\n /** Clone with strongly typed members reduced to simple json, with \"undefined\" members omitted */\n public cloneAsInterpolationCurve3dProps(): InterpolationCurve3dProps {\n const props: InterpolationCurve3dProps = {\n fitPoints: Point3dArray.cloneDeepJSONNumberArrays(this.fitPoints),\n knots: this._knots?.slice(),\n };\n if (this._order !== undefined)\n props.order = this._order;\n if (this._closed !== undefined)\n props.closed = this._closed;\n if (this._isChordLenKnots !== undefined)\n props.isChordLenKnots = this._isChordLenKnots;\n if (this._isColinearTangents !== undefined)\n props.isColinearTangents = this._isColinearTangents;\n if (this._isChordLenTangents !== undefined)\n props.isChordLenTangents = this._isChordLenTangents;\n if (this._isNaturalTangents !== undefined)\n props.isNaturalTangents = this._isNaturalTangents;\n if (this._startTangent !== undefined)\n props.startTangent = this._startTangent?.toArray();\n if (this._endTangent !== undefined)\n props.endTangent = this._endTangent?.toArray();\n return props;\n }\n /** Clone with strongly typed members reduced to simple json. */\n public clone(): InterpolationCurve3dOptions {\n const clone = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(this.fitPoints), this.knots?.slice());\n clone._order = this.order;\n clone._closed = this.closed;\n clone._isChordLenKnots = this.isChordLenKnots;\n clone._isColinearTangents = this.isColinearTangents;\n clone._isChordLenTangents = this.isChordLenTangents;\n clone._isNaturalTangents = this.isNaturalTangents;\n clone._startTangent = this._startTangent?.clone();\n clone._endTangent = this._endTangent?.clone();\n return clone;\n }\n\n /** Clone with strongly typed members reduced to simple json. */\n public static create(source: InterpolationCurve3dProps): InterpolationCurve3dOptions {\n const result = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(source.fitPoints), source.knots?.slice());\n result._order = source.order;\n result._closed = source.closed;\n result._isChordLenKnots = source.isChordLenKnots;\n result._isColinearTangents = source.isColinearTangents;\n result._isChordLenTangents = source.isChordLenTangents;\n result._isNaturalTangents = source.isNaturalTangents;\n result._startTangent = source.startTangent ? Vector3d.fromJSON(source.startTangent) : undefined;\n result._endTangent = source.endTangent ? Vector3d.fromJSON(source.endTangent) : undefined;\n return result;\n }\n // ugh.\n // vector equality test with awkward rule that 000 matches undefined.\n private static areAlmostEqualAllow000AsUndefined(a: Vector3d | undefined, b: Vector3d | undefined): boolean {\n if (a !== undefined && a.maxAbs() === 0)\n a = undefined;\n if (b !== undefined && b.maxAbs() === 0)\n b = undefined;\n if (a !== undefined && b !== undefined)\n return a.isAlmostEqual(b);\n return a === undefined && b === undefined;\n }\n public static areAlmostEqual(dataA: InterpolationCurve3dOptions | undefined, dataB: InterpolationCurve3dOptions | undefined): boolean {\n if (dataA === undefined && dataB === undefined)\n return true;\n if (dataA !== undefined && dataB !== undefined) {\n if (Geometry.areEqualAllowUndefined(dataA.order, dataB.order)\n && Geometry.areEqualAllowUndefined(dataA.closed, dataB.closed)\n && Geometry.areEqualAllowUndefined(dataA.isChordLenKnots, dataB.isChordLenKnots)\n && Geometry.areEqualAllowUndefined(dataA.isColinearTangents, dataB.isColinearTangents)\n && Geometry.areEqualAllowUndefined(dataA.isNaturalTangents, dataB.isNaturalTangents)\n && this.areAlmostEqualAllow000AsUndefined(dataA.startTangent, dataB.startTangent)\n && this.areAlmostEqualAllow000AsUndefined(dataA.endTangent, dataB.endTangent)\n && Geometry.almostEqualArrays(dataA.fitPoints, dataB.fitPoints, (a: Point3d, b: Point3d) => a.isAlmostEqual(b))) {\n if (Geometry.almostEqualNumberArrays(dataA.knots, dataB.knots, (a: number, b: number) => a === b))\n return true;\n if (dataA.knots === undefined && dataB.knots === undefined)\n return true;\n /* alas .. need to allow tricky mismatch of end replication */\n let knotsA = dataA.knots, knotsB = dataB.knots;\n if (dataA.knots === undefined) // construct undefined knots to compare against defined knots\n knotsA = BSplineCurveOps.C2CubicFit.constructFitParametersFromPoints(dataA.fitPoints, dataA.isChordLenKnots, dataA.closed);\n else if (dataB.knots === undefined)\n knotsB = BSplineCurveOps.C2CubicFit.constructFitParametersFromPoints(dataB.fitPoints, dataB.isChordLenKnots, dataB.closed);\n knotsA = BSplineCurveOps.C2CubicFit.convertCubicKnotVectorToFitParams(knotsA, dataA.fitPoints.length, false);\n knotsB = BSplineCurveOps.C2CubicFit.convertCubicKnotVectorToFitParams(knotsB, dataB.fitPoints.length, false);\n return Geometry.almostEqualNumberArrays(knotsA, knotsB, (a: number, b: number) => Geometry.isAlmostEqualNumber(a, b));\n }\n }\n return false;\n }\n /** reverse the order or sense of all start-to-end related properties. */\n public reverseInPlace() {\n this.fitPoints.reverse();\n if (this.knots)\n this.knots.reverse();\n // Swap pointers to tangents. They don't need to be negated because they point into the curve.\n const oldStart = this._startTangent;\n this._startTangent = this.endTangent;\n this._endTangent = oldStart;\n }\n}\n\n/**\n * Interpolating curve.\n * * Derive from [[ProxyCurve]]\n * * Use a [[BSplineCurve3d]] as the proxy\n * *\n * @public\n */\nexport class InterpolationCurve3d extends ProxyCurve {\n public readonly curvePrimitiveType = \"interpolationCurve\";\n private _options: InterpolationCurve3dOptions;\n /**\n * CAPTURE properties and proxy curve.\n */\n private constructor(properties: InterpolationCurve3dOptions, proxyCurve: CurvePrimitive) {\n super(proxyCurve);\n this._options = properties;\n }\n\n public override dispatchToGeometryHandler(handler: GeometryHandler): any {\n let result = handler.handleInterpolationCurve3d(this);\n if (undefined === result) // if handler doesn't specialize on interpolation curves, default to proxy\n result = this._proxyCurve.dispatchToGeometryHandler(handler);\n return result;\n }\n /**\n * Create an [[InterpolationCurve3d]] based on points, knots, and other properties in the [[InterpolationCurve3dProps]] or [[InterpolationCurve3dOptions]].\n * * This saves a COPY OF the options or props.\n * * Use createCapture () if the options or props can be used without copy\n */\n public static create(options: InterpolationCurve3dOptions | InterpolationCurve3dProps): InterpolationCurve3d | undefined {\n let optionsCopy;\n if (options instanceof InterpolationCurve3dOptions) {\n optionsCopy = options.clone();\n } else {\n optionsCopy = InterpolationCurve3dOptions.create(options);\n }\n return InterpolationCurve3d.createCapture(optionsCopy);\n }\n /** Create an [[InterpolationCurve3d]]\n * * The options object is captured into the new curve object (not copied)\n */\n public static createCapture(options: InterpolationCurve3dOptions): InterpolationCurve3d | undefined {\n const proxyCurve = BSplineCurve3d.createFromInterpolationCurve3dOptions(options);\n if (proxyCurve)\n return new InterpolationCurve3d(options, proxyCurve);\n return undefined;\n }\n /** Return a (copy of) the defining points, packed as a Float64Array */\n public copyFitPointsFloat64Array(): Float64Array {\n return Point3dArray.cloneXYZPropsAsFloat64Array(this._options.fitPoints);\n }\n\n /**\n * Return json key-value pairs for for this [[InterpolationCurve3d]].\n * @returns\n */\n public toJSON(): any {\n return this._options.cloneAsInterpolationCurve3dProps();\n }\n /** Clone the [[InterpolationCurve3dProps]] object in this [[InterpolationCurve3d]] */\n public cloneProps(): InterpolationCurve3dProps {\n return this._options.cloneAsInterpolationCurve3dProps();\n }\n\n /** return the options pointer */\n public get options(): InterpolationCurve3dOptions { return this._options; }\n\n /**\n * Reverse the curve direction.\n * * This updates both the defining properties and the proxy bspline.\n */\n public reverseInPlace(): void {\n this._proxyCurve.reverseInPlace();\n this._options.reverseInPlace();\n }\n /**\n * Transform this [[InterpolationCurve3d]] and its defining data in place\n */\n public tryTransformInPlace(transform: Transform): boolean {\n const proxyOk = this._proxyCurve.tryTransformInPlace(transform);\n if (proxyOk) {\n transform.multiplyPoint3dArrayInPlace(this._options.fitPoints);\n if (this._options.startTangent)\n transform.multiplyVectorInPlace(this._options.startTangent);\n if (this._options.endTangent)\n transform.multiplyVectorInPlace(this._options.endTangent);\n }\n return proxyOk;\n }\n\n /** Return a deep clone */\n public override clone(): InterpolationCurve3d {\n return new InterpolationCurve3d(this._options.clone(), this._proxyCurve.clone());\n }\n\n public override isAlmostEqual(other: GeometryQuery): boolean {\n if (other instanceof InterpolationCurve3d) {\n return InterpolationCurve3dOptions.areAlmostEqual(this._options, other._options);\n }\n return false;\n }\n\n /** Test if `other` is also an [[InterpolationCurve3d]] */\n public isSameGeometryClass(other: GeometryQuery): boolean { return other instanceof InterpolationCurve3d; }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InterpolationCurve3d.js","sourceRoot":"","sources":["../../../src/bspline/InterpolationCurve3d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnotVector.js","sourceRoot":"","sources":["../../../src/bspline/KnotVector.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 Bspline\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Geometry } from \"../Geometry\";\nimport { NumberArray } from \"../geometry3d/PointHelpers\";\n\n/**\n * B-spline curve and surface types in this library are non-periodic. But they can be created from legacy periodic data.\n * This enumeration lists the possible ways a B-spline object can have been created from legacy periodic data.\n * @public\n */\nexport enum BSplineWrapMode {\n /** No conversion performed. */\n None = 0,\n /**\n * The legacy periodic B-spline data was opened up by adding `degree` wrap-around poles.\n * * This is typical of B-spline curves and surfaces constructed with maximum `degree - 1` continuity.\n * * Knots are unaffected by this conversion.\n */\n OpenByAddingControlPoints = 1,\n /**\n * The legacy periodic B-spline data was opened up by removing `degree` exterior knots.\n * * This is typical of rational B-spline curves representing full circles and ellipses.\n * * Poles are unaffected by this conversion.\n */\n OpenByRemovingKnots = 2,\n}\n/**\n * Array of non-decreasing numbers acting as a knot vector for B-spline curves and surfaces.\n *\n * * Essential identity: numKnots = numPoles + order - 2 = numPoles + degree - 1\n * * Various B-spline libraries have confusion over how many \"end knots\" are needed. Many libraries (including MicroStation\n * and Parasolid) demand order knots at each end for clamping. However, only order-1 are really needed. This class uses the\n * order-1 convention.\n * * A span is a single interval of the knots.\n * * The left knot of the span with index `k>=0` is the knot with index `k+degree-1`.\n * * A knot vector is clamped when the first `degree` knots are equal and the last `degree` knots are equal.\n * * The \"active knot interval\" is the subset of the knot vector sans its first and last `degree-1` knots, and serves as\n * the parametric domain of the associated B-spline object.\n * * This class provides queries to convert among spanIndex, knotIndex, spanFraction, fraction of knot range, and knot.\n * * Callers need to distinguish core computational inputs such as left knot index, knot value, span index, and span fraction.\n * @public\n */\nexport class KnotVector {\n /** The simple array of knot values. */\n public knots: Float64Array;\n /** The degree of basis functions defined in these knots. */\n public degree: number;\n /** The leftmost knot value (of the active interval, ignoring unclamped leading knots). */\n private _knot0: number;\n /** The rightmost knot value (of the active interval, ignoring unclamped leading knots). */\n private _knot1: number;\n private _wrapMode?: BSplineWrapMode;\n /** Tolerance for considering two knots to be the same. */\n public static readonly knotTolerance = 1.0e-9;\n /** Return the leftmost knot value (of the active interval, ignoring unclamped leading knots). */\n public get leftKnot() {\n return this._knot0;\n }\n /** Return the rightmost knot value (of the active interval, ignoring unclamped leading knots). */\n public get rightKnot() {\n return this._knot1;\n }\n /** Return the index of the leftmost knot of the active interval. */\n public get leftKnotIndex() {\n return this.degree - 1;\n }\n /** Return the index of the rightmost knot of the active interval. */\n public get rightKnotIndex() {\n return this.knots.length - this.degree;\n }\n /**\n * Whether this KnotVector was created by converting legacy periodic data during deserialization. The conversion used\n * is specified by BSplineWrapMode, and is reversed at serialization time.\n */\n public get wrappable() {\n return this._wrapMode === undefined ? BSplineWrapMode.None : this._wrapMode;\n }\n public set wrappable(value: BSplineWrapMode) {\n this._wrapMode = value;\n }\n /** Return the number of Bezier spans. Note that this includes zero-length spans if there are repeated knots. */\n public get numSpans() {\n return this.rightKnotIndex - this.leftKnotIndex;\n }\n /**\n * Private constructor.\n * * If `knots` is a number array or Float64Array, then its values are copied to the instance array.\n * * If `knots` is a number, the instance array is allocated to this size but left as zeros.\n */\n private constructor(knots: number[] | Float64Array | number, degree: number, wrapMode?: BSplineWrapMode) {\n this.degree = degree;\n this._wrapMode = wrapMode;\n // default values to satisfy compiler; real values happen in setupFixedValues or the final else clause defers to user\n this._knot0 = 0.0;\n this._knot1 = 1.0;\n if (Array.isArray(knots)) {\n this.knots = new Float64Array(knots.length);\n this.setKnots(knots);\n this.setupFixedValues();\n } else if (knots instanceof Float64Array) {\n this.knots = knots.slice();\n this.setupFixedValues();\n } else { // caller is responsible for filling array separately\n const knotSize = knots;\n this.knots = new Float64Array(knotSize);\n }\n }\n /** Copy degree and knots to a new KnotVector. */\n public clone(): KnotVector {\n return new KnotVector(this.knots, this.degree, this.wrappable);\n }\n private setupFixedValues() {\n if (this.degree > 0 && this.knots.length > this.degree) {\n this._knot0 = this.knots[this.degree - 1];\n this._knot1 = this.knots[this.knots.length - this.degree];\n }\n }\n /**\n * Return the length of the active knot interval.\n * * This is the size of (one dimension of) the parametric domain for the associated B-spline object.\n */\n public get knotLength01(): number {\n return this._knot1 - this._knot0;\n }\n /**\n * Returns true if all numeric values have wraparound conditions that allow the knots to be closed with specified\n * wrap mode.\n * @param mode optional test mode. If undefined, use this.wrappable.\n */\n public testClosable(mode?: BSplineWrapMode): boolean {\n if (mode === undefined)\n mode = this.wrappable;\n const degree = this.degree;\n const leftKnotIndex = this.leftKnotIndex;\n const rightKnotIndex = this.rightKnotIndex;\n if (mode === BSplineWrapMode.OpenByAddingControlPoints) {\n // maximum continuity mode: we expect degree periodically extended knots at each end\n const period = this.rightKnot - this.leftKnot;\n const indexDelta = rightKnotIndex - leftKnotIndex;\n for (let k0 = 0; k0 < leftKnotIndex + degree; k0++) {\n const k1 = k0 + indexDelta;\n if (Math.abs(this.knots[k0] + period - this.knots[k1]) >= KnotVector.knotTolerance)\n return false;\n }\n return true;\n }\n if (mode === BSplineWrapMode.OpenByRemovingKnots) {\n // legacy periodic mode: we expect multiplicity degree knots at each end\n const numRepeated = degree - 1;\n const leftKnot = this.leftKnot;\n const rightKnot = this.rightKnot;\n for (let i = 0; i < numRepeated; i++) {\n if (Math.abs(leftKnot - this.knots[leftKnotIndex - i - 1]) >= KnotVector.knotTolerance)\n return false;\n if (Math.abs(rightKnot - this.knots[rightKnotIndex + i + 1]) >= KnotVector.knotTolerance)\n return false;\n }\n return true;\n }\n return false;\n }\n /** Test matching degree and knot values. */\n public isAlmostEqual(other: KnotVector): boolean {\n if (this.degree !== other.degree)\n return false;\n return NumberArray.isAlmostEqual(this.knots, other.knots, KnotVector.knotTolerance);\n }\n /** Compute the multiplicity of the input knot, or zero if not a knot. */\n public getKnotMultiplicity(knot: number): number {\n let m = 0;\n for (const k of this.knots) {\n if (Math.abs(k - knot) < KnotVector.knotTolerance)\n ++m;\n else if (knot < k)\n break;\n }\n return m;\n }\n /** Compute the multiplicity of the knot at the given index. */\n public getKnotMultiplicityAtIndex(knotIndex: number): number {\n let m = 0;\n if (knotIndex >= 0 && knotIndex < this.knots.length) {\n const knot = this.knots[knotIndex];\n ++m; // count this knot\n for (let i = knotIndex - 1; i >= 0; --i) {\n const k = this.knots[i];\n if (Math.abs(k - knot) < KnotVector.knotTolerance)\n ++m; // found multiple to left of knot\n else if (knot > k)\n break;\n }\n for (let i = knotIndex + 1; i < this.knots.length; ++i) {\n const k = this.knots[i];\n if (Math.abs(k - knot) < KnotVector.knotTolerance)\n ++m; // found multiple to right of knot\n else if (knot < k)\n break;\n }\n }\n return m;\n }\n /**\n * Transform knots such that the active knot range becomes [0,1].\n * @returns false if and only if `this.knotLength01` is trivial.\n */\n public normalize(): boolean {\n if (this.knotLength01 < KnotVector.knotTolerance)\n return false;\n const divisor = 1.0 / this.knotLength01;\n const leftKnot = this.leftKnot;\n for (let i = 0; i < this.knots.length; ++i)\n this.knots[i] = (this.knots[i] - leftKnot) * divisor;\n // explicitly set rightKnot and its multiples to 1.0 to avoid round-off\n for (let i = this.rightKnotIndex - 1; i > this.leftKnotIndex && (this.knots[i] === this.knots[this.rightKnotIndex]); --i)\n this.knots[i] = 1.0;\n for (let i = this.rightKnotIndex + 1; i < this.knots.length && (this.knots[i] === this.knots[this.rightKnotIndex]); ++i)\n this.knots[i] = 1.0;\n this.knots[this.rightKnotIndex] = 1.0;\n this.setupFixedValues();\n return true;\n }\n /** Install knot values from an array, optionally ignoring first and last. */\n public setKnots(knots: number[] | Float64Array, skipFirstAndLast?: boolean) {\n const numAllocate = skipFirstAndLast ? knots.length - 2 : knots.length;\n if (numAllocate !== this.knots.length)\n this.knots = new Float64Array(numAllocate);\n if (skipFirstAndLast) {\n for (let i = 1; i + 1 < knots.length; i++)\n this.knots[i - 1] = knots[i];\n } else {\n for (let i = 0; i < knots.length; i++)\n this.knots[i] = knots[i];\n }\n this.setupFixedValues();\n }\n /** Set knots to input array (CAPTURED). */\n public setKnotsCapture(knots: Float64Array) {\n this.knots = knots;\n this.setupFixedValues();\n }\n /**\n * Create knot vector with {degree-1} replicated knots at start and end, and uniform knots between.\n * @param numPoles number of poles.\n * @param degree degree of polynomial.\n * @param a0 left knot value for active interval.\n * @param a1 right knot value for active interval.\n */\n public static createUniformClamped(numPoles: number, degree: number, a0: number, a1: number): KnotVector {\n const knots = new KnotVector(numPoles + degree - 1, degree);\n let k = 0;\n for (let m = 0; m < degree; m++)\n knots.knots[k++] = a0;\n const du = 1.0 / (numPoles - degree);\n for (let i = 1; i + degree < numPoles; i++)\n knots.knots[k++] = a0 + i * du * (a1 - a0);\n for (let m = 0; m < degree; m++)\n knots.knots[k++] = a1;\n knots.setupFixedValues();\n return knots;\n }\n /**\n * Create knot vector with wraparound knots at start and end, and uniform knots between.\n * @param numInterval the number of intervals into which to uniformly divide the active knot interval `[a0,a1]`,\n * creating `numInterval-1` equally spaced interior knots between `a0` and `a1`.\n * This number is equal to the number of Bezier spans in the associated B-spline object.\n * It is _not_ the pole count.\n * @param degree degree of polynomial.\n * @param a0 left knot value for active interval.\n * @param a1 right knot value for active interval.\n */\n public static createUniformWrapped(numInterval: number, degree: number, a0: number, a1: number): KnotVector {\n const knots = new KnotVector(numInterval + 2 * degree - 1, degree);\n const du = 1.0 / numInterval;\n for (let i = 1 - degree, k = 0; i < numInterval + degree; i++, k++)\n knots.knots[k] = Geometry.interpolate(a0, i * du, a1);\n knots.setupFixedValues();\n return knots;\n }\n /**\n * Create knot vector with given knot values and degree.\n * @param knotArray knot values.\n * @param degree degree of polynomial.\n * @param skipFirstAndLast true to skip copying the first and last knot values.\n */\n public static create(knotArray: number[] | Float64Array, degree: number, skipFirstAndLast?: boolean): KnotVector {\n const numAllocate = skipFirstAndLast ? knotArray.length - 2 : knotArray.length;\n const knots = new KnotVector(numAllocate, degree);\n knots.setKnots(knotArray, skipFirstAndLast);\n return knots;\n }\n /**\n * Return the average of degree consecutive knots beginning at knotIndex.\n * * If `knotIndex` is negative, return `leftKnot`.\n * * If `knotIndex > rightKnotIndex` return `rightKnot`.\n */\n public grevilleKnot(knotIndex: number): number {\n if (knotIndex < 0)\n return this.leftKnot;\n if (knotIndex > this.rightKnotIndex)\n return this.rightKnot;\n knotIndex = Math.floor(knotIndex);\n let sum = 0.0;\n for (let i = knotIndex; i < knotIndex + this.degree; i++)\n sum += this.knots[i];\n return sum / this.degree;\n }\n /** Return an array of size `degree + 1`, e.g., to hold the set of relevant basis function values at a parameter. */\n public createBasisArray(): Float64Array {\n return new Float64Array(this.degree + 1);\n }\n /** Convert localFraction within the interval following an indexed knot to a knot value. */\n public baseKnotFractionToKnot(knotIndex0: number, localFraction: number): number {\n const knot0 = this.knots[knotIndex0];\n localFraction = Geometry.clamp(localFraction, 0, 1);\n return knot0 + localFraction * (this.knots[knotIndex0 + 1] - knot0);\n }\n /** Convert localFraction within an indexed bezier span to a knot value. */\n public spanFractionToKnot(spanIndex: number, localFraction: number): number {\n const k = this.spanIndexToLeftKnotIndex(spanIndex);\n localFraction = Geometry.clamp(localFraction, 0, 1);\n return this.knots[k] + localFraction * (this.knots[k + 1] - this.knots[k]);\n }\n /** Convert localFraction within an indexed bezier span to fraction of active knot range. */\n public spanFractionToFraction(spanIndex: number, localFraction: number): number {\n const knot = this.spanFractionToKnot(spanIndex, localFraction);\n return (knot - this.leftKnot) / (this.rightKnot - this.leftKnot);\n }\n /** Return fraction of active knot range to knot value. */\n public fractionToKnot(fraction: number): number {\n fraction = Geometry.clamp(fraction, 0, 1); // B-splines are not extendable\n return Geometry.interpolate(this.knots[this.degree - 1], fraction, this.knots[this.knots.length - this.degree]);\n }\n private isKnotInValidSpan(knotIndex0: number, u: number): boolean {\n const spanIsValid = knotIndex0 >= this.degree - 1 && knotIndex0 + this.degree < this.knots.length;\n const uIsInSpan = this.knots[knotIndex0] <= u && u <= this.knots[knotIndex0 + 1];\n return spanIsValid && uIsInSpan;\n }\n /**\n * Evaluate the B-spline basis functions f[] at a parameter u in a knot span.\n * * This method implements the Mansfield-Cox-de Boor recurrence relation.\n * @param knotIndex0 index of the left knot of the span.\n * @param u value in the knot span: knot[knotIndex0] <= u <= knot[knotIndex0 + 1].\n * @param f preallocated output array of order basis function values.\n * @returns true if and only if output array is sufficiently sized.\n */\n public evaluateBasisFunctions(knotIndex0: number, u: number, f: Float64Array): boolean {\n if (f.length < this.degree + 1)\n return false;\n assert(() => this.isKnotInValidSpan(knotIndex0, u), \"knot is in a valid span\");\n f[0] = 1.0;\n if (this.degree < 1)\n return true;\n // direct compute for linear part\n const u0 = this.knots[knotIndex0];\n const u1 = this.knots[knotIndex0 + 1];\n f[1] = (u - u0) / (u1 - u0);\n f[0] = 1.0 - f[1];\n if (this.degree < 2)\n return true;\n // each iteration of the outer loop evaluates the basis functions of degree depth+1 using\n // one or two values of the basis functions of one less degree from the preceding iteration\n for (let depth = 1; depth < this.degree; depth++) {\n let kLeft = knotIndex0 - depth;\n let kRight = knotIndex0 + 1;\n let gCarry = 0.0;\n for (let step = 0; step <= depth; step++) {\n const tLeft = this.knots[kLeft++];\n const tRight = this.knots[kRight++];\n const fraction = (u - tLeft) / (tRight - tLeft);\n const g1 = f[step] * fraction;\n const g0 = f[step] * (1.0 - fraction);\n f[step] = gCarry + g0;\n gCarry = g1;\n }\n f[depth + 1] = gCarry;\n // at this point, the head of f[] contains the depth+2 values at u\n // of the basis functions of degree depth+1 with support over [u0,u1)\n }\n return true;\n }\n /**\n * Evaluate basis functions f[], derivatives df[], and optional second derivatives ddf[] at a parameter u\n * in a knot span.\n * @param knotIndex0 index of the left knot of the span.\n * @param u value in the knot span: knot[knotIndex0] <= u <= knot[knotIndex0 + 1].\n * @param f preallocated output array of order basis function values.\n * @param df preallocated output array of order basis derivative values.\n * @param ddf optional preallocated output array of order basis second derivative values.\n * @returns true if and only if output arrays are sufficiently sized.\n */\n public evaluateBasisFunctions1(\n knotIndex0: number, u: number, f: Float64Array, df: Float64Array, ddf?: Float64Array,\n ): boolean {\n if (f.length < this.degree + 1)\n return false;\n if (df.length < this.degree + 1)\n return false;\n if (ddf && ddf.length < this.degree + 1)\n return false;\n assert(() => this.isKnotInValidSpan(knotIndex0, u), \"knot is in a valid span\");\n f[0] = 1.0;\n df[0] = 0.0;\n if (this.degree < 1)\n return true;\n // direct compute for linear part\n const u0 = this.knots[knotIndex0];\n const u1 = this.knots[knotIndex0 + 1];\n // ah = 1/(u1-u0) is the derivative of fraction0\n // -ah is the derivative of fraction1\n let ah = 1.0 / (u1 - u0);\n f[1] = (u - u0) * ah;\n f[0] = 1.0 - f[1];\n df[0] = -ah; df[1] = ah;\n if (ddf) { // first derivative started constant, second derivative started zero.\n ddf[0] = 0.0;\n ddf[1] = 0.0;\n }\n if (this.degree < 2)\n return true;\n for (let depth = 1; depth < this.degree; depth++) {\n let kLeft = knotIndex0 - depth;\n let kRight = kLeft + depth + 1;\n let gCarry = 0.0;\n let dgCarry = 0.0;\n let ddgCarry = 0.0;\n // f, df, ddf, are each row vectors with product of `step` linear terms.\n // f is multiplied on the right by matrix V. Each row has 2 nonzero entries (which sum to 1) (0,0,1-fraction, fraction,0,0,0)\n // Each row of the derivative dV is two entries (0,0, -1/h, 1/h,0,0,0)\n // Hence fnew = f * V\n // dfnew = df * V + f * dV\n // ddfnew = ddf * V + df*dV + df * dV + f * ddV\n // but ddV is zero so\n // ddfnew = ddf * V + 2 * df * dV\n for (let step = 0; step <= depth; step++) {\n const tLeft = this.knots[kLeft++];\n const tRight = this.knots[kRight++];\n ah = 1.0 / (tRight - tLeft);\n const fraction = (u - tLeft) * ah;\n const fraction1 = 1.0 - fraction;\n const g1 = f[step] * fraction;\n const g0 = f[step] * fraction1;\n const dg1 = df[step] * fraction + f[step] * ah;\n const dg0 = df[step] * fraction1 - f[step] * ah;\n const dfSave = 2.0 * df[step] * ah;\n f[step] = gCarry + g0;\n df[step] = dgCarry + dg0;\n gCarry = g1;\n dgCarry = dg1;\n if (ddf) { // do the backward reference to df before rewriting df\n const ddg1 = ddf[step] * fraction + dfSave;\n const ddg0 = ddf[step] * fraction1 - dfSave;\n ddf[step] = ddgCarry + ddg0;\n ddgCarry = ddg1;\n }\n }\n f[depth + 1] = gCarry;\n df[depth + 1] = dgCarry;\n if (ddf)\n ddf[depth + 1] = ddgCarry;\n }\n return true;\n }\n /**\n * Find the knot span bracketing knots[i] <= u < knots[i+1] and return i.\n * * If u has no such bracket, return the smaller index of the closest nontrivial bracket.\n * @param u value to bracket.\n */\n public knotToLeftKnotIndex(u: number): number {\n for (let i = this.leftKnotIndex; i < this.rightKnotIndex; ++i) {\n if (u < this.knots[i + 1])\n return i;\n }\n // for u >= rightKnot, return left index of last nontrivial span\n for (let i = this.rightKnotIndex; i > this.leftKnotIndex; --i) {\n if (this.knots[i] - this.knots[i - 1] >= KnotVector.knotTolerance)\n return i - 1;\n }\n return this.rightKnotIndex - 1; // shouldn't get here\n }\n /**\n * Given a span index, return the index of the knot at its left.\n * @param spanIndex index of span.\n */\n public spanIndexToLeftKnotIndex(spanIndex: number): number {\n const d = this.degree;\n if (spanIndex <= 0.0)\n return d - 1;\n return Math.min(spanIndex + d - 1, this.knots.length - d - 1);\n }\n /** Return the knot interval length of indexed bezier span. */\n public spanIndexToSpanLength(spanIndex: number): number {\n const k = this.spanIndexToLeftKnotIndex(spanIndex);\n return this.knots[k + 1] - this.knots[k];\n }\n /**\n * Given a span index, test if it is within range and has nonzero length.\n * * note that a false return does not imply there are no more spans. This may be a double knot (zero length span)\n * followed by more real spans\n * @param spanIndex index of span to test.\n */\n public isIndexOfRealSpan(spanIndex: number): boolean {\n if (spanIndex >= 0 && spanIndex < this.numSpans)\n return !Geometry.isSmallMetricDistance(this.spanIndexToSpanLength(spanIndex));\n return false;\n }\n /** Reflect all knots so `leftKnot` and `rightKnot` are maintained but interval lengths are reversed. */\n public reflectKnots(): void {\n const a = this.leftKnot;\n const b = this.rightKnot;\n const numKnots = this.knots.length;\n for (let i = 0; i < numKnots; i++)\n this.knots[i] = a + (b - this.knots[i]);\n this.knots.reverse();\n }\n /** Return a simple array form of the knots. Optionally replicate the first and last in classic over-clamped manner. */\n public static copyKnots(\n knots: number[] | Float64Array, degree: number, includeExtraEndKnot?: boolean, wrapMode?: BSplineWrapMode,\n ): number[] {\n const isExtraEndKnotPeriodic = (includeExtraEndKnot && wrapMode === BSplineWrapMode.OpenByAddingControlPoints);\n const leftIndex = degree - 1;\n const rightIndex = knots.length - degree;\n const a0 = knots[leftIndex];\n const a1 = knots[rightIndex];\n const delta = a1 - a0;\n const values: number[] = [];\n if (includeExtraEndKnot) {\n if (isExtraEndKnotPeriodic)\n values.push(knots[rightIndex - degree] - delta);\n else\n values.push(knots[0]);\n }\n for (const u of knots) {\n values.push(u);\n }\n if (includeExtraEndKnot) {\n if (isExtraEndKnotPeriodic)\n values.push(knots[leftIndex + degree] + delta);\n else\n values.push(knots[knots.length - 1]);\n }\n return values;\n }\n /** Return a simple array form of the knots. Optionally replicate the first and last in classic over-clamped manner. */\n public copyKnots(includeExtraEndKnot: boolean): number[] {\n const wrapMode = (includeExtraEndKnot && this.testClosable()) ? this.wrappable : undefined;\n return KnotVector.copyKnots(this.knots, this.degree, includeExtraEndKnot, wrapMode);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"KnotVector.js","sourceRoot":"","sources":["../../../src/bspline/KnotVector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SurfaceLocationDetail.js","sourceRoot":"","sources":["../../../src/bspline/SurfaceLocationDetail.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAClC,kCAAkC;IAC3B,OAAO,CAAa;IAC3B,oCAAoC;IAC7B,EAAE,CAAU;IACnB,+BAA+B;IACxB,KAAK,CAAU;IACtB,2DAA2D;IACpD,CAAC,CAAS;IACjB,iCAAiC;IACjC,YAAmB,OAAmB,EAAE,EAAY,EAAE,KAAe;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IACf,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,oBAAoB,CAAC,OAA8B,EAAE,EAAW,EAAE,KAAc;QAC5F,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,EAAE;YACJ,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAA8B,EAAE,CAAS,EAAE,CAAS,EAAE,KAAc;QAC5G,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;CAEF;AACD;;;GAGG;AACH,MAAM,OAAO,6BAA6B;IACxC,qCAAqC;IAC9B,WAAW,CAAsB;IACxC,uCAAuC;IAChC,aAAa,CAA0B;IAC9C,+BAA+B;IAC/B,YAAmB,WAAgC,EAAE,aAAsC;QACzF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF"
|
|
1
|
+
{"version":3,"file":"SurfaceLocationDetail.js","sourceRoot":"","sources":["../../../src/bspline/SurfaceLocationDetail.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAClC,kCAAkC;IAC3B,OAAO,CAAa;IAC3B,oCAAoC;IAC7B,EAAE,CAAU;IACnB,+BAA+B;IACxB,KAAK,CAAU;IACtB,2DAA2D;IACpD,CAAC,CAAS;IACjB,iCAAiC;IACjC,YAAmB,OAAmB,EAAE,EAAY,EAAE,KAAe;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IACf,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,oBAAoB,CAAC,OAA8B,EAAE,EAAW,EAAE,KAAc;QAC5F,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,EAAE;YACJ,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAA8B,EAAE,CAAS,EAAE,CAAS,EAAE,KAAc;QAC5G,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;CAEF;AACD;;;GAGG;AACH,MAAM,OAAO,6BAA6B;IACxC,qCAAqC;IAC9B,WAAW,CAAsB;IACxC,uCAAuC;IAChC,aAAa,CAA0B;IAC9C,+BAA+B;IAC/B,YAAmB,WAAgC,EAAE,aAAsC;QACzF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF"}
|