@itwin/core-geometry 5.1.1 → 5.1.3-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/Constant.js.map +1 -1
  3. package/lib/cjs/Geometry.js.map +1 -1
  4. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  5. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  7. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  10. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  11. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  12. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  13. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  14. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  15. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  16. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  17. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  18. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  19. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  20. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  21. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  22. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  23. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  24. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  25. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  26. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  27. package/lib/cjs/core-geometry.js.map +1 -1
  28. package/lib/cjs/curve/Arc3d.js.map +1 -1
  29. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  30. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  31. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  32. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  33. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  34. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  35. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  36. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  37. package/lib/cjs/curve/CurveOps.js.map +1 -1
  38. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  39. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  40. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  41. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  42. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  43. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  44. package/lib/cjs/curve/LineString3d.js.map +1 -1
  45. package/lib/cjs/curve/Loop.js.map +1 -1
  46. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  47. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  48. package/lib/cjs/curve/Path.js.map +1 -1
  49. package/lib/cjs/curve/PointString3d.js.map +1 -1
  50. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  51. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  52. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  53. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  54. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  55. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  56. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  57. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  58. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  59. package/lib/cjs/curve/RegionOps.js.map +1 -1
  60. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  61. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  62. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  63. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  64. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  65. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  66. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  67. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  68. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  69. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  70. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  71. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  72. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  73. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  74. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  75. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  76. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  80. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  83. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  84. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  85. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  86. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  87. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  88. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  89. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  90. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  91. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  92. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  93. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  94. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  95. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  96. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  97. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  98. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  99. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  100. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  101. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  102. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  103. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  104. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  105. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  106. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  107. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  108. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  109. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  110. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  111. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  112. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  113. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  114. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  115. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  116. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  117. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  118. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  119. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  120. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  121. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  122. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  123. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  124. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  125. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  126. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  127. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  128. package/lib/cjs/geometry3d/Range.js.map +1 -1
  129. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  130. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  131. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  132. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  133. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  134. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  135. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  136. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  137. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  138. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  139. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  140. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  141. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  142. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  143. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  144. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  145. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  146. package/lib/cjs/numerics/Complex.js.map +1 -1
  147. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  148. package/lib/cjs/numerics/Newton.js.map +1 -1
  149. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  150. package/lib/cjs/numerics/PolarData.js.map +1 -1
  151. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  152. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  153. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  154. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  155. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  156. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  157. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  158. package/lib/cjs/polyface/AuxData.js.map +1 -1
  159. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  160. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  161. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  162. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  163. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  164. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  165. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  166. package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
  167. package/lib/cjs/polyface/Polyface.js.map +1 -1
  168. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  169. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  170. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  171. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  172. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  173. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  174. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  175. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  176. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  177. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  178. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  179. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  180. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  181. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  182. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  183. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  184. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  185. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  186. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  187. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  188. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  189. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  190. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  191. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  192. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  193. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  194. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  195. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  196. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  197. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  198. package/lib/cjs/solid/Box.js.map +1 -1
  199. package/lib/cjs/solid/Cone.js.map +1 -1
  200. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  201. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  202. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  203. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  204. package/lib/cjs/solid/Sphere.js.map +1 -1
  205. package/lib/cjs/solid/SweepContour.js.map +1 -1
  206. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  207. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  208. package/lib/cjs/topology/Graph.js.map +1 -1
  209. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  210. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  211. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  212. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  213. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  214. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  215. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  216. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  217. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  218. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  219. package/lib/cjs/topology/MaskManager.js.map +1 -1
  220. package/lib/cjs/topology/Merging.js.map +1 -1
  221. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  222. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  223. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  224. package/lib/cjs/topology/Triangulation.js.map +1 -1
  225. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  226. package/lib/esm/Constant.js.map +1 -1
  227. package/lib/esm/Geometry.js.map +1 -1
  228. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  229. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  230. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  231. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  232. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  233. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  234. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  235. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  236. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  237. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  238. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  239. package/lib/esm/bspline/KnotVector.js.map +1 -1
  240. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  241. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  242. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  243. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  244. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  245. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  246. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  247. package/lib/esm/clipping/ClipVector.js.map +1 -1
  248. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  249. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  250. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  251. package/lib/esm/core-geometry.js.map +1 -1
  252. package/lib/esm/curve/Arc3d.js.map +1 -1
  253. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  254. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  255. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  256. package/lib/esm/curve/CurveCollection.js.map +1 -1
  257. package/lib/esm/curve/CurveCurve.js.map +1 -1
  258. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  259. package/lib/esm/curve/CurveFactory.js.map +1 -1
  260. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  261. package/lib/esm/curve/CurveOps.js.map +1 -1
  262. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  263. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  264. package/lib/esm/curve/CurveTypes.js.map +1 -1
  265. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  266. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  267. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  268. package/lib/esm/curve/LineString3d.js.map +1 -1
  269. package/lib/esm/curve/Loop.js.map +1 -1
  270. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  271. package/lib/esm/curve/ParityRegion.js.map +1 -1
  272. package/lib/esm/curve/Path.js.map +1 -1
  273. package/lib/esm/curve/PointString3d.js.map +1 -1
  274. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  275. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  276. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  277. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  278. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  279. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  280. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  281. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  282. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  283. package/lib/esm/curve/RegionOps.js.map +1 -1
  284. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  285. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  286. package/lib/esm/curve/UnionRegion.js.map +1 -1
  287. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  288. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  289. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  290. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  291. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  292. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  293. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  294. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  295. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  296. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  297. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  298. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  299. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  300. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  301. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  302. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  303. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  304. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  305. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  306. package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
  307. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  308. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  309. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  310. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  311. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  312. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  313. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  314. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  315. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  316. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  317. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  318. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  319. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  320. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  321. package/lib/esm/geometry3d/Angle.js.map +1 -1
  322. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  323. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  324. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  325. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  326. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  327. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  328. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  329. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  330. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  331. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  332. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  333. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  334. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  335. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  336. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  337. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  338. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  339. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  340. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  341. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  342. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  343. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  344. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  345. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  346. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  347. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  348. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  349. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  350. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  351. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  352. package/lib/esm/geometry3d/Range.js.map +1 -1
  353. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  354. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  355. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  356. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  357. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  358. package/lib/esm/geometry3d/Transform.js.map +1 -1
  359. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  360. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  361. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  362. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  363. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  364. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  365. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  366. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  367. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  368. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  369. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  370. package/lib/esm/numerics/Complex.js.map +1 -1
  371. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  372. package/lib/esm/numerics/Newton.js.map +1 -1
  373. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  374. package/lib/esm/numerics/PolarData.js.map +1 -1
  375. package/lib/esm/numerics/Polynomials.js.map +1 -1
  376. package/lib/esm/numerics/Quadrature.js.map +1 -1
  377. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  378. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  379. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  380. package/lib/esm/numerics/UnionFind.js.map +1 -1
  381. package/lib/esm/numerics/UsageSums.js.map +1 -1
  382. package/lib/esm/polyface/AuxData.js.map +1 -1
  383. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  384. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  385. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  386. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  387. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  388. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  389. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  390. package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
  391. package/lib/esm/polyface/Polyface.js.map +1 -1
  392. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  393. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  394. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  395. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  396. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  397. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  398. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  399. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  400. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  401. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  402. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  403. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  404. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  405. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  406. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  407. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  408. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  409. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  410. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  411. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  412. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  413. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  414. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  415. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  416. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  417. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  418. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  419. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  420. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  421. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  422. package/lib/esm/solid/Box.js.map +1 -1
  423. package/lib/esm/solid/Cone.js.map +1 -1
  424. package/lib/esm/solid/LinearSweep.js.map +1 -1
  425. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  426. package/lib/esm/solid/RuledSweep.js.map +1 -1
  427. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  428. package/lib/esm/solid/Sphere.js.map +1 -1
  429. package/lib/esm/solid/SweepContour.js.map +1 -1
  430. package/lib/esm/solid/TorusPipe.js.map +1 -1
  431. package/lib/esm/topology/ChainMerge.js.map +1 -1
  432. package/lib/esm/topology/Graph.js.map +1 -1
  433. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  434. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  435. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  436. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  437. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  438. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  439. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  440. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  441. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  442. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  443. package/lib/esm/topology/MaskManager.js.map +1 -1
  444. package/lib/esm/topology/Merging.js.map +1 -1
  445. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  446. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  447. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  448. package/lib/esm/topology/Triangulation.js.map +1 -1
  449. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  450. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsoid.js","sourceRoot":"","sources":["../../../src/geometry3d/Ellipsoid.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\nimport { CurveAndSurfaceLocationDetail, UVSurfaceLocationDetail } from \"../bspline/SurfaceLocationDetail\";\nimport { Clipper } from \"../clipping/ClipUtils\";\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { CurveLocationDetail } from \"../curve/CurveLocationDetail\";\nimport { AnnounceNumberNumber, AnnounceNumberNumberCurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { AxisIndex, AxisOrder, Geometry } from \"../Geometry\";\nimport { Point4d } from \"../geometry4d/Point4d\";\nimport { Order3Bezier } from \"../numerics/BezierPolynomials\";\nimport { Newton2dUnboundedWithDerivative, NewtonEvaluatorRRtoRRD } from \"../numerics/Newton\";\nimport { SineCosinePolynomial, SphereImplicit, TrigPolynomial } from \"../numerics/Polynomials\";\nimport { TriDiagonalSystem } from \"../numerics/TriDiagonalSystem\";\nimport { Angle } from \"./Angle\";\nimport { AngleSweep } from \"./AngleSweep\";\nimport { UVSurface } from \"./GeometryHandler\";\nimport { LongitudeLatitudeNumber } from \"./LongitudeLatitudeAltitude\";\nimport { Matrix3d } from \"./Matrix3d\";\nimport { Plane3dByOriginAndUnitNormal } from \"./Plane3dByOriginAndUnitNormal\";\nimport { Plane3dByOriginAndVectors } from \"./Plane3dByOriginAndVectors\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\nimport { Range1d, Range3d } from \"./Range\";\nimport { Ray3d } from \"./Ray3d\";\nimport { Transform } from \"./Transform\";\nimport { XYAndZ } from \"./XYZProps\";\n\n/**\n * For one component (x,y, or z) on the sphere\n * f(theta,phi) = c + (u * cos(theta) + v * sin(theta)) * cos(phi) + w * sin(phi)\n *\n * For the equator circle, phi=0, cos(phi) = 1, sin(phi)=0\n * f = u * cos(theta) + v * sin(theta).\n * with derivative\n * df / dTheta = - u * sin(theta) + v * cos(theta)\n * whose zero is tan(theta) = v/u\n * (and that has two solutions 180 degrees apart)\n * Then with that theta let A = u * cos(theta) + v * sin(theta)\n * f = A * cos(phi) + w * sin(phi)\n * df/dPhi = - A * sin(phi) + w * cos(phi)\n * tan(phi) = w / A\n * @internal\n */\nclass EllipsoidComponentExtrema {\n public c: number;\n public u: number;\n public v: number;\n public w: number;\n public axisIndex: AxisIndex;\n public theta0Radians: number;\n public phi0Radians: number;\n public cosTheta0: number;\n public sinTheta0: number;\n public cosPhi0: number;\n public sinPhi0: number;\n // temp vars used in arc range evaluation:\n private _axisRange: Range1d;\n private _trigForm: SineCosinePolynomial;\n public constructor(c: number, u: number, v: number, w: number, axisIndex: AxisIndex) {\n this.c = c;\n this.u = u;\n this.v = v;\n this.w = w;\n this.axisIndex = axisIndex;\n this.theta0Radians = Math.atan2(v, u);\n this.cosTheta0 = Math.cos(this.theta0Radians);\n this.sinTheta0 = Math.sin(this.theta0Radians);\n const A0 = u * this.cosTheta0 + v * this.sinTheta0;\n this.phi0Radians = Math.atan2(w, A0);\n this.cosPhi0 = Math.cos(this.phi0Radians);\n this.sinPhi0 = Math.sin(this.phi0Radians);\n this._axisRange = Range1d.createNull();\n this._trigForm = new SineCosinePolynomial(0, 0, 0);\n\n }\n /**\n * Create a component object with coefficients from a row of a `Transform`.\n * @param transform source transform.\n * @param axisIndex row index within the transform.\n */\n public static createTransformRow(transform: Transform, axisIndex: AxisIndex): EllipsoidComponentExtrema {\n const matrix = transform.matrix;\n return new EllipsoidComponentExtrema(transform.origin.at(axisIndex), matrix.at(axisIndex, 0), matrix.at(axisIndex, 1), matrix.at(axisIndex, 2), axisIndex);\n }\n public extendRangeForSmoothSurfacePoints(range: Range3d, theta0Radians: number, theta1Radians: number, phi0Radians: number, phi1Radians: number) {\n const delta = (this.u * this.cosTheta0 + this.v * this.sinTheta0) * this.cosPhi0 + this.w * this.sinPhi0;\n if (AngleSweep.isRadiansInStartEnd(this.theta0Radians, theta0Radians, theta1Radians)\n && AngleSweep.isRadiansInStartEnd(this.phi0Radians, phi0Radians, phi1Radians, false)) {\n range.extendSingleAxis(this.c + delta, this.axisIndex);\n }\n const thetaRadians = this.theta0Radians + Math.PI;\n const phiRadians = -this.phi0Radians;\n if (AngleSweep.isRadiansInStartEnd(thetaRadians, theta0Radians, theta1Radians)\n && AngleSweep.isRadiansInStartEnd(phiRadians, phi0Radians, phi1Radians, false)) {\n // cosTheta and sinTheta are both negated\n // sinPhi is negated\n // delta is negated\n range.extendSingleAxis(this.c - delta, this.axisIndex);\n }\n }\n /**\n * Extend range to include extrema of a phi-bounded arc at constant theta (i.e. a polar circle)\n * @param range range to extend\n * @param thetaRadians theta for arc\n * @param phi0Radians limit value on arc sweep\n * @param phi1Radians limit value on arc sweep\n */\n public extendRangeForConstantThetaArc(range: Range3d, thetaRadians: number, phi0Radians: number, phi1Radians: number) {\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n this._trigForm.set(this.c, (this.u * cosTheta + this.v * sinTheta), this.w);\n this._trigForm.rangeInStartEndRadians(phi0Radians, phi1Radians, this._axisRange);\n range.extendSingleAxis(this._axisRange.low, this.axisIndex);\n range.extendSingleAxis(this._axisRange.high, this.axisIndex);\n }\n\n /**\n * Extend range to include extrema of a theta-bounded arc at constant phi (i.e. a circle parallel to the equator)\n * @param range range to extend\n * @param phiRadians phi for arc\n * @param theta0Radians limit value on arc sweep\n * @param theta1Radians limit value on arc sweep\n */\n public extendRangeForConstantPhiArc(range: Range3d, theta0Radians: number, theta1Radians: number, phiRadians: number) {\n const cosPhi = Math.cos(phiRadians);\n const sinPhi = Math.sin(phiRadians);\n this._trigForm.set(this.c + this.w * sinPhi, this.u * cosPhi, this.v * cosPhi);\n this._trigForm.rangeInStartEndRadians(theta0Radians, theta1Radians, this._axisRange);\n range.extendSingleAxis(this._axisRange.low, this.axisIndex);\n range.extendSingleAxis(this._axisRange.high, this.axisIndex);\n }\n}\n\n/**\n * A complete unit sphere mapped by an arbitrary [[Transform]].\n * * The (unit) sphere parameterization with respect to longitude `theta` and latitude `phi` is\n * * `u = cos(theta) * cos (phi)`\n * * `v = sin(theta) * cos(phi)`\n * * `w = sin(phi)`\n * * The sphere (u,v,w) multiply the x,y,z columns of the Ellipsoid transform.\n * * Compare to [[Sphere]], which has the same parameterization, but is a [[SolidPrimitive]] with latitude sweep.\n * @public\n */\nexport class Ellipsoid implements Clipper {\n private _transform: Transform;\n private _workUnitVectorA: Vector3d;\n private _workUnitVectorB: Vector3d;\n private _workPointA: Point3d;\n private _workPointB: Point3d;\n private constructor(transform: Transform) {\n this._transform = transform;\n this._workUnitVectorA = Vector3d.create();\n this._workUnitVectorB = Vector3d.create();\n this._workPointA = Point3d.create();\n this._workPointB = Point3d.create();\n }\n /** Create with a clone (not capture) with given transform.\n * * If transform is undefined, create a unit sphere.\n */\n public static create(matrixOrTransform?: Transform | Matrix3d): Ellipsoid {\n if (matrixOrTransform instanceof Transform)\n return new Ellipsoid(matrixOrTransform);\n else if (matrixOrTransform instanceof Matrix3d)\n return new Ellipsoid(Transform.createOriginAndMatrix(undefined, matrixOrTransform));\n else\n return new Ellipsoid(Transform.createIdentity());\n }\n /**\n * Create a transform with given center and directions, applying the radii as multipliers for the respective columns of the axes.\n * @param center center of ellipsoid\n * @param axes x,y,z directions are columns of this matrix\n * @param radiusX multiplier to be applied to the x direction\n * @param radiusY multiplier to be applied to the y direction\n * @param radiusZ multiplier to be applied to the z direction\n */\n public static createCenterMatrixRadii(center: Point3d, axes: Matrix3d | undefined, radiusX: number, radiusY: number, radiusZ: number): Ellipsoid {\n let scaledAxes;\n if (axes === undefined)\n scaledAxes = Matrix3d.createScale(radiusX, radiusY, radiusZ)!;\n else\n scaledAxes = axes.scaleColumns(radiusX, radiusY, radiusZ);\n return new Ellipsoid(Transform.createOriginAndMatrix(center, scaledAxes));\n }\n /** Return a (REFERENCE TO) the transform from world space to the mapped sphere space.\n * * This maps coordinates \"relative to the sphere\" to world.\n * * Its inverse maps world coordinates into the sphere space.\n * * In the sphere space, an xyz (vector from origin) with magnitude equal to 1 is ON the sphere (hence its world image is ON the ellipsoid)\n * * In the sphere space, an xyz (vector from origin) with magnitude less than 1 is INSIDE the sphere (hence its world image is INSIDE the ellipsoid)\n * * In the sphere space, an xyz (vector from origin) with magnitude greater than 1 is OUTSIDE the sphere (hence its world image is OUTSIDE the ellipsoid)\n */\n public get transformRef(): Transform { return this._transform; }\n /**\n * * Convert a world point to point within the underlying mapped sphere space.\n * * In the sphere space, an xyz (vector from origin) with magnitude equal to 1 is ON the sphere (hence its world image is ON the ellipsoid)\n * * In the sphere space, an xyz (vector from origin) with magnitude less than 1 is INSIDE the sphere (hence its world image is INSIDE the ellipsoid)\n * * In the sphere space, an xyz (vector from origin) with magnitude greater than 1 is OUTSIDE the sphere (hence its world image is OUTSIDE the ellipsoid)\n * * This is undefined in the highly unusual case that the ellipsoid frame is singular.\n */\n public worldToLocal(worldPoint: XYAndZ, result?: Point3d): Point3d | undefined {\n return this._transform.multiplyInversePoint3d(worldPoint, result);\n }\n /**\n * * Convert a point within the underlying mapped sphere space to world coordinates.\n * * In the sphere space, an xyz (vector from origin) with magnitude equal to 1 is ON the sphere (hence its world image is ON the ellipsoid)\n * * In the sphere space, an xyz (vector from origin) with magnitude less than 1 is INSIDE the sphere (hence its world image is INSIDE the ellipsoid)\n * * In the sphere space, an xyz (vector from origin) with magnitude greater than 1 is OUTSIDE the sphere (hence its world image is OUTSIDE the ellipsoid)\n */\n public localToWorld(localPoint: XYAndZ, result?: Point3d): Point3d {\n return this._transform.multiplyPoint3d(localPoint, result);\n }\n\n /** return a clone with same coordinates */\n public clone(): Ellipsoid {\n return new Ellipsoid(this._transform.clone());\n }\n /** test equality of the 4 points */\n public isAlmostEqual(other: Ellipsoid): boolean {\n return this._transform.isAlmostEqual(other._transform);\n }\n /** Apply the transform to each point */\n public tryTransformInPlace(transform: Transform): boolean {\n transform.multiplyTransformTransform(this._transform, this._transform);\n return true;\n }\n /**\n * return a cloned and transformed ellipsoid.\n * @param transform\n */\n public cloneTransformed(transform: Transform): Ellipsoid | undefined {\n const result = this.clone();\n result.tryTransformInPlace(transform);\n return result;\n }\n /** Find the closest point of the (patch of the) ellipsoid.\n * * In general there are multiple points where a space point projects onto an ellipse.\n * * This searches for only one point, using heuristics which are reliable for points close to the surface but not for points distant from highly skewed ellipsoid\n */\n public projectPointToSurface(spacePoint: Point3d): LongitudeLatitudeNumber | undefined {\n const searcher = new EllipsoidClosestPoint(this);\n return searcher.searchClosestPoint(spacePoint);\n }\n\n /** Find the silhouette of the ellipsoid as viewed from a homogeneous eyepoint.\n * * Returns undefined if the eyepoint is inside the ellipsoid\n */\n public silhouetteArc(eyePoint: Point4d): Arc3d | undefined {\n const localEyePoint = this._transform.multiplyInversePoint4d(eyePoint);\n if (localEyePoint !== undefined) {\n // localEyePoint is now looking at a unit sphere centered at the origin.\n // the plane through the silhouette is the eye point with z negated ...\n const localPlaneA = Point4d.create(localEyePoint.x, localEyePoint.y, localEyePoint.z, -localEyePoint.w);\n const localPlaneB = localPlaneA.toPlane3dByOriginAndUnitNormal();\n // if the silhouette plane has origin inside the sphere, there is a silhouette with center at the plane origin.\n if (localPlaneB) {\n const rr = 1.0 - localPlaneB.getOriginRef().magnitudeSquared(); // squared distance radius of silhouette arc\n if (rr > 0.0 && rr <= 1.0) {\n const arc = Arc3d.createCenterNormalRadius(localPlaneB.getOriginRef(), localPlaneB.getNormalRef(), Math.sqrt(rr));\n if (arc.tryTransformInPlace(this._transform))\n return arc;\n }\n }\n }\n return undefined;\n }\n\n /** Compute intersections with a ray.\n * * Return the number of intersections\n * * Fill any combinations of arrays of\n * * rayFractions = fractions along the ray\n * * xyz = xyz intersection coordinates points in space\n * * thetaPhiRadians = sphere longitude and latitude in radians.\n * * For each optional array, caller must of course initialize an array (usually empty)\n * * return 0 if ray length is too small.\n */\n public intersectRay(ray: Ray3d, rayFractions: number[] | undefined, xyz: Point3d[] | undefined, thetaPhiRadians: LongitudeLatitudeNumber[] | undefined): number {\n if (xyz)\n xyz.length = 0;\n if (thetaPhiRadians !== undefined)\n thetaPhiRadians.length = 0;\n if (rayFractions)\n rayFractions.length = 0;\n // if ray comes in unit vector in large ellipsoid, localRay direction is minuscule.\n // use a ray scaled up so its direction vector magnitude is comparable to the ellipsoid radiusX\n const ray1 = ray.clone();\n const a0 = ray.direction.magnitude();\n const aX = this._transform.matrix.columnXMagnitude();\n const scale = Geometry.conditionalDivideCoordinate(aX, a0);\n if (scale === undefined)\n return 0;\n ray1.direction.scaleInPlace(scale);\n const localRay = ray1.cloneInverseTransformed(this._transform);\n if (localRay !== undefined) {\n const n = SphereImplicit.intersectSphereRay(Point3d.create(0, 0, 0), 1.0, localRay, rayFractions, xyz, thetaPhiRadians);\n if (rayFractions !== undefined) {\n for (let i = 0; i < rayFractions.length; i++)\n rayFractions[i] *= scale;\n }\n if (xyz !== undefined) {\n this._transform.multiplyPoint3dArrayInPlace(xyz);\n }\n return n;\n }\n return 0;\n }\n\n /** Return the range of a uv-aligned patch of the sphere. */\n public patchRangeStartEndRadians(theta0Radians: number, theta1Radians: number, phi0Radians: number, phi1Radians: number, result?: Range3d): Range3d {\n const xExtreme = EllipsoidComponentExtrema.createTransformRow(this._transform, 0);\n const yExtreme = EllipsoidComponentExtrema.createTransformRow(this._transform, 1);\n const zExtreme = EllipsoidComponentExtrema.createTransformRow(this._transform, 2);\n if (!result)\n result = Range3d.createNull();\n else\n result.setNull();\n // Range extrema can occur at:\n // * 2 smooth surface points in each direction\n // * along low and high phi boundary arcs\n // * along low and high theta boundary arcs\n // smooth surface extrema . ..\n xExtreme.extendRangeForSmoothSurfacePoints(result, theta0Radians, theta1Radians, phi0Radians, phi1Radians);\n yExtreme.extendRangeForSmoothSurfacePoints(result, theta0Radians, theta1Radians, phi0Radians, phi1Radians);\n zExtreme.extendRangeForSmoothSurfacePoints(result, theta0Radians, theta1Radians, phi0Radians, phi1Radians);\n //\n if (!Angle.isFullCircleRadians(theta1Radians - theta0Radians)) {\n xExtreme.extendRangeForConstantThetaArc(result, theta0Radians, phi0Radians, phi1Radians);\n yExtreme.extendRangeForConstantThetaArc(result, theta0Radians, phi0Radians, phi1Radians);\n zExtreme.extendRangeForConstantThetaArc(result, theta0Radians, phi0Radians, phi1Radians);\n\n xExtreme.extendRangeForConstantThetaArc(result, theta1Radians, phi0Radians, phi1Radians);\n yExtreme.extendRangeForConstantThetaArc(result, theta1Radians, phi0Radians, phi1Radians);\n zExtreme.extendRangeForConstantThetaArc(result, theta1Radians, phi0Radians, phi1Radians);\n }\n if (!Angle.isHalfCircleRadians(phi1Radians - phi0Radians)) {\n xExtreme.extendRangeForConstantPhiArc(result, theta0Radians, theta1Radians, phi0Radians);\n yExtreme.extendRangeForConstantPhiArc(result, theta0Radians, theta1Radians, phi0Radians);\n zExtreme.extendRangeForConstantPhiArc(result, theta0Radians, theta1Radians, phi0Radians);\n\n xExtreme.extendRangeForConstantPhiArc(result, theta0Radians, theta1Radians, phi1Radians);\n yExtreme.extendRangeForConstantPhiArc(result, theta0Radians, theta1Radians, phi1Radians);\n zExtreme.extendRangeForConstantPhiArc(result, theta0Radians, theta1Radians, phi1Radians);\n }\n return result;\n }\n /**\n * Evaluate a point on the ellipsoid at angles give in radians.\n * @param thetaRadians longitude, in radians\n * @param phiRadians latitude, in radians\n * @param result optional point result\n */\n public radiansToPoint(thetaRadians: number, phiRadians: number, result?: Point3d): Point3d {\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n const cosPhi = Math.cos(phiRadians);\n const sinPhi = Math.sin(phiRadians);\n return this._transform.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi, result);\n }\n\n /**\n * * For a given pair of points on an ellipsoid, construct an arc (possibly elliptical) which\n * * passes through both points\n * * is completely within the ellipsoid surface\n * * has its centerEvaluate a point on the ellipsoid at angles give in radians.\n * * If the ellipsoid is a sphere, this is the shortest great-circle arc between the two points.\n * * If the ellipsoid is not a sphere, this is close to but not precisely the shortest path.\n * @param thetaARadians longitude, in radians, for pointA\n * @param phiARadians latitude, in radians, for pointA\n * @param thetaBRadians longitude, in radians, for pointB\n * @param phiBRadians latitude, in radians, for pointB\n * @param result optional preallocated result\n */\n public radiansPairToGreatArc(\n thetaARadians: number, phiARadians: number,\n thetaBRadians: number, phiBRadians: number,\n result?: Arc3d): Arc3d | undefined {\n SphereImplicit.radiansToUnitSphereXYZ(thetaARadians, phiARadians, this._workUnitVectorA);\n SphereImplicit.radiansToUnitSphereXYZ(thetaBRadians, phiBRadians, this._workUnitVectorB);\n const sweepAngle = this._workUnitVectorA.angleTo(this._workUnitVectorB);\n // the unit vectors (on unit sphere) are never 0, so this cannot fail.\n const matrix = Matrix3d.createRigidFromColumns(this._workUnitVectorA, this._workUnitVectorB, AxisOrder.XYZ)!;\n if (matrix !== undefined) {\n const matrix1 = this._transform.matrix.multiplyMatrixMatrix(matrix);\n return Arc3d.create(this._transform.getOrigin(), matrix1.columnX(), matrix1.columnY(),\n AngleSweep.createStartEndRadians(0.0, sweepAngle.radians), result);\n }\n return undefined;\n }\n /**\n * See radiansPairToGreatArc, which does this computation with positions from `angleA` and `angleB` directly as radians\n */\n public anglePairToGreatArc(angleA: LongitudeLatitudeNumber, angleB: LongitudeLatitudeNumber, result?: Arc3d): Arc3d | undefined {\n return this.radiansPairToGreatArc(\n angleA.longitudeRadians, angleA.latitudeRadians, angleB.longitudeRadians, angleB.latitudeRadians, result);\n }\n /**\n * Construct an arc for the section cut of a plane with the ellipsoid.\n * * this is undefined if the plane does not intersect the ellipsoid.\n */\n public createPlaneSection(plane: Plane3dByOriginAndUnitNormal): Arc3d | undefined {\n const localPlane = plane.cloneTransformed(this._transform, true);\n if (localPlane !== undefined) {\n // construct center and arc vectors in the local system --- later transform them out to global.\n const center = localPlane.projectPointToPlane(Point3d.createZero());\n const d = center.magnitude();\n if (d < 1.0) {\n const frame = Matrix3d.createRigidHeadsUp(localPlane.getNormalRef(), AxisOrder.ZYX);\n const vector0 = frame.columnX();\n const vector90 = frame.columnY();\n const sectionRadius = Math.sqrt(1.0 - d * d);\n vector0.scaleInPlace(sectionRadius);\n vector90.scaleInPlace(sectionRadius);\n\n this._transform.multiplyPoint3d(center, center);\n this._transform.multiplyVector(vector0, vector0);\n this._transform.multiplyVector(vector90, vector90);\n return Arc3d.create(center, vector0, vector90, undefined);\n }\n }\n return undefined;\n }\n /**\n * Construct an arc which\n * * start at pointA (defined by its angle position)\n * * ends at pointB (defined by its angle position)\n * * contains the 3rd vector as an in-plane point.\n */\n public createSectionArcPointPointVectorInPlane(pointAnglesA: LongitudeLatitudeNumber, pointAnglesB: LongitudeLatitudeNumber, inPlaneVector: Vector3d,\n result?: Arc3d): Arc3d | undefined {\n const xyzA = this.radiansToPoint(pointAnglesA.longitudeRadians, pointAnglesA.latitudeRadians);\n const xyzB = this.radiansToPoint(pointAnglesB.longitudeRadians, pointAnglesB.latitudeRadians);\n const localA = this._transform.multiplyInversePoint3d(xyzA);\n const localB = this._transform.multiplyInversePoint3d(xyzB);\n const a = this._transform.matrix.maxAbs();\n const scaledInPlaneVector = inPlaneVector.scaleToLength(a);\n if (scaledInPlaneVector === undefined)\n return undefined;\n const localInPlaneVector = this._transform.matrix.multiplyInverse(scaledInPlaneVector);\n if (localA !== undefined && localB !== undefined && localInPlaneVector !== undefined) {\n const localPlane = Plane3dByOriginAndUnitNormal.createPointPointVectorInPlane(localA, localB, localInPlaneVector);\n if (localPlane !== undefined) {\n // construct center and arc vectors in the local system --- later transform them out to global.\n const center = localPlane.projectPointToPlane(Point3d.createZero());\n const vector0 = Vector3d.createStartEnd(center, localA);\n const vectorB = Vector3d.createStartEnd(center, localB);\n const vector90 = Vector3d.createRotateVectorAroundVector(vector0, localPlane.getNormalRef(), undefined);\n if (vector90 !== undefined) {\n const sweepRadians = vector0.planarRadiansTo(vectorB, localPlane.getNormalRef());\n this._transform.multiplyPoint3d(center, center);\n this._transform.multiplyVector(vector0, vector0);\n this._transform.multiplyVector(vector90, vector90);\n return Arc3d.create(center, vector0, vector90, AngleSweep.createStartEndRadians(0, sweepRadians), result);\n }\n }\n }\n return undefined;\n }\n /**\n * * For a given pair of points on an ellipsoid, construct another ellipsoid\n * * touches the same xyz points in space\n * * has transformation modified so that the original two points are on the equator.\n * * Note that except for true sphere inputs, the result axes can be both non-perpendicular axes and of different lengths.\n * @param thetaARadians longitude, in radians, for pointA\n * @param phiARadians latitude, in radians, for pointA\n * @param thetaBRadians longitude, in radians, for pointB\n * @param phiBRadians latitude, in radians, for pointB\n * @param result optional preallocated result\n */\n public radiansPairToEquatorialEllipsoid(\n thetaARadians: number, phiARadians: number,\n thetaBRadians: number, phiBRadians: number,\n result?: Ellipsoid): Ellipsoid | undefined {\n SphereImplicit.radiansToUnitSphereXYZ(thetaARadians, phiARadians, this._workUnitVectorA);\n SphereImplicit.radiansToUnitSphereXYZ(thetaBRadians, phiBRadians, this._workUnitVectorB);\n\n const matrix = Matrix3d.createRigidFromColumns(this._workUnitVectorA, this._workUnitVectorB, AxisOrder.XYZ);\n if (matrix) {\n if (result) {\n this._transform.multiplyTransformMatrix3d(matrix, result._transform);\n return result;\n }\n return Ellipsoid.create(this._transform.multiplyTransformMatrix3d(matrix));\n }\n return undefined;\n }\n /**\n * Return an arc (circular or elliptical) at constant longitude\n * @param longitude (strongly typed) longitude\n * @param latitude latitude sweep angles\n * @param result\n */\n public constantLongitudeArc(longitude: Angle, latitudeSweep: AngleSweep, result?: Arc3d): Arc3d | undefined {\n if (Angle.isAlmostEqualRadiansNoPeriodShift(0, latitudeSweep.sweepRadians))\n return undefined;\n const cosTheta = longitude.cos();\n const sinTheta = longitude.sin();\n const vector0 = this._transform.matrix.multiplyXY(cosTheta, sinTheta);\n const vector90 = this._transform.matrix.columnZ();\n const center = this._transform.getOrigin();\n return Arc3d.create(center, vector0, vector90, latitudeSweep, result);\n }\n /**\n * Return an arc (circular or elliptical) at constant longitude\n * @param latitude sweep angles\n * @param latitude (strongly typed) latitude\n * @param result\n */\n public constantLatitudeArc(longitudeSweep: AngleSweep, latitude: Angle, result?: Arc3d): Arc3d | undefined {\n if (Angle.isAlmostEqualRadiansNoPeriodShift(0, longitudeSweep.sweepRadians))\n return undefined;\n if (latitude.isAlmostNorthOrSouthPole)\n return undefined;\n const cosPhi = latitude.cos();\n const sinPhi = latitude.sin();\n const vector0 = this._transform.matrix.columnX(); vector0.scaleInPlace(cosPhi);\n const vector90 = this._transform.matrix.columnY(); vector90.scaleInPlace(cosPhi);\n const center = this._transform.multiplyXYZ(0, 0, sinPhi);\n return Arc3d.create(center, vector0, vector90, longitudeSweep, result);\n }\n /**\n * * create a section arc with and end at positions A and B, and in plane with the normal at a fractional\n * interpolation between.\n * @param angleA start point of arc (given as angles on this ellipsoid)\n * @param intermediateNormalFraction\n * @param angleB end point of arc (given as angles on this ellipsoid)\n */\n public sectionArcWithIntermediateNormal(\n angleA: LongitudeLatitudeNumber,\n intermediateNormalFraction: number,\n angleB: LongitudeLatitudeNumber): Arc3d {\n const normalA = this.radiansToUnitNormalRay(angleA.longitudeRadians, angleA.latitudeRadians)!;\n const normalB = this.radiansToUnitNormalRay(angleB.longitudeRadians, angleB.latitudeRadians)!;\n const normal = normalA.direction.interpolate(intermediateNormalFraction, normalB.direction);\n const arc = this.createSectionArcPointPointVectorInPlane(angleA, angleB, normal);\n return arc!;\n }\n\n /**\n * Evaluate a point and derivatives with respect to angle on the ellipsoid at angles give in radians.\n * * \"u direction\" vector of the returned plane is derivative with respect to longitude.\n * * \"v direction\" vector fo the returned plane is derivative with respect ot latitude.\n * @param thetaRadians longitude, in radians\n * @param phiRadians latitude, in radians\n * @param applyCosPhiFactor selector for handling of theta (around equator derivative)\n * * if true, compute the properly scaled derivative, which goes to zero at the poles.\n * * If false, omit he cos(phi) factor on the derivative wrt theta. This ensures it is always nonzero and can be safely used in cross product for surface normal.\n * @param result optional plane result\n */\n public radiansToPointAndDerivatives(thetaRadians: number, phiRadians: number, applyCosPhiFactor = true, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n const cosPhi = Math.cos(phiRadians);\n const cosPhiA = applyCosPhiFactor ? cosPhi : 1.0;\n const sinPhi = Math.sin(phiRadians);\n const matrix = this._transform.matrix;\n if (!result)\n return Plane3dByOriginAndVectors.createCapture(\n this._transform.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi),\n matrix.multiplyXYZ(-sinTheta * cosPhiA, cosTheta * cosPhiA, 0),\n matrix.multiplyXYZ(-sinPhi * cosTheta, -sinPhi * sinTheta, cosPhi));\n // in place modification requires direct reference to members of the result ...\n this._transform.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi, result.origin);\n matrix.multiplyXYZ(-sinTheta * cosPhiA, cosTheta * cosPhiA, 0, result.vectorU);\n matrix.multiplyXYZ(-sinPhi * cosTheta, -sinPhi * sinTheta, cosPhi, result.vectorV);\n return result;\n }\n /**\n * Evaluate a point and derivatives wrt to theta, phi, thetaTheta, phiPhi, and thetaPhi.\n * All outputs are to caller-allocated points and vectors.\n * @param thetaRadians longitude, in radians\n * @param phiRadians latitude, in radians\n * @param point (returned) surface point\n * @param d1Theta (returned) derivative wrt theta\n * @param d1Phi (returned) derivative wrt phi\n * @param d2ThetaTheta (returned) second derivative wrt theta twice\n * @param d2PhiPhi (returned) second derivative wrt phi twice\n * @param d2ThetaPhi (returned) second derivative wrt theta and phi\n * @param result optional plane result\n */\n public radiansToPointAnd2Derivatives(thetaRadians: number, phiRadians: number,\n point: Point3d,\n d1Theta: Vector3d,\n d1Phi: Vector3d,\n d2ThetaTheta: Vector3d,\n d2PhiPhi: Vector3d,\n d2ThetaPhi: Vector3d) {\n const cosTheta = Math.cos(thetaRadians);\n const sinTheta = Math.sin(thetaRadians);\n const cosPhi = Math.cos(phiRadians);\n const sinPhi = Math.sin(phiRadians);\n const matrix = this._transform.matrix;\n this._transform.multiplyXYZ(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi, point);\n // theta derivatives\n matrix.multiplyXYZ(-sinTheta * cosPhi, cosTheta * cosPhi, 0, d1Theta);\n matrix.multiplyXYZ(-cosTheta * cosPhi, -sinTheta * cosPhi, 0, d2ThetaTheta);\n\n // phi derivatives\n matrix.multiplyXYZ(-cosTheta * sinPhi, -sinTheta * sinPhi, cosPhi, d1Phi);\n matrix.multiplyXYZ(-cosTheta * cosPhi, -sinTheta * cosPhi, -sinPhi, d2PhiPhi);\n\n // mixed derivative\n matrix.multiplyXYZ(sinTheta * sinPhi, -cosTheta * sinPhi, 0, d2ThetaPhi);\n }\n\n /**\n * Evaluate a point and rigid local coordinate frame the ellipsoid at angles give in radians.\n * * The undefined return is only possible if the placement transform is singular (and even then only at critical angles)\n * @param thetaRadians longitude, in radians\n * @param phiRadians latitude, in radians\n * @param result optional transform result\n *\n */\n public radiansToFrenetFrame(thetaRadians: number, phiRadians: number, result?: Transform): Transform | undefined {\n const plane = this.radiansToPointAndDerivatives(thetaRadians, phiRadians, false);\n return plane.toRigidFrame(result);\n }\n /**\n * Evaluate a point and unit normal at given angles.\n * @param thetaRadians longitude, in radians\n * @param phiRadians latitude, in radians\n * @param result optional transform result\n *\n */\n public radiansToUnitNormalRay(thetaRadians: number, phiRadians: number, result?: Ray3d): Ray3d | undefined {\n const plane = this.radiansToPointAndDerivatives(thetaRadians, phiRadians, false);\n return plane.unitNormalRay(result);\n }\n\n /**\n * Find the (unique) extreme point for a given true surface perpendicular vector (outward)\n */\n public surfaceNormalToAngles(normal: Vector3d, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\n const matrix = this._transform.matrix;\n const conjugateVector = matrix.multiplyTransposeVector(normal);\n const thetaRadians = Math.atan2(conjugateVector.y, conjugateVector.x);\n // For that phi arc,\n const axy = -(conjugateVector.x * Math.cos(thetaRadians) + conjugateVector.y * Math.sin(thetaRadians));\n const az = conjugateVector.z;\n const phiRadians = Math.atan2(az, -axy);\n return LongitudeLatitudeNumber.createRadians(thetaRadians, phiRadians, 0.0, result);\n }\n\n /**\n * * Evaluate the surface normal on `other` ellipsoid at given angles\n * * If `other` is undefined, default to unit sphere.\n * * Find the angles for the same normal on `this` ellipsoid\n */\n public otherEllipsoidAnglesToThisEllipsoidAngles(otherEllipsoid: Ellipsoid | undefined, otherAngles: LongitudeLatitudeNumber, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber | undefined {\n const normal = Ellipsoid.radiansToUnitNormalRay(otherEllipsoid, otherAngles.longitudeRadians, otherAngles.latitudeRadians);\n if (normal !== undefined)\n return this.surfaceNormalToAngles(normal.direction, result);\n return undefined;\n }\n /**\n * * if ellipsoid is given, return its surface point and unit normal as a Ray3d.\n * * if not given, return surface point and unit normal for unit sphere.\n */\n public static radiansToUnitNormalRay(ellipsoid: Ellipsoid | undefined, thetaRadians: number, phiRadians: number, result?: Ray3d): Ray3d | undefined {\n if (ellipsoid) {\n return ellipsoid.radiansToUnitNormalRay(thetaRadians, phiRadians, result);\n }\n if (!result)\n result = Ray3d.createZAxis();\n // for unit sphere, the vector from center to surface point is identical to the unit normal.\n SphereImplicit.radiansToUnitSphereXYZ(thetaRadians, phiRadians, result.origin);\n result.direction.setFromPoint3d(result.origin);\n return result;\n }\n /** Implementation of [[Clipper.isPointOnOrInside]]. */\n public isPointOnOrInside(point: Point3d): boolean {\n const localPoint = this._transform.multiplyInversePoint3d(point, this._workPointA);\n if (localPoint !== undefined)\n return localPoint.magnitude() <= 1.0;\n return false;\n }\n /** Announce \"in\" portions of a line segment. Implementation of [[Clipper.announceClippedSegmentIntervals]]. */\n public announceClippedSegmentIntervals(f0: number, f1: number, pointA: Point3d, pointB: Point3d, announce?: AnnounceNumberNumber): boolean {\n const localA = this._transform.multiplyInversePoint3d(pointA, this._workPointA);\n const localB = this._transform.multiplyInversePoint3d(pointB, this._workPointB);\n if (localA && localB) {\n const dotAA = Vector3d.dotProductAsXYAndZ(this._workPointA, this._workPointA);\n const dotAB = Vector3d.dotProductAsXYAndZ(this._workPointA, this._workPointB);\n const dotBB = Vector3d.dotProductAsXYAndZ(this._workPointB, this._workPointB);\n const bezier = new Order3Bezier(dotAA, dotAB, dotBB);\n const roots = bezier.roots(1.0, false);\n if (roots !== undefined && roots.length === 2) {\n // we know the roots are sorted. The f0,f1 might not be ..\n if (f0 < f1) {\n if (roots[0] < f0)\n roots[0] = f0;\n if (f1 < roots[1])\n roots[1] = f1;\n if (roots[0] < roots[1]) {\n if (announce)\n announce(roots[0], roots[1]);\n return true;\n }\n } else {\n // f0,f1 are reversed. do the outputs in the same sense\n if (roots[1] > f0)\n roots[1] = f0;\n if (roots[0] < f1)\n roots[0] = f1;\n if (roots[1] > roots[0]) {\n if (announce)\n announce(roots[1], roots[0]);\n return true;\n }\n }\n }\n }\n return false;\n }\n /** Announce \"in\" portions of a line segment. Implementation of [[Clipper.announceClippedArcIntervals]] */\n public announceClippedArcIntervals(arc: Arc3d, announce?: AnnounceNumberNumberCurvePrimitive): boolean {\n const arcData = arc.toVectors();\n let numAnnounce = 0;\n if (this._transform.multiplyInversePoint3d(arcData.center, arcData.center)\n && this._transform.matrix.multiplyInverse(arcData.vector0, arcData.vector0)\n && this._transform.matrix.multiplyInverse(arcData.vector90, arcData.vector90)) {\n // in local coordinates the arc parameterization is X = center + vector0 * cos(theta) + vector90 * sin(theta)\n // We want X DOT X === 1, viz\n // center DOT center + 2 * cos(theta) * center DOT vector0 + 2 * sin(theta) * center DOT vector90 + cos(theta) ^2 * vector0 DOT vector0 + sin (theta)^2 * vector90 DOT vector90 = 1\n const cc = Vector3d.dotProductAsXYAndZ(arcData.center, arcData.center);\n const cu = Vector3d.dotProductAsXYAndZ(arcData.center, arcData.vector0);\n const cv = Vector3d.dotProductAsXYAndZ(arcData.center, arcData.vector90);\n const uv = Vector3d.dotProductAsXYAndZ(arcData.vector0, arcData.vector90);\n const uu = Vector3d.dotProductAsXYAndZ(arcData.vector0, arcData.vector0);\n const vv = Vector3d.dotProductAsXYAndZ(arcData.vector90, arcData.vector90);\n const intersectionRadians: number[] = [];\n\n if (TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(\n uu, 2.0 * uv, vv,\n 2.0 * cu, 2.0 * cv, cc - 1.0,\n intersectionRadians)) {\n const fractions = [0.0, 1.0];\n for (const radians of intersectionRadians) {\n const fraction = arc.sweep.radiansToSignedPeriodicFraction(radians);\n if (Geometry.isIn01(fraction))\n fractions.push(fraction);\n }\n fractions.sort();\n let f0, f1;\n for (let i1 = 1; i1 < fractions.length; i1++) {\n f0 = fractions[i1 - 1];\n f1 = fractions[i1];\n if (f1 > f0) {\n const xyz = arc.fractionToPoint(Geometry.interpolate(fractions[i1 - 1], 0.5, fractions[i1]));\n if (this.isPointOnOrInside(xyz)) {\n if (announce)\n announce(fractions[i1 - 1], fractions[i1], arc);\n numAnnounce++;\n }\n }\n }\n }\n }\n return numAnnounce > 0;\n }\n}\n/**\n * * An `EllipsoidPatch` is\n * * An underlying (full) `Ellipsoid` object\n * * an angular range (`AngleSweep`) of longitudes around the equator\n * * an angular range (`AngleSweep`) of latitudes, with 0 at the equator, +90 degrees at north pole.\n * * The `EllipsoidPatch` implements `UVSurface` methods, so a `PolyfaceBuilder` can generate facets in its method `addUVGridBody`\n * @public\n */\nexport class EllipsoidPatch implements UVSurface {\n public ellipsoid: Ellipsoid;\n public longitudeSweep: AngleSweep;\n public latitudeSweep: AngleSweep;\n /**\n * CAPTURE ellipsoid and sweeps as an EllipsoidPatch.\n * @param ellipsoid\n * @param longitudeSweep\n * @param latitudeSweep\n */\n private constructor(ellipsoid: Ellipsoid, longitudeSweep: AngleSweep, latitudeSweep: AngleSweep) {\n this.ellipsoid = ellipsoid;\n this.longitudeSweep = longitudeSweep;\n this.latitudeSweep = latitudeSweep;\n }\n /**\n * Create a new EllipsoidPatch, capturing (not cloning) all input object references.\n * @param ellipsoid full ellipsoid\n * @param longitudeSweep sweep of longitudes in the active patch\n * @param latitudeSweep sweep of latitudes in the active patch.\n */\n public static createCapture(ellipsoid: Ellipsoid, longitudeSweep: AngleSweep, latitudeSweep: AngleSweep): EllipsoidPatch {\n return new EllipsoidPatch(ellipsoid, longitudeSweep, latitudeSweep);\n }\n /** Return the point on the ellipsoid at fractional positions in the angular ranges. */\n public uvFractionToPoint(longitudeFraction: number, latitudeFraction: number, result?: Point3d): Point3d {\n return this.ellipsoid.radiansToPoint(this.longitudeSweep.fractionToRadians(longitudeFraction), this.latitudeSweep.fractionToRadians(latitudeFraction), result);\n }\n /** Return the point and derivative vectors on the ellipsoid at fractional positions in the angular ranges.\n * * Derivatives are with respect to fractional position.\n */\n public uvFractionToPointAndTangents(longitudeFraction: number, latitudeFraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors {\n result = this.ellipsoid.radiansToPointAndDerivatives(\n this.longitudeSweep.fractionToRadians(longitudeFraction),\n this.latitudeSweep.fractionToRadians(latitudeFraction),\n true,\n result);\n result.vectorU.scale(this.longitudeSweep.sweepRadians);\n result.vectorV.scale(this.latitudeSweep.sweepRadians);\n return result;\n }\n /** Return the range of the patch, considering both boundary and internal extrema. */\n public range(result?: Range3d): Range3d {\n return this.ellipsoid.patchRangeStartEndRadians(this.longitudeSweep.startRadians, this.longitudeSweep.endRadians, this.latitudeSweep.startRadians, this.latitudeSweep.endRadians, result);\n }\n /** Return intersections of the ray and surface.\n * * uv values in the intersections are in radians unless `convertIntersectionRadiansToFractions` is true requesting conversion to patch fractions.\n */\n public intersectRay(ray: Ray3d, restrictToPatch: boolean, convertIntersectionRadiansToFractions: boolean = false): CurveAndSurfaceLocationDetail[] {\n const result: CurveAndSurfaceLocationDetail[] = [];\n const rayFractions: number[] = [];\n const xyz: Point3d[] = [];\n const thetaPhi: LongitudeLatitudeNumber[] = [];\n const n = this.ellipsoid.intersectRay(ray, rayFractions, xyz, thetaPhi);\n for (let i = 0; i < n; i++) {\n const longitudeRadians = thetaPhi[i].longitudeRadians;\n const latitudeRadians = thetaPhi[i].latitudeRadians;\n\n if (!restrictToPatch\n || (this.longitudeSweep.isRadiansInSweep(longitudeRadians)\n && this.latitudeSweep.isRadiansInSweep(latitudeRadians))) {\n if (convertIntersectionRadiansToFractions) {\n const uFraction = this.longitudeSweep.radiansToSignedPeriodicFraction(longitudeRadians);\n const vFraction = this.latitudeSweep.radiansToSignedPeriodicFraction(latitudeRadians);\n result.push(new CurveAndSurfaceLocationDetail(\n CurveLocationDetail.createRayFractionPoint(ray, rayFractions[i], xyz[i]),\n UVSurfaceLocationDetail.createSurfaceUVNumbersPoint(this, uFraction, vFraction, xyz[i])));\n } else {\n result.push(new CurveAndSurfaceLocationDetail(\n CurveLocationDetail.createRayFractionPoint(ray, rayFractions[i], xyz[i]),\n UVSurfaceLocationDetail.createSurfaceUVNumbersPoint(this, longitudeRadians, latitudeRadians, xyz[i])));\n }\n }\n }\n return result;\n }\n /**\n * test if the angles of the `LongitudeLatitudeNumber` are within the sweep ranges.\n * @param position longitude and latitude to test.\n * @param `allowPeriodicLongitude` true to allow the longitude to be in when shifted by a multiple of 2 PI\n * (latitude is never periodic for patches)\n */\n public containsAngles(position: LongitudeLatitudeNumber, allowPeriodicLongitude: boolean = true): boolean {\n return this.latitudeSweep.isRadiansInSweep(position.latitudeRadians, false)\n && this.longitudeSweep.isRadiansInSweep(position.longitudeRadians, allowPeriodicLongitude);\n }\n\n /**\n * Compute point (with altitude) at given angles and altitude.\n * * Never fails for non-singular ellipsoid.\n * * In the returned ray,\n * * ray.origin is the point at requested altitude.\n * * ray.direction is an outward-directed unit vector\n * @param position longitude, latitude, and height\n *\n */\n public anglesToUnitNormalRay(position: LongitudeLatitudeNumber, result?: Ray3d): Ray3d | undefined {\n const ray = this.ellipsoid.radiansToUnitNormalRay(position.longitudeRadians, position.latitudeRadians, result);\n if (!ray)\n return undefined;\n ray.origin = ray.fractionToPoint(position.altitude, ray.origin);\n return ray;\n }\n /**\n * Return simple angles of a fractional position in the patch.\n * @param thetaFraction fractional position in longitude (theta) interval\n * @param phiFraction fractional position in latitude (phi) interval\n * @param h optional altitude\n * @param result optional preallocated result.\n */\n public uvFractionToAngles(longitudeFraction: number, phiFraction: number, h: number = 0, result?: LongitudeLatitudeNumber): LongitudeLatitudeNumber {\n return LongitudeLatitudeNumber.createRadians(this.longitudeSweep.fractionToRadians(longitudeFraction), this.latitudeSweep.fractionToRadians(phiFraction), h, result);\n }\n /** Find the closest point of the (patch of the) ellipsoid. */\n public projectPointToSurface(spacePoint: Point3d): LongitudeLatitudeNumber | undefined {\n return this.ellipsoid.projectPointToSurface(spacePoint);\n }\n}\n/**\n * Internal class for searching for the closest point (projection of spacePoint) on an ellipsoid.\n */\nclass EllipsoidClosestPoint extends NewtonEvaluatorRRtoRRD {\n private _ellipsoid: Ellipsoid;\n private _spacePoint!: Point3d;\n private _surfacePoint: Point3d;\n private _d1Theta: Vector3d;\n private _d2Theta: Vector3d;\n private _d1Phi: Vector3d;\n private _d2Phi: Vector3d;\n private _d2ThetaPhi: Vector3d;\n private _delta: Vector3d;\n public constructor(ellipsoid: Ellipsoid) {\n super();\n this._ellipsoid = ellipsoid;\n this._surfacePoint = Point3d.create();\n this._d1Theta = Vector3d.create();\n this._d1Phi = Vector3d.create();\n this._d2Theta = Vector3d.create();\n this._d2Phi = Vector3d.create();\n this._d2ThetaPhi = Vector3d.create();\n\n this._delta = Vector3d.create();\n }\n public searchClosestPoint(spacePoint: Point3d): LongitudeLatitudeNumber | undefined {\n this._spacePoint = spacePoint;\n const localPoint = this._ellipsoid.transformRef.multiplyInversePoint3d(spacePoint);\n if (!localPoint)\n return undefined;\n const sphere = new SphereImplicit(1.0);\n const uv = sphere.xyzToThetaPhiR(localPoint);\n const newtonSearcher = new Newton2dUnboundedWithDerivative(this);\n newtonSearcher.setUV(uv.thetaRadians, uv.phiRadians);\n if (newtonSearcher.runIterations()) {\n uv.thetaRadians = newtonSearcher.getU();\n uv.phiRadians = newtonSearcher.getV();\n }\n return LongitudeLatitudeNumber.createRadians(uv.thetaRadians, uv.phiRadians, 0.0);\n }\n public evaluate(thetaRadians: number, phiRadians: number): boolean {\n this._ellipsoid.radiansToPointAnd2Derivatives(thetaRadians, phiRadians,\n this._surfacePoint,\n this._d1Theta, this._d1Phi,\n this._d2Theta, this._d2Phi,\n this._d2ThetaPhi);\n Vector3d.createStartEnd(this._spacePoint, this._surfacePoint, this._delta);\n const q = this._d1Theta.dotProduct(this._d1Phi) + this._delta.dotProduct(this._d2ThetaPhi);\n this.currentF.setOriginAndVectorsXYZ(\n // f,g,0\n this._delta.dotProduct(this._d1Theta), this._delta.dotProduct(this._d1Phi), 0,\n // df/dTheta, dg/dTheta, 0\n this._d1Theta.dotProduct(this._d1Theta) + this._delta.dotProduct(this._d2Theta), q, 0,\n // df/dPhi, dg/dPhi, 0\n q, this._d1Phi.dotProduct(this._d1Phi) + this._delta.dotProduct(this._d2Phi), 0);\n\n return true;\n }\n}\n/**\n * Detailed data for a point on a 2-angle parameter space.\n * @public\n */\nexport class GeodesicPathPoint {\n /** First angle, in radians */\n public thetaRadians: number;\n /** Second angle, in radians */\n public phiRadians: number;\n public point: Point3d;\n public dTheta: Vector3d;\n public dPhi: Vector3d;\n public d2Theta: Vector3d;\n public d2Phi: Vector3d;\n public d2ThetaPhi: Vector3d;\n public d1Cross: Vector3d;\n public constructor() {\n this.thetaRadians = 0;\n this.phiRadians = 0;\n this.point = Point3d.create();\n this.dTheta = Vector3d.create();\n this.dPhi = Vector3d.create();\n this.d2Theta = Vector3d.create();\n this.d2Phi = Vector3d.create();\n this.d2ThetaPhi = Vector3d.create();\n this.d1Cross = Vector3d.create();\n }\n /** Fill all evaluations at given theta and phi. */\n public evaluateDerivativesAtCurrentAngles(ellipsoid: Ellipsoid) {\n ellipsoid.radiansToPointAnd2Derivatives(this.thetaRadians, this.phiRadians, this.point, this.dTheta, this.dPhi, this.d2Theta, this.d2Phi, this.d2ThetaPhi);\n this.dTheta.crossProduct(this.dPhi, this.d1Cross);\n }\n private static _vectorAB?: Vector3d;\n private static _vectorCB?: Vector3d;\n private static _vectorCross?: Vector3d;\n /** Evaluate the newton function and derivatives:\n * `(UAB cross UCB) dot d1cross`\n * with as the central data, UAB = vector from pointA to pointB, UCB = vector from pointC to pointB.\n * * Return order is:\n * * values[0] = the function\n * * values[1] = derivative wrt pointA.phi\n * * values[2] = derivative wrt pointB.phi\n * * values[3] = derivative wrt pointC.phi\n */\n public static evaluateNewtonFunction(pointA: GeodesicPathPoint, pointB: GeodesicPathPoint, pointC: GeodesicPathPoint, values: Float64Array) {\n this._vectorAB = Vector3d.createStartEnd(pointA.point, pointB.point, this._vectorAB);\n this._vectorCB = Vector3d.createStartEnd(pointC.point, pointB.point, this._vectorCB);\n this._vectorCross = this._vectorAB.crossProduct(this._vectorCB);\n // this._vectorCross is the cross product of vectors from A to B and C to B\n // it should be perpendicular to (have zero dot product with) the surface normal, which is sitting in pointB as d1Cross\n values[0] = this._vectorCross.dotProduct(pointB.d1Cross);\n // Derivatives wrt phi at A, B, C creates derivatives of values[0] wrt each.\n // derivatives at neighbor appear only on their point-to-point vector, and with negative sign ..\n values[1] = - pointA.dPhi.tripleProduct(this._vectorCB, pointB.d1Cross);\n values[3] = - this._vectorAB.tripleProduct(pointC.dPhi, pointB.d1Cross);\n // values from pointB appear with positive sign everywhere . ..\n values[2] = pointB.dPhi.tripleProduct(this._vectorCB, pointB.d1Cross)\n + this._vectorAB.tripleProduct(pointB.dPhi, pointB.d1Cross)\n + this._vectorCross.tripleProduct(pointB.d2ThetaPhi, pointB.dPhi)\n + this._vectorCross.tripleProduct(pointB.dTheta, pointB.d2Phi);\n // CRUNCH CRUNCH CRUNCH\n }\n /**\n * Extract the two angles form this structure to a LongitudeLatitudeNumber structure.\n */\n public toAngles(): LongitudeLatitudeNumber {\n return LongitudeLatitudeNumber.createRadians(this.thetaRadians, this.phiRadians);\n }\n}\n/**\n * Algorithm implementation class for computing approximate optimal (shortest) path points.\n * * Call the static method `createGeodesicPath` to compute path points.\n * @public\n */\nexport class GeodesicPathSolver {\n private _defaultArc: Arc3d;\n private _pathPoints: GeodesicPathPoint[];\n private _tridiagonalSolver!: TriDiagonalSystem;\n private constructor(defaultArc: Arc3d) {\n this._pathPoints = [];\n this._defaultArc = defaultArc;\n }\n /**\n *\n * @param originalEllipsoid Given start and endpoints on an ellipsoid, compute points along a near-optimal shortest path.\n * * The points are located so that at each point the local surface normal is contained in the plane of the point and its two neighbors.\n * @param startAngles angles for the start of the path\n * @param endAngles angles for the end of the path\n * @param density If this is a number, it is the requested edge count. If this is an angle, it ias an angular spacing measured in the great arc through the two points.\n */\n public static createGeodesicPath(originalEllipsoid: Ellipsoid,\n startAngles: LongitudeLatitudeNumber, endAngles: LongitudeLatitudeNumber, density: number | Angle): GeodesicPathPoint[] | undefined {\n const workEllipsoid1 = originalEllipsoid.radiansPairToEquatorialEllipsoid(startAngles.longitudeRadians, startAngles.latitudeRadians,\n endAngles.longitudeRadians, endAngles.latitudeRadians);\n const workArc = originalEllipsoid.radiansPairToGreatArc(startAngles.longitudeRadians, startAngles.latitudeRadians,\n endAngles.longitudeRadians, endAngles.latitudeRadians);\n if (workEllipsoid1 === undefined || workArc === undefined)\n return undefined;\n let numEdges = 4;\n if (density instanceof Angle) {\n numEdges = Geometry.stepCount(density.radians, workArc.sweep.sweepRadians, 4, 180);\n } else if (Number.isFinite(density)) {\n numEdges = Math.max(numEdges, density);\n }\n if (numEdges > 180)\n numEdges = 180;\n const scaledMatrix = workEllipsoid1.transformRef.matrix.clone();\n const largestCoordinate = scaledMatrix.maxAbs();\n const inverseLargestCoordinate = 1.0 / largestCoordinate;\n scaledMatrix.scaleColumnsInPlace(inverseLargestCoordinate, inverseLargestCoordinate, inverseLargestCoordinate);\n const workEllipsoid = Ellipsoid.create(Transform.createOriginAndMatrix(undefined, scaledMatrix));\n\n const solver = new GeodesicPathSolver(workArc);\n solver.createInitialPointsAndTridiagonalSystem(numEdges);\n\n let numConverged = 0;\n let previousMaxDPhi = 10000.0;\n let numStep = 0;\n const dPhiTolerance = 1.0e-8;\n solver.setupStep(workEllipsoid);\n while (numStep < 15 && numConverged < 2) {\n if (!solver.solve())\n break;\n previousMaxDPhi = solver.applyUpdate(0.1);\n solver.setupStep(workEllipsoid);\n if (previousMaxDPhi < dPhiTolerance)\n numConverged++;\n else\n numConverged = 0;\n numStep++;\n }\n if (numConverged > 0) {\n const workAngles = LongitudeLatitudeNumber.createRadians(0, 0);\n const originalAngles = LongitudeLatitudeNumber.createRadians(0, 0);\n for (const p of solver._pathPoints) {\n LongitudeLatitudeNumber.createRadians(p.thetaRadians, p.phiRadians, 0, workAngles);\n originalEllipsoid.otherEllipsoidAnglesToThisEllipsoidAngles(workEllipsoid, workAngles, originalAngles);\n p.thetaRadians = originalAngles.longitudeRadians;\n p.phiRadians = originalAngles.latitudeRadians;\n p.evaluateDerivativesAtCurrentAngles(originalEllipsoid);\n }\n return solver._pathPoints;\n }\n return numConverged > 0 ? solver._pathPoints : undefined;\n }\n private createInitialPointsAndTridiagonalSystem(numEdges: number) {\n if (numEdges < 2)\n numEdges = 2;\n let f, thetaRadians;\n for (let i = 0; i <= numEdges; i++) {\n f = i / numEdges;\n thetaRadians = this._defaultArc.sweep.fractionToRadians(f);\n const p = new GeodesicPathPoint();\n p.thetaRadians = thetaRadians;\n p.phiRadians = 0.0;\n this._pathPoints.push(p);\n }\n this._tridiagonalSolver = new TriDiagonalSystem(this._pathPoints.length);\n }\n private applyUpdate(maxDPhiRadians: number): number {\n let dPhiMax = 0;\n for (let i = 0; i < this._pathPoints.length; i++) {\n const dPhi = Geometry.clampToStartEnd(this._tridiagonalSolver.getX(i), -maxDPhiRadians, maxDPhiRadians);\n this._pathPoints[i].phiRadians -= dPhi;\n dPhiMax = Geometry.maxAbsXY(dPhiMax, dPhi);\n }\n return dPhiMax;\n }\n\n /**\n * Set up a step with specified ellipsoid.\n * * ASSUME angles in _pathPoints are valid on given ellipsoid.\n * @param ellipsoid\n */\n private setupStep(ellipsoid: Ellipsoid) {\n for (const p of this._pathPoints) {\n p.evaluateDerivativesAtCurrentAngles(ellipsoid);\n }\n const lastRow = this._pathPoints.length - 1;\n // first and last points get trivial dPhi=0 equations:\n this._tridiagonalSolver.reset();\n this._tridiagonalSolver.addToRow(0, 0, 1, 0);\n this._tridiagonalSolver.addToB(0, 0);\n this._tridiagonalSolver.addToRow(lastRow, 0, 1, 0);\n this._tridiagonalSolver.addToB(lastRow, 0);\n\n // interior points get proper newton equations\n const values = new Float64Array(4);\n for (let i = 1; i < lastRow; i++) {\n GeodesicPathPoint.evaluateNewtonFunction(this._pathPoints[i - 1], this._pathPoints[i], this._pathPoints[i + 1], values);\n this._tridiagonalSolver.addToRow(i, values[1], values[2], values[3]);\n this._tridiagonalSolver.addToB(i, values[0]);\n }\n }\n\n private solve(): boolean {\n return this._tridiagonalSolver.factorAndBackSubstitute();\n }\n /**\n * Construct various section arcs (on the ellipsoid), using planes that (a) pass through the two given points and (b) have in-plane vector sampled between the normals of the two points.\n * * Each candidate ellipse has is in a plane with ellipsoid normal at vector constructed \"between\" the endpoint normals.\n * * The intermediate construction is by interpolation between stated fractions (which maybe outside 0 to 1)\n * @param ellipsoid\n * @param angleA start point of all candidates\n * @param angleB end point of all candidates\n * @param numSample number of ellipses to construct as candidates.\n * @param normalInterpolationFraction0\n * @param normalInterpolationFraction1\n */\n public static approximateMinimumLengthSectionArc(ellipsoid: Ellipsoid,\n angleA: LongitudeLatitudeNumber,\n angleB: LongitudeLatitudeNumber, numSample: number,\n normalInterpolationFraction0: number,\n normalInterpolationFraction1: number): { minLengthArc: Arc3d, minLengthNormalInterpolationFraction: number } | undefined {\n numSample = Geometry.clampToStartEnd(numSample, 2, 200);\n const normalA = ellipsoid.radiansToUnitNormalRay(angleA.longitudeRadians, angleA.latitudeRadians);\n const normalB = ellipsoid.radiansToUnitNormalRay(angleB.longitudeRadians, angleB.latitudeRadians);\n if (normalA !== undefined && normalB !== undefined) {\n let normalC;\n let resultArc;\n let lengthC;\n let fractionC;\n\n for (let i = 1; i <= numSample; i++) {\n const f = Geometry.interpolate(normalInterpolationFraction0, i / numSample, normalInterpolationFraction1);\n normalC = normalA.direction.interpolate(f, normalB.direction, normalC);\n const candidateArc = ellipsoid.createSectionArcPointPointVectorInPlane(angleA, angleB, normalC);\n if (candidateArc !== undefined) {\n const candidateLength = candidateArc.curveLength();\n if (lengthC === undefined || candidateLength < lengthC) {\n lengthC = candidateLength;\n resultArc = candidateArc;\n fractionC = f;\n }\n }\n }\n if (resultArc !== undefined && fractionC !== undefined)\n return { minLengthArc: resultArc, minLengthNormalInterpolationFraction: fractionC };\n }\n return undefined;\n }\n\n}\n"]}
1
+ {"version":3,"file":"Ellipsoid.js","sourceRoot":"","sources":["../../../src/geometry3d/Ellipsoid.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,4EAA0G;AAE1G,0CAAuC;AACvC,sEAAmE;AAEnE,0CAA6D;AAC7D,mDAAgD;AAChD,qEAA6D;AAC7D,+CAA6F;AAC7F,yDAA+F;AAC/F,qEAAkE;AAClE,mCAAgC;AAChC,6CAA0C;AAE1C,2EAAsE;AACtE,yCAAsC;AACtC,iFAA8E;AAC9E,2EAAwE;AACxE,uDAAsD;AACtD,mCAA2C;AAC3C,mCAAgC;AAChC,2CAAwC;AAGxC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,yBAAyB;IACtB,CAAC,CAAS;IACV,CAAC,CAAS;IACV,CAAC,CAAS;IACV,CAAC,CAAS;IACV,SAAS,CAAY;IACrB,aAAa,CAAS;IACtB,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,OAAO,CAAS;IACvB,0CAA0C;IAClC,UAAU,CAAU;IACpB,SAAS,CAAuB;IACxC,YAAmB,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,SAAoB;QACjF,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,eAAO,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,kCAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAErD,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAAC,SAAoB,EAAE,SAAoB;QACzE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7J,CAAC;IACM,iCAAiC,CAAC,KAAc,EAAE,aAAqB,EAAE,aAAqB,EAAE,WAAmB,EAAE,WAAmB;QAC7I,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACzG,IAAI,uBAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;eAC/E,uBAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;YACvF,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,uBAAU,CAAC,mBAAmB,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC;eACzE,uBAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;YACjF,yCAAyC;YACzC,oBAAoB;YACpB,mBAAmB;YACnB,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD;;;;;;OAMG;IACI,8BAA8B,CAAC,KAAc,EAAE,YAAoB,EAAE,WAAmB,EAAE,WAAmB;QAClH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACjF,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACI,4BAA4B,CAAC,KAAc,EAAE,aAAqB,EAAE,aAAqB,EAAE,UAAkB;QAClH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/E,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrF,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAa,SAAS;IACZ,UAAU,CAAY;IACtB,gBAAgB,CAAW;IAC3B,gBAAgB,CAAW;IAC3B,WAAW,CAAU;IACrB,WAAW,CAAU;IAC7B,YAAoB,SAAoB;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,CAAC,gBAAgB,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IACD;;OAEG;IACI,MAAM,CAAC,MAAM,CAAC,iBAAwC;QAC3D,IAAI,iBAAiB,YAAY,qBAAS;YACxC,OAAO,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;aACrC,IAAI,iBAAiB,YAAY,mBAAQ;YAC5C,OAAO,IAAI,SAAS,CAAC,qBAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;;YAEpF,OAAO,IAAI,SAAS,CAAC,qBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACrD,CAAC;IACD;;;;;;;OAOG;IACI,MAAM,CAAC,uBAAuB,CAAC,MAAe,EAAE,IAA0B,EAAE,OAAe,EAAE,OAAe,EAAE,OAAe;QAClI,IAAI,UAAU,CAAC;QACf,IAAI,IAAI,KAAK,SAAS;YACpB,UAAU,GAAG,mBAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;;YAE9D,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,IAAI,SAAS,CAAC,qBAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD;;;;;;OAMG;IACH,IAAW,YAAY,KAAgB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE;;;;;;OAMG;IACI,YAAY,CAAC,UAAkB,EAAE,MAAgB;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IACD;;;;;OAKG;IACI,YAAY,CAAC,UAAkB,EAAE,MAAgB;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,2CAA2C;IACpC,KAAK;QACV,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,oCAAoC;IAC7B,aAAa,CAAC,KAAgB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IACD,wCAAwC;IACjC,mBAAmB,CAAC,SAAoB;QAC7C,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;OAGG;IACI,gBAAgB,CAAC,SAAoB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,qBAAqB,CAAC,UAAmB;QAC9C,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,QAAiB;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,wEAAwE;YACxE,uEAAuE;YACvE,MAAM,WAAW,GAAG,iBAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACxG,MAAM,WAAW,GAAG,WAAW,CAAC,8BAA8B,EAAE,CAAC;YACjE,+GAA+G;YAC/G,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAE,4CAA4C;gBAC7G,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;oBAC1B,MAAM,GAAG,GAAG,aAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAClH,IAAI,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;wBAC1C,OAAO,GAAG,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACI,YAAY,CAAC,GAAU,EAAE,YAAkC,EAAE,GAA0B,EAAE,eAAsD;QACpJ,IAAI,GAAG;YACL,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,IAAI,eAAe,KAAK,SAAS;YAC/B,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,YAAY;YACd,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,mFAAmF;QACnF,+FAA+F;QAC/F,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,mBAAQ,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,CAAC,CAAC;QACX,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,4BAAc,CAAC,kBAAkB,CAAC,yBAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;YACxH,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC1C,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;YAC7B,CAAC;YACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,4DAA4D;IACrD,yBAAyB,CAAC,aAAqB,EAAE,aAAqB,EAAE,WAAmB,EAAE,WAAmB,EAAE,MAAgB;QACvI,MAAM,QAAQ,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM;YACT,MAAM,GAAG,eAAO,CAAC,UAAU,EAAE,CAAC;;YAE9B,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,8BAA8B;QAC9B,+CAA+C;QAC/C,0CAA0C;QAC1C,4CAA4C;QAC5C,8BAA8B;QAC9B,QAAQ,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3G,QAAQ,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3G,QAAQ,CAAC,iCAAiC,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3G,EAAE;QACF,IAAI,CAAC,aAAK,CAAC,mBAAmB,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC;YAC9D,QAAQ,CAAC,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAEzF,QAAQ,CAAC,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,aAAK,CAAC,mBAAmB,CAAC,WAAW,GAAG,WAAW,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YAEzF,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YACzF,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;;OAKG;IACI,cAAc,CAAC,YAAoB,EAAE,UAAkB,EAAE,MAAgB;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,qBAAqB,CAC1B,aAAqB,EAAE,WAAmB,EAC1C,aAAqB,EAAE,WAAmB,EAC1C,MAAc;QACd,4BAAc,CAAC,sBAAsB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzF,4BAAc,CAAC,sBAAsB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxE,sEAAsE;QACtE,MAAM,MAAM,GAAG,mBAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,oBAAS,CAAC,GAAG,CAAE,CAAC;QAC7G,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,EACnF,uBAAU,CAAC,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;OAEG;IACI,mBAAmB,CAAC,MAA+B,EAAE,MAA+B,EAAE,MAAc;QACzG,OAAO,IAAI,CAAC,qBAAqB,CAC/B,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC9G,CAAC;IACD;;;OAGG;IACI,kBAAkB,CAAC,KAAmC;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,+FAA+F;YAC/F,MAAM,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,yBAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,mBAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,oBAAS,CAAC,GAAG,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7C,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACpC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAErC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACjD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACnD,OAAO,aAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;OAKG;IACI,uCAAuC,CAAC,YAAqC,EAAE,YAAqC,EAAE,aAAuB,EAClJ,MAAc;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,mBAAmB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,mBAAmB,KAAK,SAAS;YACnC,OAAO,SAAS,CAAC;QACnB,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QACvF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrF,MAAM,UAAU,GAAG,2DAA4B,CAAC,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAClH,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,+FAA+F;gBAC/F,MAAM,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,yBAAO,CAAC,UAAU,EAAE,CAAC,CAAC;gBACpE,MAAM,OAAO,GAAG,0BAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,0BAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACxD,MAAM,QAAQ,GAAG,0BAAQ,CAAC,8BAA8B,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;gBACxG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;oBACjF,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAChD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACnD,OAAO,aAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,uBAAU,CAAC,qBAAqB,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC5G,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;;;;;;OAUG;IACI,gCAAgC,CACrC,aAAqB,EAAE,WAAmB,EAC1C,aAAqB,EAAE,WAAmB,EAC1C,MAAkB;QAClB,4BAAc,CAAC,sBAAsB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzF,4BAAc,CAAC,sBAAsB,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAG,mBAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,oBAAS,CAAC,GAAG,CAAC,CAAC;QAC5G,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBACrE,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;OAKG;IACI,oBAAoB,CAAC,SAAgB,EAAE,aAAyB,EAAE,MAAc;QACrF,IAAI,aAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC;YACxE,OAAO,SAAS,CAAC;QACnB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC3C,OAAO,aAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IACD;;;;;OAKG;IACI,mBAAmB,CAAC,cAA0B,EAAE,QAAe,EAAE,MAAc;QACpF,IAAI,aAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC;YACzE,OAAO,SAAS,CAAC;QACnB,IAAI,QAAQ,CAAC,wBAAwB;YACnC,OAAO,SAAS,CAAC;QACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,aAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IACD;;;;;;OAMG;IACI,gCAAgC,CACrC,MAA+B,EAC/B,0BAAkC,EAClC,MAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAE,CAAC;QAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAE,CAAC;QAC9F,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,0BAA0B,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,uCAAuC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjF,OAAO,GAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACI,4BAA4B,CAAC,YAAoB,EAAE,UAAkB,EAAE,iBAAiB,GAAG,IAAI,EAAE,MAAkC;QACxI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM;YACT,OAAO,qDAAyB,CAAC,aAAa,CAC5C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,MAAM,CAAC,EACzE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO,EAAE,CAAC,CAAC,EAC9D,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACxE,+EAA+E;QAC/E,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACzF,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/E,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC,MAAM,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACnF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;;;;;;;;;OAYG;IACI,6BAA6B,CAAC,YAAoB,EAAE,UAAkB,EAC3E,KAAc,EACd,OAAiB,EACjB,KAAe,EACf,YAAsB,EACtB,QAAkB,EAClB,UAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACjF,oBAAoB;QACpB,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAE5E,kBAAkB;QAClB,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1E,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE9E,mBAAmB;QACnB,MAAM,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;OAOG;IACI,oBAAoB,CAAC,YAAoB,EAAE,UAAkB,EAAE,MAAkB;QACtF,MAAM,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD;;;;;;OAMG;IACI,sBAAsB,CAAC,YAAoB,EAAE,UAAkB,EAAE,MAAc;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,MAAgB,EAAE,MAAgC;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,MAAM,eAAe,GAAG,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QACtE,oBAAoB;QACpB,MAAM,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACvG,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,mDAAuB,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAED;;;;OAIG;IACI,yCAAyC,CAAC,cAAqC,EAAE,WAAoC,EAAE,MAAgC;QAC5J,MAAM,MAAM,GAAG,SAAS,CAAC,sBAAsB,CAAC,cAAc,EAAE,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;QAC3H,IAAI,MAAM,KAAK,SAAS;YACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,sBAAsB,CAAC,SAAgC,EAAE,YAAoB,EAAE,UAAkB,EAAE,MAAc;QAC7H,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,MAAM;YACT,MAAM,GAAG,aAAK,CAAC,WAAW,EAAE,CAAC;QAC/B,4FAA4F;QAC5F,4BAAc,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,uDAAuD;IAChD,iBAAiB,CAAC,KAAc;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnF,IAAI,UAAU,KAAK,SAAS;YAC1B,OAAO,UAAU,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,+GAA+G;IACxG,+BAA+B,CAAC,EAAU,EAAE,EAAU,EAAE,MAAe,EAAE,MAAe,EAAE,QAA+B;QAC9H,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChF,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9E,MAAM,KAAK,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9E,MAAM,KAAK,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,IAAI,gCAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,2DAA2D;gBAC3D,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;oBACZ,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;wBACf,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;wBACf,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxB,IAAI,QAAQ;4BACV,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/B,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,uDAAuD;oBACvD,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;wBACf,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;wBACf,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxB,IAAI,QAAQ;4BACV,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/B,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,0GAA0G;IACnG,2BAA2B,CAAC,GAAU,EAAE,QAA6C;QAC1F,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;eACrE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;eACxE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChF,+GAA+G;YAC/G,8BAA8B;YAC9B,sLAAsL;YACtL,MAAM,EAAE,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,EAAE,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACxE,MAAM,EAAE,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzE,MAAM,EAAE,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1E,MAAM,EAAE,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,EAAE,GAAG,0BAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3E,MAAM,mBAAmB,GAAa,EAAE,CAAC;YAEzC,IAAI,4BAAc,CAAC,0CAA0C,CAC3D,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAChB,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAC5B,mBAAmB,CAAC,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC7B,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;oBACpE,IAAI,mBAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;wBAC3B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;gBACD,SAAS,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,EAAE,EAAE,EAAE,CAAC;gBACX,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC7C,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACvB,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;oBACnB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;wBACZ,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,mBAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC7F,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;4BAChC,IAAI,QAAQ;gCACV,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;4BAClD,WAAW,EAAE,CAAC;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;CACF;AAtmBD,8BAsmBC;AACD;;;;;;;GAOG;AACH,MAAa,cAAc;IAClB,SAAS,CAAY;IACrB,cAAc,CAAa;IAC3B,aAAa,CAAa;IACjC;;;;;OAKG;IACH,YAAoB,SAAoB,EAAE,cAA0B,EAAE,aAAyB;QAC7F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,aAAa,CAAC,SAAoB,EAAE,cAA0B,EAAE,aAAyB;QACrG,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC;IACD,uFAAuF;IAChF,iBAAiB,CAAC,iBAAyB,EAAE,gBAAwB,EAAE,MAAgB;QAC5F,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;IACjK,CAAC;IACD;;OAEG;IACI,4BAA4B,CAAC,iBAAyB,EAAE,gBAAwB,EAAE,MAAkC;QACzH,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAClD,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EACxD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EACtD,IAAI,EACJ,MAAM,CAAC,CAAC;QACV,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,qFAAqF;IAC9E,KAAK,CAAC,MAAgB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5L,CAAC;IACD;;OAEG;IACI,YAAY,CAAC,GAAU,EAAE,eAAwB,EAAE,wCAAiD,KAAK;QAC9G,MAAM,MAAM,GAAoC,EAAE,CAAC;QACnD,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACtD,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;YAEpD,IAAI,CAAC,eAAe;mBACf,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;uBACrD,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;gBAC7D,IAAI,qCAAqC,EAAE,CAAC;oBAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;oBACxF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,eAAe,CAAC,CAAC;oBACtF,MAAM,CAAC,IAAI,CAAC,IAAI,qDAA6B,CAC3C,yCAAmB,CAAC,sBAAsB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EACxE,+CAAuB,CAAC,2BAA2B,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9F,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,IAAI,qDAA6B,CAC3C,yCAAmB,CAAC,sBAAsB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EACxE,+CAAuB,CAAC,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3G,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;;OAKG;IACI,cAAc,CAAC,QAAiC,EAAE,yBAAkC,IAAI;QAC7F,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC;eACtE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;IAC/F,CAAC;IAED;;;;;;;;OAQG;IACI,qBAAqB,CAAC,QAAiC,EAAE,MAAc;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC/G,IAAI,CAAC,GAAG;YACN,OAAO,SAAS,CAAC;QACnB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC;IACb,CAAC;IACD;;;;;;OAMG;IACI,kBAAkB,CAAC,iBAAyB,EAAE,WAAmB,EAAE,IAAY,CAAC,EAAE,MAAgC;QACvH,OAAO,mDAAuB,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACvK,CAAC;IACD,8DAA8D;IACvD,qBAAqB,CAAC,UAAmB;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;CACF;AArHD,wCAqHC;AACD;;GAEG;AACH,MAAM,qBAAsB,SAAQ,+BAAsB;IAChD,UAAU,CAAY;IACtB,WAAW,CAAW;IACtB,aAAa,CAAU;IACvB,QAAQ,CAAW;IACnB,QAAQ,CAAW;IACnB,MAAM,CAAW;IACjB,MAAM,CAAW;IACjB,WAAW,CAAW;IACtB,MAAM,CAAW;IACzB,YAAmB,SAAoB;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IACM,kBAAkB,CAAC,UAAmB;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,4BAAc,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,IAAI,wCAA+B,CAAC,IAAI,CAAC,CAAC;QACjE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,cAAc,CAAC,aAAa,EAAE,EAAE,CAAC;YACnC,EAAE,CAAC,YAAY,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;YACxC,EAAE,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,mDAAuB,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACpF,CAAC;IACM,QAAQ,CAAC,YAAoB,EAAE,UAAkB;QACtD,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,YAAY,EAAE,UAAU,EACpE,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAC1B,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAC1B,IAAI,CAAC,WAAW,CAAC,CAAC;QACpB,0BAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,CAAC,sBAAsB;QAClC,QAAQ;QACR,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7E,0BAA0B;QAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACrF,sBAAsB;QACtB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AACD;;;GAGG;AACH,MAAa,iBAAiB;IAC5B,8BAA8B;IACvB,YAAY,CAAS;IAC5B,+BAA+B;IACxB,UAAU,CAAS;IACnB,KAAK,CAAU;IACf,MAAM,CAAW;IACjB,IAAI,CAAW;IACf,OAAO,CAAW;IAClB,KAAK,CAAW;IAChB,UAAU,CAAW;IACrB,OAAO,CAAW;IACzB;QACE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IACD,mDAAmD;IAC5C,kCAAkC,CAAC,SAAoB;QAC5D,SAAS,CAAC,6BAA6B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3J,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IACO,MAAM,CAAC,SAAS,CAAY;IAC5B,MAAM,CAAC,SAAS,CAAY;IAC5B,MAAM,CAAC,YAAY,CAAY;IACvC;;;;;;;;OAQG;IACI,MAAM,CAAC,sBAAsB,CAAC,MAAyB,EAAE,MAAyB,EAAE,MAAyB,EAAE,MAAoB;QACxI,IAAI,CAAC,SAAS,GAAG,0BAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,GAAG,0BAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,2EAA2E;QAC3E,uHAAuH;QACvH,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,4EAA4E;QAC5E,gGAAgG;QAChG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,+DAA+D;QAC/D,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;cACjE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;cACzD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC;cAC/D,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,uBAAuB;IACzB,CAAC;IACD;;OAEG;IACI,QAAQ;QACb,OAAO,mDAAuB,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnF,CAAC;CACF;AAhED,8CAgEC;AACD;;;;GAIG;AACH,MAAa,kBAAkB;IACrB,WAAW,CAAQ;IACnB,WAAW,CAAsB;IACjC,kBAAkB,CAAqB;IAC/C,YAAoB,UAAiB;QACnC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IACD;;;;;;;OAOG;IACI,MAAM,CAAC,kBAAkB,CAAC,iBAA4B,EAC3D,WAAoC,EAAE,SAAkC,EAAE,OAAuB;QACjG,MAAM,cAAc,GAAG,iBAAiB,CAAC,gCAAgC,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,eAAe,EACjI,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,eAAe,EAC/G,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,cAAc,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;YACvD,OAAO,SAAS,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,YAAY,aAAK,EAAE,CAAC;YAC7B,QAAQ,GAAG,mBAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACrF,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,GAAG,GAAG;YAChB,QAAQ,GAAG,GAAG,CAAC;QACjB,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,wBAAwB,GAAG,GAAG,GAAG,iBAAiB,CAAC;QACzD,YAAY,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;QAC/G,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,qBAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAEjG,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,uCAAuC,CAAC,QAAQ,CAAC,CAAC;QAEzD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,eAAe,GAAG,OAAO,CAAC;QAC9B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,aAAa,GAAG,MAAM,CAAC;QAC7B,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAChC,OAAO,OAAO,GAAG,EAAE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,MAAM;YACR,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAChC,IAAI,eAAe,GAAG,aAAa;gBACjC,YAAY,EAAE,CAAC;;gBAEf,YAAY,GAAG,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,mDAAuB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,mDAAuB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACnC,mDAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnF,iBAAiB,CAAC,yCAAyC,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;gBACvG,CAAC,CAAC,YAAY,GAAG,cAAc,CAAC,gBAAgB,CAAC;gBACjD,CAAC,CAAC,UAAU,GAAG,cAAc,CAAC,eAAe,CAAC;gBAC9C,CAAC,CAAC,kCAAkC,CAAC,iBAAiB,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC;QACD,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IACO,uCAAuC,CAAC,QAAgB;QAC9D,IAAI,QAAQ,GAAG,CAAC;YACd,QAAQ,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACjB,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,IAAI,iBAAiB,EAAE,CAAC;YAClC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC;YAC9B,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;IACO,WAAW,CAAC,cAAsB;QACxC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,mBAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACxG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC;YACvC,OAAO,GAAG,mBAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,SAAoB;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,CAAC,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,sDAAsD;QACtD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE3C,8CAA8C;QAC9C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACxH,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK;QACX,OAAO,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;IAC3D,CAAC;IACD;;;;;;;;;;OAUG;IACI,MAAM,CAAC,kCAAkC,CAAC,SAAoB,EACnE,MAA+B,EAC/B,MAA+B,EAAE,SAAiB,EAClD,4BAAoC,EACpC,4BAAoC;QACpC,SAAS,GAAG,mBAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAClG,MAAM,OAAO,GAAG,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAClG,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACnD,IAAI,OAAO,CAAC;YACZ,IAAI,SAAS,CAAC;YACd,IAAI,OAAO,CAAC;YACZ,IAAI,SAAS,CAAC;YAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,GAAG,SAAS,EAAE,4BAA4B,CAAC,CAAC;gBAC1G,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACvE,MAAM,YAAY,GAAG,SAAS,CAAC,uCAAuC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChG,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC/B,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;oBACnD,IAAI,OAAO,KAAK,SAAS,IAAI,eAAe,GAAG,OAAO,EAAE,CAAC;wBACvD,OAAO,GAAG,eAAe,CAAC;wBAC1B,SAAS,GAAG,YAAY,CAAC;wBACzB,SAAS,GAAG,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;gBACpD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,oCAAoC,EAAE,SAAS,EAAE,CAAC;QACxF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CAEF;AAxKD,gDAwKC"}
@@ -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 { InterpolationCurve3d } from \"../bspline/InterpolationCurve3d\";\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 { GrowableXYZArray } from \"./GrowableXYZArray\";\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\";\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: Point3d): number {\n if (!this._origin) {\n this._origin = point.clone();\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 (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) {\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 if (data instanceof InterpolationCurve3d) {\n const point = Point3d.create();\n for (let i = 0; this.savedVectorCount() < 2; i++) {\n if (i < data.options.fitPoints.length) {\n point.setFrom(data.options.fitPoints[i]);\n this.announcePoint(point);\n } else break;\n }\n } else { // unimplemented CurvePrimitive type\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 GrowableXYZArray) {\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(Point3d.create(data.x, data.y, data.z));\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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"}
@@ -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 { 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 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 const spinAxis = spinMatrix.getAxisAndAngleOfRotation();\n const localCornerA = rigidA.multiplyInversePoint3dArray(cornerA)!;\n const localCornerB = rigidB.multiplyInversePoint3dArray(cornerB)!;\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 return new SmoothTransformBetweenFrusta(rigidA1, localCornerA1, rigidB1, localCornerB1,\n spinAxis.axis, spinAxis.angle);\n }\n }\n }\n return new SmoothTransformBetweenFrusta(rigidA, localCornerA, rigidB, localCornerB,\n 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,\n this._rotationAngle.cloneScaled(fraction))!;\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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"}
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GrowableBlockedArray.js","sourceRoot":"","sources":["../../../src/geometry3d/GrowableBlockedArray.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ArraysAndInterfaces\n */\n\nimport { BlockComparisonFunction } from \"./GrowableFloat64Array\";\n\n/**\n * Array of contiguous doubles, indexed by block number and index within block.\n * * This is essentially a rectangular matrix (two dimensional array), with each block being a row of the matrix.\n * @public\n */\nexport class GrowableBlockedArray {\n /** underlying contiguous, oversized buffer. */\n protected _data: Float64Array;\n /** Number of blocks (matrix rows) in use. */\n protected _inUse: number;\n /** number of numbers per block in the array.\n * * If viewing the array as a two dimensional array, this is the row size.\n */\n protected _blockSize: number; // positive integer !!!\n /**\n * multiplier used by ensureBlockCapacity to expand requested reallocation size\n */\n protected _growthFactor: number;\n\n /**\n * Construct an array whose contents are in blocked (row-major) order, possibly with extra capacity.\n * * Total capacity is `this._data.length`\n * * Actual in-use count is `this._inUse * this._blockSize`\n * @param blockSize number of entries in each block, i.e., row size\n * @param initialBlocks initial capacity in blocks (default 8)\n * @param growthFactor used by ensureBlockCapacity to expand requested reallocation size (default 1.5)\n */\n public constructor(blockSize: number, initialBlocks: number = 8, growthFactor?: number) {\n this._data = new Float64Array(initialBlocks * blockSize);\n this._inUse = 0;\n this._blockSize = blockSize > 0 ? blockSize : 1;\n this._growthFactor = (undefined !== growthFactor && growthFactor >= 1.0) ? growthFactor : 1.5;\n }\n\n /** Copy data from source array. Does not reallocate or change active block count.\n * @param source array to copy from\n * @param sourceCount copy the first sourceCount blocks; all blocks if undefined\n * @param destOffset copy to instance array starting at this block index; zero if undefined\n * @return count and offset of blocks copied\n */\n protected copyData(source: Float64Array | number[], sourceCount?: number, destOffset?: number): {count: number, offset: number} {\n // validate inputs and convert from blocks to entries\n let myOffset = (undefined !== destOffset) ? destOffset * this.numPerBlock : 0;\n if (myOffset < 0)\n myOffset = 0;\n if (myOffset >= this._data.length)\n return {count: 0, offset: 0};\n let myCount = (undefined !== sourceCount) ? sourceCount * this.numPerBlock : source.length;\n if (myCount > 0) {\n if (myCount > source.length)\n myCount = source.length;\n if (myOffset + myCount > this._data.length)\n myCount = this._data.length - myOffset;\n if (myCount % this.numPerBlock !== 0)\n myCount -= myCount % this.numPerBlock;\n }\n if (myCount <= 0)\n return {count: 0, offset: 0};\n if (myCount === source.length)\n this._data.set(source, myOffset);\n else if (source instanceof Float64Array)\n this._data.set(source.subarray(0, myCount), myOffset);\n else\n this._data.set(source.slice(0, myCount), myOffset);\n return {count: myCount / this.numPerBlock, offset: myOffset / this.numPerBlock};\n }\n\n /**\n * Make a copy of the (active) blocks in this array.\n * (The clone does NOT get excess capacity)\n */\n public clone(): GrowableBlockedArray {\n const newBlocks = new GrowableBlockedArray(this.numPerBlock, this.numBlocks, this._growthFactor);\n newBlocks.copyData(this._data, this.numBlocks);\n newBlocks._inUse = this.numBlocks;\n return newBlocks;\n }\n\n /** computed property: length (in blocks, not doubles) */\n public get length(): number { return this._inUse; }\n /** computed property: length (in blocks, not doubles) */\n public get numBlocks(): number { return this._inUse; }\n /** property: number of data values per block */\n public get numPerBlock(): number { return this._blockSize; }\n /**\n * Return a single value indexed within a block. Indices are unchecked.\n * @param blockIndex index of block to read\n * @param indexInBlock offset within the block\n */\n public getWithinBlock(blockIndex: number, indexWithinBlock: number): number {\n return this._data[blockIndex * this._blockSize + indexWithinBlock];\n }\n /** clear the block count to zero, but maintain the allocated memory */\n public clear() { this._inUse = 0; }\n /** Return the capacity in blocks (not doubles) */\n public blockCapacity() {\n return this._data.length / this._blockSize;\n }\n /** ensure capacity (in blocks, not doubles) */\n public ensureBlockCapacity(blockCapacity: number, applyGrowthFactor: boolean = true) {\n if (blockCapacity > this.blockCapacity()) {\n if (applyGrowthFactor)\n blockCapacity *= this._growthFactor;\n const prevData = this._data;\n this._data = new Float64Array(blockCapacity * this._blockSize);\n this.copyData(prevData, this._inUse);\n }\n }\n /** Add a new block of data.\n * * If newData has fewer than numPerBlock entries, the remaining part of the new block is zeros.\n * * If newData has more entries, only the first numPerBlock are taken.\n */\n public addBlock(newData: number[]) {\n const k0 = this.newBlockIndex();\n let numValue = newData.length;\n if (numValue > this._blockSize)\n numValue = this._blockSize;\n for (let i = 0; i < numValue; i++)\n this._data[k0 + i] = newData[i];\n }\n /**\n * Return the starting index of a block of (zero-initialized) doubles at the end.\n *\n * * this.data is reallocated if needed to include the new block.\n * * The inUse count is incremented to include the new block.\n * * The returned block is an index to the Float64Array (not a block index)\n */\n protected newBlockIndex(): number {\n const index = this._blockSize * this._inUse;\n if ((index + 1) > this._data.length)\n this.ensureBlockCapacity(1 + this._inUse);\n this._inUse++;\n for (let i = index; i < index + this._blockSize; i++)\n this._data[i] = 0.0;\n return index;\n }\n /** reduce the block count by one. */\n public popBlock() {\n if (this._inUse > 0)\n this._inUse--;\n }\n /** convert a block index to the simple index to the underlying Float64Array. */\n protected blockIndexToDoubleIndex(blockIndex: number) { return this._blockSize * blockIndex; }\n /** Access a single double at offset within a block, with index checking and return undefined if indexing is invalid. */\n public checkedComponent(blockIndex: number, componentIndex: number): number | undefined {\n if (blockIndex >= this._inUse || blockIndex < 0 || componentIndex < 0 || componentIndex >= this._blockSize)\n return undefined;\n return this._data[this._blockSize * blockIndex + componentIndex];\n }\n /** Access a single double at offset within a block. This has no index checking. */\n public component(blockIndex: number, componentIndex: number): number {\n return this._data[this._blockSize * blockIndex + componentIndex];\n }\n /** compare two blocks in simple lexical order.\n * @param data data array\n * @param blockSize number of items to compare\n * @param ia raw index (not block index) of first block\n * @param ib raw index (not block index) of second block\n */\n public static compareLexicalBlock(data: Float64Array, blockSize: number, ia: number, ib: number): number {\n let ax = 0;\n let bx = 0;\n for (let i = 0; i < blockSize; i++) {\n ax = data[ia + i];\n bx = data[ib + i];\n if (ax > bx) return 1;\n if (ax < bx) return -1;\n }\n return ia - ib; // so original order is maintained among duplicates !!!!\n }\n /** Return an array of block indices sorted per compareLexicalBlock function */\n public sortIndicesLexical(compareBlocks: BlockComparisonFunction = (dataArray, size, iA, iB) => GrowableBlockedArray.compareLexicalBlock(dataArray, size, iA, iB)): Uint32Array {\n const n = this._inUse;\n // let numCompare = 0;\n const result = new Uint32Array(n);\n const data = this._data;\n const blockSize = this._blockSize;\n for (let i = 0; i < n; i++)result[i] = i;\n result.sort(\n (blockIndexA: number, blockIndexB: number) => {\n // numCompare++;\n return compareBlocks(data, blockSize, blockIndexA * blockSize, blockIndexB * blockSize);\n });\n // console.log (n, numCompare);\n return result;\n }\n /** Return the distance (hypotenuse=sqrt(summed squares)) between indicated blocks */\n public distanceBetweenBlocks(blockIndexA: number, blockIndexB: number): number {\n let dd = 0.0;\n let iA = this.blockIndexToDoubleIndex(blockIndexA);\n let iB = this.blockIndexToDoubleIndex(blockIndexB);\n let a = 0;\n const data = this._data;\n for (let i = 0; i < this._blockSize; i++) {\n a = data[iA++] - data[iB++];\n dd += a * a;\n }\n return Math.sqrt(dd);\n }\n\n /** Return the distance (hypotenuse=sqrt(summed squares)) between block entries `iBegin <= i < iEnd` of indicated blocks */\n public distanceBetweenSubBlocks(blockIndexA: number, blockIndexB: number, iBegin: number, iEnd: number): number {\n let dd = 0.0;\n const iA = this.blockIndexToDoubleIndex(blockIndexA);\n const iB = this.blockIndexToDoubleIndex(blockIndexB);\n let a = 0;\n const data = this._data;\n for (let i = iBegin; i < iEnd; i++) {\n a = data[iA + i] - data[iB + i];\n dd += a * a;\n }\n return Math.sqrt(dd);\n }\n}\n"]}
1
+ {"version":3,"file":"GrowableBlockedArray.js","sourceRoot":"","sources":["../../../src/geometry3d/GrowableBlockedArray.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH;;;;GAIG;AACH,MAAa,oBAAoB;IAC/B,+CAA+C;IACrC,KAAK,CAAe;IAC9B,6CAA6C;IACnC,MAAM,CAAS;IACzB;;OAEG;IACO,UAAU,CAAS,CAAE,uBAAuB;IACtD;;OAEG;IACO,aAAa,CAAS;IAEhC;;;;;;;OAOG;IACH,YAAmB,SAAiB,EAAE,gBAAwB,CAAC,EAAE,YAAqB;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,KAAK,YAAY,IAAI,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IAChG,CAAC;IAED;;;;;OAKG;IACO,QAAQ,CAAC,MAA+B,EAAE,WAAoB,EAAE,UAAmB;QAC3F,qDAAqD;QACrD,IAAI,QAAQ,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,QAAQ,GAAG,CAAC;YACd,QAAQ,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAC/B,OAAO,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3F,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM;gBACzB,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,IAAI,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;gBACxC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;YACzC,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,KAAK,CAAC;gBAClC,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,IAAI,CAAC;YACd,OAAO,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;QAC/B,IAAI,OAAO,KAAK,MAAM,CAAC,MAAM;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC9B,IAAI,MAAM,YAAY,YAAY;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;;YAEtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrD,OAAO,EAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAC,CAAC;IAClF,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACjG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yDAAyD;IACzD,IAAW,MAAM,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,yDAAyD;IACzD,IAAW,SAAS,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,gDAAgD;IAChD,IAAW,WAAW,KAAa,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5D;;;;OAIG;IACI,cAAc,CAAC,UAAkB,EAAE,gBAAwB;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC;IACrE,CAAC;IACD,uEAAuE;IAChE,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,kDAAkD;IAC3C,aAAa;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,+CAA+C;IACxC,mBAAmB,CAAC,aAAqB,EAAE,oBAA6B,IAAI;QACjF,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzC,IAAI,iBAAiB;gBACnB,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IACD;;;OAGG;IACI,QAAQ,CAAC,OAAiB;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAChC,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU;YAC5B,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD;;;;;;OAMG;IACO,aAAa;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;YACjC,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;YAClD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,qCAAqC;IAC9B,QAAQ;QACb,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IACD,gFAAgF;IACtE,uBAAuB,CAAC,UAAkB,IAAI,OAAO,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;IAC9F,wHAAwH;IACjH,gBAAgB,CAAC,UAAkB,EAAE,cAAsB;QAChE,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,IAAI,IAAI,CAAC,UAAU;YACxG,OAAO,SAAS,CAAC;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC;IACnE,CAAC;IACD,oFAAoF;IAC7E,SAAS,CAAC,UAAkB,EAAE,cAAsB;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC;IACnE,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,mBAAmB,CAAC,IAAkB,EAAE,SAAiB,EAAE,EAAU,EAAE,EAAU;QAC7F,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAClB,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,GAAG,EAAE;gBAAE,OAAO,CAAC,CAAC;YACtB,IAAI,EAAE,GAAG,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,wDAAwD;IAC1E,CAAC;IACD,+EAA+E;IACxE,kBAAkB,CAAC,gBAAyC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;QAC/J,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,sBAAsB;QACtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CACT,CAAC,WAAmB,EAAE,WAAmB,EAAE,EAAE;YAC3C,gBAAgB;YAChB,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,GAAG,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QACL,+BAA+B;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,qFAAqF;IAC9E,qBAAqB,CAAC,WAAmB,EAAE,WAAmB;QACnE,IAAI,EAAE,GAAG,GAAG,CAAC;QACb,IAAI,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,2HAA2H;IACpH,wBAAwB,CAAC,WAAmB,EAAE,WAAmB,EAAE,MAAc,EAAE,IAAY;QACpG,IAAI,EAAE,GAAG,GAAG,CAAC;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAChC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;CACF;AAhND,oDAgNC"}