@itwin/core-geometry 5.9.0-dev.1 → 5.9.0-dev.11

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.
Files changed (652) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.d.ts +10 -7
  4. package/lib/cjs/Geometry.d.ts.map +1 -1
  5. package/lib/cjs/Geometry.js +8 -6
  6. package/lib/cjs/Geometry.js.map +1 -1
  7. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  11. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  12. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  13. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  14. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  15. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  16. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  17. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  18. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  19. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  20. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  21. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  22. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  23. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  24. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  25. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  26. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  27. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  28. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  29. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  30. package/lib/cjs/core-geometry.js.map +1 -1
  31. package/lib/cjs/curve/Arc3d.d.ts +7 -0
  32. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  33. package/lib/cjs/curve/Arc3d.js +18 -6
  34. package/lib/cjs/curve/Arc3d.js.map +1 -1
  35. package/lib/cjs/curve/ConstrainedCurve2d.js.map +1 -1
  36. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  37. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  38. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +11 -2
  39. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  40. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -15
  41. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  42. package/lib/cjs/curve/CurveCollection.d.ts +15 -6
  43. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  44. package/lib/cjs/curve/CurveCollection.js +15 -6
  45. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  46. package/lib/cjs/curve/CurveCurve.d.ts +1 -1
  47. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
  48. package/lib/cjs/curve/CurveCurve.js +2 -1
  49. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  50. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  51. package/lib/cjs/curve/CurveFactory.d.ts +73 -1
  52. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  53. package/lib/cjs/curve/CurveFactory.js +228 -1
  54. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  55. package/lib/cjs/curve/CurveLocationDetail.d.ts +21 -0
  56. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  57. package/lib/cjs/curve/CurveLocationDetail.js +59 -0
  58. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  59. package/lib/cjs/curve/CurveOps.js.map +1 -1
  60. package/lib/cjs/curve/CurvePrimitive.d.ts +13 -12
  61. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  62. package/lib/cjs/curve/CurvePrimitive.js +12 -11
  63. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  64. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  65. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  66. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  67. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  68. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  69. package/lib/cjs/curve/LineString3d.js.map +1 -1
  70. package/lib/cjs/curve/Loop.js.map +1 -1
  71. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  72. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  73. package/lib/cjs/curve/Path.js.map +1 -1
  74. package/lib/cjs/curve/PointString3d.js.map +1 -1
  75. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  76. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  77. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  78. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  79. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  80. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  81. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  82. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  83. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  84. package/lib/cjs/curve/RegionOps.d.ts +17 -4
  85. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  86. package/lib/cjs/curve/RegionOps.js +114 -18
  87. package/lib/cjs/curve/RegionOps.js.map +1 -1
  88. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +3 -11
  89. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  90. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +1 -91
  91. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  92. package/lib/cjs/curve/StrokeOptions.d.ts +13 -6
  93. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
  94. package/lib/cjs/curve/StrokeOptions.js +13 -6
  95. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  96. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  97. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +1 -1
  98. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
  99. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +1 -2
  100. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  101. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +1 -1
  102. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -1
  103. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +1 -2
  104. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  105. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  106. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  107. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  108. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
  109. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  110. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +1 -2
  111. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  112. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  113. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +113 -103
  114. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  115. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +368 -337
  116. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  117. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +2 -3
  118. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  119. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +20 -32
  120. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  121. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  122. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  123. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  124. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  125. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  126. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  127. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  128. package/lib/cjs/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -1
  129. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  130. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  131. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  132. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  133. package/lib/cjs/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -1
  134. package/lib/cjs/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -1
  135. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -1
  136. package/lib/cjs/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -1
  137. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -1
  138. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -1
  139. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -1
  140. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -1
  141. package/lib/cjs/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -1
  142. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  143. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  144. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  145. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  146. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  147. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +1 -2
  148. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  149. package/lib/cjs/curve/spiral/DirectSpiral3d.js +9 -3
  150. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  151. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +1 -2
  152. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  153. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +10 -4
  154. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  155. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  156. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  157. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  158. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  159. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  160. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  161. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  162. package/lib/cjs/geometry3d/AngleSweep.d.ts +3 -1
  163. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  164. package/lib/cjs/geometry3d/AngleSweep.js +6 -2
  165. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  166. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  167. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  168. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  169. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  170. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  171. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  172. package/lib/cjs/geometry3d/GeometryHandler.d.ts +33 -4
  173. package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
  174. package/lib/cjs/geometry3d/GeometryHandler.js +79 -1
  175. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  176. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  177. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  178. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +9 -6
  179. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
  180. package/lib/cjs/geometry3d/GrowableXYArray.js +20 -10
  181. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  182. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +9 -6
  183. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  184. package/lib/cjs/geometry3d/GrowableXYZArray.js +20 -10
  185. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  186. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  187. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  188. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  189. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  190. package/lib/cjs/geometry3d/Matrix3d.d.ts +4 -4
  191. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  192. package/lib/cjs/geometry3d/Matrix3d.js +5 -4
  193. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  194. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  195. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  196. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  197. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  198. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  199. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  200. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  201. package/lib/cjs/geometry3d/Point3dVector3d.js +1 -1
  202. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  203. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  204. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  205. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  206. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  207. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  208. package/lib/cjs/geometry3d/Range.js.map +1 -1
  209. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  210. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  211. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  212. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  213. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  214. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  215. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  216. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  217. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  218. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  219. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  220. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  221. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  222. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  223. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  224. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  225. package/lib/cjs/numerics/BezierPolynomials.js +1 -1
  226. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  227. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  228. package/lib/cjs/numerics/Complex.js.map +1 -1
  229. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  230. package/lib/cjs/numerics/Newton.d.ts +44 -13
  231. package/lib/cjs/numerics/Newton.d.ts.map +1 -1
  232. package/lib/cjs/numerics/Newton.js +73 -23
  233. package/lib/cjs/numerics/Newton.js.map +1 -1
  234. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  235. package/lib/cjs/numerics/PolarData.js.map +1 -1
  236. package/lib/cjs/numerics/Polynomials.d.ts +1 -1
  237. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  238. package/lib/cjs/numerics/Polynomials.js +21 -9
  239. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  240. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  241. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  242. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  243. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  244. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  245. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  246. package/lib/cjs/polyface/AuxData.js.map +1 -1
  247. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  248. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  249. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  250. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  251. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  252. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  253. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  254. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  255. package/lib/cjs/polyface/Polyface.js.map +1 -1
  256. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  257. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  258. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  259. package/lib/cjs/polyface/PolyfaceQuery.d.ts +14 -14
  260. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  261. package/lib/cjs/polyface/PolyfaceQuery.js +14 -14
  262. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  263. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  264. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  265. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  266. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  267. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  268. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  269. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  270. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  271. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  272. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  273. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  274. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  275. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  276. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  277. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  278. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  279. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  280. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  281. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  282. package/lib/cjs/serialization/BGFBReader.js +2 -2
  283. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  284. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  285. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  286. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  287. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  288. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  289. package/lib/cjs/solid/Box.js.map +1 -1
  290. package/lib/cjs/solid/Cone.js.map +1 -1
  291. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  292. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  293. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  294. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  295. package/lib/cjs/solid/Sphere.js.map +1 -1
  296. package/lib/cjs/solid/SweepContour.js.map +1 -1
  297. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  298. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  299. package/lib/cjs/topology/Graph.d.ts +15 -15
  300. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  301. package/lib/cjs/topology/Graph.js +1 -1
  302. package/lib/cjs/topology/Graph.js.map +1 -1
  303. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  304. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +3 -3
  305. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  306. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  307. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  308. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  309. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  310. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  311. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  312. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  313. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  314. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  315. package/lib/cjs/topology/MaskManager.js.map +1 -1
  316. package/lib/cjs/topology/Merging.js.map +1 -1
  317. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  318. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  319. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  320. package/lib/cjs/topology/Triangulation.js.map +1 -1
  321. package/lib/cjs/topology/Voronoi.js.map +1 -1
  322. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  323. package/lib/esm/Constant.js.map +1 -1
  324. package/lib/esm/Geometry.d.ts +10 -7
  325. package/lib/esm/Geometry.d.ts.map +1 -1
  326. package/lib/esm/Geometry.js +8 -6
  327. package/lib/esm/Geometry.js.map +1 -1
  328. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  329. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  330. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  331. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  332. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  333. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  334. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  335. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  336. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  337. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  338. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  339. package/lib/esm/bspline/KnotVector.js.map +1 -1
  340. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  341. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  342. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  343. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  344. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  345. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  346. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  347. package/lib/esm/clipping/ClipVector.js.map +1 -1
  348. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  349. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  350. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  351. package/lib/esm/core-geometry.js.map +1 -1
  352. package/lib/esm/curve/Arc3d.d.ts +7 -0
  353. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  354. package/lib/esm/curve/Arc3d.js +18 -6
  355. package/lib/esm/curve/Arc3d.js.map +1 -1
  356. package/lib/esm/curve/ConstrainedCurve2d.js.map +1 -1
  357. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  358. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  359. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +11 -2
  360. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  361. package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -15
  362. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  363. package/lib/esm/curve/CurveCollection.d.ts +15 -6
  364. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  365. package/lib/esm/curve/CurveCollection.js +15 -6
  366. package/lib/esm/curve/CurveCollection.js.map +1 -1
  367. package/lib/esm/curve/CurveCurve.d.ts +1 -1
  368. package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
  369. package/lib/esm/curve/CurveCurve.js +2 -1
  370. package/lib/esm/curve/CurveCurve.js.map +1 -1
  371. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  372. package/lib/esm/curve/CurveFactory.d.ts +73 -1
  373. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  374. package/lib/esm/curve/CurveFactory.js +228 -1
  375. package/lib/esm/curve/CurveFactory.js.map +1 -1
  376. package/lib/esm/curve/CurveLocationDetail.d.ts +21 -0
  377. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  378. package/lib/esm/curve/CurveLocationDetail.js +59 -0
  379. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  380. package/lib/esm/curve/CurveOps.js.map +1 -1
  381. package/lib/esm/curve/CurvePrimitive.d.ts +13 -12
  382. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  383. package/lib/esm/curve/CurvePrimitive.js +12 -11
  384. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  385. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  386. package/lib/esm/curve/CurveTypes.js.map +1 -1
  387. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  388. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  389. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  390. package/lib/esm/curve/LineString3d.js.map +1 -1
  391. package/lib/esm/curve/Loop.js.map +1 -1
  392. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  393. package/lib/esm/curve/ParityRegion.js.map +1 -1
  394. package/lib/esm/curve/Path.js.map +1 -1
  395. package/lib/esm/curve/PointString3d.js.map +1 -1
  396. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  397. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  398. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  399. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  400. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  401. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  402. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  403. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  404. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  405. package/lib/esm/curve/RegionOps.d.ts +17 -4
  406. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  407. package/lib/esm/curve/RegionOps.js +116 -20
  408. package/lib/esm/curve/RegionOps.js.map +1 -1
  409. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +3 -11
  410. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  411. package/lib/esm/curve/RegionOpsClassificationSweeps.js +2 -92
  412. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  413. package/lib/esm/curve/StrokeOptions.d.ts +13 -6
  414. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
  415. package/lib/esm/curve/StrokeOptions.js +13 -6
  416. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  417. package/lib/esm/curve/UnionRegion.js.map +1 -1
  418. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +1 -1
  419. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
  420. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +1 -2
  421. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  422. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +1 -1
  423. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -1
  424. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +1 -2
  425. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  426. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  427. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  428. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  429. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
  430. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  431. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +1 -2
  432. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  433. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  434. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +113 -103
  435. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  436. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +370 -339
  437. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  438. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +2 -3
  439. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  440. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +20 -32
  441. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  442. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  443. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  444. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  445. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  446. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  447. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  448. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  449. package/lib/esm/curve/internalContexts/PointToCurveTangentHandler.js.map +1 -1
  450. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  451. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  452. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  453. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  454. package/lib/esm/curve/internalContexts/geometry2d/ConstrainedImplicitCurve2d.js.map +1 -1
  455. package/lib/esm/curve/internalContexts/geometry2d/ConstraintSet.js.map +1 -1
  456. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2d.js.map +1 -1
  457. package/lib/esm/curve/internalContexts/geometry2d/ImplicitCurve2dConverter.js.map +1 -1
  458. package/lib/esm/curve/internalContexts/geometry2d/UnboundedCircle2d.js.map +1 -1
  459. package/lib/esm/curve/internalContexts/geometry2d/UnboundedEllipse2d.js.map +1 -1
  460. package/lib/esm/curve/internalContexts/geometry2d/UnboundedHyperbola2d.js.map +1 -1
  461. package/lib/esm/curve/internalContexts/geometry2d/UnboundedLine2d.js.map +1 -1
  462. package/lib/esm/curve/internalContexts/geometry2d/UnboundedParabola2d.js.map +1 -1
  463. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  464. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  465. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  466. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  467. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  468. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +1 -2
  469. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  470. package/lib/esm/curve/spiral/DirectSpiral3d.js +9 -3
  471. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  472. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +1 -2
  473. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  474. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +10 -4
  475. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  476. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  477. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  478. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  479. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  480. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  481. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  482. package/lib/esm/geometry3d/Angle.js.map +1 -1
  483. package/lib/esm/geometry3d/AngleSweep.d.ts +3 -1
  484. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  485. package/lib/esm/geometry3d/AngleSweep.js +6 -2
  486. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  487. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  488. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  489. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  490. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  491. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  492. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  493. package/lib/esm/geometry3d/GeometryHandler.d.ts +33 -4
  494. package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
  495. package/lib/esm/geometry3d/GeometryHandler.js +77 -0
  496. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  497. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  498. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  499. package/lib/esm/geometry3d/GrowableXYArray.d.ts +9 -6
  500. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
  501. package/lib/esm/geometry3d/GrowableXYArray.js +20 -10
  502. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  503. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +9 -6
  504. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  505. package/lib/esm/geometry3d/GrowableXYZArray.js +20 -10
  506. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  507. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  508. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  509. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  510. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  511. package/lib/esm/geometry3d/Matrix3d.d.ts +4 -4
  512. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  513. package/lib/esm/geometry3d/Matrix3d.js +5 -4
  514. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  515. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  516. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  517. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  518. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  519. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  520. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  521. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  522. package/lib/esm/geometry3d/Point3dVector3d.js +1 -1
  523. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  524. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  525. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  526. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  527. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  528. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  529. package/lib/esm/geometry3d/Range.js.map +1 -1
  530. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  531. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  532. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  533. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  534. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  535. package/lib/esm/geometry3d/Transform.js.map +1 -1
  536. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  537. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  538. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  539. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  540. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  541. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  542. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  543. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  544. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  545. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  546. package/lib/esm/numerics/BezierPolynomials.js +1 -1
  547. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  548. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  549. package/lib/esm/numerics/Complex.js.map +1 -1
  550. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  551. package/lib/esm/numerics/Newton.d.ts +44 -13
  552. package/lib/esm/numerics/Newton.d.ts.map +1 -1
  553. package/lib/esm/numerics/Newton.js +71 -22
  554. package/lib/esm/numerics/Newton.js.map +1 -1
  555. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  556. package/lib/esm/numerics/PolarData.js.map +1 -1
  557. package/lib/esm/numerics/Polynomials.d.ts +1 -1
  558. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  559. package/lib/esm/numerics/Polynomials.js +21 -9
  560. package/lib/esm/numerics/Polynomials.js.map +1 -1
  561. package/lib/esm/numerics/Quadrature.js.map +1 -1
  562. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  563. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  564. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  565. package/lib/esm/numerics/UnionFind.js.map +1 -1
  566. package/lib/esm/numerics/UsageSums.js.map +1 -1
  567. package/lib/esm/polyface/AuxData.js.map +1 -1
  568. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  569. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  570. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  571. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  572. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  573. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  574. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  575. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  576. package/lib/esm/polyface/Polyface.js.map +1 -1
  577. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  578. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  579. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  580. package/lib/esm/polyface/PolyfaceQuery.d.ts +14 -14
  581. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  582. package/lib/esm/polyface/PolyfaceQuery.js +14 -14
  583. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  584. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  585. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  586. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  587. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  588. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  589. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  590. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  591. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  592. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  593. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  594. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  595. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  596. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  597. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  598. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  599. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  600. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  601. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  602. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  603. package/lib/esm/serialization/BGFBReader.js +2 -2
  604. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  605. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  606. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  607. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  608. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  609. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  610. package/lib/esm/solid/Box.js.map +1 -1
  611. package/lib/esm/solid/Cone.js.map +1 -1
  612. package/lib/esm/solid/LinearSweep.js.map +1 -1
  613. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  614. package/lib/esm/solid/RuledSweep.js.map +1 -1
  615. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  616. package/lib/esm/solid/Sphere.js.map +1 -1
  617. package/lib/esm/solid/SweepContour.js.map +1 -1
  618. package/lib/esm/solid/TorusPipe.js.map +1 -1
  619. package/lib/esm/topology/ChainMerge.js.map +1 -1
  620. package/lib/esm/topology/Graph.d.ts +15 -15
  621. package/lib/esm/topology/Graph.d.ts.map +1 -1
  622. package/lib/esm/topology/Graph.js +1 -1
  623. package/lib/esm/topology/Graph.js.map +1 -1
  624. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  625. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +3 -3
  626. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  627. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  628. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  629. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  630. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  631. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  632. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  633. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  634. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  635. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  636. package/lib/esm/topology/MaskManager.js.map +1 -1
  637. package/lib/esm/topology/Merging.js.map +1 -1
  638. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  639. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  640. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  641. package/lib/esm/topology/Triangulation.js.map +1 -1
  642. package/lib/esm/topology/Voronoi.js.map +1 -1
  643. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  644. package/package.json +3 -3
  645. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +0 -23
  646. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +0 -1
  647. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +0 -37
  648. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +0 -1
  649. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +0 -23
  650. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +0 -1
  651. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +0 -33
  652. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FrameBuilder.js","sourceRoot":"","sources":["../../../src/geometry3d/FrameBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\n// import { Point2d } from \"./Geometry2d\";\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { CurveCollection } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { AxisOrder, AxisScaleSelect, Geometry } from \"../Geometry\";\nimport { IndexedXYZCollection } from \"./IndexedXYZCollection\";\nimport { Matrix3d } from \"./Matrix3d\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\nimport { Point3dArray } from \"./PointHelpers\";\nimport { PolygonOps } from \"./PolygonOps\";\nimport { Range3d } from \"./Range\";\nimport { Transform } from \"./Transform\";\nimport { XYAndZ } from \"./XYZProps\";\n\n/**\n * Helper class to accumulate points and vectors until there is enough data to define a coordinate system.\n *\n * * For the common case of building a right handed frame:\n * * create the FrameBuilder and make calls to announcePoint and announceVector.\n * * the frame will be fully determined by an origin and two vectors.\n * * the first call to announcePoint will set the origin.\n * * additional calls to announcePoint will produce announceVector call with the vector from the origin.\n * * after each announcement, call getValidatedFrame(false)\n * * getValidatedFrame will succeed when it has two independent vectors.\n * * To build a left handed frame,\n * * an origin and 3 independent vectors are required.\n * * announce as above, but query with getValidatedFrame (true).\n * * this will use the third vector to select right or left handed frame.\n * @public\n */\nexport class FrameBuilder {\n private _origin: undefined | Point3d;\n private _vector0: undefined | Vector3d;\n private _vector1: undefined | Vector3d;\n private _vector2: undefined | Vector3d;\n private static _workMatrix?: Matrix3d;\n private static _workVector0?: Vector3d;\n private static _workVector1?: Vector3d;\n private static _workPoint?: Point3d;\n // test if both vectors are defined and have significant angle between.\n private areStronglyIndependentVectors(\n vector0: Vector3d, vector1: Vector3d, radiansTolerance: number = Geometry.smallAngleRadians,\n ): boolean {\n if (vector0 !== undefined && vector1 !== undefined) {\n const q = vector0.smallerUnorientedRadiansTo(vector1);\n return q > radiansTolerance;\n }\n return false;\n }\n /** Clear all accumulated point and vector data */\n public clear() {\n this._origin = undefined;\n this._vector0 = undefined;\n this._vector1 = undefined;\n this._vector2 = undefined;\n }\n constructor() {\n this.clear();\n }\n /**\n * Try to assemble the data into a non-singular transform.\n * * If allowLeftHanded is false, vector0 and vector1 determine a right handed coordinate system.\n * * if allowLeftHanded is true, the z vector of the right handed system can be flipped to agree with vector2 direction.\n */\n public getValidatedFrame(allowLeftHanded: boolean = false, result?: Transform): Transform | undefined {\n if (this._origin && this._vector0 && this._vector1) {\n const createRigidMatrix = (v0: Vector3d, v1: Vector3d): Matrix3d | undefined => {\n return FrameBuilder._workMatrix = Matrix3d.createRigidFromColumns(v0, v1, AxisOrder.XYZ, FrameBuilder._workMatrix);\n };\n if (!allowLeftHanded) {\n const matrix = createRigidMatrix(this._vector0, this._vector1);\n if (matrix)\n return Transform.createOriginAndMatrix(this._origin, matrix, result);\n // uh oh -- vector1 was not really independent. clear everything after vector0.\n this._vector1 = this._vector2 = undefined;\n } else if (this._vector2) {\n const matrix = createRigidMatrix(this._vector0, this._vector1);\n if (matrix) {\n if (this._vector0.tripleProduct(this._vector1, this._vector2) < 0)\n matrix.scaleColumns(1.0, 1.0, -1.0);\n return Transform.createOriginAndMatrix(this._origin, matrix, result);\n }\n // uh oh again -- clear vector1 and vector2, re-announce vector2 as possible vector1??\n const vector2 = this._vector2;\n this._vector1 = this._vector2 = undefined;\n this.announceVector(vector2);\n }\n }\n return undefined;\n }\n /** If vector0 is known but vector1 is not, make vector1 the cross of the up-vector and vector0 */\n public applyDefaultUpVector(vector?: Vector3d) {\n if (vector && this._vector0 && !this._vector1 && !vector.isParallelTo(this._vector0)) {\n this._vector1 = vector.crossProduct(this._vector0);\n }\n }\n /** Ask if there is a defined origin for the evolving frame */\n public get hasOrigin(): boolean {\n return this._origin !== undefined;\n }\n /**\n * Return the number of vectors saved. Because the save process checks numerics, this should be the rank of the system.\n */\n public savedVectorCount(): number {\n if (!this._vector0)\n return 0;\n if (!this._vector1)\n return 1;\n if (!this._vector2)\n return 2;\n return 3;\n }\n /**\n * Announce a new point. If this point is different from the origin, also compute and announce the vector from the origin.\n */\n public announcePoint(point: XYAndZ): number {\n if (!this._origin) {\n this._origin = Point3d.createFrom(point);\n return this.savedVectorCount();\n }\n // the new point may provide an additional vector\n if (this._origin.isAlmostEqual(point))\n return this.savedVectorCount();\n return this.announceVector(this._origin.vectorTo(point));\n }\n /** Announce a new vector. */\n public announceVector(vector: Vector3d): number {\n if (vector.isAlmostZero)\n return this.savedVectorCount();\n if (!this._vector0) {\n this._vector0 = vector.clone(this._vector0);\n return 1;\n }\n if (!this._vector1) {\n if (this.areStronglyIndependentVectors(vector, this._vector0, 1.0e-5)) {\n this._vector1 = vector.clone(this._vector1);\n return 2;\n }\n return 1;\n }\n // vector0 and vector1 are independent.\n if (!this._vector2) {\n const unitPerpendicular = this._vector0.unitCrossProduct(this._vector1);\n if (unitPerpendicular && !Geometry.isSameCoordinate(0, unitPerpendicular.dotProduct(vector))) {\n this._vector2 = vector.clone(this._vector2);\n return 3;\n }\n return 2;\n }\n // fall through if prior vectors are all there -- no need for the new one.\n return 3;\n }\n /**\n * Inspect the content of the data. Announce points and vectors. Return when savedVectorCount becomes sufficient\n * for a coordinate system.\n */\n public announce(data: any) {\n if (this.savedVectorCount() > 1)\n return;\n if (data === undefined)\n return;\n if (data instanceof Point3d)\n this.announcePoint(data);\n else if (data instanceof Vector3d)\n this.announceVector(data);\n else if (Geometry.isArrayOfNumberArray(data, 1, 3)) { // number[][] treated as xyz points\n for (const pt of data)\n this.announcePoint({ x: pt[0], y: pt[1], z: pt[2] });\n } else if (Geometry.isArrayOfNumberArray(data, 1, 2)) { // number[][] treated as xy points\n for (const pt of data)\n this.announcePoint({ x: pt[0], y: pt[1], z: 0 });\n } else if (Array.isArray(data)) {\n for (const child of data) {\n if (this.savedVectorCount() > 1)\n break;\n this.announce(child);\n }\n } else if (data instanceof CurvePrimitive) { // local x-axis aligns to first tangent vector\n if (data instanceof LineSegment3d) {\n this.announcePoint(data.startPoint());\n this.announcePoint(data.endPoint());\n } else if (data instanceof Arc3d) {\n const plane = data.fractionToPointAnd2Derivatives(0.0);\n this.announcePoint(plane.origin);\n this.announceVector(plane.vectorU);\n this.announceVector(plane.vectorV);\n } else if (data instanceof LineString3d) {\n for (const point of data.points) {\n this.announcePoint(point);\n if (this.savedVectorCount() > 1)\n break;\n }\n } else if (data instanceof BSplineCurve3d) {\n const point = Point3d.create();\n for (let i = 0; this.savedVectorCount() < 2; i++) {\n if (data.getPolePoint3d(i, point) instanceof Point3d)\n this.announcePoint(point);\n else break;\n }\n } else { // generic CurvePrimitive\n const frame = data.fractionToFrenetFrame(0.0);\n if (undefined !== frame) {\n this.announcePoint(frame.getOrigin());\n this.announceVector(frame.matrix.getColumn(0));\n this.announceVector(frame.matrix.getColumn(1));\n }\n }\n } else if (data instanceof CurveCollection) {\n if (data.children)\n for (const child of data.children) {\n this.announce(child);\n if (this.savedVectorCount() > 1)\n break;\n }\n } else if (data instanceof IndexedXYZCollection) {\n const point = Point3d.create();\n for (let i = 0; this.savedVectorCount() < 2; i++) {\n if (data.getPoint3dAtCheckedPointIndex(i, point) instanceof Point3d)\n this.announcePoint(point);\n else break;\n }\n } else if (data.hasOwnProperty(\"x\") && data.hasOwnProperty(\"y\") && data.hasOwnProperty(\"z\")) {\n this.announcePoint(data);\n }\n }\n /**\n * Create a localToWorld frame for the given data.\n * * origin is at first point.\n * * x axis in direction of first nonzero vector present or implied by the input.\n * * y axis is perpendicular to x and contains (in positive side) the next vector present or implied by the input.\n * * The calculation favors the first points found. It does not try to get a \"best\" plane.\n * @param defaultUpVector optional vector to cross with vector0 to create vector1 when it is unknown.\n * The z-column of the returned frame points into the same halfspace as this vector.\n * @param params any number of geometric objects to examine in [[announce]] for point/vector data sufficient to construct a frame.\n * If the last argument is a `Transform`, it is populated with the computed frame and returned.\n * @returns computed localToWorld frame, or undefined if insufficient data.\n */\n public static createRightHandedFrame(defaultUpVector: Vector3d | undefined, ...params: any[]): Transform | undefined {\n // if last arg is a Transform, remove it from the array and use for the return value\n let frame = (params.length > 0 && params[params.length - 1] instanceof Transform) ? params.pop() as Transform : undefined;\n const flipFrame = (f: Transform): Transform => {\n if (defaultUpVector && f.matrix.dotColumnZ(defaultUpVector) < 0.0)\n f.matrix.scaleColumnsInPlace(1, -1, -1);\n return f;\n };\n const builder = new FrameBuilder();\n for (const data of params) {\n builder.announce(data);\n builder.applyDefaultUpVector(defaultUpVector);\n if (frame = builder.getValidatedFrame(false, frame))\n return flipFrame(frame);\n }\n const evaluatePrimitiveFrame = (curve: CurvePrimitive, result?: Transform): Transform | undefined => {\n return curve.fractionToFrenetFrame(0.0, result);\n };\n // try direct evaluation of curve primitives using the above lambda\n for (const data of params) {\n if (data instanceof CurvePrimitive) {\n if (frame = evaluatePrimitiveFrame(data, frame))\n return flipFrame(frame);\n } else if (data instanceof CurveCollection) {\n const children = data.collectCurvePrimitives();\n for (const curve of children) {\n if (frame = evaluatePrimitiveFrame(curve, frame))\n return flipFrame(frame);\n }\n }\n }\n return undefined;\n }\n /**\n * Create a transform containing points or vectors in the given data.\n * * The xy columns of the transform contain the first points or vectors of the data.\n * * The z column is perpendicular to that xy plane.\n * * The calculation favors the first points found. It does not try to get a \"best\" plane.\n * @param params any number of geometric objects to examine in [[announce]] for point/vector data sufficient to construct a frame.\n * If the last argument is a `Transform`, it is populated with the computed frame and returned.\n * @returns computed localToWorld frame, or undefined if insufficient data.\n */\n public static createRightHandedLocalToWorld(...params: any[]): Transform | undefined {\n return this.createRightHandedFrame(undefined, params);\n }\n\n /**\n * Try to create a frame whose xy plane is through points.\n * * If 3 or more distinct points are present, the x axis is from the first point to the most distant, and y\n * direction is toward the point most distant from that line.\n * @param points array of points\n * @param result optional pre-allocated Transform to populate and return\n * @returns localToWorld frame for the points, or undefined if insufficient data\n */\n public static createFrameToDistantPoints(points: Point3d[], result?: Transform): Transform | undefined {\n if (points.length > 2) {\n const origin = points[0];\n const vector01 = FrameBuilder._workVector0 ?? Vector3d.create();\n Point3dArray.indexOfMostDistantPoint(points, points[0], vector01);\n const vector02 = FrameBuilder._workVector1 ?? Vector3d.create();\n Point3dArray.indexOfPointWithMaxCrossProductMagnitude(points, origin, vector01, vector02);\n const matrix = FrameBuilder._workMatrix = Matrix3d.createRigidFromColumns(vector01, vector02, AxisOrder.XYZ, FrameBuilder._workMatrix);\n if (matrix)\n return Transform.createOriginAndMatrix(origin, matrix, result);\n }\n return undefined;\n }\n /**\n * Try to create a frame whose xy plane is through points, with the points appearing CCW in the local frame.\n * * If 3 or more distinct points are present, the x axis is from the first point to the most distant, and y\n * direction is toward the point most distant from that line.\n * @param points array of points\n * @param result optional pre-allocated Transform to populate and return\n * @returns localToWorld frame for the points, or undefined if insufficient data\n */\n public static createFrameWithCCWPolygon(points: Point3d[], result?: Transform): Transform | undefined {\n if (points.length > 2) {\n const ray = PolygonOps.centroidAreaNormal(points); // can't pass pre-allocated ray...\n if (ray)\n return ray.toRigidZFrame(result);\n }\n return undefined;\n }\n /**\n * Create the localToWorld transform from a range to axes of its parent coordinate system.\n * @param range range to inspect\n * @param scaleSelect selects size of localToWorld axes.\n * @param fractionX fractional coordinate of frame origin x\n * @param fractionY fractional coordinate of frame origin y\n * @param fractionZ fractional coordinate of frame origin z\n * @param defaultAxisLength if true and any axis length is 0, that axis vector takes this physical length.\n * @param result optional pre-allocated Transform to populate and return\n * @returns localToWorld frame for the range\n */\n public static createLocalToWorldTransformInRange(\n range: Range3d,\n scaleSelect: AxisScaleSelect = AxisScaleSelect.NonUniformRangeContainment,\n fractionX: number = 0,\n fractionY: number = 0,\n fractionZ: number = 0,\n defaultAxisLength: number = 1.0,\n result?: Transform,\n ): Transform {\n if (range.isNull)\n return Transform.createIdentity(result);\n let a = 1.0;\n let b = 1.0;\n let c = 1.0;\n if (scaleSelect === AxisScaleSelect.LongestRangeDirection) {\n a = b = c = Geometry.correctSmallMetricDistance(range.maxLength(), defaultAxisLength);\n } else if (scaleSelect === AxisScaleSelect.NonUniformRangeContainment) {\n a = Geometry.correctSmallMetricDistance(range.xLength(), defaultAxisLength) * Geometry.maxAbsDiff(fractionX, 0, 1);\n b = Geometry.correctSmallMetricDistance(range.yLength(), defaultAxisLength) * Geometry.maxAbsDiff(fractionY, 0, 1);\n c = Geometry.correctSmallMetricDistance(range.zLength(), defaultAxisLength) * Geometry.maxAbsDiff(fractionZ, 0, 1);\n }\n const origin = FrameBuilder._workPoint = range.fractionToPoint(fractionX, fractionY, fractionZ, FrameBuilder._workPoint);\n const matrix = FrameBuilder._workMatrix = Matrix3d.createScale(a, b, c, FrameBuilder._workMatrix);\n return Transform.createOriginAndMatrix(origin, matrix, result);\n }\n}\n"]}
1
+ {"version":3,"file":"FrameBuilder.js","sourceRoot":"","sources":["../../../src/geometry3d/FrameBuilder.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 CartesianGeometry\r\n */\r\n\r\n// import { Point2d } from \"./Geometry2d\";\r\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\r\nimport { Arc3d } from \"../curve/Arc3d\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { AxisOrder, AxisScaleSelect, Geometry } from \"../Geometry\";\r\nimport { IndexedXYZCollection } from \"./IndexedXYZCollection\";\r\nimport { Matrix3d } from \"./Matrix3d\";\r\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\r\nimport { Point3dArray } from \"./PointHelpers\";\r\nimport { PolygonOps } from \"./PolygonOps\";\r\nimport { Range3d } from \"./Range\";\r\nimport { Transform } from \"./Transform\";\r\nimport { XYAndZ } from \"./XYZProps\";\r\n\r\n/**\r\n * Helper class to accumulate points and vectors until there is enough data to define a coordinate system.\r\n *\r\n * * For the common case of building a right handed frame:\r\n * * create the FrameBuilder and make calls to announcePoint and announceVector.\r\n * * the frame will be fully determined by an origin and two vectors.\r\n * * the first call to announcePoint will set the origin.\r\n * * additional calls to announcePoint will produce announceVector call with the vector from the origin.\r\n * * after each announcement, call getValidatedFrame(false)\r\n * * getValidatedFrame will succeed when it has two independent vectors.\r\n * * To build a left handed frame,\r\n * * an origin and 3 independent vectors are required.\r\n * * announce as above, but query with getValidatedFrame (true).\r\n * * this will use the third vector to select right or left handed frame.\r\n * @public\r\n */\r\nexport class FrameBuilder {\r\n private _origin: undefined | Point3d;\r\n private _vector0: undefined | Vector3d;\r\n private _vector1: undefined | Vector3d;\r\n private _vector2: undefined | Vector3d;\r\n private static _workMatrix?: Matrix3d;\r\n private static _workVector0?: Vector3d;\r\n private static _workVector1?: Vector3d;\r\n private static _workPoint?: Point3d;\r\n // test if both vectors are defined and have significant angle between.\r\n private areStronglyIndependentVectors(\r\n vector0: Vector3d, vector1: Vector3d, radiansTolerance: number = Geometry.smallAngleRadians,\r\n ): boolean {\r\n if (vector0 !== undefined && vector1 !== undefined) {\r\n const q = vector0.smallerUnorientedRadiansTo(vector1);\r\n return q > radiansTolerance;\r\n }\r\n return false;\r\n }\r\n /** Clear all accumulated point and vector data */\r\n public clear() {\r\n this._origin = undefined;\r\n this._vector0 = undefined;\r\n this._vector1 = undefined;\r\n this._vector2 = undefined;\r\n }\r\n constructor() {\r\n this.clear();\r\n }\r\n /**\r\n * Try to assemble the data into a non-singular transform.\r\n * * If allowLeftHanded is false, vector0 and vector1 determine a right handed coordinate system.\r\n * * if allowLeftHanded is true, the z vector of the right handed system can be flipped to agree with vector2 direction.\r\n */\r\n public getValidatedFrame(allowLeftHanded: boolean = false, result?: Transform): Transform | undefined {\r\n if (this._origin && this._vector0 && this._vector1) {\r\n const createRigidMatrix = (v0: Vector3d, v1: Vector3d): Matrix3d | undefined => {\r\n return FrameBuilder._workMatrix = Matrix3d.createRigidFromColumns(v0, v1, AxisOrder.XYZ, FrameBuilder._workMatrix);\r\n };\r\n if (!allowLeftHanded) {\r\n const matrix = createRigidMatrix(this._vector0, this._vector1);\r\n if (matrix)\r\n return Transform.createOriginAndMatrix(this._origin, matrix, result);\r\n // uh oh -- vector1 was not really independent. clear everything after vector0.\r\n this._vector1 = this._vector2 = undefined;\r\n } else if (this._vector2) {\r\n const matrix = createRigidMatrix(this._vector0, this._vector1);\r\n if (matrix) {\r\n if (this._vector0.tripleProduct(this._vector1, this._vector2) < 0)\r\n matrix.scaleColumns(1.0, 1.0, -1.0);\r\n return Transform.createOriginAndMatrix(this._origin, matrix, result);\r\n }\r\n // uh oh again -- clear vector1 and vector2, re-announce vector2 as possible vector1??\r\n const vector2 = this._vector2;\r\n this._vector1 = this._vector2 = undefined;\r\n this.announceVector(vector2);\r\n }\r\n }\r\n return undefined;\r\n }\r\n /** If vector0 is known but vector1 is not, make vector1 the cross of the up-vector and vector0 */\r\n public applyDefaultUpVector(vector?: Vector3d) {\r\n if (vector && this._vector0 && !this._vector1 && !vector.isParallelTo(this._vector0)) {\r\n this._vector1 = vector.crossProduct(this._vector0);\r\n }\r\n }\r\n /** Ask if there is a defined origin for the evolving frame */\r\n public get hasOrigin(): boolean {\r\n return this._origin !== undefined;\r\n }\r\n /**\r\n * Return the number of vectors saved. Because the save process checks numerics, this should be the rank of the system.\r\n */\r\n public savedVectorCount(): number {\r\n if (!this._vector0)\r\n return 0;\r\n if (!this._vector1)\r\n return 1;\r\n if (!this._vector2)\r\n return 2;\r\n return 3;\r\n }\r\n /**\r\n * Announce a new point. If this point is different from the origin, also compute and announce the vector from the origin.\r\n */\r\n public announcePoint(point: XYAndZ): number {\r\n if (!this._origin) {\r\n this._origin = Point3d.createFrom(point);\r\n return this.savedVectorCount();\r\n }\r\n // the new point may provide an additional vector\r\n if (this._origin.isAlmostEqual(point))\r\n return this.savedVectorCount();\r\n return this.announceVector(this._origin.vectorTo(point));\r\n }\r\n /** Announce a new vector. */\r\n public announceVector(vector: Vector3d): number {\r\n if (vector.isAlmostZero)\r\n return this.savedVectorCount();\r\n if (!this._vector0) {\r\n this._vector0 = vector.clone(this._vector0);\r\n return 1;\r\n }\r\n if (!this._vector1) {\r\n if (this.areStronglyIndependentVectors(vector, this._vector0, 1.0e-5)) {\r\n this._vector1 = vector.clone(this._vector1);\r\n return 2;\r\n }\r\n return 1;\r\n }\r\n // vector0 and vector1 are independent.\r\n if (!this._vector2) {\r\n const unitPerpendicular = this._vector0.unitCrossProduct(this._vector1);\r\n if (unitPerpendicular && !Geometry.isSameCoordinate(0, unitPerpendicular.dotProduct(vector))) {\r\n this._vector2 = vector.clone(this._vector2);\r\n return 3;\r\n }\r\n return 2;\r\n }\r\n // fall through if prior vectors are all there -- no need for the new one.\r\n return 3;\r\n }\r\n /**\r\n * Inspect the content of the data. Announce points and vectors. Return when savedVectorCount becomes sufficient\r\n * for a coordinate system.\r\n */\r\n public announce(data: any) {\r\n if (this.savedVectorCount() > 1)\r\n return;\r\n if (data === undefined)\r\n return;\r\n if (data instanceof Point3d)\r\n this.announcePoint(data);\r\n else if (data instanceof Vector3d)\r\n this.announceVector(data);\r\n else if (Geometry.isArrayOfNumberArray(data, 1, 3)) { // number[][] treated as xyz points\r\n for (const pt of data)\r\n this.announcePoint({ x: pt[0], y: pt[1], z: pt[2] });\r\n } else if (Geometry.isArrayOfNumberArray(data, 1, 2)) { // number[][] treated as xy points\r\n for (const pt of data)\r\n this.announcePoint({ x: pt[0], y: pt[1], z: 0 });\r\n } else if (Array.isArray(data)) {\r\n for (const child of data) {\r\n if (this.savedVectorCount() > 1)\r\n break;\r\n this.announce(child);\r\n }\r\n } else if (data instanceof CurvePrimitive) { // local x-axis aligns to first tangent vector\r\n if (data instanceof LineSegment3d) {\r\n this.announcePoint(data.startPoint());\r\n this.announcePoint(data.endPoint());\r\n } else if (data instanceof Arc3d) {\r\n const plane = data.fractionToPointAnd2Derivatives(0.0);\r\n this.announcePoint(plane.origin);\r\n this.announceVector(plane.vectorU);\r\n this.announceVector(plane.vectorV);\r\n } else if (data instanceof LineString3d) {\r\n for (const point of data.points) {\r\n this.announcePoint(point);\r\n if (this.savedVectorCount() > 1)\r\n break;\r\n }\r\n } else if (data instanceof BSplineCurve3d) {\r\n const point = Point3d.create();\r\n for (let i = 0; this.savedVectorCount() < 2; i++) {\r\n if (data.getPolePoint3d(i, point) instanceof Point3d)\r\n this.announcePoint(point);\r\n else break;\r\n }\r\n } else { // generic CurvePrimitive\r\n const frame = data.fractionToFrenetFrame(0.0);\r\n if (undefined !== frame) {\r\n this.announcePoint(frame.getOrigin());\r\n this.announceVector(frame.matrix.getColumn(0));\r\n this.announceVector(frame.matrix.getColumn(1));\r\n }\r\n }\r\n } else if (data instanceof CurveCollection) {\r\n if (data.children)\r\n for (const child of data.children) {\r\n this.announce(child);\r\n if (this.savedVectorCount() > 1)\r\n break;\r\n }\r\n } else if (data instanceof IndexedXYZCollection) {\r\n const point = Point3d.create();\r\n for (let i = 0; this.savedVectorCount() < 2; i++) {\r\n if (data.getPoint3dAtCheckedPointIndex(i, point) instanceof Point3d)\r\n this.announcePoint(point);\r\n else break;\r\n }\r\n } else if (data.hasOwnProperty(\"x\") && data.hasOwnProperty(\"y\") && data.hasOwnProperty(\"z\")) {\r\n this.announcePoint(data);\r\n }\r\n }\r\n /**\r\n * Create a localToWorld frame for the given data.\r\n * * origin is at first point.\r\n * * x axis in direction of first nonzero vector present or implied by the input.\r\n * * y axis is perpendicular to x and contains (in positive side) the next vector present or implied by the input.\r\n * * The calculation favors the first points found. It does not try to get a \"best\" plane.\r\n * @param defaultUpVector optional vector to cross with vector0 to create vector1 when it is unknown.\r\n * The z-column of the returned frame points into the same halfspace as this vector.\r\n * @param params any number of geometric objects to examine in [[announce]] for point/vector data sufficient to construct a frame.\r\n * If the last argument is a `Transform`, it is populated with the computed frame and returned.\r\n * @returns computed localToWorld frame, or undefined if insufficient data.\r\n */\r\n public static createRightHandedFrame(defaultUpVector: Vector3d | undefined, ...params: any[]): Transform | undefined {\r\n // if last arg is a Transform, remove it from the array and use for the return value\r\n let frame = (params.length > 0 && params[params.length - 1] instanceof Transform) ? params.pop() as Transform : undefined;\r\n const flipFrame = (f: Transform): Transform => {\r\n if (defaultUpVector && f.matrix.dotColumnZ(defaultUpVector) < 0.0)\r\n f.matrix.scaleColumnsInPlace(1, -1, -1);\r\n return f;\r\n };\r\n const builder = new FrameBuilder();\r\n for (const data of params) {\r\n builder.announce(data);\r\n builder.applyDefaultUpVector(defaultUpVector);\r\n if (frame = builder.getValidatedFrame(false, frame))\r\n return flipFrame(frame);\r\n }\r\n const evaluatePrimitiveFrame = (curve: CurvePrimitive, result?: Transform): Transform | undefined => {\r\n return curve.fractionToFrenetFrame(0.0, result);\r\n };\r\n // try direct evaluation of curve primitives using the above lambda\r\n for (const data of params) {\r\n if (data instanceof CurvePrimitive) {\r\n if (frame = evaluatePrimitiveFrame(data, frame))\r\n return flipFrame(frame);\r\n } else if (data instanceof CurveCollection) {\r\n const children = data.collectCurvePrimitives();\r\n for (const curve of children) {\r\n if (frame = evaluatePrimitiveFrame(curve, frame))\r\n return flipFrame(frame);\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Create a transform containing points or vectors in the given data.\r\n * * The xy columns of the transform contain the first points or vectors of the data.\r\n * * The z column is perpendicular to that xy plane.\r\n * * The calculation favors the first points found. It does not try to get a \"best\" plane.\r\n * @param params any number of geometric objects to examine in [[announce]] for point/vector data sufficient to construct a frame.\r\n * If the last argument is a `Transform`, it is populated with the computed frame and returned.\r\n * @returns computed localToWorld frame, or undefined if insufficient data.\r\n */\r\n public static createRightHandedLocalToWorld(...params: any[]): Transform | undefined {\r\n return this.createRightHandedFrame(undefined, params);\r\n }\r\n\r\n /**\r\n * Try to create a frame whose xy plane is through points.\r\n * * If 3 or more distinct points are present, the x axis is from the first point to the most distant, and y\r\n * direction is toward the point most distant from that line.\r\n * @param points array of points\r\n * @param result optional pre-allocated Transform to populate and return\r\n * @returns localToWorld frame for the points, or undefined if insufficient data\r\n */\r\n public static createFrameToDistantPoints(points: Point3d[], result?: Transform): Transform | undefined {\r\n if (points.length > 2) {\r\n const origin = points[0];\r\n const vector01 = FrameBuilder._workVector0 ?? Vector3d.create();\r\n Point3dArray.indexOfMostDistantPoint(points, points[0], vector01);\r\n const vector02 = FrameBuilder._workVector1 ?? Vector3d.create();\r\n Point3dArray.indexOfPointWithMaxCrossProductMagnitude(points, origin, vector01, vector02);\r\n const matrix = FrameBuilder._workMatrix = Matrix3d.createRigidFromColumns(vector01, vector02, AxisOrder.XYZ, FrameBuilder._workMatrix);\r\n if (matrix)\r\n return Transform.createOriginAndMatrix(origin, matrix, result);\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Try to create a frame whose xy plane is through points, with the points appearing CCW in the local frame.\r\n * * If 3 or more distinct points are present, the x axis is from the first point to the most distant, and y\r\n * direction is toward the point most distant from that line.\r\n * @param points array of points\r\n * @param result optional pre-allocated Transform to populate and return\r\n * @returns localToWorld frame for the points, or undefined if insufficient data\r\n */\r\n public static createFrameWithCCWPolygon(points: Point3d[], result?: Transform): Transform | undefined {\r\n if (points.length > 2) {\r\n const ray = PolygonOps.centroidAreaNormal(points); // can't pass pre-allocated ray...\r\n if (ray)\r\n return ray.toRigidZFrame(result);\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Create the localToWorld transform from a range to axes of its parent coordinate system.\r\n * @param range range to inspect\r\n * @param scaleSelect selects size of localToWorld axes.\r\n * @param fractionX fractional coordinate of frame origin x\r\n * @param fractionY fractional coordinate of frame origin y\r\n * @param fractionZ fractional coordinate of frame origin z\r\n * @param defaultAxisLength if true and any axis length is 0, that axis vector takes this physical length.\r\n * @param result optional pre-allocated Transform to populate and return\r\n * @returns localToWorld frame for the range\r\n */\r\n public static createLocalToWorldTransformInRange(\r\n range: Range3d,\r\n scaleSelect: AxisScaleSelect = AxisScaleSelect.NonUniformRangeContainment,\r\n fractionX: number = 0,\r\n fractionY: number = 0,\r\n fractionZ: number = 0,\r\n defaultAxisLength: number = 1.0,\r\n result?: Transform,\r\n ): Transform {\r\n if (range.isNull)\r\n return Transform.createIdentity(result);\r\n let a = 1.0;\r\n let b = 1.0;\r\n let c = 1.0;\r\n if (scaleSelect === AxisScaleSelect.LongestRangeDirection) {\r\n a = b = c = Geometry.correctSmallMetricDistance(range.maxLength(), defaultAxisLength);\r\n } else if (scaleSelect === AxisScaleSelect.NonUniformRangeContainment) {\r\n a = Geometry.correctSmallMetricDistance(range.xLength(), defaultAxisLength) * Geometry.maxAbsDiff(fractionX, 0, 1);\r\n b = Geometry.correctSmallMetricDistance(range.yLength(), defaultAxisLength) * Geometry.maxAbsDiff(fractionY, 0, 1);\r\n c = Geometry.correctSmallMetricDistance(range.zLength(), defaultAxisLength) * Geometry.maxAbsDiff(fractionZ, 0, 1);\r\n }\r\n const origin = FrameBuilder._workPoint = range.fractionToPoint(fractionX, fractionY, fractionZ, FrameBuilder._workPoint);\r\n const matrix = FrameBuilder._workMatrix = Matrix3d.createScale(a, b, c, FrameBuilder._workMatrix);\r\n return Transform.createOriginAndMatrix(origin, matrix, result);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FrustumAnimation.js","sourceRoot":"","sources":["../../../src/geometry3d/FrustumAnimation.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 Solid\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { AxisOrder, Geometry } from \"../Geometry\";\nimport { Angle } from \"./Angle\";\nimport { Matrix3d } from \"./Matrix3d\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\nimport { Point3dArray } from \"./PointHelpers\";\nimport { Transform } from \"./Transform\";\n\n/**\n * context for constructing smooth motion a startFrustum and endFrustum.\n * The externally interesting calls are\n * * Create a context to shift corner0 to corner1, with the(NPC coordinate) point(fractionU, fractionV, fractionW) moving along its connecting segment, all other points rotating smoothly from the start orientation to end orientation:\n * `const context = SmoothTransformBetweenFrusta (cornerA, cornerB)`\n * * Get any intermediate 8 corners(at fraction) with `context.fractionToWorldCorners(fraction)`\n * * Frustum corners are ordered by \"x varies fastest, then y, then z\", hence (xyz) order on nondimensional space is\n * * (left lower rear) (000)\n * * (right lower rear) (100)\n * * (left upper rear) (010)\n * * (right upper rear) (100)\n * * (left lower front) (001)\n * * (right lower front) (101)\n * * (left upper front) (011)\n * * (right upper front) (101)\n * * which uses names\n * * (left,right) for horizontal (x)\n * * (bottom, top) for vertical (y)\n * * (rear, front) for back and front planes (z)\n * @public\n */\nexport class SmoothTransformBetweenFrusta {\n // raw frusta:\n private _localCornerA: Point3d[];\n private _localCornerB: Point3d[];\n\n private _localToWorldA: Transform;\n private _localToWorldB: Transform;\n /** (property accessor) rigid frame at start of motion */\n public get localToWorldA(): Transform { return this._localToWorldA; }\n /** (property accessor) rigid frame at end of motion */\n public get localToWorldB(): Transform { return this._localToWorldB; }\n private _rotationAxis: Vector3d;\n private _rotationAngle: Angle;\n\n /**\n * CAPTURE local corners, pickup and putdown frames, and rotation-around-vector data\n * @param localCornerA\n * @param localCornerB\n * @param localToWordA\n * @param localToWordB\n * @param rotationAxis\n * @param rotationAngle\n */\n private constructor(localToWorldA: Transform, localCornerA: Point3d[], localToWorldB: Transform, localCornerB: Point3d[], rotationAxis: Vector3d, rotationAngle: Angle) {\n this._localCornerA = localCornerA;\n this._localCornerB = localCornerB;\n this._localToWorldA = localToWorldA;\n this._localToWorldB = localToWorldB;\n this._rotationAxis = rotationAxis;\n this._rotationAngle = rotationAngle;\n }\n\n /**\n * Set up rotation data for smooth transition from 8 point frusta cornerA and cornerB\n * @param cornerA\n * @param cornerB\n */\n public static create(cornerA: Point3d[], cornerB: Point3d[], preferSimpleRotation: boolean = true): SmoothTransformBetweenFrusta | undefined {\n if (cornerA.length !== 8 || cornerB.length !== 8)\n return undefined;\n const localToWorldA = Point3dArray.evaluateTrilinearDerivativeTransform(cornerA, 0.5, 0.5, 0.5);\n const localToWorldB = Point3dArray.evaluateTrilinearDerivativeTransform(cornerB, 0.5, 0.5, 0.5);\n const rigidA = Transform.createOriginAndMatrix(localToWorldA.origin, Matrix3d.createRigidFromMatrix3d(localToWorldA.matrix, AxisOrder.ZXY));\n const rigidB = Transform.createOriginAndMatrix(localToWorldB.origin, Matrix3d.createRigidFromMatrix3d(localToWorldB.matrix, AxisOrder.ZXY));\n if (rigidA.matrix.computeCachedInverse(true) && rigidB.matrix.computeCachedInverse(true)) {\n const spinMatrix = rigidB.matrix.multiplyMatrixMatrixInverse(rigidA.matrix);\n assert(spinMatrix !== undefined, \"expect rigidA to be invertible in this scope\");\n const spinAxis = spinMatrix.getAxisAndAngleOfRotation();\n assert(spinAxis.ok, \"expect spinMatrix to be a rotation\");\n const localCornerA = rigidA.multiplyInversePoint3dArray(cornerA);\n const localCornerB = rigidB.multiplyInversePoint3dArray(cornerB);\n assert(localCornerB !== undefined && localCornerA !== undefined, \"expect rigidA and rigidB to be invertible in this scope\");\n /** Is this a pure rotation -- i.e. no clip volume resizing for camera or clip changes */\n if (preferSimpleRotation && Point3dArray.isAlmostEqual(localCornerA, localCornerB) && !spinAxis.angle.isAlmostZero) {\n // world vectors\n const worldOriginShift = Vector3d.createStartEnd(localToWorldA.origin, localToWorldB.origin);\n const chordMidPoint = localToWorldA.getOrigin().interpolate(0.5, localToWorldB.getOrigin());\n const bisector = spinAxis.axis.unitCrossProduct(worldOriginShift);\n if (bisector) {\n const halfChordLength = 0.5 * worldOriginShift.magnitude();\n const alpha = Geometry.conditionalDivideFraction(halfChordLength, Math.tan(spinAxis.angle.radians * 0.5));\n if (alpha !== undefined) {\n const spinCenter = chordMidPoint.plusScaled(bisector, alpha);\n const rigidA1 = Transform.createOriginAndMatrix(spinCenter, rigidA.matrix);\n const rigidB1 = Transform.createOriginAndMatrix(spinCenter, rigidB.matrix);\n const localCornerA1 = rigidA1.multiplyInversePoint3dArray(cornerA);\n const localCornerB1 = rigidB1.multiplyInversePoint3dArray(cornerB);\n assert(localCornerA1 !== undefined && localCornerB1 !== undefined, \"expect rigidA1 and rigidB1 to be invertible in this scope\");\n return new SmoothTransformBetweenFrusta(rigidA1, localCornerA1, rigidB1, localCornerB1, spinAxis.axis, spinAxis.angle);\n }\n }\n }\n return new SmoothTransformBetweenFrusta(rigidA, localCornerA, rigidB, localCornerB, spinAxis.axis, spinAxis.angle);\n }\n return undefined;\n }\n\n /** interpolate local corner coordinates at fractional move from m_localFrustum0 to m_localFrustum1 */\n public interpolateLocalCorners(fraction: number, result?: Point3d[]): Point3d[] {\n result = result ?? [];\n result.length = 0;\n const n = this._localCornerA.length;\n for (let i = 0; i < n; i++) {\n result.push(this._localCornerA[i].interpolate(fraction, this._localCornerB[i]));\n }\n return result;\n }\n /**\n * After initialization, call this for various intermediate fractions.\n * The returned corner points are in world coordinates \"between\" start and end positions.\n */\n public fractionToWorldCorners(fraction: number, result?: Point3d[]): Point3d[] {\n const corners = this.interpolateLocalCorners(fraction, result);\n const fractionalRotation = Matrix3d.createRotationAroundVector(this._rotationAxis, this._rotationAngle.cloneScaled(fraction));\n assert(fractionalRotation !== undefined, \"expect `create` to populate nonzero rotation axis\");\n if (!fractionalRotation)\n return this._localCornerA;\n const axes0 = this._localToWorldA.matrix;\n const fractionalAxes = fractionalRotation.multiplyMatrixMatrix(axes0);\n const fractionalOrigin = this._localToWorldA.getOrigin().interpolate(fraction, this._localToWorldB.origin);\n const putdownFrame = Transform.createOriginAndMatrix(fractionalOrigin, fractionalAxes);\n putdownFrame.multiplyPoint3dArray(corners, corners);\n return corners;\n }\n}\n"]}
1
+ {"version":3,"file":"FrustumAnimation.js","sourceRoot":"","sources":["../../../src/geometry3d/FrustumAnimation.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 Solid\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AxisOrder, Geometry } from \"../Geometry\";\r\nimport { Angle } from \"./Angle\";\r\nimport { Matrix3d } from \"./Matrix3d\";\r\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\r\nimport { Point3dArray } from \"./PointHelpers\";\r\nimport { Transform } from \"./Transform\";\r\n\r\n/**\r\n * context for constructing smooth motion a startFrustum and endFrustum.\r\n * The externally interesting calls are\r\n * * Create a context to shift corner0 to corner1, with the(NPC coordinate) point(fractionU, fractionV, fractionW) moving along its connecting segment, all other points rotating smoothly from the start orientation to end orientation:\r\n * `const context = SmoothTransformBetweenFrusta (cornerA, cornerB)`\r\n * * Get any intermediate 8 corners(at fraction) with `context.fractionToWorldCorners(fraction)`\r\n * * Frustum corners are ordered by \"x varies fastest, then y, then z\", hence (xyz) order on nondimensional space is\r\n * * (left lower rear) (000)\r\n * * (right lower rear) (100)\r\n * * (left upper rear) (010)\r\n * * (right upper rear) (100)\r\n * * (left lower front) (001)\r\n * * (right lower front) (101)\r\n * * (left upper front) (011)\r\n * * (right upper front) (101)\r\n * * which uses names\r\n * * (left,right) for horizontal (x)\r\n * * (bottom, top) for vertical (y)\r\n * * (rear, front) for back and front planes (z)\r\n * @public\r\n */\r\nexport class SmoothTransformBetweenFrusta {\r\n // raw frusta:\r\n private _localCornerA: Point3d[];\r\n private _localCornerB: Point3d[];\r\n\r\n private _localToWorldA: Transform;\r\n private _localToWorldB: Transform;\r\n /** (property accessor) rigid frame at start of motion */\r\n public get localToWorldA(): Transform { return this._localToWorldA; }\r\n /** (property accessor) rigid frame at end of motion */\r\n public get localToWorldB(): Transform { return this._localToWorldB; }\r\n private _rotationAxis: Vector3d;\r\n private _rotationAngle: Angle;\r\n\r\n /**\r\n * CAPTURE local corners, pickup and putdown frames, and rotation-around-vector data\r\n * @param localCornerA\r\n * @param localCornerB\r\n * @param localToWordA\r\n * @param localToWordB\r\n * @param rotationAxis\r\n * @param rotationAngle\r\n */\r\n private constructor(localToWorldA: Transform, localCornerA: Point3d[], localToWorldB: Transform, localCornerB: Point3d[], rotationAxis: Vector3d, rotationAngle: Angle) {\r\n this._localCornerA = localCornerA;\r\n this._localCornerB = localCornerB;\r\n this._localToWorldA = localToWorldA;\r\n this._localToWorldB = localToWorldB;\r\n this._rotationAxis = rotationAxis;\r\n this._rotationAngle = rotationAngle;\r\n }\r\n\r\n /**\r\n * Set up rotation data for smooth transition from 8 point frusta cornerA and cornerB\r\n * @param cornerA\r\n * @param cornerB\r\n */\r\n public static create(cornerA: Point3d[], cornerB: Point3d[], preferSimpleRotation: boolean = true): SmoothTransformBetweenFrusta | undefined {\r\n if (cornerA.length !== 8 || cornerB.length !== 8)\r\n return undefined;\r\n const localToWorldA = Point3dArray.evaluateTrilinearDerivativeTransform(cornerA, 0.5, 0.5, 0.5);\r\n const localToWorldB = Point3dArray.evaluateTrilinearDerivativeTransform(cornerB, 0.5, 0.5, 0.5);\r\n const rigidA = Transform.createOriginAndMatrix(localToWorldA.origin, Matrix3d.createRigidFromMatrix3d(localToWorldA.matrix, AxisOrder.ZXY));\r\n const rigidB = Transform.createOriginAndMatrix(localToWorldB.origin, Matrix3d.createRigidFromMatrix3d(localToWorldB.matrix, AxisOrder.ZXY));\r\n if (rigidA.matrix.computeCachedInverse(true) && rigidB.matrix.computeCachedInverse(true)) {\r\n const spinMatrix = rigidB.matrix.multiplyMatrixMatrixInverse(rigidA.matrix);\r\n assert(spinMatrix !== undefined, \"expect rigidA to be invertible in this scope\");\r\n const spinAxis = spinMatrix.getAxisAndAngleOfRotation();\r\n assert(spinAxis.ok, \"expect spinMatrix to be a rotation\");\r\n const localCornerA = rigidA.multiplyInversePoint3dArray(cornerA);\r\n const localCornerB = rigidB.multiplyInversePoint3dArray(cornerB);\r\n assert(localCornerB !== undefined && localCornerA !== undefined, \"expect rigidA and rigidB to be invertible in this scope\");\r\n /** Is this a pure rotation -- i.e. no clip volume resizing for camera or clip changes */\r\n if (preferSimpleRotation && Point3dArray.isAlmostEqual(localCornerA, localCornerB) && !spinAxis.angle.isAlmostZero) {\r\n // world vectors\r\n const worldOriginShift = Vector3d.createStartEnd(localToWorldA.origin, localToWorldB.origin);\r\n const chordMidPoint = localToWorldA.getOrigin().interpolate(0.5, localToWorldB.getOrigin());\r\n const bisector = spinAxis.axis.unitCrossProduct(worldOriginShift);\r\n if (bisector) {\r\n const halfChordLength = 0.5 * worldOriginShift.magnitude();\r\n const alpha = Geometry.conditionalDivideFraction(halfChordLength, Math.tan(spinAxis.angle.radians * 0.5));\r\n if (alpha !== undefined) {\r\n const spinCenter = chordMidPoint.plusScaled(bisector, alpha);\r\n const rigidA1 = Transform.createOriginAndMatrix(spinCenter, rigidA.matrix);\r\n const rigidB1 = Transform.createOriginAndMatrix(spinCenter, rigidB.matrix);\r\n const localCornerA1 = rigidA1.multiplyInversePoint3dArray(cornerA);\r\n const localCornerB1 = rigidB1.multiplyInversePoint3dArray(cornerB);\r\n assert(localCornerA1 !== undefined && localCornerB1 !== undefined, \"expect rigidA1 and rigidB1 to be invertible in this scope\");\r\n return new SmoothTransformBetweenFrusta(rigidA1, localCornerA1, rigidB1, localCornerB1, spinAxis.axis, spinAxis.angle);\r\n }\r\n }\r\n }\r\n return new SmoothTransformBetweenFrusta(rigidA, localCornerA, rigidB, localCornerB, spinAxis.axis, spinAxis.angle);\r\n }\r\n return undefined;\r\n }\r\n\r\n /** interpolate local corner coordinates at fractional move from m_localFrustum0 to m_localFrustum1 */\r\n public interpolateLocalCorners(fraction: number, result?: Point3d[]): Point3d[] {\r\n result = result ?? [];\r\n result.length = 0;\r\n const n = this._localCornerA.length;\r\n for (let i = 0; i < n; i++) {\r\n result.push(this._localCornerA[i].interpolate(fraction, this._localCornerB[i]));\r\n }\r\n return result;\r\n }\r\n /**\r\n * After initialization, call this for various intermediate fractions.\r\n * The returned corner points are in world coordinates \"between\" start and end positions.\r\n */\r\n public fractionToWorldCorners(fraction: number, result?: Point3d[]): Point3d[] {\r\n const corners = this.interpolateLocalCorners(fraction, result);\r\n const fractionalRotation = Matrix3d.createRotationAroundVector(this._rotationAxis, this._rotationAngle.cloneScaled(fraction));\r\n assert(fractionalRotation !== undefined, \"expect `create` to populate nonzero rotation axis\");\r\n if (!fractionalRotation)\r\n return this._localCornerA;\r\n const axes0 = this._localToWorldA.matrix;\r\n const fractionalAxes = fractionalRotation.multiplyMatrixMatrix(axes0);\r\n const fractionalOrigin = this._localToWorldA.getOrigin().interpolate(fraction, this._localToWorldB.origin);\r\n const putdownFrame = Transform.createOriginAndMatrix(fractionalOrigin, fractionalAxes);\r\n putdownFrame.multiplyPoint3dArray(corners, corners);\r\n return corners;\r\n }\r\n}\r\n"]}
@@ -1,6 +1,3 @@
1
- /** @packageDocumentation
2
- * @module ArraysAndInterfaces
3
- */
4
1
  import { AkimaCurve3d } from "../bspline/AkimaCurve3d";
5
2
  import { BezierCurve3d } from "../bspline/BezierCurve3d";
6
3
  import { BezierCurve3dH } from "../bspline/BezierCurve3dH";
@@ -265,7 +262,7 @@ export interface IStrokeHandler {
265
262
  * Announce that curve primitive `cp` should be evaluated in the specified fraction interval.
266
263
  * * Note that this method is permitted (expected) to provide pre-stroked data if available.
267
264
  * * In the pre-stroked case, the `cp` passed to the handler will be the stroked image, not the original.
268
- * * Callers that want summary data should implement (and return true from) needPrimaryDataForStrokes.
265
+ * * Callers that want primary (not cached) geometry should return `true` from [[needPrimaryGeometryForStrokes]].
269
266
  */
270
267
  announceIntervalForUniformStepStrokes(cp: CurvePrimitive, numStrokes: number, fraction0: number, fraction1: number): void;
271
268
  /**
@@ -292,6 +289,38 @@ export interface IStrokeHandler {
292
289
  */
293
290
  announceBezierCurve?(bezier: BezierCurveBase, numStrokes: number, parent: CurvePrimitive, spandex: number, fraction0: number, fraction1: number): void;
294
291
  }
292
+ /**
293
+ * A handler that generates uniformly distributed fractions for stroking a CurvePrimitive.
294
+ * * [[claimFractions]] returns the fractions
295
+ * * [[claimLineString]] returns the strokes
296
+ * @public
297
+ */
298
+ export declare class UniformStrokeCollector implements IStrokeHandler {
299
+ private _curve;
300
+ private _fractions;
301
+ /** Constructor. Curve is optional and not needed for [[claimFractions]]. */
302
+ constructor(cp?: CurvePrimitive, fractionTol?: number);
303
+ /** Announce a parent curve primitive (ignored). */
304
+ startParentCurvePrimitive(_c: CurvePrimitive): void;
305
+ /** Announce the curve primitive that will be described in subsequent calls. */
306
+ startCurvePrimitive(cp: CurvePrimitive): void;
307
+ /** Announce a single fraction. */
308
+ announcePointTangent(_p: Point3d, f: number, _v: Vector3d): void;
309
+ /** Announce uniformly distributed fractions in the fractional interval. */
310
+ announceIntervalForUniformStepStrokes(_c: CurvePrimitive, numStrokes: number, f0: number, f1: number): void;
311
+ /** Request primary geometry to avoid cached strokes. */
312
+ needPrimaryGeometryForStrokes(): boolean;
313
+ /** Announce the fractional span of the segment. */
314
+ announceSegmentInterval(_c: CurvePrimitive, _p0: Point3d, _p1: Point3d, _numStrokes: number, f0: number, f1: number): void;
315
+ /** Announce that all data about the curve has been announced (ignored). */
316
+ endCurvePrimitive(_c: CurvePrimitive): void;
317
+ /** Announce that all data about the parent curve has been announced (ignored). */
318
+ endParentCurvePrimitive(_c: CurvePrimitive): void;
319
+ /** Retrieve the collected fractions, optionally removing 0 and 1 first. */
320
+ claimFractions(remove01?: boolean): number[];
321
+ /** Create a [[LineString3d]] by evaluating the curve at the collected fractions. */
322
+ claimLineString(result?: LineString3d): LineString3d | undefined;
323
+ }
295
324
  /**
296
325
  * Interface with methods for mapping (u,v) fractional coordinates to surface xyz and derivatives.
297
326
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"GeometryHandler.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/GeometryHandler.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;GAMG;AACH,8BAAsB,eAAe;IACnC,8CAA8C;aAC9B,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,GAAG;IAC1D,+CAA+C;aAC/B,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,GAAG;IACxD,wCAAwC;aACxB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG;IAC1C,kDAAkD;IAC3C,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IACtD,iDAAiD;aACjC,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,GAAG;IAC5D,uDAAuD;aACvC,0BAA0B,CAAC,CAAC,EAAE,oBAAoB,GAAG,GAAG;IACxE,+CAA+C;aAC/B,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,GAAG;IACxD,kDAAkD;aAClC,qBAAqB,CAAC,CAAC,EAAE,eAAe,GAAG,GAAG;IAC9D,mDAAmD;aACnC,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,GAAG,GAAG;IAChE,gDAAgD;aAChC,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,GAAG;IAC1D,oDAAoD;aACpC,uBAAuB,CAAC,CAAC,EAAE,iBAAiB,GAAG,GAAG;IAClE,kDAAkD;aAClC,qBAAqB,CAAC,CAAC,EAAE,eAAe,GAAG,GAAG;IAC9D,mDAAmD;aACnC,sBAAsB,CAAC,CAAC,EAAE,kBAAkB,GAAG,GAAG;IAClE,yFAAyF;IAClF,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG;IAG/B,yFAAyF;IAClF,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG;IAG/B,iGAAiG;IAC1F,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,GAAG;IAG/C,gGAAgG;IACzF,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG;IAG7C,gGAAgG;IACzF,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG;IAG7C,uHAAuH;IAChH,iCAAiC,CAAC,CAAC,EAAE,2BAA2B,GAAG,GAAG;IAG7E,oCAAoC;aACpB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG;IAC5C,kCAAkC;aAClB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG;IACxC,iCAAiC;aACjB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG;IACtC,uCAAuC;aACvB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG;IAClD,yCAAyC;aACzB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG;IACtD,6CAA6C;aAC7B,qBAAqB,CAAC,CAAC,EAAE,eAAe,GAAG,GAAG;IAC9D,wCAAwC;aACxB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,GAAG;IACpD,2CAA2C;aAC3B,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,GAAG;IAC1D,2CAA2C;aAC3B,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,GAAG;IAC1D,4CAA4C;aAC5B,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,GAAG;CAC7D;AACD;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,GAAG;IAGhD,+BAA+B;IACxB,WAAW,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG;IAGlC,+BAA+B;IACf,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IAG/D,+BAA+B;IACf,iCAAiC,CAAC,EAAE,EAAE,2BAA2B,GAAG,GAAG;IAGvF,+BAA+B;IACxB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,GAAG;IAGpD,+BAA+B;IACxB,0BAA0B,CAAC,EAAE,EAAE,oBAAoB,GAAG,GAAG;IAGhE,+BAA+B;IACxB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,GAAG;IAGhD,+BAA+B;IACxB,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IAGtD,+BAA+B;IACxB,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,GAAG,GAAG;IAGxD,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,uBAAuB,CAAC,EAAE,EAAE,iBAAiB,GAAG,GAAG;IAG1D,+BAA+B;IACxB,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IAGtD,+BAA+B;IACxB,sBAAsB,CAAC,EAAE,EAAE,kBAAkB,GAAG,GAAG;IAG1D,+BAA+B;IACf,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG;IAGzC,+BAA+B;IACf,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG;IAGzC,+BAA+B;IACf,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,GAAG;IAGzD,+BAA+B;IACf,iBAAiB,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG;IAGvD,+BAA+B;IACf,iBAAiB,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG;IAGvD,+BAA+B;IACxB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG;IAGpC,+BAA+B;IACxB,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG;IAGhC,+BAA+B;IACxB,SAAS,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG;IAG9B,+BAA+B;IACxB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,GAAG;IAG1C,+BAA+B;IACxB,iBAAiB,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG;IAG9C,+BAA+B;IACxB,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IAGtD,+BAA+B;IACxB,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,GAAG;IAG5C,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,GAAG;CAGrD;AACD;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,eAAe;IACjE,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,GAAG;IAGhD,+BAA+B;IACxB,WAAW,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG;IAGlC,+BAA+B;IACxB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,GAAG;IAGpD,+BAA+B;IACxB,0BAA0B,CAAC,EAAE,EAAE,oBAAoB,GAAG,GAAG;IAGhE,+BAA+B;IACxB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,GAAG;IAGhD,+BAA+B;IACxB,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IAGtD,+BAA+B;IACxB,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,GAAG,GAAG;IAGxD,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,uBAAuB,CAAC,EAAE,EAAE,iBAAiB,GAAG,GAAG;IAG1D,+BAA+B;IACxB,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IAGtD,+BAA+B;IACxB,sBAAsB,CAAC,EAAE,EAAE,kBAAkB,GAAG,GAAG;IAG1D,oHAAoH;IAC7G,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,GAAG;IAO5C,0BAA0B;IACV,qBAAqB,CAAC,CAAC,EAAE,eAAe,GAAG,GAAG;IAG9D,+BAA+B;IACxB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG;IAGpC,+BAA+B;IACxB,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG;IAGhC,+BAA+B;IACxB,SAAS,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG;IAG9B,+BAA+B;IACxB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,GAAG;IAG1C,+BAA+B;IACxB,iBAAiB,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG;IAG9C,+BAA+B;IACxB,qBAAqB,CAAC,EAAE,EAAE,eAAe,GAAG,GAAG;IAGtD,+BAA+B;IACxB,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,GAAG;IAG5C,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,mBAAmB,CAAC,EAAE,EAAE,aAAa,GAAG,GAAG;IAGlD,+BAA+B;IACxB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,GAAG;CAGrD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IACpD,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9C;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9E;;;;;MAKE;IACF,qCAAqC,CACnC,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAC3E,IAAI,CAAC;IACR;;;MAGE;IACF,6BAA6B,CAAC,IAAI,OAAO,CAAC;IAC1C,2FAA2F;IAC3F,uBAAuB,CACrB,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAC7G,IAAI,CAAC;IACR,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5C,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IAClD;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,CAClB,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GACzH,IAAI,CAAC;CACT;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACnF;;;;;;;OAOG;IACH,4BAA4B,CAC1B,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,yBAAyB,GACvE,yBAAyB,CAAC;CAC9B;AACD;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;OAOG;IACH,wBAAwB,IAAI,QAAQ,CAAC;CACtC"}
1
+ {"version":3,"file":"GeometryHandler.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/GeometryHandler.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,14 @@
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.RecurseToCurvesGeometryHandler = exports.NullGeometryHandler = exports.GeometryHandler = void 0;
7
+ exports.UniformStrokeCollector = exports.RecurseToCurvesGeometryHandler = exports.NullGeometryHandler = exports.GeometryHandler = void 0;
8
+ /** @packageDocumentation
9
+ * @module ArraysAndInterfaces
10
+ */
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const LineString3d_1 = require("../curve/LineString3d");
13
+ const Geometry_1 = require("../Geometry");
14
+ const Point3dVector3d_1 = require("./Point3dVector3d");
8
15
  /**
9
16
  * `GeometryHandler` defines the base abstract methods for double-dispatch geometry computation.
10
17
  * * User code that wants to handle one or all of the commonly known geometry types implements a handler class.
@@ -280,4 +287,75 @@ class RecurseToCurvesGeometryHandler extends GeometryHandler {
280
287
  }
281
288
  }
282
289
  exports.RecurseToCurvesGeometryHandler = RecurseToCurvesGeometryHandler;
290
+ /**
291
+ * A handler that generates uniformly distributed fractions for stroking a CurvePrimitive.
292
+ * * [[claimFractions]] returns the fractions
293
+ * * [[claimLineString]] returns the strokes
294
+ * @public
295
+ */
296
+ class UniformStrokeCollector {
297
+ _curve;
298
+ _fractions;
299
+ /** Constructor. Curve is optional and not needed for [[claimFractions]]. */
300
+ constructor(cp, fractionTol = Geometry_1.Geometry.smallFraction) {
301
+ this._curve = undefined;
302
+ if (cp)
303
+ this.startCurvePrimitive(cp);
304
+ this._fractions = new core_bentley_1.OrderedSet((a, b) => (0, core_bentley_1.compareWithTolerance)(a, b, fractionTol));
305
+ }
306
+ /** Announce a parent curve primitive (ignored). */
307
+ startParentCurvePrimitive(_c) { }
308
+ /** Announce the curve primitive that will be described in subsequent calls. */
309
+ startCurvePrimitive(cp) {
310
+ this._curve = cp;
311
+ }
312
+ /** Announce a single fraction. */
313
+ announcePointTangent(_p, f, _v) {
314
+ this._fractions.add(f);
315
+ }
316
+ /** Announce uniformly distributed fractions in the fractional interval. */
317
+ announceIntervalForUniformStepStrokes(_c, numStrokes, f0, f1) {
318
+ if (numStrokes < 1)
319
+ numStrokes = 1;
320
+ this._fractions.add(f0);
321
+ const df = 1.0 / numStrokes;
322
+ for (let i = 1; i < numStrokes; i++)
323
+ this._fractions.add(Geometry_1.Geometry.interpolate(f0, i * df, f1));
324
+ this._fractions.add(f1);
325
+ }
326
+ /** Request primary geometry to avoid cached strokes. */
327
+ needPrimaryGeometryForStrokes() {
328
+ return true;
329
+ }
330
+ /** Announce the fractional span of the segment. */
331
+ announceSegmentInterval(_c, _p0, _p1, _numStrokes, f0, f1) {
332
+ this._fractions.add(f0);
333
+ this._fractions.add(f1);
334
+ }
335
+ /** Announce that all data about the curve has been announced (ignored). */
336
+ endCurvePrimitive(_c) { }
337
+ /** Announce that all data about the parent curve has been announced (ignored). */
338
+ endParentCurvePrimitive(_c) { }
339
+ /** Retrieve the collected fractions, optionally removing 0 and 1 first. */
340
+ claimFractions(remove01 = false) {
341
+ if (remove01) {
342
+ this._fractions.delete(0);
343
+ this._fractions.delete(1);
344
+ }
345
+ return [...this._fractions];
346
+ }
347
+ /** Create a [[LineString3d]] by evaluating the curve at the collected fractions. */
348
+ claimLineString(result) {
349
+ if (!this._curve)
350
+ return undefined;
351
+ result ??= LineString3d_1.LineString3d.create();
352
+ const pt = Point3dVector3d_1.Point3d.create();
353
+ for (const f of this._fractions) {
354
+ result.addPoint(this._curve.fractionToPoint(f, pt));
355
+ result.addFraction(f);
356
+ }
357
+ return result;
358
+ }
359
+ }
360
+ exports.UniformStrokeCollector = UniformStrokeCollector;
283
361
  //# sourceMappingURL=GeometryHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeometryHandler.js","sourceRoot":"","sources":["../../../src/geometry3d/GeometryHandler.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 ArraysAndInterfaces\n */\n\nimport { AkimaCurve3d } from \"../bspline/AkimaCurve3d\";\nimport { BezierCurve3d } from \"../bspline/BezierCurve3d\";\nimport { BezierCurve3dH } from \"../bspline/BezierCurve3dH\";\nimport { BezierCurveBase } from \"../bspline/BezierCurveBase\";\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\nimport { BSplineSurface3d, BSplineSurface3dH } from \"../bspline/BSplineSurface\";\nimport { InterpolationCurve3d } from \"../bspline/InterpolationCurve3d\";\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { CoordinateXYZ } from \"../curve/CoordinateXYZ\";\nimport { CurveChainWithDistanceIndex } from \"../curve/CurveChainWithDistanceIndex\";\nimport { BagOfCurves, 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 { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\nimport { UnionRegion } from \"../curve/UnionRegion\";\nimport { IndexedPolyface } from \"../polyface/Polyface\";\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 { Sphere } from \"../solid/Sphere\";\nimport { TorusPipe } from \"../solid/TorusPipe\";\nimport { Plane3dByOriginAndVectors } from \"./Plane3dByOriginAndVectors\";\nimport { Vector2d } from \"./Point2dVector2d\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\n\n/**\n * `GeometryHandler` defines the base abstract methods for double-dispatch geometry computation.\n * * User code that wants to handle one or all of the commonly known geometry types implements a handler class.\n * * User code that does not handle all types is most likely to start with `NullGeometryHandler`, which will provide\n * No-action implementations for all types.\n * @public\n */\nexport abstract class GeometryHandler {\n /** Handle strongly typed [[LineSegment3d]] */\n public abstract handleLineSegment3d(g: LineSegment3d): any;\n /** Handle strongly typed [[LineString3d]] */\n public abstract handleLineString3d(g: LineString3d): any;\n /** Handle strongly typed [[Arc3d]] */\n public abstract handleArc3d(g: Arc3d): any;\n /** Handle strongly typed [[CurveCollection]] */\n public handleCurveCollection(_g: CurveCollection): any { }\n /** Handle strongly typed [[BSplineCurve3d]] */\n public abstract handleBSplineCurve3d(g: BSplineCurve3d): any;\n /** Handle strongly typed [[InterpolationCurve3d]] */\n public abstract handleInterpolationCurve3d(g: InterpolationCurve3d): any;\n /** Handle strongly typed [[AkimaCurve3d]] */\n public abstract handleAkimaCurve3d(g: AkimaCurve3d): any;\n /** Handle strongly typed [[BSplineCurve3dH]] */\n public abstract handleBSplineCurve3dH(g: BSplineCurve3dH): any;\n /** Handle strongly typed [[BSplineSurface3d]] */\n public abstract handleBSplineSurface3d(g: BSplineSurface3d): any;\n /** Handle strongly typed [[CoordinateXYZ]] */\n public abstract handleCoordinateXYZ(g: CoordinateXYZ): any;\n /** Handle strongly typed [[BSplineSurface3dH]] */\n public abstract handleBSplineSurface3dH(g: BSplineSurface3dH): any;\n /** Handle strongly typed [[IndexedPolyface]] */\n public abstract handleIndexedPolyface(g: IndexedPolyface): any;\n /** handle strongly typed [[TransitionSpiral3d]] */\n public abstract handleTransitionSpiral(g: TransitionSpiral3d): any;\n /** Handle strongly typed [[Path]] (base class method calls [[handleCurveCollection]]) */\n public handlePath(g: Path): any {\n return this.handleCurveCollection(g);\n }\n /** Handle strongly typed [[Loop]] (base class method calls [[handleCurveCollection]]) */\n public handleLoop(g: Loop): any {\n return this.handleCurveCollection(g);\n }\n /** Handle strongly typed [[ParityRegion]] (base class method calls [[handleCurveCollection]]) */\n public handleParityRegion(g: ParityRegion): any {\n return this.handleCurveCollection(g);\n }\n /** Handle strongly typed [[UnionRegion]] (base class method calls [[handleCurveCollection]]) */\n public handleUnionRegion(g: UnionRegion): any {\n return this.handleCurveCollection(g);\n }\n /** Handle strongly typed [[BagOfCurves]] (base class method calls [[handleCurveCollection]]) */\n public handleBagOfCurves(g: BagOfCurves): any {\n return this.handleCurveCollection(g);\n }\n /** Handle strongly typed [[CurveChainWithDistanceIndex]] (base class method calls [[handlePath]] or [[handleLoop]]) */\n public handleCurveChainWithDistanceIndex(g: CurveChainWithDistanceIndex): any {\n return this.handlePath(g.path);\n }\n /** Handle strongly typed Sphere */\n public abstract handleSphere(g: Sphere): any;\n /** Handle strongly typed Cone */\n public abstract handleCone(g: Cone): any;\n /** Handle strongly typed Box */\n public abstract handleBox(g: Box): any;\n /** Handle strongly typed TorusPipe */\n public abstract handleTorusPipe(g: TorusPipe): any;\n /** Handle strongly typed LinearSweep */\n public abstract handleLinearSweep(g: LinearSweep): any;\n /** Handle strongly typed RotationalSweep */\n public abstract handleRotationalSweep(g: RotationalSweep): any;\n /** Handle strongly typed RuledSweep */\n public abstract handleRuledSweep(g: RuledSweep): any;\n /** Handle strongly typed PointString3d */\n public abstract handlePointString3d(g: PointString3d): any;\n /** Handle strongly typed BezierCurve3d */\n public abstract handleBezierCurve3d(g: BezierCurve3d): any;\n /** Handle strongly typed BezierCurve3dH */\n public abstract handleBezierCurve3dH(g: BezierCurve3dH): any;\n}\n/**\n * `NullGeometryHandler` is a base class for dispatching various geometry types to application specific implementation\n * of some service.\n * To use:\n * * Derive a class from `NullGeometryHandler`\n * * Re-implement any or all of the specific `handleXXXX` methods\n * * Create a handler instance `myHandler`\n * * To send a `GeometryQuery` object `candidateGeometry` through the (fast) dispatch, invoke\n * `candidateGeometry.dispatchToHandler (myHandler).\n * * The appropriate method or methods will get called with a strongly typed `_g ` value.\n * @public\n */\nexport class NullGeometryHandler extends GeometryHandler {\n /** No-action implementation */\n public handleLineSegment3d(_g: LineSegment3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleLineString3d(_g: LineString3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleArc3d(_g: Arc3d): any {\n return undefined;\n }\n /** No-action implementation */\n public override handleCurveCollection(_g: CurveCollection): any {\n return undefined;\n }\n /** No-action implementation */\n public override handleCurveChainWithDistanceIndex(_g: CurveChainWithDistanceIndex): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineCurve3d(_g: BSplineCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleInterpolationCurve3d(_g: InterpolationCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleAkimaCurve3d(_g: AkimaCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineCurve3dH(_g: BSplineCurve3dH): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineSurface3d(_g: BSplineSurface3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleCoordinateXYZ(_g: CoordinateXYZ): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineSurface3dH(_g: BSplineSurface3dH): any {\n return undefined;\n }\n /** No-action implementation */\n public handleIndexedPolyface(_g: IndexedPolyface): any {\n return undefined;\n }\n /** No-action implementation */\n public handleTransitionSpiral(_g: TransitionSpiral3d): any {\n return undefined;\n }\n /** No-action implementation */\n public override handlePath(_g: Path): any {\n return undefined;\n }\n /** No-action implementation */\n public override handleLoop(_g: Loop): any {\n return undefined;\n }\n /** No-action implementation */\n public override handleParityRegion(_g: ParityRegion): any {\n return undefined;\n }\n /** No-action implementation */\n public override handleUnionRegion(_g: UnionRegion): any {\n return undefined;\n }\n /** No-action implementation */\n public override handleBagOfCurves(_g: BagOfCurves): any {\n return undefined;\n }\n /** No-action implementation */\n public handleSphere(_g: Sphere): any {\n return undefined;\n }\n /** No-action implementation */\n public handleCone(_g: Cone): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBox(_g: Box): any {\n return undefined;\n }\n /** No-action implementation */\n public handleTorusPipe(_g: TorusPipe): any {\n return undefined;\n }\n /** No-action implementation */\n public handleLinearSweep(_g: LinearSweep): any {\n return undefined;\n }\n /** No-action implementation */\n public handleRotationalSweep(_g: RotationalSweep): any {\n return undefined;\n }\n /** No-action implementation */\n public handleRuledSweep(_g: RuledSweep): any {\n return undefined;\n }\n /** No-action implementation */\n public handlePointString3d(_g: PointString3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBezierCurve3d(_g: BezierCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBezierCurve3dH(_g: BezierCurve3dH): any {\n return undefined;\n }\n}\n/**\n * Implement GeometryHandler methods, but override `handleCurveCollection` so that all methods\n * that operate on a [[CurveCollection]] recurse to their children.\n * @public\n */\nexport class RecurseToCurvesGeometryHandler extends GeometryHandler {\n /** No-action implementation */\n public handleLineSegment3d(_g: LineSegment3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleLineString3d(_g: LineString3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleArc3d(_g: Arc3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineCurve3d(_g: BSplineCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleInterpolationCurve3d(_g: InterpolationCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleAkimaCurve3d(_g: AkimaCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineCurve3dH(_g: BSplineCurve3dH): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineSurface3d(_g: BSplineSurface3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleCoordinateXYZ(_g: CoordinateXYZ): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBSplineSurface3dH(_g: BSplineSurface3dH): any {\n return undefined;\n }\n /** No-action implementation */\n public handleIndexedPolyface(_g: IndexedPolyface): any {\n return undefined;\n }\n /** No-action implementation */\n public handleTransitionSpiral(_g: TransitionSpiral3d): any {\n return undefined;\n }\n /** Invoke `child.dispatchToGeometryHandler(this)` for each child in the array returned by the query `g.children` */\n public handleChildren(g: GeometryQuery): any {\n const children = g.children;\n if (children)\n for (const child of children) {\n child.dispatchToGeometryHandler(this);\n }\n }\n /** Recurse to children */\n public override handleCurveCollection(g: CurveCollection): any {\n return this.handleChildren(g);\n }\n /** No-action implementation */\n public handleSphere(_g: Sphere): any {\n return undefined;\n }\n /** No-action implementation */\n public handleCone(_g: Cone): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBox(_g: Box): any {\n return undefined;\n }\n /** No-action implementation */\n public handleTorusPipe(_g: TorusPipe): any {\n return undefined;\n }\n /** No-action implementation */\n public handleLinearSweep(_g: LinearSweep): any {\n return undefined;\n }\n /** No-action implementation */\n public handleRotationalSweep(_g: RotationalSweep): any {\n return undefined;\n }\n /** No-action implementation */\n public handleRuledSweep(_g: RuledSweep): any {\n return undefined;\n }\n /** No-action implementation */\n public handlePointString3d(_g: PointString3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBezierCurve3d(_g: BezierCurve3d): any {\n return undefined;\n }\n /** No-action implementation */\n public handleBezierCurve3dH(_g: BezierCurve3dH): any {\n return undefined;\n }\n}\n\n/**\n * IStrokeHandler is an interface with methods to receive data about curves being stroked.\n * CurvePrimitives emitStrokes() methods emit calls to a handler object with these methods.\n * The various CurvePrimitive types are free to announce either single points (announcePoint), linear fragments,\n * or fractional intervals of the parent curve.\n * * startCurvePrimitive(cp) -- announce the curve primitive whose strokes will follow.\n * * announcePointTangent(xyz, fraction, tangent) -- announce a single point on the curve.\n * * announceIntervalForUniformStepStrokes(cp, numStrokes, fraction0, fraction1) -- announce a fraction\n * interval in which the curve can be evaluated (e.g., the handler can call cp->fractionToPointAndDerivative())\n * * announceSegmentInterval(cp, point0, point1, numStrokes, fraction0, fraction1) -- announce that the\n * fractional interval fraction0, fraction1 is a straight line which should be broken into numStrokes strokes.\n * * A LineSegment would make a single call to this.\n * * A LineString would make one call to this for each of its segments, with fractions indicating position\n * within the linestring.\n * * endCurvePrimitive(cp) -- announce the end of the curve primitive.\n * @public\n */\nexport interface IStrokeHandler {\n /**\n * Announce a parent curve primitive.\n * * startParentCurvePrimitive() and endParentCurvePrimitive() are wrapped around startCurvePrimitive and\n * endCurvePrimitive when the interior primitive is a proxy.\n */\n startParentCurvePrimitive(cp: CurvePrimitive): void;\n /** Announce the curve primitive that will be described in subsequent calls. */\n startCurvePrimitive(cp: CurvePrimitive): void;\n /**\n * Announce a single point with its fraction and tangent.\n * * (IMPORTANT) the same Point3d and Vector3d will be reset and passed on multiple calls.\n * * (THEREFORE) if the implementation is saving coordinates, it must copy the xyz data out into its own data\n * structure rather than save the references.\n */\n announcePointTangent(xyz: Point3d, fraction: number, tangent: Vector3d): void;\n /**\n * Announce that curve primitive `cp` should be evaluated in the specified fraction interval.\n * * Note that this method is permitted (expected) to provide pre-stroked data if available.\n * * In the pre-stroked case, the `cp` passed to the handler will be the stroked image, not the original.\n * * Callers that want summary data should implement (and return true from) needPrimaryDataForStrokes.\n */\n announceIntervalForUniformStepStrokes(\n cp: CurvePrimitive, numStrokes: number, fraction0: number, fraction1: number,\n ): void;\n /**\n * OPTIONAL method for a handler to indicate that it wants primary geometry (e.g. spirals) rather than strokes.\n * @returns true if primary geometry should be passed (rather than stroked or otherwise simplified)\n */\n needPrimaryGeometryForStrokes?(): boolean;\n /** Announce numPoints interpolated between point0 and point1, with associated fractions */\n announceSegmentInterval(\n cp: CurvePrimitive, point0: Point3d, point1: Point3d, numStrokes: number, fraction0: number, fraction1: number,\n ): void;\n /** Announce that all data about `cp` has been announced. */\n endCurvePrimitive(cp: CurvePrimitive): void;\n /** Announce that all data about the parent primitive has been announced. */\n endParentCurvePrimitive(cp: CurvePrimitive): void;\n /**\n * OPTIONAL method to announce a bezier curve fragment.\n * * This is usually a section of BsplineCurve.\n * * If this function is missing, the same interval will be passed to announceIntervalForUniformSteps.\n * @param bezier bezier fragment\n * @param numStrokes suggested number of strokes (uniform in bezier interval 0..1)\n * @param parent parent curve\n * @param spanIndex spanIndex within parent\n * @param fraction0 start fraction on parent curve\n * @param fraction1 end fraction on parent curve\n */\n announceBezierCurve?(\n bezier: BezierCurveBase, numStrokes: number, parent: CurvePrimitive, spandex: number, fraction0: number, fraction1: number,\n ): void;\n}\n\n/**\n * Interface with methods for mapping (u,v) fractional coordinates to surface xyz and derivatives.\n * @public\n */\nexport interface UVSurface {\n /**\n * Convert fractional u and v coordinates to surface point.\n * @param uFraction fractional coordinate in u direction\n * @param vFraction fractional coordinate in v direction\n * @param result optional pre-allocated point\n */\n uvFractionToPoint(uFraction: number, vFraction: number, result?: Point3d): Point3d;\n /**\n * Convert fractional u and v coordinates to surface point and in-surface tangent directions.\n * * The vectors are expected to be non-zero tangents which can be crossed to get a normal.\n * * Hence they are not necessarily (a) partial derivatives or (b) Frenet vectors.\n * @param uFraction fractional coordinate in u direction\n * @param vFraction fractional coordinate in v direction\n * @param result optional pre-allocated carrier for point and vectors\n */\n uvFractionToPointAndTangents(\n uFraction: number, vFraction: number, result?: Plane3dByOriginAndVectors,\n ): Plane3dByOriginAndVectors;\n}\n/**\n * Interface for queries of distance-along in u and v directions\n * @public\n */\nexport interface UVSurfaceIsoParametricDistance {\n /**\n * * Return a vector whose x and y parts are \"size\" of the surface in the u and v directions.\n * * Sizes are use for applying scaling to mesh parameters\n * * These sizes are (reasonable approximations of) the max curve length along u and v isoparameter lines.\n * * e.g. for a sphere, these are:\n * * u direction = distance around the equator\n * * v direction = distance from south pole to north pole.\n */\n maxIsoParametricDistance(): Vector2d;\n}\n"]}
1
+ {"version":3,"file":"GeometryHandler.js","sourceRoot":"","sources":["../../../src/geometry3d/GeometryHandler.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 ArraysAndInterfaces\r\n */\r\n\r\nimport { compareWithTolerance, OrderedSet } from \"@itwin/core-bentley\";\r\nimport { AkimaCurve3d } from \"../bspline/AkimaCurve3d\";\r\nimport { BezierCurve3d } from \"../bspline/BezierCurve3d\";\r\nimport { BezierCurve3dH } from \"../bspline/BezierCurve3dH\";\r\nimport { BezierCurveBase } from \"../bspline/BezierCurveBase\";\r\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\r\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\r\nimport { BSplineSurface3d, BSplineSurface3dH } from \"../bspline/BSplineSurface\";\r\nimport { InterpolationCurve3d } from \"../bspline/InterpolationCurve3d\";\r\nimport { Arc3d } from \"../curve/Arc3d\";\r\nimport { CoordinateXYZ } from \"../curve/CoordinateXYZ\";\r\nimport { CurveChainWithDistanceIndex } from \"../curve/CurveChainWithDistanceIndex\";\r\nimport { BagOfCurves, 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 { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\r\nimport { UnionRegion } from \"../curve/UnionRegion\";\r\nimport { Geometry } from \"../Geometry\";\r\nimport { IndexedPolyface } from \"../polyface/Polyface\";\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 { Sphere } from \"../solid/Sphere\";\r\nimport { TorusPipe } from \"../solid/TorusPipe\";\r\nimport { Plane3dByOriginAndVectors } from \"./Plane3dByOriginAndVectors\";\r\nimport { Vector2d } from \"./Point2dVector2d\";\r\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\r\n\r\n/**\r\n * `GeometryHandler` defines the base abstract methods for double-dispatch geometry computation.\r\n * * User code that wants to handle one or all of the commonly known geometry types implements a handler class.\r\n * * User code that does not handle all types is most likely to start with `NullGeometryHandler`, which will provide\r\n * No-action implementations for all types.\r\n * @public\r\n */\r\nexport abstract class GeometryHandler {\r\n /** Handle strongly typed [[LineSegment3d]] */\r\n public abstract handleLineSegment3d(g: LineSegment3d): any;\r\n /** Handle strongly typed [[LineString3d]] */\r\n public abstract handleLineString3d(g: LineString3d): any;\r\n /** Handle strongly typed [[Arc3d]] */\r\n public abstract handleArc3d(g: Arc3d): any;\r\n /** Handle strongly typed [[CurveCollection]] */\r\n public handleCurveCollection(_g: CurveCollection): any { }\r\n /** Handle strongly typed [[BSplineCurve3d]] */\r\n public abstract handleBSplineCurve3d(g: BSplineCurve3d): any;\r\n /** Handle strongly typed [[InterpolationCurve3d]] */\r\n public abstract handleInterpolationCurve3d(g: InterpolationCurve3d): any;\r\n /** Handle strongly typed [[AkimaCurve3d]] */\r\n public abstract handleAkimaCurve3d(g: AkimaCurve3d): any;\r\n /** Handle strongly typed [[BSplineCurve3dH]] */\r\n public abstract handleBSplineCurve3dH(g: BSplineCurve3dH): any;\r\n /** Handle strongly typed [[BSplineSurface3d]] */\r\n public abstract handleBSplineSurface3d(g: BSplineSurface3d): any;\r\n /** Handle strongly typed [[CoordinateXYZ]] */\r\n public abstract handleCoordinateXYZ(g: CoordinateXYZ): any;\r\n /** Handle strongly typed [[BSplineSurface3dH]] */\r\n public abstract handleBSplineSurface3dH(g: BSplineSurface3dH): any;\r\n /** Handle strongly typed [[IndexedPolyface]] */\r\n public abstract handleIndexedPolyface(g: IndexedPolyface): any;\r\n /** handle strongly typed [[TransitionSpiral3d]] */\r\n public abstract handleTransitionSpiral(g: TransitionSpiral3d): any;\r\n /** Handle strongly typed [[Path]] (base class method calls [[handleCurveCollection]]) */\r\n public handlePath(g: Path): any {\r\n return this.handleCurveCollection(g);\r\n }\r\n /** Handle strongly typed [[Loop]] (base class method calls [[handleCurveCollection]]) */\r\n public handleLoop(g: Loop): any {\r\n return this.handleCurveCollection(g);\r\n }\r\n /** Handle strongly typed [[ParityRegion]] (base class method calls [[handleCurveCollection]]) */\r\n public handleParityRegion(g: ParityRegion): any {\r\n return this.handleCurveCollection(g);\r\n }\r\n /** Handle strongly typed [[UnionRegion]] (base class method calls [[handleCurveCollection]]) */\r\n public handleUnionRegion(g: UnionRegion): any {\r\n return this.handleCurveCollection(g);\r\n }\r\n /** Handle strongly typed [[BagOfCurves]] (base class method calls [[handleCurveCollection]]) */\r\n public handleBagOfCurves(g: BagOfCurves): any {\r\n return this.handleCurveCollection(g);\r\n }\r\n /** Handle strongly typed [[CurveChainWithDistanceIndex]] (base class method calls [[handlePath]] or [[handleLoop]]) */\r\n public handleCurveChainWithDistanceIndex(g: CurveChainWithDistanceIndex): any {\r\n return this.handlePath(g.path);\r\n }\r\n /** Handle strongly typed Sphere */\r\n public abstract handleSphere(g: Sphere): any;\r\n /** Handle strongly typed Cone */\r\n public abstract handleCone(g: Cone): any;\r\n /** Handle strongly typed Box */\r\n public abstract handleBox(g: Box): any;\r\n /** Handle strongly typed TorusPipe */\r\n public abstract handleTorusPipe(g: TorusPipe): any;\r\n /** Handle strongly typed LinearSweep */\r\n public abstract handleLinearSweep(g: LinearSweep): any;\r\n /** Handle strongly typed RotationalSweep */\r\n public abstract handleRotationalSweep(g: RotationalSweep): any;\r\n /** Handle strongly typed RuledSweep */\r\n public abstract handleRuledSweep(g: RuledSweep): any;\r\n /** Handle strongly typed PointString3d */\r\n public abstract handlePointString3d(g: PointString3d): any;\r\n /** Handle strongly typed BezierCurve3d */\r\n public abstract handleBezierCurve3d(g: BezierCurve3d): any;\r\n /** Handle strongly typed BezierCurve3dH */\r\n public abstract handleBezierCurve3dH(g: BezierCurve3dH): any;\r\n}\r\n/**\r\n * `NullGeometryHandler` is a base class for dispatching various geometry types to application specific implementation\r\n * of some service.\r\n * To use:\r\n * * Derive a class from `NullGeometryHandler`\r\n * * Re-implement any or all of the specific `handleXXXX` methods\r\n * * Create a handler instance `myHandler`\r\n * * To send a `GeometryQuery` object `candidateGeometry` through the (fast) dispatch, invoke\r\n * `candidateGeometry.dispatchToHandler (myHandler).\r\n * * The appropriate method or methods will get called with a strongly typed `_g ` value.\r\n * @public\r\n */\r\nexport class NullGeometryHandler extends GeometryHandler {\r\n /** No-action implementation */\r\n public handleLineSegment3d(_g: LineSegment3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleLineString3d(_g: LineString3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleArc3d(_g: Arc3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public override handleCurveCollection(_g: CurveCollection): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public override handleCurveChainWithDistanceIndex(_g: CurveChainWithDistanceIndex): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineCurve3d(_g: BSplineCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleInterpolationCurve3d(_g: InterpolationCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleAkimaCurve3d(_g: AkimaCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineCurve3dH(_g: BSplineCurve3dH): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineSurface3d(_g: BSplineSurface3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleCoordinateXYZ(_g: CoordinateXYZ): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineSurface3dH(_g: BSplineSurface3dH): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleIndexedPolyface(_g: IndexedPolyface): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleTransitionSpiral(_g: TransitionSpiral3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public override handlePath(_g: Path): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public override handleLoop(_g: Loop): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public override handleParityRegion(_g: ParityRegion): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public override handleUnionRegion(_g: UnionRegion): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public override handleBagOfCurves(_g: BagOfCurves): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleSphere(_g: Sphere): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleCone(_g: Cone): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBox(_g: Box): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleTorusPipe(_g: TorusPipe): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleLinearSweep(_g: LinearSweep): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleRotationalSweep(_g: RotationalSweep): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleRuledSweep(_g: RuledSweep): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handlePointString3d(_g: PointString3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBezierCurve3d(_g: BezierCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBezierCurve3dH(_g: BezierCurve3dH): any {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Implement GeometryHandler methods, but override `handleCurveCollection` so that all methods\r\n * that operate on a [[CurveCollection]] recurse to their children.\r\n * @public\r\n */\r\nexport class RecurseToCurvesGeometryHandler extends GeometryHandler {\r\n /** No-action implementation */\r\n public handleLineSegment3d(_g: LineSegment3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleLineString3d(_g: LineString3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleArc3d(_g: Arc3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineCurve3d(_g: BSplineCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleInterpolationCurve3d(_g: InterpolationCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleAkimaCurve3d(_g: AkimaCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineCurve3dH(_g: BSplineCurve3dH): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineSurface3d(_g: BSplineSurface3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleCoordinateXYZ(_g: CoordinateXYZ): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBSplineSurface3dH(_g: BSplineSurface3dH): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleIndexedPolyface(_g: IndexedPolyface): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleTransitionSpiral(_g: TransitionSpiral3d): any {\r\n return undefined;\r\n }\r\n /** Invoke `child.dispatchToGeometryHandler(this)` for each child in the array returned by the query `g.children` */\r\n public handleChildren(g: GeometryQuery): any {\r\n const children = g.children;\r\n if (children)\r\n for (const child of children) {\r\n child.dispatchToGeometryHandler(this);\r\n }\r\n }\r\n /** Recurse to children */\r\n public override handleCurveCollection(g: CurveCollection): any {\r\n return this.handleChildren(g);\r\n }\r\n /** No-action implementation */\r\n public handleSphere(_g: Sphere): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleCone(_g: Cone): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBox(_g: Box): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleTorusPipe(_g: TorusPipe): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleLinearSweep(_g: LinearSweep): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleRotationalSweep(_g: RotationalSweep): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleRuledSweep(_g: RuledSweep): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handlePointString3d(_g: PointString3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBezierCurve3d(_g: BezierCurve3d): any {\r\n return undefined;\r\n }\r\n /** No-action implementation */\r\n public handleBezierCurve3dH(_g: BezierCurve3dH): any {\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * IStrokeHandler is an interface with methods to receive data about curves being stroked.\r\n * CurvePrimitives emitStrokes() methods emit calls to a handler object with these methods.\r\n * The various CurvePrimitive types are free to announce either single points (announcePoint), linear fragments,\r\n * or fractional intervals of the parent curve.\r\n * * startCurvePrimitive(cp) -- announce the curve primitive whose strokes will follow.\r\n * * announcePointTangent(xyz, fraction, tangent) -- announce a single point on the curve.\r\n * * announceIntervalForUniformStepStrokes(cp, numStrokes, fraction0, fraction1) -- announce a fraction\r\n * interval in which the curve can be evaluated (e.g., the handler can call cp->fractionToPointAndDerivative())\r\n * * announceSegmentInterval(cp, point0, point1, numStrokes, fraction0, fraction1) -- announce that the\r\n * fractional interval fraction0, fraction1 is a straight line which should be broken into numStrokes strokes.\r\n * * A LineSegment would make a single call to this.\r\n * * A LineString would make one call to this for each of its segments, with fractions indicating position\r\n * within the linestring.\r\n * * endCurvePrimitive(cp) -- announce the end of the curve primitive.\r\n * @public\r\n */\r\nexport interface IStrokeHandler {\r\n /**\r\n * Announce a parent curve primitive.\r\n * * startParentCurvePrimitive() and endParentCurvePrimitive() are wrapped around startCurvePrimitive and\r\n * endCurvePrimitive when the interior primitive is a proxy.\r\n */\r\n startParentCurvePrimitive(cp: CurvePrimitive): void;\r\n /** Announce the curve primitive that will be described in subsequent calls. */\r\n startCurvePrimitive(cp: CurvePrimitive): void;\r\n /**\r\n * Announce a single point with its fraction and tangent.\r\n * * (IMPORTANT) the same Point3d and Vector3d will be reset and passed on multiple calls.\r\n * * (THEREFORE) if the implementation is saving coordinates, it must copy the xyz data out into its own data\r\n * structure rather than save the references.\r\n */\r\n announcePointTangent(xyz: Point3d, fraction: number, tangent: Vector3d): void;\r\n /**\r\n * Announce that curve primitive `cp` should be evaluated in the specified fraction interval.\r\n * * Note that this method is permitted (expected) to provide pre-stroked data if available.\r\n * * In the pre-stroked case, the `cp` passed to the handler will be the stroked image, not the original.\r\n * * Callers that want primary (not cached) geometry should return `true` from [[needPrimaryGeometryForStrokes]].\r\n */\r\n announceIntervalForUniformStepStrokes(\r\n cp: CurvePrimitive, numStrokes: number, fraction0: number, fraction1: number,\r\n ): void;\r\n /**\r\n * OPTIONAL method for a handler to indicate that it wants primary geometry (e.g. spirals) rather than strokes.\r\n * @returns true if primary geometry should be passed (rather than stroked or otherwise simplified)\r\n */\r\n needPrimaryGeometryForStrokes?(): boolean;\r\n /** Announce numPoints interpolated between point0 and point1, with associated fractions */\r\n announceSegmentInterval(\r\n cp: CurvePrimitive, point0: Point3d, point1: Point3d, numStrokes: number, fraction0: number, fraction1: number,\r\n ): void;\r\n /** Announce that all data about `cp` has been announced. */\r\n endCurvePrimitive(cp: CurvePrimitive): void;\r\n /** Announce that all data about the parent primitive has been announced. */\r\n endParentCurvePrimitive(cp: CurvePrimitive): void;\r\n /**\r\n * OPTIONAL method to announce a bezier curve fragment.\r\n * * This is usually a section of BsplineCurve.\r\n * * If this function is missing, the same interval will be passed to announceIntervalForUniformSteps.\r\n * @param bezier bezier fragment\r\n * @param numStrokes suggested number of strokes (uniform in bezier interval 0..1)\r\n * @param parent parent curve\r\n * @param spanIndex spanIndex within parent\r\n * @param fraction0 start fraction on parent curve\r\n * @param fraction1 end fraction on parent curve\r\n */\r\n announceBezierCurve?(\r\n bezier: BezierCurveBase, numStrokes: number, parent: CurvePrimitive, spandex: number, fraction0: number, fraction1: number,\r\n ): void;\r\n}\r\n\r\n/**\r\n * A handler that generates uniformly distributed fractions for stroking a CurvePrimitive.\r\n * * [[claimFractions]] returns the fractions\r\n * * [[claimLineString]] returns the strokes\r\n * @public\r\n */\r\nexport class UniformStrokeCollector implements IStrokeHandler {\r\n private _curve: CurvePrimitive | undefined;\r\n private _fractions: OrderedSet<number>;\r\n /** Constructor. Curve is optional and not needed for [[claimFractions]]. */\r\n public constructor(cp?: CurvePrimitive, fractionTol: number = Geometry.smallFraction) {\r\n this._curve = undefined;\r\n if (cp)\r\n this.startCurvePrimitive(cp);\r\n this._fractions = new OrderedSet<number>((a: number, b: number) => compareWithTolerance(a, b, fractionTol));\r\n }\r\n /** Announce a parent curve primitive (ignored). */\r\n public startParentCurvePrimitive(_c: CurvePrimitive): void { }\r\n /** Announce the curve primitive that will be described in subsequent calls. */\r\n public startCurvePrimitive(cp: CurvePrimitive): void {\r\n this._curve = cp;\r\n }\r\n /** Announce a single fraction. */\r\n public announcePointTangent(_p: Point3d, f: number, _v: Vector3d): void {\r\n this._fractions.add(f);\r\n }\r\n /** Announce uniformly distributed fractions in the fractional interval. */\r\n public announceIntervalForUniformStepStrokes(_c: CurvePrimitive, numStrokes: number, f0: number, f1: number): void {\r\n if (numStrokes < 1)\r\n numStrokes = 1;\r\n this._fractions.add(f0);\r\n const df = 1.0 / numStrokes;\r\n for (let i = 1; i < numStrokes; i++)\r\n this._fractions.add(Geometry.interpolate(f0, i * df, f1));\r\n this._fractions.add(f1);\r\n }\r\n /** Request primary geometry to avoid cached strokes. */\r\n public needPrimaryGeometryForStrokes(): boolean {\r\n return true;\r\n }\r\n /** Announce the fractional span of the segment. */\r\n public announceSegmentInterval(_c: CurvePrimitive, _p0: Point3d, _p1: Point3d, _numStrokes: number, f0: number, f1: number): void {\r\n this._fractions.add(f0);\r\n this._fractions.add(f1);\r\n }\r\n /** Announce that all data about the curve has been announced (ignored). */\r\n public endCurvePrimitive(_c: CurvePrimitive): void { }\r\n /** Announce that all data about the parent curve has been announced (ignored). */\r\n public endParentCurvePrimitive(_c: CurvePrimitive): void { }\r\n /** Retrieve the collected fractions, optionally removing 0 and 1 first. */\r\n public claimFractions(remove01: boolean = false): number[] {\r\n if (remove01) {\r\n this._fractions.delete(0);\r\n this._fractions.delete(1);\r\n }\r\n return [...this._fractions];\r\n }\r\n /** Create a [[LineString3d]] by evaluating the curve at the collected fractions. */\r\n public claimLineString(result?: LineString3d): LineString3d | undefined {\r\n if (!this._curve)\r\n return undefined;\r\n result ??= LineString3d.create();\r\n const pt = Point3d.create();\r\n for (const f of this._fractions) {\r\n result.addPoint(this._curve.fractionToPoint(f, pt));\r\n result.addFraction(f);\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Interface with methods for mapping (u,v) fractional coordinates to surface xyz and derivatives.\r\n * @public\r\n */\r\nexport interface UVSurface {\r\n /**\r\n * Convert fractional u and v coordinates to surface point.\r\n * @param uFraction fractional coordinate in u direction\r\n * @param vFraction fractional coordinate in v direction\r\n * @param result optional pre-allocated point\r\n */\r\n uvFractionToPoint(uFraction: number, vFraction: number, result?: Point3d): Point3d;\r\n /**\r\n * Convert fractional u and v coordinates to surface point and in-surface tangent directions.\r\n * * The vectors are expected to be non-zero tangents which can be crossed to get a normal.\r\n * * Hence they are not necessarily (a) partial derivatives or (b) Frenet vectors.\r\n * @param uFraction fractional coordinate in u direction\r\n * @param vFraction fractional coordinate in v direction\r\n * @param result optional pre-allocated carrier for point and vectors\r\n */\r\n uvFractionToPointAndTangents(\r\n uFraction: number, vFraction: number, result?: Plane3dByOriginAndVectors,\r\n ): Plane3dByOriginAndVectors;\r\n}\r\n/**\r\n * Interface for queries of distance-along in u and v directions\r\n * @public\r\n */\r\nexport interface UVSurfaceIsoParametricDistance {\r\n /**\r\n * * Return a vector whose x and y parts are \"size\" of the surface in the u and v directions.\r\n * * Sizes are use for applying scaling to mesh parameters\r\n * * These sizes are (reasonable approximations of) the max curve length along u and v isoparameter lines.\r\n * * e.g. for a sphere, these are:\r\n * * u direction = distance around the equator\r\n * * v direction = distance from south pole to north pole.\r\n */\r\n maxIsoParametricDistance(): Vector2d;\r\n}\r\n"]}