@itwin/core-geometry 5.0.0-dev.11 → 5.0.0-dev.111
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 +71 -1
- package/lib/cjs/Constant.js +17 -17
- package/lib/cjs/Constant.js.map +1 -1
- package/lib/cjs/Geometry.d.ts +13 -4
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +51 -39
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js +3 -1
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.d.ts +90 -54
- package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js +137 -84
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.d.ts +193 -155
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js +249 -181
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve3dH.js +1 -0
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js +18 -21
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js +22 -2
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/bspline/Bezier1dNd.js +6 -0
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.d.ts +3 -1
- package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js +5 -5
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js +2 -0
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js +21 -2
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js +12 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/bspline/KnotVector.d.ts +82 -60
- package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
- package/lib/cjs/bspline/KnotVector.js +144 -84
- package/lib/cjs/bspline/KnotVector.js.map +1 -1
- package/lib/cjs/bspline/SurfaceLocationDetail.js +12 -0
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js +14 -13
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js +4 -0
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js +10 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js +19 -0
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js +5 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.js +11 -8
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js +5 -3
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js +2 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.d.ts +1 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -1
- package/lib/cjs/core-geometry.js +1 -0
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +20 -4
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +86 -21
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js +3 -0
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js +3 -2
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +0 -2
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -10
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +10 -0
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +35 -9
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.d.ts +13 -5
- package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js +19 -15
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts +87 -53
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +213 -135
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +44 -0
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +74 -18
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +86 -18
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js +2 -0
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -0
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js +6 -2
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.d.ts +8 -7
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
- package/lib/cjs/curve/LineString3d.js +52 -29
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.js +12 -4
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/OffsetOptions.js +25 -21
- package/lib/cjs/curve/OffsetOptions.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.js +4 -2
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.js +2 -2
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js +3 -2
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js +1 -0
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js +3 -0
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js +6 -2
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -6
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js +12 -0
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.js +14 -0
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js +4 -5
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.js +9 -10
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +24 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.d.ts +10 -5
- package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js +30 -8
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.js +4 -2
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +71 -0
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -0
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +181 -0
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -0
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js +6 -0
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +2 -0
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts +21 -5
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +53 -20
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js +6 -0
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
- package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js +1 -0
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js +12 -0
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +5 -3
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +6 -3
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +22 -4
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js +1 -0
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +3 -0
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/ClothoidSeries.js +4 -0
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/cjs/curve/spiral/CubicEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +4 -0
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +12 -2
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +24 -4
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/NormalizedTransition.js +5 -0
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +10 -0
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js +10 -0
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js +6 -0
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.js +18 -16
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.d.ts +8 -3
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js +22 -10
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js +25 -0
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/BilinearPatch.js +8 -0
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js +5 -0
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.d.ts +8 -7
- package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js +63 -14
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js +12 -4
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js +7 -0
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.d.ts +15 -16
- package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableBlockedArray.js +12 -0
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js +3 -0
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +0 -5
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +16 -7
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +32 -10
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +70 -16
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js +6 -0
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js +1 -0
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +13 -2
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js +26 -11
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js +3 -0
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +13 -15
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +47 -26
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/OrderedRotationAngles.js +10 -2
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js +7 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -0
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js +4 -0
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js +3 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts +7 -10
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +16 -10
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.d.ts +15 -4
- package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js +29 -8
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js +12 -4
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.d.ts +2 -2
- package/lib/cjs/geometry3d/PolygonOps.js +62 -25
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.d.ts +9 -5
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js +12 -5
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.js +21 -4
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js +2 -0
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.d.ts +2 -2
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js +20 -11
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js +4 -0
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.js +4 -0
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js +11 -0
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.d.ts +1 -1
- package/lib/cjs/geometry3d/Transform.js +4 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js +6 -0
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js +2 -0
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js +1 -0
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/MomentData.d.ts +72 -73
- package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -1
- package/lib/cjs/geometry4d/MomentData.js +90 -66
- package/lib/cjs/geometry4d/MomentData.js.map +1 -1
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js +2 -0
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BandedSystem.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js +8 -0
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js +29 -13
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Complex.js +2 -0
- package/lib/cjs/numerics/Complex.js.map +1 -1
- package/lib/cjs/numerics/ConvexPolygon2d.js +3 -0
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/cjs/numerics/Newton.js +59 -4
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
- package/lib/cjs/numerics/PolarData.js +13 -1
- package/lib/cjs/numerics/PolarData.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.js +64 -26
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/numerics/Quadrature.js +26 -20
- package/lib/cjs/numerics/Quadrature.js.map +1 -1
- package/lib/cjs/numerics/Range1dArray.js.map +1 -1
- package/lib/cjs/numerics/SmallSystem.js.map +1 -1
- package/lib/cjs/numerics/TriDiagonalSystem.js +11 -0
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/cjs/numerics/UnionFind.js +1 -0
- package/lib/cjs/numerics/UnionFind.js.map +1 -1
- package/lib/cjs/numerics/UsageSums.js +10 -0
- package/lib/cjs/numerics/UsageSums.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js +16 -0
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/BoxTopology.js +67 -67
- package/lib/cjs/polyface/BoxTopology.js.map +1 -1
- package/lib/cjs/polyface/FacetFaceData.d.ts +1 -1
- package/lib/cjs/polyface/FacetFaceData.js +3 -1
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.js +30 -0
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.js +12 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +33 -23
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js +63 -33
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts +4 -3
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js +16 -5
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts +233 -0
- package/lib/cjs/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js +353 -0
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -0
- package/lib/cjs/polyface/Polyface.d.ts +43 -14
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
- package/lib/cjs/polyface/Polyface.js +90 -19
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts +14 -27
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js +47 -79
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js +8 -0
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.d.ts +36 -3
- package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js +114 -8
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +47 -7
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeLengthData.js +7 -0
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js +5 -2
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +5 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/polyface/TaggedNumericData.js +8 -0
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
- package/lib/cjs/polyface/TriangleCandidate.js +3 -0
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +32 -0
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/cjs/polyface/multiclip/RangeSearch.js +5 -5
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js +6 -0
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.d.ts +35 -9
- package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js +141 -179
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.d.ts +2 -2
- package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +75 -62
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.d.ts +5 -1
- package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js +18 -3
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js +1 -0
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js +17 -17
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.d.ts +5 -5
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js +113 -112
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.d.ts +78 -64
- package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js +107 -83
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.d.ts +36 -0
- package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js +117 -0
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.js +7 -2
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.d.ts +39 -14
- package/lib/cjs/solid/Cone.d.ts.map +1 -1
- package/lib/cjs/solid/Cone.js +52 -16
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.js +4 -2
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.d.ts +17 -17
- package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js +38 -25
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.d.ts +26 -23
- package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
- package/lib/cjs/solid/RuledSweep.js +32 -24
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.d.ts +12 -11
- package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.js +11 -6
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
- package/lib/cjs/solid/Sphere.d.ts +36 -17
- package/lib/cjs/solid/Sphere.d.ts.map +1 -1
- package/lib/cjs/solid/Sphere.js +53 -24
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.d.ts +24 -15
- package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
- package/lib/cjs/solid/SweepContour.js +33 -15
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.js +7 -2
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.js +16 -4
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.js +41 -6
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js +9 -2
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphValidation.js +7 -9
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js +5 -0
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js +6 -0
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +1 -0
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js +16 -0
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js +2 -0
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js +4 -0
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.js +3 -0
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/Merging.js +11 -6
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js +22 -0
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.js +22 -0
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
- package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
- package/lib/cjs/topology/Triangulation.d.ts +3 -3
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
- package/lib/cjs/topology/Triangulation.js +28 -18
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js +13 -0
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Constant.js +17 -17
- package/lib/esm/Constant.js.map +1 -1
- package/lib/esm/Geometry.d.ts +13 -4
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +51 -39
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js +3 -1
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.d.ts +90 -54
- package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.js +137 -84
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.d.ts +193 -155
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js +249 -181
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve3dH.js +1 -0
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js +18 -21
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js +22 -2
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/bspline/Bezier1dNd.js +6 -0
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.d.ts +3 -1
- package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js +5 -5
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js +2 -0
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js +21 -2
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js +12 -1
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/bspline/KnotVector.d.ts +82 -60
- package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
- package/lib/esm/bspline/KnotVector.js +144 -84
- package/lib/esm/bspline/KnotVector.js.map +1 -1
- package/lib/esm/bspline/SurfaceLocationDetail.js +12 -0
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js +14 -13
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js +4 -0
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.js +10 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js +19 -0
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js +5 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.js +11 -8
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js +5 -3
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +2 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +3 -0
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.d.ts +1 -0
- package/lib/esm/core-geometry.d.ts.map +1 -1
- package/lib/esm/core-geometry.js +1 -0
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +20 -4
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +86 -21
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ConstructCurveBetweenCurves.js +3 -0
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js +3 -2
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +0 -2
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -10
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +10 -0
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +35 -9
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.d.ts +13 -5
- package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js +19 -15
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts +87 -53
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +213 -135
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +44 -0
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +74 -18
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +86 -18
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js +2 -0
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -0
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.js +6 -2
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.d.ts +8 -7
- package/lib/esm/curve/LineString3d.d.ts.map +1 -1
- package/lib/esm/curve/LineString3d.js +52 -29
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.js +12 -4
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/OffsetOptions.js +25 -21
- package/lib/esm/curve/OffsetOptions.js.map +1 -1
- package/lib/esm/curve/ParityRegion.js +4 -2
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.js +2 -2
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js +3 -2
- package/lib/esm/curve/PointString3d.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.js +1 -0
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +1 -0
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js +3 -0
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js +6 -2
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js +4 -6
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js +12 -0
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.js +14 -0
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js +4 -5
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.js +9 -10
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +24 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.d.ts +10 -5
- package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/esm/curve/StrokeOptions.js +30 -8
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.js +4 -2
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +71 -0
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +177 -0
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -0
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +13 -7
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js +6 -0
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js +2 -0
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts +21 -5
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +53 -20
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +3 -0
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +18 -5
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +26 -13
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +11 -5
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveLengthContext.js +6 -0
- package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js +8 -6
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +38 -5
- package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js +1 -0
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js +12 -0
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +5 -3
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +6 -3
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +7 -0
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +22 -4
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js +1 -0
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +3 -0
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +2 -0
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/ClothoidSeries.js +4 -0
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/esm/curve/spiral/CubicEvaluator.js +2 -0
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +4 -0
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +5 -0
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +12 -2
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +24 -4
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +2 -0
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/NormalizedTransition.js +5 -0
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +2 -0
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js +10 -0
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js +10 -0
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/XYCurveEvaluator.js +6 -0
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/esm/geometry3d/Angle.js +18 -16
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.d.ts +8 -3
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js +22 -10
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js +25 -0
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/BilinearPatch.js +8 -0
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js +5 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.d.ts +8 -7
- package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js +63 -14
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js +12 -4
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js +7 -0
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.d.ts +15 -16
- package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableBlockedArray.js +12 -0
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js +3 -0
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +0 -5
- package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +16 -7
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +32 -10
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +70 -16
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedCollectionInterval.js +6 -0
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js +1 -0
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +13 -2
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js +26 -11
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +3 -0
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +13 -15
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +47 -26
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/OrderedRotationAngles.js +10 -2
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +2 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +7 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js +4 -0
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js +3 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +7 -10
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +16 -10
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.d.ts +15 -4
- package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js +29 -8
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js +12 -4
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.d.ts +2 -2
- package/lib/esm/geometry3d/PolygonOps.js +62 -25
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +7 -3
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.d.ts +9 -5
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js +12 -5
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.js +21 -4
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js +2 -0
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.d.ts +2 -2
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js +20 -11
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js +4 -0
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.js +4 -0
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js +11 -0
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.d.ts +1 -1
- package/lib/esm/geometry3d/Transform.js +4 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js +6 -0
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.js +2 -0
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js +1 -0
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/MomentData.d.ts +72 -73
- package/lib/esm/geometry4d/MomentData.d.ts.map +1 -1
- package/lib/esm/geometry4d/MomentData.js +90 -66
- package/lib/esm/geometry4d/MomentData.js.map +1 -1
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +6 -0
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js +2 -0
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BandedSystem.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js +8 -0
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js +29 -13
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Complex.js +2 -0
- package/lib/esm/numerics/Complex.js.map +1 -1
- package/lib/esm/numerics/ConvexPolygon2d.js +3 -0
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/esm/numerics/Newton.js +59 -4
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/PascalCoefficients.js +1 -1
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
- package/lib/esm/numerics/PolarData.js +13 -1
- package/lib/esm/numerics/PolarData.js.map +1 -1
- package/lib/esm/numerics/Polynomials.js +64 -26
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/numerics/Quadrature.js +26 -20
- package/lib/esm/numerics/Quadrature.js.map +1 -1
- package/lib/esm/numerics/Range1dArray.js.map +1 -1
- package/lib/esm/numerics/SmallSystem.js.map +1 -1
- package/lib/esm/numerics/TriDiagonalSystem.js +11 -0
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/esm/numerics/UnionFind.js +1 -0
- package/lib/esm/numerics/UnionFind.js.map +1 -1
- package/lib/esm/numerics/UsageSums.js +10 -0
- package/lib/esm/numerics/UsageSums.js.map +1 -1
- package/lib/esm/polyface/AuxData.js +16 -0
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/BoxTopology.js +67 -67
- package/lib/esm/polyface/BoxTopology.js.map +1 -1
- package/lib/esm/polyface/FacetFaceData.d.ts +1 -1
- package/lib/esm/polyface/FacetFaceData.js +3 -1
- package/lib/esm/polyface/FacetFaceData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.js +30 -0
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.js +12 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +18 -2
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +33 -23
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js +63 -33
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +4 -3
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js +16 -5
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts +233 -0
- package/lib/esm/polyface/IndexedPolyfaceWalker.d.ts.map +1 -0
- package/lib/esm/polyface/IndexedPolyfaceWalker.js +349 -0
- package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -0
- package/lib/esm/polyface/Polyface.d.ts +43 -14
- package/lib/esm/polyface/Polyface.d.ts.map +1 -1
- package/lib/esm/polyface/Polyface.js +90 -19
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +14 -27
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js +48 -80
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js +8 -0
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.d.ts +36 -3
- package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js +114 -8
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +47 -7
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeLengthData.js +7 -0
- package/lib/esm/polyface/RangeLengthData.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +12 -0
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js +5 -2
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js +12 -0
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js +14 -0
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js +5 -0
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +43 -0
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/polyface/TaggedNumericData.js +8 -0
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
- package/lib/esm/polyface/TriangleCandidate.js +3 -0
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +7 -0
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +6 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +3 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +3 -0
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js +32 -0
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/esm/polyface/multiclip/RangeSearch.js +5 -5
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +21 -8
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js +6 -0
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.d.ts +35 -9
- package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js +141 -179
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.d.ts +2 -2
- package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +75 -62
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.d.ts +5 -1
- package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js +18 -3
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js +1 -0
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js +17 -17
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.d.ts +5 -5
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js +113 -112
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.d.ts +78 -64
- package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js +107 -83
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.d.ts +36 -0
- package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js +117 -0
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.js +7 -2
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.d.ts +39 -14
- package/lib/esm/solid/Cone.d.ts.map +1 -1
- package/lib/esm/solid/Cone.js +53 -17
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.js +4 -2
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.d.ts +17 -17
- package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
- package/lib/esm/solid/RotationalSweep.js +38 -25
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.d.ts +26 -23
- package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
- package/lib/esm/solid/RuledSweep.js +32 -24
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SolidPrimitive.d.ts +12 -11
- package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -1
- package/lib/esm/solid/SolidPrimitive.js +11 -6
- package/lib/esm/solid/SolidPrimitive.js.map +1 -1
- package/lib/esm/solid/Sphere.d.ts +36 -17
- package/lib/esm/solid/Sphere.d.ts.map +1 -1
- package/lib/esm/solid/Sphere.js +54 -25
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.d.ts +24 -15
- package/lib/esm/solid/SweepContour.d.ts.map +1 -1
- package/lib/esm/solid/SweepContour.js +33 -15
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.js +7 -2
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.js +16 -4
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.js +41 -6
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.d.ts +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js +5 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js +9 -2
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphValidation.js +7 -9
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js +5 -0
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js +6 -0
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js +1 -0
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js +16 -0
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js +2 -0
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js +4 -0
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.js +3 -0
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/Merging.js +11 -6
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.js +22 -0
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/SignedDataSummary.js +22 -0
- package/lib/esm/topology/SignedDataSummary.js.map +1 -1
- package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
- package/lib/esm/topology/Triangulation.d.ts +3 -3
- package/lib/esm/topology/Triangulation.d.ts.map +1 -1
- package/lib/esm/topology/Triangulation.js +28 -18
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js +13 -0
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +9 -9
|
@@ -9,6 +9,7 @@ exports.BGFBWriter = void 0;
|
|
|
9
9
|
* @module Serialization
|
|
10
10
|
*/
|
|
11
11
|
const flatbuffers_1 = require("flatbuffers");
|
|
12
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
13
|
const AkimaCurve3d_1 = require("../bspline/AkimaCurve3d");
|
|
13
14
|
const BSplineCurve_1 = require("../bspline/BSplineCurve");
|
|
14
15
|
const BSplineCurve3dH_1 = require("../bspline/BSplineCurve3dH");
|
|
@@ -51,6 +52,7 @@ const SerializationHelpers_1 = require("./SerializationHelpers");
|
|
|
51
52
|
* @internal
|
|
52
53
|
*/
|
|
53
54
|
class BGFBWriter {
|
|
55
|
+
builder;
|
|
54
56
|
constructor(defaultSize = 1024) {
|
|
55
57
|
this.builder = new flatbuffers_1.flatbuffers.Builder(defaultSize);
|
|
56
58
|
}
|
|
@@ -458,8 +460,9 @@ class BGFBWriter {
|
|
|
458
460
|
let paramOffset = 0;
|
|
459
461
|
let auxDataOffset = 0;
|
|
460
462
|
let taggedNumericDataOffset = 0;
|
|
461
|
-
|
|
462
|
-
const
|
|
463
|
+
let edgeMateIndexOffset = 0;
|
|
464
|
+
const meshStyle = 1; // always write MESH_ELM_STYLE_INDEXED_FACE_LOOPS
|
|
465
|
+
const numPerFace = 0; // always write variable sized, 0-terminated face loops
|
|
463
466
|
this.fillOneBasedIndexArray(mesh, mesh.data.pointIndex, mesh.data.edgeVisible, 0, indexArray);
|
|
464
467
|
const twoSided = mesh.twoSided;
|
|
465
468
|
const pointIndexOffset = BGFBAccessors_1.BGFBAccessors.Polyface.createPointIndexVector(this.builder, indexArray);
|
|
@@ -475,6 +478,7 @@ class BGFBWriter {
|
|
|
475
478
|
this.fillOneBasedIndexArray(mesh, mesh.data.colorIndex, undefined, 0, indexArray);
|
|
476
479
|
colorIndexOffset = BGFBAccessors_1.BGFBAccessors.Polyface.createColorIndexVector(this.builder, indexArray);
|
|
477
480
|
}
|
|
481
|
+
// only int colors are persistent
|
|
478
482
|
if (mesh.data.color !== undefined && mesh.data.color.length > 0) {
|
|
479
483
|
intColorOffset = BGFBAccessors_1.BGFBAccessors.Polyface.createIntColorVector(this.builder, mesh.data.color);
|
|
480
484
|
}
|
|
@@ -491,12 +495,23 @@ class BGFBWriter {
|
|
|
491
495
|
if (mesh.data.taggedNumericData)
|
|
492
496
|
taggedNumericDataOffset = this.writeTaggedNumericDataArray(mesh.data.taggedNumericData);
|
|
493
497
|
const expectedClosure = mesh.expectedClosure;
|
|
498
|
+
if (mesh.data.edgeMateIndex) {
|
|
499
|
+
indexArray.length = 0;
|
|
500
|
+
if (!SerializationHelpers_1.SerializationHelpers.announceUncompressedZeroBasedReflexiveIndices(mesh.data.edgeMateIndex, mesh.facetStart, SerializationHelpers_1.SerializationHelpers.EdgeMateIndex.BlockSeparator, SerializationHelpers_1.SerializationHelpers.EdgeMateIndex.NoEdgeMate, (i) => indexArray.push(i))) {
|
|
501
|
+
(0, core_bentley_1.assert)(false, "unable to serialize edgeMateIndex array to flatbuffer");
|
|
502
|
+
}
|
|
503
|
+
edgeMateIndexOffset = BGFBAccessors_1.BGFBAccessors.Polyface.createEdgeMateIndexVector(this.builder, indexArray);
|
|
504
|
+
}
|
|
494
505
|
// NOTE: mesh.data.face is not persistent
|
|
495
|
-
const polyfaceOffset = BGFBAccessors_1.BGFBAccessors.Polyface.createPolyface(this.builder, pointOffset, paramOffset, normalOffset, 0, intColorOffset, pointIndexOffset, paramIndexOffset, normalIndexOffset, colorIndexOffset, 0,
|
|
506
|
+
const polyfaceOffset = BGFBAccessors_1.BGFBAccessors.Polyface.createPolyface(this.builder, pointOffset, paramOffset, normalOffset, 0, intColorOffset, pointIndexOffset, paramIndexOffset, normalIndexOffset, colorIndexOffset, 0, numPerFace, 0, meshStyle, twoSided, 0, 0, auxDataOffset, expectedClosure, taggedNumericDataOffset, edgeMateIndexOffset);
|
|
496
507
|
return BGFBAccessors_1.BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors_1.BGFBAccessors.VariantGeometryUnion.tagPolyface, polyfaceOffset, 0);
|
|
497
508
|
}
|
|
498
509
|
return undefined;
|
|
499
510
|
}
|
|
511
|
+
/**
|
|
512
|
+
* @param sourceIndex a map that takes zeroBasedDataIndex -> zeroBasedDataIndex, packed into unterminated face loops delineated by `mesh.facetIndex0/1`
|
|
513
|
+
* @param destIndex a map that takes zeroBasedDataIndex -> signedOneBasedDataIndex, packed into optionally terminated face loops
|
|
514
|
+
*/
|
|
500
515
|
fillOneBasedIndexArray(mesh, sourceIndex, visible, facetTerminator, destIndex) {
|
|
501
516
|
destIndex.length = 0;
|
|
502
517
|
const numFacet = mesh.facetCount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BGFBWriter.js","sourceRoot":"","sources":["../../../src/serialization/BGFBWriter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Serialization\r\n */\r\nimport { flatbuffers } from \"flatbuffers\";\r\nimport { AkimaCurve3d } from \"../bspline/AkimaCurve3d\";\r\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\r\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\r\nimport { BSplineSurface3d, BSplineSurface3dH, UVSelect } from \"../bspline/BSplineSurface\";\r\nimport { InterpolationCurve3d } from \"../bspline/InterpolationCurve3d\";\r\nimport { BSplineWrapMode } from \"../bspline/KnotVector\";\r\nimport { Arc3d } from \"../curve/Arc3d\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { Loop } from \"../curve/Loop\";\r\nimport { ParityRegion } from \"../curve/ParityRegion\";\r\nimport { Path } from \"../curve/Path\";\r\nimport { PointString3d } from \"../curve/PointString3d\";\r\nimport { DirectSpiral3d } from \"../curve/spiral/DirectSpiral3d\";\r\nimport { IntegratedSpiral3d } from \"../curve/spiral/IntegratedSpiral3d\";\r\nimport { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\r\nimport { UnionRegion } from \"../curve/UnionRegion\";\r\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\r\nimport { Point3d, XYZ } from \"../geometry3d/Point3dVector3d\";\r\nimport { AuxChannel, AuxChannelData, PolyfaceAuxData } from \"../polyface/AuxData\";\r\nimport { IndexedPolyface } from \"../polyface/Polyface\";\r\nimport { TaggedNumericData } from \"../polyface/TaggedNumericData\";\r\nimport { Box } from \"../solid/Box\";\r\nimport { Cone } from \"../solid/Cone\";\r\nimport { LinearSweep } from \"../solid/LinearSweep\";\r\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\r\nimport { RuledSweep } from \"../solid/RuledSweep\";\r\nimport { SolidPrimitive } from \"../solid/SolidPrimitive\";\r\nimport { Sphere } from \"../solid/Sphere\";\r\nimport { TorusPipe } from \"../solid/TorusPipe\";\r\nimport { BGFBAccessors } from \"./BGFBAccessors\";\r\nimport { DgnSpiralTypeQueries } from \"./BGFBReader\";\r\nimport { SerializationHelpers } from \"./SerializationHelpers\";\r\n\r\n/**\r\n * Context to write to a flatbuffer blob.\r\n * * This class is internal.\r\n * * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()\r\n * @internal\r\n */\r\nexport class BGFBWriter {\r\n public builder: flatbuffers.Builder;\r\n public constructor(defaultSize: number = 1024) {\r\n this.builder = new flatbuffers.Builder(defaultSize);\r\n }\r\n /**\r\n *\r\n * @param data data source, as Float64Array or number[].\r\n * @param count optional count, used only if less than .length numbers are to be written.\r\n */\r\n public writeDoubleArray(data: Float64Array | number[] | undefined, count?: number): number {\r\n if (data === undefined)\r\n return 0;\r\n let numFloats = data.length;\r\n if (numFloats === 0)\r\n return 0;\r\n if (count !== undefined && count < numFloats)\r\n numFloats = count;\r\n this.builder.startVector(8, numFloats, 8);\r\n for (let i = numFloats - 1; i >= 0; i--) {\r\n this.builder.addFloat64(data[i]);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n /**\r\n *\r\n * @param data data source, as Float64Array or number[].\r\n * @param count optional count, used only if less than .length numbers are to be written.\r\n */\r\n public writeIntArray(data: Int32Array | number[] | undefined): number {\r\n if (data === undefined)\r\n return 0;\r\n const numInt = data.length;\r\n if (numInt === 0)\r\n return 0;\r\n this.builder.startVector(4, numInt, 4);\r\n for (let i = numInt - 1; i >= 0; i--) {\r\n this.builder.addInt32(data[i]);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n /**\r\n *\r\n * @param data data source, as array derived from XYZ.\r\n * The data is output as a flat array of 3*data.length numbers.\r\n */\r\n public writePackedYZArray(data: XYZ[] | undefined): number {\r\n if (data === undefined)\r\n return 0;\r\n const numFloats = data.length * 3;\r\n if (numFloats === 0)\r\n return 0;\r\n this.builder.startVector(8, numFloats, 8);\r\n // write in reverse index order, and zyx within each XYZ\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n this.builder.addFloat64(data[i].z);\r\n this.builder.addFloat64(data[i].y);\r\n this.builder.addFloat64(data[i].x);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n public writeCurveCollectionAsFBCurveVector(cv: CurveCollection): number | undefined {\r\n const childrenOffsets: flatbuffers.Offset[] = [];\r\n for (const child of cv.children) {\r\n if (child instanceof CurvePrimitive) {\r\n const childOffset = this.writeCurvePrimitiveAsFBVariantGeometry(child);\r\n if (childOffset)\r\n childrenOffsets.push(childOffset);\r\n } else if (child instanceof CurveCollection) {\r\n const childOffset = this.writeCurveCollectionAsFBVariantGeometry(child);\r\n if (childOffset)\r\n childrenOffsets.push(childOffset);\r\n }\r\n }\r\n\r\n const childrenVectorOffset = BGFBAccessors.CurveVector.createCurvesVector(this.builder, childrenOffsets);\r\n let cvType = 0;\r\n if (cv instanceof Path) cvType = 1;\r\n else if (cv instanceof Loop) {\r\n cvType = cv.isInner ? 3 : 2;\r\n } else if (cv instanceof ParityRegion) cvType = 4;\r\n else if (cv instanceof UnionRegion) cvType = 5;\r\n const curveVectorOffset = BGFBAccessors.CurveVector.createCurveVector(this.builder, cvType, childrenVectorOffset);\r\n return curveVectorOffset;\r\n }\r\n\r\n public writeCurveCollectionAsFBVariantGeometry(cv: CurveCollection): number | undefined {\r\n const curveVectorOffset = this.writeCurveCollectionAsFBCurveVector(cv);\r\n if (curveVectorOffset === undefined)\r\n return undefined;\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagCurveVector, curveVectorOffset, 0);\r\n }\r\n\r\n public writeInterpolationCurve3dAsFBVariantGeometry(curve: InterpolationCurve3d): number | undefined {\r\n const props = curve.cloneProps();\r\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\r\n const knotOffset = props.knots ? this.writeDoubleArray(props.knots) : 0;\r\n\r\n BGFBAccessors.InterpolationCurve.startInterpolationCurve(this.builder);\r\n BGFBAccessors.InterpolationCurve.addFitPoints(this.builder, fitPointsOffset);\r\n if (props.order)\r\n BGFBAccessors.InterpolationCurve.addOrder(this.builder, props.order);\r\n if (props.closed)\r\n BGFBAccessors.InterpolationCurve.addClosed(this.builder, props.closed);\r\n if (props.isChordLenKnots)\r\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\r\n if (props.isColinearTangents)\r\n BGFBAccessors.InterpolationCurve.addIsColinearTangents(this.builder, props.isColinearTangents);\r\n if (props.isChordLenKnots)\r\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\r\n if (props.isNaturalTangents)\r\n BGFBAccessors.InterpolationCurve.addIsNaturalTangents(this.builder, props.isNaturalTangents);\r\n // REMARK: some native or flatbuffer quirk made startTangent a point and endTangent a vector.\r\n if (props.startTangent !== undefined) {\r\n const startTangentOffset = BGFBAccessors.DPoint3d.createDPoint3d(this.builder,\r\n XYZ.x(props.startTangent), XYZ.y(props.startTangent), XYZ.z(props.startTangent));\r\n BGFBAccessors.InterpolationCurve.addStartTangent(this.builder, startTangentOffset);\r\n }\r\n if (props.endTangent !== undefined) {\r\n const endTangentOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder,\r\n XYZ.x(props.endTangent), XYZ.y(props.endTangent), XYZ.z(props.endTangent));\r\n BGFBAccessors.InterpolationCurve.addEndTangent(this.builder, endTangentOffset);\r\n }\r\n if (knotOffset !== 0)\r\n BGFBAccessors.InterpolationCurve.addKnots(this.builder, knotOffset);\r\n const headerOffset = BGFBAccessors.InterpolationCurve.endInterpolationCurve(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve, headerOffset, 0);\r\n }\r\n\r\n public writeAkimaCurve3dAsFBVariantGeometry(curve: AkimaCurve3d): number | undefined {\r\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\r\n BGFBAccessors.AkimaCurve.startAkimaCurve(this.builder);\r\n BGFBAccessors.AkimaCurve.addPoints(this.builder, fitPointsOffset);\r\n const headerOffset = BGFBAccessors.AkimaCurve.endAkimaCurve(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagAkimaCurve, headerOffset, 0);\r\n }\r\n\r\n public writeBsplineCurve3dAsFBVariantGeometry(bcurve: BSplineCurve3d): number | undefined {\r\n const data = SerializationHelpers.createBSplineCurveData(bcurve.polesRef, bcurve.poleDimension, bcurve.knotsRef, bcurve.numPoles, bcurve.order);\r\n const wrapMode = bcurve.getWrappable();\r\n if (BSplineWrapMode.None !== wrapMode)\r\n data.params.wrapMode = wrapMode;\r\n\r\n if (!SerializationHelpers.Export.prepareBSplineCurveData(data, {jsonPoles: false}))\r\n return undefined;\r\n\r\n const closed = !!data.params.closed;\r\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\r\n const weightsOffset = 0;\r\n const knotsOffset = this.writeDoubleArray(data.params.knots);\r\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\r\n }\r\n\r\n public writeBSplineSurfaceAsFBVariantGeometry(bsurf: BSplineSurface3d | BSplineSurface3dH): number | undefined {\r\n let poles: Float64Array = bsurf.coffs;\r\n let weights: Float64Array | undefined;\r\n let dim = bsurf.poleDimension;\r\n if (bsurf instanceof BSplineSurface3dH) {\r\n poles = bsurf.copyXYZToFloat64Array(false);\r\n weights = bsurf.copyWeightsToFloat64Array();\r\n dim = 3;\r\n }\r\n\r\n const data = SerializationHelpers.createBSplineSurfaceData(poles, dim,\r\n bsurf.knots[UVSelect.uDirection].knots, bsurf.numPolesUV(UVSelect.uDirection), bsurf.orderUV(UVSelect.uDirection),\r\n bsurf.knots[UVSelect.vDirection].knots, bsurf.numPolesUV(UVSelect.vDirection), bsurf.orderUV(UVSelect.vDirection));\r\n\r\n if (weights)\r\n data.weights = weights;\r\n const wrapModeU = bsurf.getWrappable(UVSelect.uDirection);\r\n const wrapModeV = bsurf.getWrappable(UVSelect.vDirection);\r\n if (BSplineWrapMode.None !== wrapModeU)\r\n data.uParams.wrapMode = wrapModeU;\r\n if (BSplineWrapMode.None !== wrapModeV)\r\n data.vParams.wrapMode = wrapModeV;\r\n\r\n if (!SerializationHelpers.Export.prepareBSplineSurfaceData(data, {jsonPoles: false}))\r\n return undefined;\r\n\r\n // TypeScript B-spline surfaces do not support trim curves or isoline counts\r\n const holeOrigin = 0;\r\n const boundariesOffset = 0;\r\n const numRulesU = 0;\r\n const numRulesV = 0;\r\n\r\n const closedU = !!data.uParams.closed;\r\n const closedV = !!data.vParams.closed;\r\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\r\n const weightsOffset = data.weights ? this.writeDoubleArray(data.weights as Float64Array) : 0;\r\n const uKnotsOffset = this.writeDoubleArray(data.uParams.knots);\r\n const vKnotsOffset = this.writeDoubleArray(data.vParams.knots);\r\n const headerOffset = BGFBAccessors.BsplineSurface.createBsplineSurface(this.builder, polesOffset, weightsOffset,\r\n uKnotsOffset, vKnotsOffset, data.uParams.numPoles, data.vParams.numPoles, data.uParams.order, data.vParams.order,\r\n numRulesU, numRulesV, holeOrigin, boundariesOffset, closedU, closedV);\r\n\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineSurface, headerOffset, 0);\r\n }\r\n\r\n public writeBsplineCurve3dHAsFBVariantGeometry(bcurve: BSplineCurve3dH): number | undefined {\r\n const poles = bcurve.copyXYZFloat64Array(false);\r\n const weights = bcurve.copyWeightsFloat64Array();\r\n const dim = 3;\r\n\r\n const data = SerializationHelpers.createBSplineCurveData(poles, dim, bcurve.knotsRef, bcurve.numPoles, bcurve.order);\r\n data.weights = weights;\r\n const wrapMode = bcurve.getWrappable();\r\n if (BSplineWrapMode.None !== wrapMode)\r\n data.params.wrapMode = wrapMode;\r\n\r\n if (!SerializationHelpers.Export.prepareBSplineCurveData(data, {jsonPoles: false}))\r\n return undefined;\r\n\r\n const closed = !!data.params.closed;\r\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\r\n const weightsOffset = this.writeDoubleArray(data.weights);\r\n const knotsOffset = this.writeDoubleArray(data.params.knots);\r\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\r\n }\r\n\r\n public writeCurvePrimitiveAsFBVariantGeometry(curvePrimitive: CurvePrimitive): number | undefined {\r\n if (curvePrimitive instanceof LineSegment3d) {\r\n const segmentDataOffset = BGFBAccessors.DSegment3d.createDSegment3d(this.builder,\r\n curvePrimitive.point0Ref.x,\r\n curvePrimitive.point0Ref.y,\r\n curvePrimitive.point0Ref.z,\r\n curvePrimitive.point1Ref.x,\r\n curvePrimitive.point1Ref.y,\r\n curvePrimitive.point1Ref.z);\r\n const lineSegmentOffset = BGFBAccessors.LineSegment.createLineSegment(this.builder, segmentDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineSegment, lineSegmentOffset, 0);\r\n } else if (curvePrimitive instanceof Arc3d) {\r\n const data = curvePrimitive.toVectors();\r\n const arcDataOffset = BGFBAccessors.DEllipse3d.createDEllipse3d(this.builder,\r\n data.center.x, data.center.y, data.center.z,\r\n data.vector0.x, data.vector0.y, data.vector0.z,\r\n data.vector90.x, data.vector90.y, data.vector90.z,\r\n data.sweep.startRadians,\r\n data.sweep.sweepRadians);\r\n const arcOffset = BGFBAccessors.EllipticArc.createEllipticArc(this.builder, arcDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagEllipticArc, arcOffset, 0);\r\n } else if (curvePrimitive instanceof LineString3d) {\r\n const coordinates = extractNumberArray(curvePrimitive.packedPoints);\r\n const lineStringOffset = BGFBAccessors.LineString.createLineString(this.builder,\r\n BGFBAccessors.LineString.createPointsVector(this.builder, coordinates));\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineString, lineStringOffset, 0);\r\n } else if (curvePrimitive instanceof BSplineCurve3d) {\r\n return this.writeBsplineCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof BSplineCurve3dH) {\r\n return this.writeBsplineCurve3dHAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof InterpolationCurve3d) {\r\n return this.writeInterpolationCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof AkimaCurve3d) {\r\n return this.writeAkimaCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof IntegratedSpiral3d) {\r\n const placement = curvePrimitive.localToWorld;\r\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\r\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\r\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\r\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\r\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\r\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\r\n curvePrimitive.bearing01.startRadians, curvePrimitive.bearing01.endRadians,\r\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x0),\r\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x1),\r\n typeCode,\r\n 0);\r\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\r\n spiralDetailOffset, 0, 0);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\r\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\r\n } else if (curvePrimitive instanceof DirectSpiral3d) {\r\n const placement = curvePrimitive.localToWorld;\r\n // direct spirals always inflect at the origin of the local frame ..\r\n // spiral\r\n const curvature0 = 0.0;\r\n const curvature1 = curvePrimitive.nominalCurvature1;\r\n const radius0 = 0.0;\r\n const radius1 = curvePrimitive.nominalR1; // which is 1/curvature1\r\n const nominalLength = curvePrimitive.nominalL1;\r\n const bearing0Radians = 0.0;\r\n const bearing1Radians = TransitionSpiral3d.radiusRadiusLengthToSweepRadians(radius0, radius1, nominalLength);\r\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\r\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\r\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\r\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\r\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\r\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\r\n bearing0Radians, bearing1Radians,\r\n curvature0, curvature1,\r\n typeCode,\r\n 0);\r\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\r\n spiralDetailOffset, 0, 0);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\r\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\r\n }\r\n return undefined;\r\n }\r\n public writePointString3dAsFBVariantGeometry(pointString: PointString3d): number | undefined {\r\n if (pointString instanceof PointString3d) {\r\n const coordinates = extractNumberArray(pointString.points);\r\n const headerOffset = BGFBAccessors.PointString.createPointString(this.builder,\r\n BGFBAccessors.PointString.createPointsVector(this.builder, coordinates));\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPointString, headerOffset, 0);\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n public writeSolidPrimitiveAsFBVariantGeometry(solid: SolidPrimitive): number | undefined {\r\n // NOTE: Box, Sphere, Cone, and TorusPipe have \"detail\" within a \"table\"\r\n // BUT: linear, rotational, and ruled sweeps have their contour and numerics directly within their table.\r\n if (solid instanceof Box) {\r\n const originA = solid.getBaseOrigin();\r\n const originB = solid.getTopOrigin();\r\n const vectorX = solid.getVectorX();\r\n const vectorY = solid.getVectorY();\r\n\r\n const baseX = solid.getBaseX();\r\n const baseY = solid.getBaseY();\r\n const topX = solid.getTopX();\r\n const topY = solid.getTopY();\r\n const detailOffset = BGFBAccessors.DgnBoxDetail.createDgnBoxDetail(this.builder,\r\n originA.x, originA.y, originA.z,\r\n originB.x, originB.y, originB.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z,\r\n baseX, baseY, topX, topY, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnBox.createDgnBox(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnBox, carrierOffset, 0);\r\n } else if (solid instanceof Sphere) {\r\n const localToWorld = solid.cloneLocalToWorld();\r\n const sweep = solid.cloneLatitudeSweep();\r\n const detailOffset = BGFBAccessors.DgnSphereDetail.createDgnSphereDetail(this.builder,\r\n localToWorld.matrix.coffs[0], localToWorld.matrix.coffs[1], localToWorld.matrix.coffs[2], localToWorld.origin.x,\r\n localToWorld.matrix.coffs[3], localToWorld.matrix.coffs[4], localToWorld.matrix.coffs[5], localToWorld.origin.y,\r\n localToWorld.matrix.coffs[6], localToWorld.matrix.coffs[7], localToWorld.matrix.coffs[8], localToWorld.origin.z,\r\n sweep.startRadians, sweep.sweepRadians,\r\n solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnSphere.createDgnSphere(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnSphere, carrierOffset, 0);\r\n } else if (solid instanceof Cone) {\r\n const centerA = solid.getCenterA();\r\n const centerB = solid.getCenterB();\r\n const vectorX = solid.getVectorX();\r\n const vectorY = solid.getVectorY();\r\n const radiusA = solid.getRadiusA();\r\n const radiusB = solid.getRadiusB();\r\n const detailOffset = BGFBAccessors.DgnConeDetail.createDgnConeDetail(this.builder,\r\n centerA.x, centerA.y, centerA.z,\r\n centerB.x, centerB.y, centerB.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z, radiusA, radiusB, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnCone.createDgnCone(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnCone, carrierOffset, 0);\r\n } else if (solid instanceof TorusPipe) {\r\n const center = solid.cloneCenter();\r\n const vectorX = solid.cloneVectorX();\r\n const vectorY = solid.cloneVectorY();\r\n const minorRadius = solid.getMinorRadius();\r\n const majorRadius = solid.getMajorRadius();\r\n const sweepRadians = solid.getSweepAngle().radians;\r\n const detailOffset = BGFBAccessors.DgnTorusPipeDetail.createDgnTorusPipeDetail(this.builder,\r\n center.x, center.y, center.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z, majorRadius, minorRadius, sweepRadians, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnTorusPipe.createDgnTorusPipe(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe, carrierOffset, 0);\r\n } else if (solid instanceof LinearSweep) {\r\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\r\n const sweepVector = solid.cloneSweepVector();\r\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\r\n\r\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\r\n // chokes trying to add it.\r\n BGFBAccessors.DgnExtrusion.startDgnExtrusion(this.builder);\r\n BGFBAccessors.DgnExtrusion.addBaseCurve(this.builder, baseCurveOffset);\r\n const extrusionVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n BGFBAccessors.DgnExtrusion.addExtrusionVector(this.builder, extrusionVectorOffset);\r\n BGFBAccessors.DgnExtrusion.addCapped(this.builder, solid.capped);\r\n const dgnExtrusionOffset = BGFBAccessors.DgnExtrusion.endDgnExtrusion(this.builder);\r\n\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion, dgnExtrusionOffset, 0);\r\n } else if (solid instanceof RotationalSweep) {\r\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\r\n const axis = solid.cloneAxisRay();\r\n const sweepAngle = solid.getSweep();\r\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\r\n\r\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\r\n // chokes trying to add it.\r\n BGFBAccessors.DgnRotationalSweep.startDgnRotationalSweep(this.builder);\r\n BGFBAccessors.DgnRotationalSweep.addBaseCurve(this.builder, baseCurveOffset);\r\n const axisRayOffset = BGFBAccessors.DRay3d.createDRay3d(this.builder,\r\n axis.origin.x, axis.origin.y, axis.origin.z, axis.direction.x, axis.direction.y, axis.direction.z);\r\n BGFBAccessors.DgnRotationalSweep.addAxis(this.builder, axisRayOffset);\r\n BGFBAccessors.DgnRotationalSweep.addSweepRadians(this.builder, sweepAngle.radians);\r\n BGFBAccessors.DgnRotationalSweep.addCapped(this.builder, solid.capped);\r\n const dgnRotationalSweepOffset = BGFBAccessors.DgnRotationalSweep.endDgnRotationalSweep(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep, dgnRotationalSweepOffset, 0);\r\n\r\n } else if (solid instanceof RuledSweep) {\r\n const contours = solid.sweepContoursRef();\r\n const contourOffsets: flatbuffers.Offset[] = [];\r\n for (const contour of contours) {\r\n const contourOffset = this.writeCurveCollectionAsFBCurveVector(contour.getCurves());\r\n if (contourOffset !== undefined)\r\n contourOffsets.push(contourOffset);\r\n }\r\n const contoursVectorOffset = BGFBAccessors.DgnRuledSweep.createCurvesVector(this.builder, contourOffsets);\r\n const ruledSweepTable = BGFBAccessors.DgnRuledSweep.createDgnRuledSweep(this.builder, contoursVectorOffset, solid.capped);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep, ruledSweepTable, 0);\r\n }\r\n return undefined;\r\n }\r\n public writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData: AuxChannelData): number | undefined {\r\n if (channelData instanceof AuxChannelData) {\r\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannelData.createValuesVector(this.builder, channelData.values);\r\n return BGFBAccessors.PolyfaceAuxChannelData.createPolyfaceAuxChannelData(this.builder,\r\n channelData.input,\r\n valuesOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n public writePolyfaceAuxChannelAsFBVariantGeometry(channel: AuxChannel): number | undefined {\r\n if (channel instanceof AuxChannel) {\r\n const channelDataOffsets: number[] = [];\r\n for (const channelData of channel.data) {\r\n channelDataOffsets.push(this.writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData)!);\r\n }\r\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelDataOffsets);\r\n const nameOffset = channel.name ? this.builder.createString(channel.name) : 0;\r\n const inputNameOffset = channel.inputName ? this.builder.createString(channel.inputName) : 0;\r\n return BGFBAccessors.PolyfaceAuxChannel.createPolyfaceAuxChannel(this.builder,\r\n channel.dataType,\r\n nameOffset,\r\n inputNameOffset, valuesOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n public writePolyfaceAuxDataAsFBVariantGeometry(mesh: IndexedPolyface, data: PolyfaceAuxData): number | undefined {\r\n if (data instanceof PolyfaceAuxData) {\r\n const channelOffsets: number[] = [];\r\n for (const channel of data.channels)\r\n channelOffsets.push(this.writePolyfaceAuxChannelAsFBVariantGeometry(channel)!);\r\n const channelOffsetsOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelOffsets);\r\n\r\n const indexArray: number[] = [];\r\n this.fillOneBasedIndexArray(mesh, data.indices, undefined, 0, indexArray);\r\n const indicesOffset = BGFBAccessors.PolyfaceAuxData.createIndicesVector(this.builder, indexArray);\r\n\r\n return BGFBAccessors.PolyfaceAuxData.createPolyfaceAuxData(this.builder, indicesOffset, channelOffsetsOffset);\r\n }\r\n return undefined;\r\n }\r\n public writeTaggedNumericDataArray(data: TaggedNumericData | undefined): number {\r\n if (data){\r\n const intDataOffset = this.writeIntArray(data.intData);\r\n const doubleDataOffset = this.writeDoubleArray(data.doubleData);\r\n return BGFBAccessors.TaggedNumericData.createTaggedNumericData(this.builder,\r\n data.tagA, data.tagB, intDataOffset, doubleDataOffset);\r\n }\r\n return 0;\r\n }\r\n\r\n public writePolyfaceAsFBVariantGeometry(mesh: IndexedPolyface): number | undefined {\r\n if (mesh instanceof IndexedPolyface) {\r\n // WE KNOW . . . . the polyface has blocks of zero-based indices.\r\n const indexArray: number[] = []; // and this will really be integers.\r\n const numberArray: number[] = []; // and this will really be doubles.\r\n\r\n copyToPackedNumberArray(numberArray, mesh.data.point.float64Data(), mesh.data.point.float64Length);\r\n const pointOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\r\n let paramIndexOffset = 0;\r\n let normalIndexOffset = 0;\r\n let colorIndexOffset = 0;\r\n let intColorOffset = 0;\r\n let normalOffset = 0;\r\n let paramOffset = 0;\r\n let auxDataOffset = 0;\r\n let taggedNumericDataOffset = 0;\r\n const meshStyle = 1; // That is . . . MESH_ELM_STYLE_INDEXED_FACE_LOOPS\r\n const numPerFace = 0; // specifically, variable size with 0 terminators\r\n this.fillOneBasedIndexArray(mesh, mesh.data.pointIndex, mesh.data.edgeVisible, 0, indexArray);\r\n\r\n const twoSided = mesh.twoSided;\r\n const pointIndexOffset = BGFBAccessors.Polyface.createPointIndexVector(this.builder, indexArray);\r\n if (mesh.data.paramIndex !== undefined && mesh.data.paramIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.paramIndex, undefined, 0, indexArray);\r\n paramIndexOffset = BGFBAccessors.Polyface.createParamIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.normalIndex !== undefined && mesh.data.normalIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.normalIndex, undefined, 0, indexArray);\r\n normalIndexOffset = BGFBAccessors.Polyface.createNormalIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.colorIndex !== undefined && mesh.data.colorIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.colorIndex, undefined, 0, indexArray);\r\n colorIndexOffset = BGFBAccessors.Polyface.createColorIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.color !== undefined && mesh.data.color.length > 0) {\r\n intColorOffset = BGFBAccessors.Polyface.createIntColorVector(this.builder, mesh.data.color);\r\n }\r\n\r\n if (mesh.data.normal) {\r\n copyToPackedNumberArray(numberArray, mesh.data.normal.float64Data(), mesh.data.normal.float64Length);\r\n normalOffset = BGFBAccessors.Polyface.createNormalVector(this.builder, numberArray);\r\n }\r\n\r\n if (mesh.data.param) {\r\n copyToPackedNumberArray(numberArray, mesh.data.param.float64Data(), mesh.data.param.float64Length);\r\n paramOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\r\n }\r\n\r\n if (mesh.data.auxData)\r\n auxDataOffset = this.writePolyfaceAuxDataAsFBVariantGeometry(mesh, mesh.data.auxData)!;\r\n\r\n if (mesh.data.taggedNumericData)\r\n taggedNumericDataOffset = this.writeTaggedNumericDataArray(mesh.data.taggedNumericData);\r\n\r\n const expectedClosure = mesh.expectedClosure;\r\n\r\n // NOTE: mesh.data.face is not persistent\r\n\r\n const polyfaceOffset = BGFBAccessors.Polyface.createPolyface(\r\n this.builder, pointOffset, paramOffset, normalOffset, 0, intColorOffset, pointIndexOffset, paramIndexOffset,\r\n normalIndexOffset, colorIndexOffset, 0, 0, 0, meshStyle, twoSided, numPerFace, 0, auxDataOffset,\r\n expectedClosure, taggedNumericDataOffset,\r\n );\r\n\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPolyface, polyfaceOffset, 0);\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n public fillOneBasedIndexArray(mesh: IndexedPolyface, sourceIndex: number[], visible: boolean[] | undefined, facetTerminator: number | undefined, destIndex: number[]) {\r\n destIndex.length = 0;\r\n const numFacet = mesh.facetCount;\r\n for (let facetIndex = 0; facetIndex < numFacet; facetIndex++) {\r\n const k0 = mesh.facetIndex0(facetIndex);\r\n const k1 = mesh.facetIndex1(facetIndex);\r\n for (let k = k0; k < k1; k++) {\r\n let q = sourceIndex[k] + 1;\r\n if (visible !== undefined && !visible[k])\r\n q = -q;\r\n destIndex.push(q);\r\n }\r\n if (facetTerminator !== undefined)\r\n destIndex.push(facetTerminator);\r\n }\r\n }\r\n public writeGeometryQueryAsFBVariantGeometry(g: GeometryQuery): number | undefined {\r\n let offset: number | undefined;\r\n if (g instanceof CurvePrimitive && (offset = this.writeCurvePrimitiveAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof CurveCollection && (offset = this.writeCurveCollectionAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof IndexedPolyface && (offset = this.writePolyfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof SolidPrimitive && (offset = this.writeSolidPrimitiveAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof BSplineSurface3d && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof BSplineSurface3dH && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof PointString3d && (offset = this.writePointString3dAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n // if (g instanceof CoordinateXYZ) // TODO\r\n return undefined;\r\n }\r\n\r\n public writeGeometryQueryArrayAsFBVariantGeometry(allGeometry: GeometryQuery | GeometryQuery[] | undefined): number | undefined{\r\n if (Array.isArray(allGeometry)) {\r\n const allOffsets: number[] = [];\r\n for (const g of allGeometry) {\r\n const offset = this.writeGeometryQueryAsFBVariantGeometry(g);\r\n if (offset !== undefined)\r\n allOffsets.push(offset);\r\n }\r\n if (allOffsets.length > 0) {\r\n const membersOffset = BGFBAccessors.VectorOfVariantGeometry.createMembersVector(this.builder, allOffsets);\r\n const vectorOffset = BGFBAccessors.VectorOfVariantGeometry.createVectorOfVariantGeometry(this.builder, membersOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagVectorOfVariantGeometry, vectorOffset, 0);\r\n }\r\n } else if (allGeometry instanceof GeometryQuery)\r\n return this.writeGeometryQueryAsFBVariantGeometry(allGeometry);\r\n return undefined;\r\n }\r\n /**\r\n * Serialize bytes to a flatbuffer.\r\n */\r\n public static geometryToBytes(data: GeometryQuery | GeometryQuery[], signatureBytes?: Uint8Array): Uint8Array | undefined {\r\n const writer = new BGFBWriter();\r\n const rootOffset = writer.writeGeometryQueryArrayAsFBVariantGeometry(data);\r\n\r\n if (rootOffset !== undefined) {\r\n const builder = writer.builder;\r\n builder.finish(rootOffset);\r\n const buffer = builder.dataBuffer();\r\n if (!signatureBytes) {\r\n return buffer.bytes().slice(buffer.position());\r\n } else if (buffer.position() >= signatureBytes.length) {\r\n // The buffer has space for the signature ahead of its position . . .\r\n const i0 = buffer.position() - signatureBytes.length;\r\n let i = i0;\r\n for (const k of signatureBytes)\r\n buffer.bytes()[i++] = k;\r\n return buffer.bytes().slice(i0);\r\n } else {\r\n // There is no space ahead of the position () . . .\r\n // coverage remark: I have never seen this happen for real.\r\n // It has been exercised by adding 1024 to the signatureBytes.length test to force this branch.\r\n const num1 = buffer.bytes().length - buffer.position();\r\n const num0 = signatureBytes.length;\r\n const newBytes = new Uint8Array(num0 + num1);\r\n newBytes.set(signatureBytes, 0);\r\n newBytes.set(buffer.bytes().slice(buffer.position()), num0);\r\n return newBytes;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nfunction extractNumberArray(data: GrowableXYZArray | Point3d[]): number[] {\r\n const result = [];\r\n if (data instanceof GrowableXYZArray) {\r\n // ugh -- accessors only deal with number[] ..\r\n const numCoordinate = 3 * data.length;\r\n const source = data.float64Data();\r\n for (let i = 0; i < numCoordinate; i++)\r\n result.push(source[i]);\r\n return result;\r\n } else if (Array.isArray(data)) {\r\n for (const xyz of data)\r\n result.push(xyz.x, xyz.y, xyz.z);\r\n }\r\n return result;\r\n}\r\n/** Copy the active data to a simple number array. */\r\nfunction copyToPackedNumberArray(dest: number[], source: Float64Array, count: number) {\r\n dest.length = 0;\r\n for (let i = 0; i < count; i++)\r\n dest.push(source[i]);\r\n}\r\n\r\n"]}
|
|
1
|
+
{"version":3,"file":"BGFBWriter.js","sourceRoot":"","sources":["../../../src/serialization/BGFBWriter.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 Serialization\n */\nimport { flatbuffers } from \"flatbuffers\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { AkimaCurve3d } from \"../bspline/AkimaCurve3d\";\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\nimport { BSplineSurface3d, BSplineSurface3dH, UVSelect } from \"../bspline/BSplineSurface\";\nimport { InterpolationCurve3d } from \"../bspline/InterpolationCurve3d\";\nimport { BSplineWrapMode } from \"../bspline/KnotVector\";\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { CurveCollection } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { ParityRegion } from \"../curve/ParityRegion\";\nimport { Path } from \"../curve/Path\";\nimport { PointString3d } from \"../curve/PointString3d\";\nimport { DirectSpiral3d } from \"../curve/spiral/DirectSpiral3d\";\nimport { IntegratedSpiral3d } from \"../curve/spiral/IntegratedSpiral3d\";\nimport { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\nimport { UnionRegion } from \"../curve/UnionRegion\";\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\nimport { Point3d, XYZ } from \"../geometry3d/Point3dVector3d\";\nimport { AuxChannel, AuxChannelData, PolyfaceAuxData } from \"../polyface/AuxData\";\nimport { IndexedPolyface } from \"../polyface/Polyface\";\nimport { TaggedNumericData } from \"../polyface/TaggedNumericData\";\nimport { Box } from \"../solid/Box\";\nimport { Cone } from \"../solid/Cone\";\nimport { LinearSweep } from \"../solid/LinearSweep\";\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\nimport { RuledSweep } from \"../solid/RuledSweep\";\nimport { SolidPrimitive } from \"../solid/SolidPrimitive\";\nimport { Sphere } from \"../solid/Sphere\";\nimport { TorusPipe } from \"../solid/TorusPipe\";\nimport { BGFBAccessors } from \"./BGFBAccessors\";\nimport { DgnSpiralTypeQueries } from \"./BGFBReader\";\nimport { SerializationHelpers } from \"./SerializationHelpers\";\n\n/**\n * Context to write to a flatbuffer blob.\n * * This class is internal.\n * * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()\n * @internal\n */\nexport class BGFBWriter {\n public builder: flatbuffers.Builder;\n public constructor(defaultSize: number = 1024) {\n this.builder = new flatbuffers.Builder(defaultSize);\n }\n /**\n *\n * @param data data source, as Float64Array or number[].\n * @param count optional count, used only if less than .length numbers are to be written.\n */\n public writeDoubleArray(data: Float64Array | number[] | undefined, count?: number): number {\n if (data === undefined)\n return 0;\n let numFloats = data.length;\n if (numFloats === 0)\n return 0;\n if (count !== undefined && count < numFloats)\n numFloats = count;\n this.builder.startVector(8, numFloats, 8);\n for (let i = numFloats - 1; i >= 0; i--) {\n this.builder.addFloat64(data[i]);\n }\n return this.builder.endVector();\n }\n\n /**\n *\n * @param data data source, as Float64Array or number[].\n * @param count optional count, used only if less than .length numbers are to be written.\n */\n public writeIntArray(data: Int32Array | number[] | undefined): number {\n if (data === undefined)\n return 0;\n const numInt = data.length;\n if (numInt === 0)\n return 0;\n this.builder.startVector(4, numInt, 4);\n for (let i = numInt - 1; i >= 0; i--) {\n this.builder.addInt32(data[i]);\n }\n return this.builder.endVector();\n }\n\n /**\n *\n * @param data data source, as array derived from XYZ.\n * The data is output as a flat array of 3*data.length numbers.\n */\n public writePackedYZArray(data: XYZ[] | undefined): number {\n if (data === undefined)\n return 0;\n const numFloats = data.length * 3;\n if (numFloats === 0)\n return 0;\n this.builder.startVector(8, numFloats, 8);\n // write in reverse index order, and zyx within each XYZ\n for (let i = data.length - 1; i >= 0; i--) {\n this.builder.addFloat64(data[i].z);\n this.builder.addFloat64(data[i].y);\n this.builder.addFloat64(data[i].x);\n }\n return this.builder.endVector();\n }\n\n public writeCurveCollectionAsFBCurveVector(cv: CurveCollection): number | undefined {\n const childrenOffsets: flatbuffers.Offset[] = [];\n for (const child of cv.children) {\n if (child instanceof CurvePrimitive) {\n const childOffset = this.writeCurvePrimitiveAsFBVariantGeometry(child);\n if (childOffset)\n childrenOffsets.push(childOffset);\n } else if (child instanceof CurveCollection) {\n const childOffset = this.writeCurveCollectionAsFBVariantGeometry(child);\n if (childOffset)\n childrenOffsets.push(childOffset);\n }\n }\n\n const childrenVectorOffset = BGFBAccessors.CurveVector.createCurvesVector(this.builder, childrenOffsets);\n let cvType = 0;\n if (cv instanceof Path) cvType = 1;\n else if (cv instanceof Loop) {\n cvType = cv.isInner ? 3 : 2;\n } else if (cv instanceof ParityRegion) cvType = 4;\n else if (cv instanceof UnionRegion) cvType = 5;\n const curveVectorOffset = BGFBAccessors.CurveVector.createCurveVector(this.builder, cvType, childrenVectorOffset);\n return curveVectorOffset;\n }\n\n public writeCurveCollectionAsFBVariantGeometry(cv: CurveCollection): number | undefined {\n const curveVectorOffset = this.writeCurveCollectionAsFBCurveVector(cv);\n if (curveVectorOffset === undefined)\n return undefined;\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagCurveVector, curveVectorOffset, 0);\n }\n\n public writeInterpolationCurve3dAsFBVariantGeometry(curve: InterpolationCurve3d): number | undefined {\n const props = curve.cloneProps();\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\n const knotOffset = props.knots ? this.writeDoubleArray(props.knots) : 0;\n\n BGFBAccessors.InterpolationCurve.startInterpolationCurve(this.builder);\n BGFBAccessors.InterpolationCurve.addFitPoints(this.builder, fitPointsOffset);\n if (props.order)\n BGFBAccessors.InterpolationCurve.addOrder(this.builder, props.order);\n if (props.closed)\n BGFBAccessors.InterpolationCurve.addClosed(this.builder, props.closed);\n if (props.isChordLenKnots)\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\n if (props.isColinearTangents)\n BGFBAccessors.InterpolationCurve.addIsColinearTangents(this.builder, props.isColinearTangents);\n if (props.isChordLenKnots)\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\n if (props.isNaturalTangents)\n BGFBAccessors.InterpolationCurve.addIsNaturalTangents(this.builder, props.isNaturalTangents);\n // REMARK: some native or flatbuffer quirk made startTangent a point and endTangent a vector.\n if (props.startTangent !== undefined) {\n const startTangentOffset = BGFBAccessors.DPoint3d.createDPoint3d(this.builder,\n XYZ.x(props.startTangent), XYZ.y(props.startTangent), XYZ.z(props.startTangent));\n BGFBAccessors.InterpolationCurve.addStartTangent(this.builder, startTangentOffset);\n }\n if (props.endTangent !== undefined) {\n const endTangentOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder,\n XYZ.x(props.endTangent), XYZ.y(props.endTangent), XYZ.z(props.endTangent));\n BGFBAccessors.InterpolationCurve.addEndTangent(this.builder, endTangentOffset);\n }\n if (knotOffset !== 0)\n BGFBAccessors.InterpolationCurve.addKnots(this.builder, knotOffset);\n const headerOffset = BGFBAccessors.InterpolationCurve.endInterpolationCurve(this.builder);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve, headerOffset, 0);\n }\n\n public writeAkimaCurve3dAsFBVariantGeometry(curve: AkimaCurve3d): number | undefined {\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\n BGFBAccessors.AkimaCurve.startAkimaCurve(this.builder);\n BGFBAccessors.AkimaCurve.addPoints(this.builder, fitPointsOffset);\n const headerOffset = BGFBAccessors.AkimaCurve.endAkimaCurve(this.builder);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagAkimaCurve, headerOffset, 0);\n }\n\n public writeBsplineCurve3dAsFBVariantGeometry(bcurve: BSplineCurve3d): number | undefined {\n const data = SerializationHelpers.createBSplineCurveData(bcurve.polesRef, bcurve.poleDimension, bcurve.knotsRef, bcurve.numPoles, bcurve.order);\n const wrapMode = bcurve.getWrappable();\n if (BSplineWrapMode.None !== wrapMode)\n data.params.wrapMode = wrapMode;\n\n if (!SerializationHelpers.Export.prepareBSplineCurveData(data, {jsonPoles: false}))\n return undefined;\n\n const closed = !!data.params.closed;\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\n const weightsOffset = 0;\n const knotsOffset = this.writeDoubleArray(data.params.knots);\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\n }\n\n public writeBSplineSurfaceAsFBVariantGeometry(bsurf: BSplineSurface3d | BSplineSurface3dH): number | undefined {\n let poles: Float64Array = bsurf.coffs;\n let weights: Float64Array | undefined;\n let dim = bsurf.poleDimension;\n if (bsurf instanceof BSplineSurface3dH) {\n poles = bsurf.copyXYZToFloat64Array(false);\n weights = bsurf.copyWeightsToFloat64Array();\n dim = 3;\n }\n\n const data = SerializationHelpers.createBSplineSurfaceData(poles, dim,\n bsurf.knots[UVSelect.uDirection].knots, bsurf.numPolesUV(UVSelect.uDirection), bsurf.orderUV(UVSelect.uDirection),\n bsurf.knots[UVSelect.vDirection].knots, bsurf.numPolesUV(UVSelect.vDirection), bsurf.orderUV(UVSelect.vDirection));\n\n if (weights)\n data.weights = weights;\n const wrapModeU = bsurf.getWrappable(UVSelect.uDirection);\n const wrapModeV = bsurf.getWrappable(UVSelect.vDirection);\n if (BSplineWrapMode.None !== wrapModeU)\n data.uParams.wrapMode = wrapModeU;\n if (BSplineWrapMode.None !== wrapModeV)\n data.vParams.wrapMode = wrapModeV;\n\n if (!SerializationHelpers.Export.prepareBSplineSurfaceData(data, {jsonPoles: false}))\n return undefined;\n\n // TypeScript B-spline surfaces do not support trim curves or isoline counts\n const holeOrigin = 0;\n const boundariesOffset = 0;\n const numRulesU = 0;\n const numRulesV = 0;\n\n const closedU = !!data.uParams.closed;\n const closedV = !!data.vParams.closed;\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\n const weightsOffset = data.weights ? this.writeDoubleArray(data.weights as Float64Array) : 0;\n const uKnotsOffset = this.writeDoubleArray(data.uParams.knots);\n const vKnotsOffset = this.writeDoubleArray(data.vParams.knots);\n const headerOffset = BGFBAccessors.BsplineSurface.createBsplineSurface(this.builder, polesOffset, weightsOffset,\n uKnotsOffset, vKnotsOffset, data.uParams.numPoles, data.vParams.numPoles, data.uParams.order, data.vParams.order,\n numRulesU, numRulesV, holeOrigin, boundariesOffset, closedU, closedV);\n\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineSurface, headerOffset, 0);\n }\n\n public writeBsplineCurve3dHAsFBVariantGeometry(bcurve: BSplineCurve3dH): number | undefined {\n const poles = bcurve.copyXYZFloat64Array(false);\n const weights = bcurve.copyWeightsFloat64Array();\n const dim = 3;\n\n const data = SerializationHelpers.createBSplineCurveData(poles, dim, bcurve.knotsRef, bcurve.numPoles, bcurve.order);\n data.weights = weights;\n const wrapMode = bcurve.getWrappable();\n if (BSplineWrapMode.None !== wrapMode)\n data.params.wrapMode = wrapMode;\n\n if (!SerializationHelpers.Export.prepareBSplineCurveData(data, {jsonPoles: false}))\n return undefined;\n\n const closed = !!data.params.closed;\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\n const weightsOffset = this.writeDoubleArray(data.weights);\n const knotsOffset = this.writeDoubleArray(data.params.knots);\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\n }\n\n public writeCurvePrimitiveAsFBVariantGeometry(curvePrimitive: CurvePrimitive): number | undefined {\n if (curvePrimitive instanceof LineSegment3d) {\n const segmentDataOffset = BGFBAccessors.DSegment3d.createDSegment3d(this.builder,\n curvePrimitive.point0Ref.x,\n curvePrimitive.point0Ref.y,\n curvePrimitive.point0Ref.z,\n curvePrimitive.point1Ref.x,\n curvePrimitive.point1Ref.y,\n curvePrimitive.point1Ref.z);\n const lineSegmentOffset = BGFBAccessors.LineSegment.createLineSegment(this.builder, segmentDataOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineSegment, lineSegmentOffset, 0);\n } else if (curvePrimitive instanceof Arc3d) {\n const data = curvePrimitive.toVectors();\n const arcDataOffset = BGFBAccessors.DEllipse3d.createDEllipse3d(this.builder,\n data.center.x, data.center.y, data.center.z,\n data.vector0.x, data.vector0.y, data.vector0.z,\n data.vector90.x, data.vector90.y, data.vector90.z,\n data.sweep.startRadians,\n data.sweep.sweepRadians);\n const arcOffset = BGFBAccessors.EllipticArc.createEllipticArc(this.builder, arcDataOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagEllipticArc, arcOffset, 0);\n } else if (curvePrimitive instanceof LineString3d) {\n const coordinates = extractNumberArray(curvePrimitive.packedPoints);\n const lineStringOffset = BGFBAccessors.LineString.createLineString(this.builder,\n BGFBAccessors.LineString.createPointsVector(this.builder, coordinates));\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineString, lineStringOffset, 0);\n } else if (curvePrimitive instanceof BSplineCurve3d) {\n return this.writeBsplineCurve3dAsFBVariantGeometry(curvePrimitive);\n } else if (curvePrimitive instanceof BSplineCurve3dH) {\n return this.writeBsplineCurve3dHAsFBVariantGeometry(curvePrimitive);\n } else if (curvePrimitive instanceof InterpolationCurve3d) {\n return this.writeInterpolationCurve3dAsFBVariantGeometry(curvePrimitive);\n } else if (curvePrimitive instanceof AkimaCurve3d) {\n return this.writeAkimaCurve3dAsFBVariantGeometry(curvePrimitive);\n } else if (curvePrimitive instanceof IntegratedSpiral3d) {\n const placement = curvePrimitive.localToWorld;\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\n curvePrimitive.bearing01.startRadians, curvePrimitive.bearing01.endRadians,\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x0),\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x1),\n typeCode,\n 0);\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\n spiralDetailOffset, 0, 0);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\n } else if (curvePrimitive instanceof DirectSpiral3d) {\n const placement = curvePrimitive.localToWorld;\n // direct spirals always inflect at the origin of the local frame ..\n // spiral\n const curvature0 = 0.0;\n const curvature1 = curvePrimitive.nominalCurvature1;\n const radius0 = 0.0;\n const radius1 = curvePrimitive.nominalR1; // which is 1/curvature1\n const nominalLength = curvePrimitive.nominalL1;\n const bearing0Radians = 0.0;\n const bearing1Radians = TransitionSpiral3d.radiusRadiusLengthToSweepRadians(radius0, radius1, nominalLength);\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\n bearing0Radians, bearing1Radians,\n curvature0, curvature1,\n typeCode,\n 0);\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\n spiralDetailOffset, 0, 0);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\n }\n return undefined;\n }\n public writePointString3dAsFBVariantGeometry(pointString: PointString3d): number | undefined {\n if (pointString instanceof PointString3d) {\n const coordinates = extractNumberArray(pointString.points);\n const headerOffset = BGFBAccessors.PointString.createPointString(this.builder,\n BGFBAccessors.PointString.createPointsVector(this.builder, coordinates));\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPointString, headerOffset, 0);\n\n }\n return undefined;\n }\n\n public writeSolidPrimitiveAsFBVariantGeometry(solid: SolidPrimitive): number | undefined {\n // NOTE: Box, Sphere, Cone, and TorusPipe have \"detail\" within a \"table\"\n // BUT: linear, rotational, and ruled sweeps have their contour and numerics directly within their table.\n if (solid instanceof Box) {\n const originA = solid.getBaseOrigin();\n const originB = solid.getTopOrigin();\n const vectorX = solid.getVectorX();\n const vectorY = solid.getVectorY();\n\n const baseX = solid.getBaseX();\n const baseY = solid.getBaseY();\n const topX = solid.getTopX();\n const topY = solid.getTopY();\n const detailOffset = BGFBAccessors.DgnBoxDetail.createDgnBoxDetail(this.builder,\n originA.x, originA.y, originA.z,\n originB.x, originB.y, originB.z,\n vectorX.x, vectorX.y, vectorX.z,\n vectorY.x, vectorY.y, vectorY.z,\n baseX, baseY, topX, topY, solid.capped);\n const carrierOffset = BGFBAccessors.DgnBox.createDgnBox(this.builder, detailOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnBox, carrierOffset, 0);\n } else if (solid instanceof Sphere) {\n const localToWorld = solid.cloneLocalToWorld();\n const sweep = solid.cloneLatitudeSweep();\n const detailOffset = BGFBAccessors.DgnSphereDetail.createDgnSphereDetail(this.builder,\n localToWorld.matrix.coffs[0], localToWorld.matrix.coffs[1], localToWorld.matrix.coffs[2], localToWorld.origin.x,\n localToWorld.matrix.coffs[3], localToWorld.matrix.coffs[4], localToWorld.matrix.coffs[5], localToWorld.origin.y,\n localToWorld.matrix.coffs[6], localToWorld.matrix.coffs[7], localToWorld.matrix.coffs[8], localToWorld.origin.z,\n sweep.startRadians, sweep.sweepRadians,\n solid.capped);\n const carrierOffset = BGFBAccessors.DgnSphere.createDgnSphere(this.builder, detailOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnSphere, carrierOffset, 0);\n } else if (solid instanceof Cone) {\n const centerA = solid.getCenterA();\n const centerB = solid.getCenterB();\n const vectorX = solid.getVectorX();\n const vectorY = solid.getVectorY();\n const radiusA = solid.getRadiusA();\n const radiusB = solid.getRadiusB();\n const detailOffset = BGFBAccessors.DgnConeDetail.createDgnConeDetail(this.builder,\n centerA.x, centerA.y, centerA.z,\n centerB.x, centerB.y, centerB.z,\n vectorX.x, vectorX.y, vectorX.z,\n vectorY.x, vectorY.y, vectorY.z, radiusA, radiusB, solid.capped);\n const carrierOffset = BGFBAccessors.DgnCone.createDgnCone(this.builder, detailOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnCone, carrierOffset, 0);\n } else if (solid instanceof TorusPipe) {\n const center = solid.cloneCenter();\n const vectorX = solid.cloneVectorX();\n const vectorY = solid.cloneVectorY();\n const minorRadius = solid.getMinorRadius();\n const majorRadius = solid.getMajorRadius();\n const sweepRadians = solid.getSweepAngle().radians;\n const detailOffset = BGFBAccessors.DgnTorusPipeDetail.createDgnTorusPipeDetail(this.builder,\n center.x, center.y, center.z,\n vectorX.x, vectorX.y, vectorX.z,\n vectorY.x, vectorY.y, vectorY.z, majorRadius, minorRadius, sweepRadians, solid.capped);\n const carrierOffset = BGFBAccessors.DgnTorusPipe.createDgnTorusPipe(this.builder, detailOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe, carrierOffset, 0);\n } else if (solid instanceof LinearSweep) {\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\n const sweepVector = solid.cloneSweepVector();\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\n\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\n // chokes trying to add it.\n BGFBAccessors.DgnExtrusion.startDgnExtrusion(this.builder);\n BGFBAccessors.DgnExtrusion.addBaseCurve(this.builder, baseCurveOffset);\n const extrusionVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\n BGFBAccessors.DgnExtrusion.addExtrusionVector(this.builder, extrusionVectorOffset);\n BGFBAccessors.DgnExtrusion.addCapped(this.builder, solid.capped);\n const dgnExtrusionOffset = BGFBAccessors.DgnExtrusion.endDgnExtrusion(this.builder);\n\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion, dgnExtrusionOffset, 0);\n } else if (solid instanceof RotationalSweep) {\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\n const axis = solid.cloneAxisRay();\n const sweepAngle = solid.getSweep();\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\n\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\n // chokes trying to add it.\n BGFBAccessors.DgnRotationalSweep.startDgnRotationalSweep(this.builder);\n BGFBAccessors.DgnRotationalSweep.addBaseCurve(this.builder, baseCurveOffset);\n const axisRayOffset = BGFBAccessors.DRay3d.createDRay3d(this.builder,\n axis.origin.x, axis.origin.y, axis.origin.z, axis.direction.x, axis.direction.y, axis.direction.z);\n BGFBAccessors.DgnRotationalSweep.addAxis(this.builder, axisRayOffset);\n BGFBAccessors.DgnRotationalSweep.addSweepRadians(this.builder, sweepAngle.radians);\n BGFBAccessors.DgnRotationalSweep.addCapped(this.builder, solid.capped);\n const dgnRotationalSweepOffset = BGFBAccessors.DgnRotationalSweep.endDgnRotationalSweep(this.builder);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep, dgnRotationalSweepOffset, 0);\n\n } else if (solid instanceof RuledSweep) {\n const contours = solid.sweepContoursRef();\n const contourOffsets: flatbuffers.Offset[] = [];\n for (const contour of contours) {\n const contourOffset = this.writeCurveCollectionAsFBCurveVector(contour.getCurves());\n if (contourOffset !== undefined)\n contourOffsets.push(contourOffset);\n }\n const contoursVectorOffset = BGFBAccessors.DgnRuledSweep.createCurvesVector(this.builder, contourOffsets);\n const ruledSweepTable = BGFBAccessors.DgnRuledSweep.createDgnRuledSweep(this.builder, contoursVectorOffset, solid.capped);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep, ruledSweepTable, 0);\n }\n return undefined;\n }\n public writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData: AuxChannelData): number | undefined {\n if (channelData instanceof AuxChannelData) {\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannelData.createValuesVector(this.builder, channelData.values);\n return BGFBAccessors.PolyfaceAuxChannelData.createPolyfaceAuxChannelData(this.builder,\n channelData.input,\n valuesOffset,\n );\n }\n return undefined;\n }\n\n public writePolyfaceAuxChannelAsFBVariantGeometry(channel: AuxChannel): number | undefined {\n if (channel instanceof AuxChannel) {\n const channelDataOffsets: number[] = [];\n for (const channelData of channel.data) {\n channelDataOffsets.push(this.writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData)!);\n }\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelDataOffsets);\n const nameOffset = channel.name ? this.builder.createString(channel.name) : 0;\n const inputNameOffset = channel.inputName ? this.builder.createString(channel.inputName) : 0;\n return BGFBAccessors.PolyfaceAuxChannel.createPolyfaceAuxChannel(this.builder,\n channel.dataType,\n nameOffset,\n inputNameOffset, valuesOffset,\n );\n }\n return undefined;\n }\n\n public writePolyfaceAuxDataAsFBVariantGeometry(mesh: IndexedPolyface, data: PolyfaceAuxData): number | undefined {\n if (data instanceof PolyfaceAuxData) {\n const channelOffsets: number[] = [];\n for (const channel of data.channels)\n channelOffsets.push(this.writePolyfaceAuxChannelAsFBVariantGeometry(channel)!);\n const channelOffsetsOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelOffsets);\n\n const indexArray: number[] = [];\n this.fillOneBasedIndexArray(mesh, data.indices, undefined, 0, indexArray);\n const indicesOffset = BGFBAccessors.PolyfaceAuxData.createIndicesVector(this.builder, indexArray);\n\n return BGFBAccessors.PolyfaceAuxData.createPolyfaceAuxData(this.builder, indicesOffset, channelOffsetsOffset);\n }\n return undefined;\n }\n public writeTaggedNumericDataArray(data: TaggedNumericData | undefined): number {\n if (data){\n const intDataOffset = this.writeIntArray(data.intData);\n const doubleDataOffset = this.writeDoubleArray(data.doubleData);\n return BGFBAccessors.TaggedNumericData.createTaggedNumericData(this.builder,\n data.tagA, data.tagB, intDataOffset, doubleDataOffset);\n }\n return 0;\n }\n\n public writePolyfaceAsFBVariantGeometry(mesh: IndexedPolyface): number | undefined {\n if (mesh instanceof IndexedPolyface) {\n // WE KNOW . . . . the polyface has blocks of zero-based indices.\n const indexArray: number[] = []; // and this will really be integers.\n const numberArray: number[] = []; // and this will really be doubles.\n\n copyToPackedNumberArray(numberArray, mesh.data.point.float64Data(), mesh.data.point.float64Length);\n const pointOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\n let paramIndexOffset = 0;\n let normalIndexOffset = 0;\n let colorIndexOffset = 0;\n let intColorOffset = 0;\n let normalOffset = 0;\n let paramOffset = 0;\n let auxDataOffset = 0;\n let taggedNumericDataOffset = 0;\n let edgeMateIndexOffset = 0;\n const meshStyle = 1; // always write MESH_ELM_STYLE_INDEXED_FACE_LOOPS\n const numPerFace = 0; // always write variable sized, 0-terminated face loops\n this.fillOneBasedIndexArray(mesh, mesh.data.pointIndex, mesh.data.edgeVisible, 0, indexArray);\n\n const twoSided = mesh.twoSided;\n const pointIndexOffset = BGFBAccessors.Polyface.createPointIndexVector(this.builder, indexArray);\n if (mesh.data.paramIndex !== undefined && mesh.data.paramIndex.length > 0) {\n this.fillOneBasedIndexArray(mesh, mesh.data.paramIndex, undefined, 0, indexArray);\n paramIndexOffset = BGFBAccessors.Polyface.createParamIndexVector(this.builder, indexArray);\n }\n\n if (mesh.data.normalIndex !== undefined && mesh.data.normalIndex.length > 0) {\n this.fillOneBasedIndexArray(mesh, mesh.data.normalIndex, undefined, 0, indexArray);\n normalIndexOffset = BGFBAccessors.Polyface.createNormalIndexVector(this.builder, indexArray);\n }\n\n if (mesh.data.colorIndex !== undefined && mesh.data.colorIndex.length > 0) {\n this.fillOneBasedIndexArray(mesh, mesh.data.colorIndex, undefined, 0, indexArray);\n colorIndexOffset = BGFBAccessors.Polyface.createColorIndexVector(this.builder, indexArray);\n }\n\n // only int colors are persistent\n if (mesh.data.color !== undefined && mesh.data.color.length > 0) {\n intColorOffset = BGFBAccessors.Polyface.createIntColorVector(this.builder, mesh.data.color);\n }\n\n if (mesh.data.normal) {\n copyToPackedNumberArray(numberArray, mesh.data.normal.float64Data(), mesh.data.normal.float64Length);\n normalOffset = BGFBAccessors.Polyface.createNormalVector(this.builder, numberArray);\n }\n\n if (mesh.data.param) {\n copyToPackedNumberArray(numberArray, mesh.data.param.float64Data(), mesh.data.param.float64Length);\n paramOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\n }\n\n if (mesh.data.auxData)\n auxDataOffset = this.writePolyfaceAuxDataAsFBVariantGeometry(mesh, mesh.data.auxData)!;\n\n if (mesh.data.taggedNumericData)\n taggedNumericDataOffset = this.writeTaggedNumericDataArray(mesh.data.taggedNumericData);\n\n const expectedClosure = mesh.expectedClosure;\n\n if (mesh.data.edgeMateIndex) {\n indexArray.length = 0;\n if (!SerializationHelpers.announceUncompressedZeroBasedReflexiveIndices(mesh.data.edgeMateIndex,\n mesh.facetStart, SerializationHelpers.EdgeMateIndex.BlockSeparator,\n SerializationHelpers.EdgeMateIndex.NoEdgeMate, (i: number) => indexArray.push(i),\n )){\n assert(false, \"unable to serialize edgeMateIndex array to flatbuffer\");\n }\n edgeMateIndexOffset = BGFBAccessors.Polyface.createEdgeMateIndexVector(this.builder, indexArray);\n }\n\n // NOTE: mesh.data.face is not persistent\n\n const polyfaceOffset = BGFBAccessors.Polyface.createPolyface(\n this.builder, pointOffset, paramOffset, normalOffset, 0, intColorOffset, pointIndexOffset, paramIndexOffset,\n normalIndexOffset, colorIndexOffset, 0, numPerFace, 0, meshStyle, twoSided, 0, 0, auxDataOffset,\n expectedClosure, taggedNumericDataOffset, edgeMateIndexOffset,\n );\n\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPolyface, polyfaceOffset, 0);\n\n }\n return undefined;\n }\n\n /**\n * @param sourceIndex a map that takes zeroBasedDataIndex -> zeroBasedDataIndex, packed into unterminated face loops delineated by `mesh.facetIndex0/1`\n * @param destIndex a map that takes zeroBasedDataIndex -> signedOneBasedDataIndex, packed into optionally terminated face loops\n */\n private fillOneBasedIndexArray(mesh: IndexedPolyface, sourceIndex: number[], visible: boolean[] | undefined, facetTerminator: 0 | undefined, destIndex: number[]) {\n destIndex.length = 0;\n const numFacet = mesh.facetCount;\n for (let facetIndex = 0; facetIndex < numFacet; facetIndex++) {\n const k0 = mesh.facetIndex0(facetIndex);\n const k1 = mesh.facetIndex1(facetIndex);\n for (let k = k0; k < k1; k++) {\n let q = sourceIndex[k] + 1;\n if (visible !== undefined && !visible[k])\n q = -q;\n destIndex.push(q);\n }\n if (facetTerminator !== undefined)\n destIndex.push(facetTerminator);\n }\n }\n\n public writeGeometryQueryAsFBVariantGeometry(g: GeometryQuery): number | undefined {\n let offset: number | undefined;\n if (g instanceof CurvePrimitive && (offset = this.writeCurvePrimitiveAsFBVariantGeometry(g)) !== undefined)\n return offset;\n if (g instanceof CurveCollection && (offset = this.writeCurveCollectionAsFBVariantGeometry(g)) !== undefined)\n return offset;\n if (g instanceof IndexedPolyface && (offset = this.writePolyfaceAsFBVariantGeometry(g)) !== undefined)\n return offset;\n if (g instanceof SolidPrimitive && (offset = this.writeSolidPrimitiveAsFBVariantGeometry(g)) !== undefined)\n return offset;\n if (g instanceof BSplineSurface3d && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\n return offset;\n if (g instanceof BSplineSurface3dH && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\n return offset;\n if (g instanceof PointString3d && (offset = this.writePointString3dAsFBVariantGeometry(g)) !== undefined)\n return offset;\n // if (g instanceof CoordinateXYZ) // TODO\n return undefined;\n }\n\n public writeGeometryQueryArrayAsFBVariantGeometry(allGeometry: GeometryQuery | GeometryQuery[] | undefined): number | undefined{\n if (Array.isArray(allGeometry)) {\n const allOffsets: number[] = [];\n for (const g of allGeometry) {\n const offset = this.writeGeometryQueryAsFBVariantGeometry(g);\n if (offset !== undefined)\n allOffsets.push(offset);\n }\n if (allOffsets.length > 0) {\n const membersOffset = BGFBAccessors.VectorOfVariantGeometry.createMembersVector(this.builder, allOffsets);\n const vectorOffset = BGFBAccessors.VectorOfVariantGeometry.createVectorOfVariantGeometry(this.builder, membersOffset);\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagVectorOfVariantGeometry, vectorOffset, 0);\n }\n } else if (allGeometry instanceof GeometryQuery)\n return this.writeGeometryQueryAsFBVariantGeometry(allGeometry);\n return undefined;\n }\n /**\n * Serialize bytes to a flatbuffer.\n */\n public static geometryToBytes(data: GeometryQuery | GeometryQuery[], signatureBytes?: Uint8Array): Uint8Array | undefined {\n const writer = new BGFBWriter();\n const rootOffset = writer.writeGeometryQueryArrayAsFBVariantGeometry(data);\n\n if (rootOffset !== undefined) {\n const builder = writer.builder;\n builder.finish(rootOffset);\n const buffer = builder.dataBuffer();\n if (!signatureBytes) {\n return buffer.bytes().slice(buffer.position());\n } else if (buffer.position() >= signatureBytes.length) {\n // The buffer has space for the signature ahead of its position . . .\n const i0 = buffer.position() - signatureBytes.length;\n let i = i0;\n for (const k of signatureBytes)\n buffer.bytes()[i++] = k;\n return buffer.bytes().slice(i0);\n } else {\n // There is no space ahead of the position () . . .\n // coverage remark: I have never seen this happen for real.\n // It has been exercised by adding 1024 to the signatureBytes.length test to force this branch.\n const num1 = buffer.bytes().length - buffer.position();\n const num0 = signatureBytes.length;\n const newBytes = new Uint8Array(num0 + num1);\n newBytes.set(signatureBytes, 0);\n newBytes.set(buffer.bytes().slice(buffer.position()), num0);\n return newBytes;\n }\n }\n return undefined;\n }\n}\nfunction extractNumberArray(data: GrowableXYZArray | Point3d[]): number[] {\n const result = [];\n if (data instanceof GrowableXYZArray) {\n // ugh -- accessors only deal with number[] ..\n const numCoordinate = 3 * data.length;\n const source = data.float64Data();\n for (let i = 0; i < numCoordinate; i++)\n result.push(source[i]);\n return result;\n } else if (Array.isArray(data)) {\n for (const xyz of data)\n result.push(xyz.x, xyz.y, xyz.z);\n }\n return result;\n}\n/** Copy the active data to a simple number array. */\nfunction copyToPackedNumberArray(dest: number[], source: Float64Array, count: number) {\n dest.length = 0;\n for (let i = 0; i < count; i++)\n dest.push(source[i]);\n}\n\n"]}
|
|
@@ -26,5 +26,6 @@ class BentleyGeometryFlatBuffer {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
exports.BentleyGeometryFlatBuffer = BentleyGeometryFlatBuffer;
|
|
29
|
+
/** "bg0001fb" header, persisted in iModel FB geometry streams */
|
|
29
30
|
const signatureBytes = new Uint8Array([98, 103, 48, 48, 48, 49, 102, 98]);
|
|
30
31
|
//# sourceMappingURL=BentleyGeometryFlatBuffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BentleyGeometryFlatBuffer.js","sourceRoot":"","sources":["../../../src/serialization/BentleyGeometryFlatBuffer.ts"],"names":[],"mappings":";;;AAQA,6CAA0C;AAC1C,6CAA0C;AAE1C;;;GAGG;AACH,MAAa,yBAAyB;IACpC,gBAAwB,CAAC;IACzB;;;OAGG;IACI,MAAM,CAAC,eAAe,CAAC,IAAqC,EAAE,sBAA+B,KAAK;QACvG,OAAO,uBAAU,CAAC,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,eAAe,CAAC,YAAwB,EAAE,sBAA+B,KAAK;QAC1F,OAAO,uBAAU,CAAC,eAAe,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC;CACF;AAlBD,8DAkBC;AAED,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"BentleyGeometryFlatBuffer.js","sourceRoot":"","sources":["../../../src/serialization/BentleyGeometryFlatBuffer.ts"],"names":[],"mappings":";;;AAQA,6CAA0C;AAC1C,6CAA0C;AAE1C;;;GAGG;AACH,MAAa,yBAAyB;IACpC,gBAAwB,CAAC;IACzB;;;OAGG;IACI,MAAM,CAAC,eAAe,CAAC,IAAqC,EAAE,sBAA+B,KAAK;QACvG,OAAO,uBAAU,CAAC,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,eAAe,CAAC,YAAwB,EAAE,sBAA+B,KAAK;QAC1F,OAAO,uBAAU,CAAC,eAAe,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC;CACF;AAlBD,8DAkBC;AAED,iEAAiE;AACjE,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC","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 Serialization\n */\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { BGFBReader } from \"./BGFBReader\";\nimport { BGFBWriter } from \"./BGFBWriter\";\n\n/**\n * Top level entries to convert between GeometryQuery types and FlatBuffer Bytes.\n * @public\n */\nexport class BentleyGeometryFlatBuffer {\n private constructor() { }\n /**\n * Serialize bytes to a flatbuffer.\n * @public\n */\n public static geometryToBytes(data: GeometryQuery | GeometryQuery[], addVersionSignature: boolean = false): Uint8Array | undefined {\n return BGFBWriter.geometryToBytes(data, addVersionSignature ? signatureBytes : undefined);\n }\n\n /**\n * Deserialize bytes from a flatbuffer.\n * @public\n * @param justTheBytes FlatBuffer bytes as created by BGFBWriter.createFlatBuffer (g);\n */\n public static bytesToGeometry(justTheBytes: Uint8Array, hasVersionSignature: boolean = false): GeometryQuery | GeometryQuery[] | undefined {\n return BGFBReader.bytesToGeometry(justTheBytes, hasVersionSignature ? signatureBytes : undefined);\n }\n}\n\n/** \"bg0001fb\" header, persisted in iModel FB geometry streams */\nconst signatureBytes = new Uint8Array([98, 103, 48, 48, 48, 49, 102, 98]);\n"]}
|
|
@@ -13,24 +13,24 @@ exports.DeepCompare = void 0;
|
|
|
13
13
|
* @public
|
|
14
14
|
*/
|
|
15
15
|
class DeepCompare {
|
|
16
|
+
/** Statistical accumulations during searchers. */
|
|
17
|
+
typeCounts = {
|
|
18
|
+
numbers: 0,
|
|
19
|
+
arrays: 0,
|
|
20
|
+
functions: 0,
|
|
21
|
+
objects: 0,
|
|
22
|
+
strings: 0,
|
|
23
|
+
booleans: 0,
|
|
24
|
+
undefined: 0,
|
|
25
|
+
};
|
|
26
|
+
/** Counts of property names encountered during various searches. */
|
|
27
|
+
propertyCounts = {};
|
|
28
|
+
/** Array of error descriptions. */
|
|
29
|
+
errorTracker = [];
|
|
30
|
+
/** relative tolerance for declaring numeric values equal. */
|
|
31
|
+
numberRelTol;
|
|
16
32
|
/** Construct comparison object with relative tolerance. */
|
|
17
|
-
constructor(numberRelTol = 1.0e-12) {
|
|
18
|
-
/** Statistical accumulations during searchers. */
|
|
19
|
-
this.typeCounts = {
|
|
20
|
-
numbers: 0,
|
|
21
|
-
arrays: 0,
|
|
22
|
-
functions: 0,
|
|
23
|
-
objects: 0,
|
|
24
|
-
strings: 0,
|
|
25
|
-
booleans: 0,
|
|
26
|
-
undefined: 0,
|
|
27
|
-
};
|
|
28
|
-
/** Counts of property names encountered during various searches. */
|
|
29
|
-
this.propertyCounts = {};
|
|
30
|
-
/** Array of error descriptions. */
|
|
31
|
-
this.errorTracker = [];
|
|
32
|
-
this.numberRelTol = numberRelTol;
|
|
33
|
-
}
|
|
33
|
+
constructor(numberRelTol = 1.0e-12) { this.numberRelTol = numberRelTol; }
|
|
34
34
|
/** Test if a and b are within tolerance.
|
|
35
35
|
* * If not, push error message to errorTracker.
|
|
36
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepCompare.js","sourceRoot":"","sources":["../../../src/serialization/DeepCompare.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Serialization\r\n */\r\n\r\n/**\r\n * Utilities to compare json objects by searching through their properties.\r\n * @public\r\n */\r\nexport class DeepCompare {\r\n /** Statistical accumulations during searchers. */\r\n public typeCounts = {\r\n numbers: 0,\r\n arrays: 0,\r\n functions: 0,\r\n objects: 0,\r\n strings: 0,\r\n booleans: 0,\r\n undefined: 0,\r\n };\r\n /** Counts of property names encountered during various searches. */\r\n public propertyCounts: { [key: string]: number } = {};\r\n /** Array of error descriptions. */\r\n public errorTracker: any[] = [];\r\n /** relative tolerance for declaring numeric values equal. */\r\n public numberRelTol: number;\r\n /** Construct comparison object with relative tolerance. */\r\n public constructor(numberRelTol = 1.0e-12) { this.numberRelTol = numberRelTol; }\r\n\r\n /** Test if a and b are within tolerance.\r\n * * If not, push error message to errorTracker.\r\n */\r\n public compareNumber(a: number, b: number) {\r\n if (Math.abs(b - a) < this.numberRelTol * (1 + Math.abs(a) + Math.abs(b))) {\r\n return this.announce(true);\r\n } else {\r\n this.errorTracker.unshift(b);\r\n this.errorTracker.unshift(a);\r\n this.errorTracker.unshift(`In ${this.errorTracker[this.errorTracker.length - 1]} property: Mismatched values`);\r\n return this.announce(false);\r\n }\r\n }\r\n\r\n private compareArray(a: any[], b: any[]) {\r\n if (a.length !== b.length) {\r\n const aCounter: { [key: string]: any } = {};\r\n const bCounter: { [key: string]: any } = {};\r\n // Append object to tracker that counts the properties of each array element (which is an object) in b, ONLY AT THIS LEVEL\r\n for (const i of b) {\r\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\r\n for (const property in i) {\r\n if (i.hasOwnProperty(property)) {\r\n // Add property to counter if not already there\r\n if (!bCounter.hasOwnProperty(property))\r\n bCounter[property] = 0;\r\n bCounter[property]++;\r\n }\r\n }\r\n }\r\n }\r\n this.errorTracker.unshift(bCounter);\r\n // Append object to tracker that counts the properties of each array element (which is an object) in a, ONLY AT THIS LEVEL\r\n for (const i of a) {\r\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\r\n for (const property in i) {\r\n if (i.hasOwnProperty(property)) {\r\n // Add property to counter if not already there\r\n if (!aCounter.hasOwnProperty(property))\r\n aCounter[property] = 0;\r\n aCounter[property]++;\r\n }\r\n }\r\n }\r\n }\r\n this.errorTracker.unshift(aCounter);\r\n\r\n this.errorTracker.unshift(`Mismatched array lengths a: [${a.length}] b: [${b.length}]`);\r\n return this.announce(false);\r\n }\r\n // Keep track of result for each element of array\r\n let toReturn = true;\r\n for (let i = 0; i < a.length; i++) {\r\n if (!this.compareInternal(a[i], b[i])) {\r\n toReturn = false;\r\n this.errorTracker.unshift(`[${i.toString()}]`);\r\n break;\r\n }\r\n }\r\n return this.announce(toReturn);\r\n }\r\n\r\n private compareObject(a: any, b: any) {\r\n // Check that both objects contain the same amount of properties\r\n if (a == null && b == null)\r\n return this.announce(true);\r\n if ((Object.keys(a)).length !== (Object.keys(b)).length) {\r\n this.errorTracker.unshift(`Mismatched property lists [${Object.keys(a)}][${Object.keys(b)}`);\r\n return this.announce(false);\r\n }\r\n // Keep track of result for each property of object\r\n let toReturn = true;\r\n for (const property in a) {\r\n // Only check non-generic object properties\r\n if (a.hasOwnProperty(property)) {\r\n // If property does not exist in propertyCounter, add it\r\n if (!this.propertyCounts.hasOwnProperty(property)) {\r\n this.propertyCounts[property] = 0;\r\n }\r\n this.propertyCounts[property]++;\r\n\r\n // Check that same property exists in b\r\n if (!(b.hasOwnProperty(property))) {\r\n this.errorTracker.unshift(`Property ${property} of A not in B`);\r\n this.errorTracker.unshift(a);\r\n this.errorTracker.unshift(b);\r\n return this.announce(false);\r\n }\r\n if (!this.compareInternal(a[property], b[property])) {\r\n // If not true, push property and break the loop\r\n this.errorTracker.unshift(property);\r\n toReturn = false;\r\n break;\r\n }\r\n }\r\n }\r\n return this.announce(toReturn);\r\n }\r\n\r\n // this is a convenient place for a breakpoint on failures in areSameStructure.\r\n private announce(value: boolean): boolean {\r\n if (value)\r\n return true;\r\n return false;\r\n }\r\n\r\n /** Main entry for comparing deep json objects.\r\n * * errorTracker, typeCounts, and propertyCounts are cleared.\r\n */\r\n public compare(a: any, b: any, tolerance?: number): boolean {\r\n if (tolerance !== undefined)\r\n this.numberRelTol = tolerance;\r\n this.errorTracker.length = 0;\r\n this.typeCounts.numbers = this.typeCounts.arrays = this.typeCounts.functions = this.typeCounts.objects = this.typeCounts.strings = this.typeCounts.booleans = this.typeCounts.undefined = 0;\r\n this.propertyCounts = {};\r\n return this.compareInternal(a, b);\r\n }\r\n\r\n // Recursive function for comparing any two nodes in a json object \"tree\"\r\n private compareInternal(a: any, b: any): boolean {\r\n if (typeof a !== typeof b) {\r\n return this.announce(false);\r\n } else if ((typeof a === \"number\") && (typeof b === \"number\")) {\r\n this.typeCounts.numbers++;\r\n return this.compareNumber(a, b);\r\n } else if (Array.isArray(a) && Array.isArray(b)) {\r\n this.typeCounts.arrays++;\r\n return this.compareArray(a, b);\r\n } else if (typeof a === \"function\" && typeof b === \"function\") {\r\n // No current necessity to check functions\r\n this.typeCounts.functions++;\r\n return true;\r\n } else if (typeof a === \"object\" && typeof b === \"object\") {\r\n // Argument is object but not array or function\r\n this.typeCounts.objects++;\r\n return (a === b) ? true : this.compareObject(a, b);\r\n } else if (typeof a === \"string\" && typeof b === \"string\") {\r\n this.typeCounts.strings++;\r\n return a === b;\r\n } else if (typeof a === \"boolean\" && typeof b === \"boolean\") {\r\n this.typeCounts.booleans++;\r\n return a === b;\r\n } else if (typeof a === \"undefined\" && typeof b === \"undefined\") {\r\n // As long as both are undefined, return true\r\n this.typeCounts.undefined++;\r\n return true;\r\n } else {\r\n // Unsupported type\r\n return this.announce(false);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DeepCompare.js","sourceRoot":"","sources":["../../../src/serialization/DeepCompare.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Serialization\n */\n\n/**\n * Utilities to compare json objects by searching through their properties.\n * @public\n */\nexport class DeepCompare {\n /** Statistical accumulations during searchers. */\n public typeCounts = {\n numbers: 0,\n arrays: 0,\n functions: 0,\n objects: 0,\n strings: 0,\n booleans: 0,\n undefined: 0,\n };\n /** Counts of property names encountered during various searches. */\n public propertyCounts: { [key: string]: number } = {};\n /** Array of error descriptions. */\n public errorTracker: any[] = [];\n /** relative tolerance for declaring numeric values equal. */\n public numberRelTol: number;\n /** Construct comparison object with relative tolerance. */\n public constructor(numberRelTol = 1.0e-12) { this.numberRelTol = numberRelTol; }\n\n /** Test if a and b are within tolerance.\n * * If not, push error message to errorTracker.\n */\n public compareNumber(a: number, b: number) {\n if (Math.abs(b - a) < this.numberRelTol * (1 + Math.abs(a) + Math.abs(b))) {\n return this.announce(true);\n } else {\n this.errorTracker.unshift(b);\n this.errorTracker.unshift(a);\n this.errorTracker.unshift(`In ${this.errorTracker[this.errorTracker.length - 1]} property: Mismatched values`);\n return this.announce(false);\n }\n }\n\n private compareArray(a: any[], b: any[]) {\n if (a.length !== b.length) {\n const aCounter: { [key: string]: any } = {};\n const bCounter: { [key: string]: any } = {};\n // Append object to tracker that counts the properties of each array element (which is an object) in b, ONLY AT THIS LEVEL\n for (const i of b) {\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\n for (const property in i) {\n if (i.hasOwnProperty(property)) {\n // Add property to counter if not already there\n if (!bCounter.hasOwnProperty(property))\n bCounter[property] = 0;\n bCounter[property]++;\n }\n }\n }\n }\n this.errorTracker.unshift(bCounter);\n // Append object to tracker that counts the properties of each array element (which is an object) in a, ONLY AT THIS LEVEL\n for (const i of a) {\n if (typeof i === \"object\" && typeof i !== \"function\" && !Array.isArray(i)) {\n for (const property in i) {\n if (i.hasOwnProperty(property)) {\n // Add property to counter if not already there\n if (!aCounter.hasOwnProperty(property))\n aCounter[property] = 0;\n aCounter[property]++;\n }\n }\n }\n }\n this.errorTracker.unshift(aCounter);\n\n this.errorTracker.unshift(`Mismatched array lengths a: [${a.length}] b: [${b.length}]`);\n return this.announce(false);\n }\n // Keep track of result for each element of array\n let toReturn = true;\n for (let i = 0; i < a.length; i++) {\n if (!this.compareInternal(a[i], b[i])) {\n toReturn = false;\n this.errorTracker.unshift(`[${i.toString()}]`);\n break;\n }\n }\n return this.announce(toReturn);\n }\n\n private compareObject(a: any, b: any) {\n // Check that both objects contain the same amount of properties\n if (a == null && b == null)\n return this.announce(true);\n if ((Object.keys(a)).length !== (Object.keys(b)).length) {\n this.errorTracker.unshift(`Mismatched property lists [${Object.keys(a)}][${Object.keys(b)}`);\n return this.announce(false);\n }\n // Keep track of result for each property of object\n let toReturn = true;\n for (const property in a) {\n // Only check non-generic object properties\n if (a.hasOwnProperty(property)) {\n // If property does not exist in propertyCounter, add it\n if (!this.propertyCounts.hasOwnProperty(property)) {\n this.propertyCounts[property] = 0;\n }\n this.propertyCounts[property]++;\n\n // Check that same property exists in b\n if (!(b.hasOwnProperty(property))) {\n this.errorTracker.unshift(`Property ${property} of A not in B`);\n this.errorTracker.unshift(a);\n this.errorTracker.unshift(b);\n return this.announce(false);\n }\n if (!this.compareInternal(a[property], b[property])) {\n // If not true, push property and break the loop\n this.errorTracker.unshift(property);\n toReturn = false;\n break;\n }\n }\n }\n return this.announce(toReturn);\n }\n\n // this is a convenient place for a breakpoint on failures in areSameStructure.\n private announce(value: boolean): boolean {\n if (value)\n return true;\n return false;\n }\n\n /** Main entry for comparing deep json objects.\n * * errorTracker, typeCounts, and propertyCounts are cleared.\n */\n public compare(a: any, b: any, tolerance?: number): boolean {\n if (tolerance !== undefined)\n this.numberRelTol = tolerance;\n this.errorTracker.length = 0;\n this.typeCounts.numbers = this.typeCounts.arrays = this.typeCounts.functions = this.typeCounts.objects = this.typeCounts.strings = this.typeCounts.booleans = this.typeCounts.undefined = 0;\n this.propertyCounts = {};\n return this.compareInternal(a, b);\n }\n\n // Recursive function for comparing any two nodes in a json object \"tree\"\n private compareInternal(a: any, b: any): boolean {\n if (typeof a !== typeof b) {\n return this.announce(false);\n } else if ((typeof a === \"number\") && (typeof b === \"number\")) {\n this.typeCounts.numbers++;\n return this.compareNumber(a, b);\n } else if (Array.isArray(a) && Array.isArray(b)) {\n this.typeCounts.arrays++;\n return this.compareArray(a, b);\n } else if (typeof a === \"function\" && typeof b === \"function\") {\n // No current necessity to check functions\n this.typeCounts.functions++;\n return true;\n } else if (typeof a === \"object\" && typeof b === \"object\") {\n // Argument is object but not array or function\n this.typeCounts.objects++;\n return (a === b) ? true : this.compareObject(a, b);\n } else if (typeof a === \"string\" && typeof b === \"string\") {\n this.typeCounts.strings++;\n return a === b;\n } else if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n this.typeCounts.booleans++;\n return a === b;\n } else if (typeof a === \"undefined\" && typeof b === \"undefined\") {\n // As long as both are undefined, return true\n this.typeCounts.undefined++;\n return true;\n } else {\n // Unsupported type\n return this.announce(false);\n }\n }\n}\n"]}
|
|
@@ -140,7 +140,7 @@ export declare class Sample {
|
|
|
140
140
|
* order varies from 2 to 5
|
|
141
141
|
*/
|
|
142
142
|
static createBspline3dHCurves(): BSplineCurve3dH[];
|
|
143
|
-
/** Create various orders of non-rational B-spline curves with helical poles */
|
|
143
|
+
/** Create various orders of non-rational B-spline curves with helical poles. */
|
|
144
144
|
static createBsplineCurveHelices(radius: number, height: number, numTurns: number, numSamplesPerTurn: number): BSplineCurve3d[];
|
|
145
145
|
/** Create weighted bsplines for circular arcs. */
|
|
146
146
|
static createBspline3dHArcs(): BSplineCurve3dH[];
|
|
@@ -593,11 +593,11 @@ export declare class Sample {
|
|
|
593
593
|
/** Create a simple example of each GeometryQuery type .... */
|
|
594
594
|
static createAllGeometryQueryTypes(): GeometryQuery[];
|
|
595
595
|
/**
|
|
596
|
-
* Create points on a sine wave
|
|
597
|
-
* Point i is origin + (i * xStep, a *sin(theta0 + i * dTheta), b * sin(beta0 + i * dBeta))
|
|
598
|
-
* * Default b is zero, so it is a simple sine wave
|
|
596
|
+
* Create points on a sine wave.
|
|
597
|
+
* * Point i is origin + (i * xStep, a *sin(theta0 + i * dTheta), b * sin(beta0 + i * dBeta)).
|
|
598
|
+
* * Default b is zero, so it is a simple sine wave.
|
|
599
599
|
* * If the dTheta and dBeta are equal, it is a sine wave in a tilted plane.
|
|
600
|
-
* * If dTheta and dBeta are different it is a non-planar curve
|
|
600
|
+
* * If dTheta and dBeta are different it is a non-planar curve.
|
|
601
601
|
*/
|
|
602
602
|
static createPointSineWave(origin: XYAndZ | undefined, numInterval?: number, xStep?: number, a?: number, thetaSweep?: AngleSweep, b?: number, betaSweep?: AngleSweep): Point3d[];
|
|
603
603
|
/**
|