@itwin/core-geometry 5.5.0-dev.4 → 5.5.0-dev.5

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 (611) hide show
  1. package/lib/cjs/Geometry.d.ts +7 -0
  2. package/lib/cjs/Geometry.d.ts.map +1 -1
  3. package/lib/cjs/Geometry.js +9 -0
  4. package/lib/cjs/Geometry.js.map +1 -1
  5. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve.js +2 -1
  7. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurveOps.js +4 -1
  10. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  11. package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BezierCurve3d.js +14 -4
  13. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  14. package/lib/cjs/bspline/BezierCurve3dH.d.ts +2 -0
  15. package/lib/cjs/bspline/BezierCurve3dH.d.ts.map +1 -1
  16. package/lib/cjs/bspline/BezierCurve3dH.js +19 -3
  17. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  18. package/lib/cjs/bspline/BezierCurveBase.d.ts +8 -2
  19. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  20. package/lib/cjs/bspline/BezierCurveBase.js +10 -4
  21. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  22. package/lib/cjs/clipping/AlternatingConvexClipTree.js +4 -4
  23. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  24. package/lib/cjs/clipping/ClipPlane.d.ts +0 -3
  25. package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -1
  26. package/lib/cjs/clipping/ClipPlane.js +9 -2
  27. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  28. package/lib/cjs/clipping/ClipPrimitive.d.ts +59 -9
  29. package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -1
  30. package/lib/cjs/clipping/ClipPrimitive.js +124 -55
  31. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  32. package/lib/cjs/clipping/ClipUtils.js +1 -1
  33. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  34. package/lib/cjs/clipping/ClipVector.d.ts.map +1 -1
  35. package/lib/cjs/clipping/ClipVector.js +12 -8
  36. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  37. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts +0 -2
  38. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  39. package/lib/cjs/clipping/ConvexClipPlaneSet.js +19 -18
  40. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  41. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +1 -1
  42. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
  43. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js +4 -5
  44. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  45. package/lib/cjs/core-geometry.d.ts +0 -1
  46. package/lib/cjs/core-geometry.d.ts.map +1 -1
  47. package/lib/cjs/core-geometry.js +0 -1
  48. package/lib/cjs/core-geometry.js.map +1 -1
  49. package/lib/cjs/curve/Arc3d.js +2 -2
  50. package/lib/cjs/curve/Arc3d.js.map +1 -1
  51. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +12 -4
  52. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  53. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +52 -33
  54. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  55. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  56. package/lib/cjs/curve/CurveCollection.js +13 -6
  57. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  58. package/lib/cjs/curve/CurveCurve.js +1 -1
  59. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  60. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  61. package/lib/cjs/curve/CurveFactory.js +13 -1
  62. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  63. package/lib/cjs/curve/CurveLocationDetail.d.ts +12 -4
  64. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  65. package/lib/cjs/curve/CurveLocationDetail.js +14 -5
  66. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  67. package/lib/cjs/curve/CurvePrimitive.d.ts +5 -4
  68. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  69. package/lib/cjs/curve/CurvePrimitive.js +7 -4
  70. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  71. package/lib/cjs/curve/LineString3d.d.ts +25 -16
  72. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  73. package/lib/cjs/curve/LineString3d.js +90 -72
  74. package/lib/cjs/curve/LineString3d.js.map +1 -1
  75. package/lib/cjs/curve/Path.d.ts +0 -3
  76. package/lib/cjs/curve/Path.d.ts.map +1 -1
  77. package/lib/cjs/curve/Path.js +9 -2
  78. package/lib/cjs/curve/Path.js.map +1 -1
  79. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  80. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  81. package/lib/cjs/curve/Query/PlanarSubdivision.js +25 -31
  82. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  83. package/lib/cjs/curve/Query/StrokeCountChain.d.ts +7 -1
  84. package/lib/cjs/curve/Query/StrokeCountChain.d.ts.map +1 -1
  85. package/lib/cjs/curve/Query/StrokeCountChain.js +27 -36
  86. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  87. package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -1
  88. package/lib/cjs/curve/RegionMomentsXY.js +7 -1
  89. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  90. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  91. package/lib/cjs/curve/RegionOps.js +8 -5
  92. package/lib/cjs/curve/RegionOps.js.map +1 -1
  93. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  94. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +6 -6
  95. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  96. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
  97. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +4 -1
  98. package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  99. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  100. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +6 -1
  101. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  102. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +5 -21
  103. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  104. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +29 -73
  105. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  106. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +55 -13
  107. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  108. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +238 -110
  109. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  110. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +1 -1
  111. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  112. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +1 -4
  113. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  114. package/lib/cjs/curve/spiral/DirectSpiral3d.js +9 -9
  115. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  116. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +11 -14
  117. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  118. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +18 -18
  119. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  120. package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts +7 -1
  121. package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
  122. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  123. package/lib/cjs/geometry3d/Ellipsoid.d.ts +19 -7
  124. package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -1
  125. package/lib/cjs/geometry3d/Ellipsoid.js +26 -11
  126. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  127. package/lib/cjs/geometry3d/FrustumAnimation.d.ts.map +1 -1
  128. package/lib/cjs/geometry3d/FrustumAnimation.js +11 -1
  129. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  130. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts +5 -1
  131. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  132. package/lib/cjs/geometry3d/GrowableFloat64Array.js +11 -1
  133. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  134. package/lib/cjs/geometry3d/GrowableXYArray.d.ts +1 -1
  135. package/lib/cjs/geometry3d/GrowableXYArray.js +1 -1
  136. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  137. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +49 -8
  138. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  139. package/lib/cjs/geometry3d/GrowableXYZArray.js +90 -37
  140. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  141. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts +100 -3
  142. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  143. package/lib/cjs/geometry3d/IndexedXYZCollection.js +125 -0
  144. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  145. package/lib/cjs/geometry3d/Matrix3d.d.ts +10 -1
  146. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  147. package/lib/cjs/geometry3d/Matrix3d.js +53 -34
  148. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  149. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js +1 -1
  150. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  151. package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts +49 -2
  152. package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
  153. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +67 -9
  154. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  155. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +1 -1
  156. package/lib/cjs/geometry3d/Point3dVector3d.js +1 -1
  157. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  158. package/lib/cjs/geometry3d/PointStreaming.js +1 -1
  159. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  160. package/lib/cjs/geometry3d/PolygonOps.d.ts +24 -32
  161. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  162. package/lib/cjs/geometry3d/PolygonOps.js +147 -180
  163. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  164. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js +5 -5
  165. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  166. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -1
  167. package/lib/cjs/geometry3d/PolylineOps.js +13 -3
  168. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  169. package/lib/cjs/geometry3d/Range.js.map +1 -1
  170. package/lib/cjs/geometry3d/Ray3d.d.ts +0 -3
  171. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -1
  172. package/lib/cjs/geometry3d/Ray3d.js +5 -1
  173. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  174. package/lib/cjs/geometry3d/SortablePolygon.d.ts +2 -2
  175. package/lib/cjs/geometry3d/SortablePolygon.d.ts.map +1 -1
  176. package/lib/cjs/geometry3d/SortablePolygon.js +14 -18
  177. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  178. package/lib/cjs/geometry3d/Transform.d.ts +8 -0
  179. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  180. package/lib/cjs/geometry3d/Transform.js +15 -9
  181. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  182. package/lib/cjs/numerics/ClusterableArray.d.ts +4 -2
  183. package/lib/cjs/numerics/ClusterableArray.d.ts.map +1 -1
  184. package/lib/cjs/numerics/ClusterableArray.js +6 -4
  185. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  186. package/lib/cjs/numerics/Newton.d.ts +3 -1
  187. package/lib/cjs/numerics/Newton.d.ts.map +1 -1
  188. package/lib/cjs/numerics/Newton.js +5 -1
  189. package/lib/cjs/numerics/Newton.js.map +1 -1
  190. package/lib/cjs/polyface/AuxData.d.ts +1 -4
  191. package/lib/cjs/polyface/AuxData.d.ts.map +1 -1
  192. package/lib/cjs/polyface/AuxData.js +5 -1
  193. package/lib/cjs/polyface/AuxData.js.map +1 -1
  194. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js +3 -3
  195. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  196. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  197. package/lib/cjs/polyface/Polyface.js +14 -16
  198. package/lib/cjs/polyface/Polyface.js.map +1 -1
  199. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +84 -28
  200. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  201. package/lib/cjs/polyface/PolyfaceBuilder.js +277 -217
  202. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  203. package/lib/cjs/polyface/PolyfaceClip.d.ts +4 -3
  204. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
  205. package/lib/cjs/polyface/PolyfaceClip.js +11 -4
  206. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  207. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  208. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  209. package/lib/cjs/polyface/PolyfaceQuery.js +9 -7
  210. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  211. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -1
  212. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js +3 -2
  213. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  214. package/lib/cjs/polyface/RangeTree/RangeTreeNode.d.ts +1 -1
  215. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js +2 -2
  216. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  217. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
  218. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js +14 -12
  219. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  220. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts +1 -1
  221. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -1
  222. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js +10 -6
  223. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  224. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js +4 -3
  225. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  226. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  227. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js +3 -5
  228. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  229. package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts +1 -1
  230. package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts.map +1 -1
  231. package/lib/cjs/polyface/multiclip/XYPointBuckets.js +4 -8
  232. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  233. package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -1
  234. package/lib/cjs/serialization/BGFBAccessors.js +1 -0
  235. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  236. package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
  237. package/lib/cjs/serialization/BGFBReader.js +37 -7
  238. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  239. package/lib/cjs/serialization/BGFBWriter.d.ts +4 -4
  240. package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
  241. package/lib/cjs/serialization/BGFBWriter.js +24 -40
  242. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  243. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  244. package/lib/cjs/serialization/IModelJsonSchema.js +9 -3
  245. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  246. package/lib/cjs/serialization/SerializationHelpers.d.ts +0 -3
  247. package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -1
  248. package/lib/cjs/serialization/SerializationHelpers.js +16 -7
  249. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  250. package/lib/cjs/solid/Box.d.ts +2 -2
  251. package/lib/cjs/solid/Box.d.ts.map +1 -1
  252. package/lib/cjs/solid/Box.js.map +1 -1
  253. package/lib/cjs/solid/Cone.d.ts +3 -2
  254. package/lib/cjs/solid/Cone.d.ts.map +1 -1
  255. package/lib/cjs/solid/Cone.js +4 -1
  256. package/lib/cjs/solid/Cone.js.map +1 -1
  257. package/lib/cjs/solid/LinearSweep.d.ts +1 -1
  258. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
  259. package/lib/cjs/solid/LinearSweep.js +1 -1
  260. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  261. package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
  262. package/lib/cjs/solid/RotationalSweep.js +1 -3
  263. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  264. package/lib/cjs/solid/TorusPipe.d.ts +4 -3
  265. package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
  266. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  267. package/lib/cjs/topology/ChainMerge.d.ts +4 -4
  268. package/lib/cjs/topology/ChainMerge.d.ts.map +1 -1
  269. package/lib/cjs/topology/ChainMerge.js +11 -1
  270. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  271. package/lib/cjs/topology/Graph.d.ts +2 -0
  272. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  273. package/lib/cjs/topology/Graph.js +5 -0
  274. package/lib/cjs/topology/Graph.js.map +1 -1
  275. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  276. package/lib/cjs/topology/HalfEdgeGraphSearch.js +2 -0
  277. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  278. package/lib/cjs/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -1
  279. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js +23 -16
  280. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  281. package/lib/cjs/topology/HalfEdgePositionDetail.d.ts +20 -9
  282. package/lib/cjs/topology/HalfEdgePositionDetail.d.ts.map +1 -1
  283. package/lib/cjs/topology/HalfEdgePositionDetail.js +17 -13
  284. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  285. package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  286. package/lib/cjs/topology/HalfEdgePriorityQueue.js +3 -1
  287. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  288. package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts +6 -2
  289. package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts.map +1 -1
  290. package/lib/cjs/topology/InsertAndRetriangulateContext.js +41 -35
  291. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  292. package/lib/cjs/topology/MaskManager.d.ts +7 -3
  293. package/lib/cjs/topology/MaskManager.d.ts.map +1 -1
  294. package/lib/cjs/topology/MaskManager.js +10 -4
  295. package/lib/cjs/topology/MaskManager.js.map +1 -1
  296. package/lib/cjs/topology/RegularizeFace.d.ts.map +1 -1
  297. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  298. package/lib/cjs/topology/Triangulation.d.ts +2 -1
  299. package/lib/cjs/topology/Triangulation.d.ts.map +1 -1
  300. package/lib/cjs/topology/Triangulation.js +12 -7
  301. package/lib/cjs/topology/Triangulation.js.map +1 -1
  302. package/lib/esm/Geometry.d.ts +7 -0
  303. package/lib/esm/Geometry.d.ts.map +1 -1
  304. package/lib/esm/Geometry.js +9 -0
  305. package/lib/esm/Geometry.js.map +1 -1
  306. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  307. package/lib/esm/bspline/BSplineCurve.js +2 -1
  308. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  309. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -1
  310. package/lib/esm/bspline/BSplineCurveOps.js +4 -1
  311. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  312. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -1
  313. package/lib/esm/bspline/BezierCurve3d.js +14 -4
  314. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  315. package/lib/esm/bspline/BezierCurve3dH.d.ts +2 -0
  316. package/lib/esm/bspline/BezierCurve3dH.d.ts.map +1 -1
  317. package/lib/esm/bspline/BezierCurve3dH.js +19 -3
  318. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  319. package/lib/esm/bspline/BezierCurveBase.d.ts +8 -2
  320. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  321. package/lib/esm/bspline/BezierCurveBase.js +10 -4
  322. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  323. package/lib/esm/clipping/AlternatingConvexClipTree.js +4 -4
  324. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  325. package/lib/esm/clipping/ClipPlane.d.ts +0 -3
  326. package/lib/esm/clipping/ClipPlane.d.ts.map +1 -1
  327. package/lib/esm/clipping/ClipPlane.js +9 -2
  328. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  329. package/lib/esm/clipping/ClipPrimitive.d.ts +59 -9
  330. package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -1
  331. package/lib/esm/clipping/ClipPrimitive.js +124 -55
  332. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  333. package/lib/esm/clipping/ClipUtils.js +1 -1
  334. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  335. package/lib/esm/clipping/ClipVector.d.ts.map +1 -1
  336. package/lib/esm/clipping/ClipVector.js +12 -8
  337. package/lib/esm/clipping/ClipVector.js.map +1 -1
  338. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +0 -2
  339. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -1
  340. package/lib/esm/clipping/ConvexClipPlaneSet.js +20 -19
  341. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  342. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +1 -1
  343. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -1
  344. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +4 -5
  345. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  346. package/lib/esm/core-geometry.d.ts +0 -1
  347. package/lib/esm/core-geometry.d.ts.map +1 -1
  348. package/lib/esm/core-geometry.js +0 -1
  349. package/lib/esm/core-geometry.js.map +1 -1
  350. package/lib/esm/curve/Arc3d.js +2 -2
  351. package/lib/esm/curve/Arc3d.js.map +1 -1
  352. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +12 -4
  353. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  354. package/lib/esm/curve/CurveChainWithDistanceIndex.js +53 -34
  355. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  356. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  357. package/lib/esm/curve/CurveCollection.js +13 -6
  358. package/lib/esm/curve/CurveCollection.js.map +1 -1
  359. package/lib/esm/curve/CurveCurve.js +1 -1
  360. package/lib/esm/curve/CurveCurve.js.map +1 -1
  361. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  362. package/lib/esm/curve/CurveFactory.js +13 -1
  363. package/lib/esm/curve/CurveFactory.js.map +1 -1
  364. package/lib/esm/curve/CurveLocationDetail.d.ts +12 -4
  365. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  366. package/lib/esm/curve/CurveLocationDetail.js +14 -5
  367. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  368. package/lib/esm/curve/CurvePrimitive.d.ts +5 -4
  369. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  370. package/lib/esm/curve/CurvePrimitive.js +7 -4
  371. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  372. package/lib/esm/curve/LineString3d.d.ts +25 -16
  373. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  374. package/lib/esm/curve/LineString3d.js +90 -72
  375. package/lib/esm/curve/LineString3d.js.map +1 -1
  376. package/lib/esm/curve/Path.d.ts +0 -3
  377. package/lib/esm/curve/Path.d.ts.map +1 -1
  378. package/lib/esm/curve/Path.js +9 -2
  379. package/lib/esm/curve/Path.js.map +1 -1
  380. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  381. package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  382. package/lib/esm/curve/Query/PlanarSubdivision.js +25 -31
  383. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  384. package/lib/esm/curve/Query/StrokeCountChain.d.ts +7 -1
  385. package/lib/esm/curve/Query/StrokeCountChain.d.ts.map +1 -1
  386. package/lib/esm/curve/Query/StrokeCountChain.js +27 -36
  387. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  388. package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -1
  389. package/lib/esm/curve/RegionMomentsXY.js +7 -1
  390. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  391. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  392. package/lib/esm/curve/RegionOps.js +8 -5
  393. package/lib/esm/curve/RegionOps.js.map +1 -1
  394. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  395. package/lib/esm/curve/RegionOpsClassificationSweeps.js +6 -6
  396. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  397. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
  398. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +4 -1
  399. package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
  400. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
  401. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +6 -1
  402. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  403. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +5 -21
  404. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  405. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +29 -73
  406. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  407. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +55 -13
  408. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  409. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +239 -111
  410. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  411. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +1 -1
  412. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  413. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +1 -4
  414. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  415. package/lib/esm/curve/spiral/DirectSpiral3d.js +9 -9
  416. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  417. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +11 -14
  418. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  419. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +18 -18
  420. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  421. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts +7 -1
  422. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
  423. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  424. package/lib/esm/geometry3d/Ellipsoid.d.ts +19 -7
  425. package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -1
  426. package/lib/esm/geometry3d/Ellipsoid.js +26 -11
  427. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  428. package/lib/esm/geometry3d/FrustumAnimation.d.ts.map +1 -1
  429. package/lib/esm/geometry3d/FrustumAnimation.js +11 -1
  430. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  431. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts +5 -1
  432. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  433. package/lib/esm/geometry3d/GrowableFloat64Array.js +11 -1
  434. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  435. package/lib/esm/geometry3d/GrowableXYArray.d.ts +1 -1
  436. package/lib/esm/geometry3d/GrowableXYArray.js +1 -1
  437. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  438. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +49 -8
  439. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
  440. package/lib/esm/geometry3d/GrowableXYZArray.js +90 -37
  441. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  442. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +100 -3
  443. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -1
  444. package/lib/esm/geometry3d/IndexedXYZCollection.js +125 -0
  445. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  446. package/lib/esm/geometry3d/Matrix3d.d.ts +10 -1
  447. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  448. package/lib/esm/geometry3d/Matrix3d.js +53 -34
  449. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  450. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +1 -1
  451. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  452. package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts +49 -2
  453. package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
  454. package/lib/esm/geometry3d/Point3dArrayCarrier.js +67 -9
  455. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  456. package/lib/esm/geometry3d/Point3dVector3d.d.ts +1 -1
  457. package/lib/esm/geometry3d/Point3dVector3d.js +1 -1
  458. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  459. package/lib/esm/geometry3d/PointStreaming.js +1 -1
  460. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  461. package/lib/esm/geometry3d/PolygonOps.d.ts +24 -32
  462. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  463. package/lib/esm/geometry3d/PolygonOps.js +147 -180
  464. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  465. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +5 -5
  466. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  467. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -1
  468. package/lib/esm/geometry3d/PolylineOps.js +13 -3
  469. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  470. package/lib/esm/geometry3d/Range.js.map +1 -1
  471. package/lib/esm/geometry3d/Ray3d.d.ts +0 -3
  472. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -1
  473. package/lib/esm/geometry3d/Ray3d.js +5 -1
  474. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  475. package/lib/esm/geometry3d/SortablePolygon.d.ts +2 -2
  476. package/lib/esm/geometry3d/SortablePolygon.d.ts.map +1 -1
  477. package/lib/esm/geometry3d/SortablePolygon.js +14 -18
  478. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  479. package/lib/esm/geometry3d/Transform.d.ts +8 -0
  480. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  481. package/lib/esm/geometry3d/Transform.js +15 -9
  482. package/lib/esm/geometry3d/Transform.js.map +1 -1
  483. package/lib/esm/numerics/ClusterableArray.d.ts +4 -2
  484. package/lib/esm/numerics/ClusterableArray.d.ts.map +1 -1
  485. package/lib/esm/numerics/ClusterableArray.js +6 -4
  486. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  487. package/lib/esm/numerics/Newton.d.ts +3 -1
  488. package/lib/esm/numerics/Newton.d.ts.map +1 -1
  489. package/lib/esm/numerics/Newton.js +5 -1
  490. package/lib/esm/numerics/Newton.js.map +1 -1
  491. package/lib/esm/polyface/AuxData.d.ts +1 -4
  492. package/lib/esm/polyface/AuxData.d.ts.map +1 -1
  493. package/lib/esm/polyface/AuxData.js +5 -1
  494. package/lib/esm/polyface/AuxData.js.map +1 -1
  495. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +3 -3
  496. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  497. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  498. package/lib/esm/polyface/Polyface.js +14 -16
  499. package/lib/esm/polyface/Polyface.js.map +1 -1
  500. package/lib/esm/polyface/PolyfaceBuilder.d.ts +84 -28
  501. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  502. package/lib/esm/polyface/PolyfaceBuilder.js +277 -217
  503. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  504. package/lib/esm/polyface/PolyfaceClip.d.ts +4 -3
  505. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
  506. package/lib/esm/polyface/PolyfaceClip.js +11 -4
  507. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  508. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  509. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  510. package/lib/esm/polyface/PolyfaceQuery.js +9 -7
  511. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  512. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.d.ts.map +1 -1
  513. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js +3 -2
  514. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  515. package/lib/esm/polyface/RangeTree/RangeTreeNode.d.ts +1 -1
  516. package/lib/esm/polyface/RangeTree/RangeTreeNode.js +2 -2
  517. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  518. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.d.ts.map +1 -1
  519. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js +14 -12
  520. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  521. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts +1 -1
  522. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -1
  523. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +10 -6
  524. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  525. package/lib/esm/polyface/multiclip/OffsetMeshContext.js +4 -3
  526. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  527. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -1
  528. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +3 -5
  529. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  530. package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts +1 -1
  531. package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts.map +1 -1
  532. package/lib/esm/polyface/multiclip/XYPointBuckets.js +4 -8
  533. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  534. package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -1
  535. package/lib/esm/serialization/BGFBAccessors.js +1 -0
  536. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  537. package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
  538. package/lib/esm/serialization/BGFBReader.js +37 -7
  539. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  540. package/lib/esm/serialization/BGFBWriter.d.ts +4 -4
  541. package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
  542. package/lib/esm/serialization/BGFBWriter.js +24 -40
  543. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  544. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  545. package/lib/esm/serialization/IModelJsonSchema.js +9 -3
  546. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  547. package/lib/esm/serialization/SerializationHelpers.d.ts +0 -3
  548. package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -1
  549. package/lib/esm/serialization/SerializationHelpers.js +16 -7
  550. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  551. package/lib/esm/solid/Box.d.ts +2 -2
  552. package/lib/esm/solid/Box.d.ts.map +1 -1
  553. package/lib/esm/solid/Box.js.map +1 -1
  554. package/lib/esm/solid/Cone.d.ts +3 -2
  555. package/lib/esm/solid/Cone.d.ts.map +1 -1
  556. package/lib/esm/solid/Cone.js +4 -1
  557. package/lib/esm/solid/Cone.js.map +1 -1
  558. package/lib/esm/solid/LinearSweep.d.ts +1 -1
  559. package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
  560. package/lib/esm/solid/LinearSweep.js +1 -1
  561. package/lib/esm/solid/LinearSweep.js.map +1 -1
  562. package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
  563. package/lib/esm/solid/RotationalSweep.js +1 -3
  564. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  565. package/lib/esm/solid/TorusPipe.d.ts +4 -3
  566. package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
  567. package/lib/esm/solid/TorusPipe.js.map +1 -1
  568. package/lib/esm/topology/ChainMerge.d.ts +4 -4
  569. package/lib/esm/topology/ChainMerge.d.ts.map +1 -1
  570. package/lib/esm/topology/ChainMerge.js +11 -1
  571. package/lib/esm/topology/ChainMerge.js.map +1 -1
  572. package/lib/esm/topology/Graph.d.ts +2 -0
  573. package/lib/esm/topology/Graph.d.ts.map +1 -1
  574. package/lib/esm/topology/Graph.js +5 -0
  575. package/lib/esm/topology/Graph.js.map +1 -1
  576. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
  577. package/lib/esm/topology/HalfEdgeGraphSearch.js +2 -0
  578. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  579. package/lib/esm/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -1
  580. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +23 -16
  581. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  582. package/lib/esm/topology/HalfEdgePositionDetail.d.ts +20 -9
  583. package/lib/esm/topology/HalfEdgePositionDetail.d.ts.map +1 -1
  584. package/lib/esm/topology/HalfEdgePositionDetail.js +17 -13
  585. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  586. package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -1
  587. package/lib/esm/topology/HalfEdgePriorityQueue.js +4 -2
  588. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  589. package/lib/esm/topology/InsertAndRetriangulateContext.d.ts +6 -2
  590. package/lib/esm/topology/InsertAndRetriangulateContext.d.ts.map +1 -1
  591. package/lib/esm/topology/InsertAndRetriangulateContext.js +41 -35
  592. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  593. package/lib/esm/topology/MaskManager.d.ts +7 -3
  594. package/lib/esm/topology/MaskManager.d.ts.map +1 -1
  595. package/lib/esm/topology/MaskManager.js +10 -4
  596. package/lib/esm/topology/MaskManager.js.map +1 -1
  597. package/lib/esm/topology/RegularizeFace.d.ts.map +1 -1
  598. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  599. package/lib/esm/topology/Triangulation.d.ts +2 -1
  600. package/lib/esm/topology/Triangulation.d.ts.map +1 -1
  601. package/lib/esm/topology/Triangulation.js +12 -7
  602. package/lib/esm/topology/Triangulation.js.map +1 -1
  603. package/package.json +3 -3
  604. package/lib/cjs/serialization/GeometrySamples.d.ts +0 -705
  605. package/lib/cjs/serialization/GeometrySamples.d.ts.map +0 -1
  606. package/lib/cjs/serialization/GeometrySamples.js +0 -2433
  607. package/lib/cjs/serialization/GeometrySamples.js.map +0 -1
  608. package/lib/esm/serialization/GeometrySamples.d.ts +0 -705
  609. package/lib/esm/serialization/GeometrySamples.d.ts.map +0 -1
  610. package/lib/esm/serialization/GeometrySamples.js +0 -2428
  611. package/lib/esm/serialization/GeometrySamples.js.map +0 -1
@@ -322,6 +322,13 @@ export declare class Geometry {
322
322
  * * [[smallMetricDistance]] is used if tolerance is `undefined`.
323
323
  */
324
324
  static isSameCoordinate(x: number, y: number, tolerance?: number): boolean;
325
+ /**
326
+ * Toleranced test for equivalent fractions.
327
+ * @param x first fraction to compare
328
+ * @param y second fraction to compare
329
+ * @param tolerance maximum difference between fractions considered equivalent, defaulting to [[smallFraction]].
330
+ */
331
+ static isSameFraction(x: number, y: number, tolerance?: number): boolean;
325
332
  /**
326
333
  * Boolean test for metric coordinate near-equality (i.e., if `x` and `y` are almost equal) using
327
334
  * `tolerance = toleranceFactor * smallMetricDistance`
@@ -1 +1 @@
1
- {"version":3,"file":"Geometry.d.ts","sourceRoot":"","sources":["../../src/Geometry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Geometry.d.ts","sourceRoot":"","sources":["../../src/Geometry.ts"],"names":[],"mappings":"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"}
@@ -216,6 +216,15 @@ class Geometry {
216
216
  d = -d;
217
217
  return d <= tolerance;
218
218
  }
219
+ /**
220
+ * Toleranced test for equivalent fractions.
221
+ * @param x first fraction to compare
222
+ * @param y second fraction to compare
223
+ * @param tolerance maximum difference between fractions considered equivalent, defaulting to [[smallFraction]].
224
+ */
225
+ static isSameFraction(x, y, tolerance = Geometry.smallFraction) {
226
+ return this.isSameCoordinate(x, y, tolerance);
227
+ }
219
228
  /**
220
229
  * Boolean test for metric coordinate near-equality (i.e., if `x` and `y` are almost equal) using
221
230
  * `tolerance = toleranceFactor * smallMetricDistance`
@@ -1 +1 @@
1
- {"version":3,"file":"Geometry.js","sourceRoot":"","sources":["../../src/Geometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\n\r\nimport { OrderedComparator } from \"@itwin/core-bentley\";\r\nimport { AngleSweep } from \"./geometry3d/AngleSweep\";\r\nimport { Point2d, Vector2d } from \"./geometry3d/Point2dVector2d\";\r\nimport { Point3d, Vector3d, XYZ } from \"./geometry3d/Point3dVector3d\";\r\nimport { XAndY, XYAndZ } from \"./geometry3d/XYZProps\";\r\nimport { Point4d } from \"./geometry4d/Point4d\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\n/**\r\n * Enumeration of the 6 possible orderings of XYZ axis order\r\n * * AxisOrder encodes handedness as well. There are 3 right-handed axis orderings (XYZ, YZX, ZXY) and 3 left-handed orderings (XZY, YXZ, ZYX).\r\n * * Given an axis ordering, the cross product of axis _i_ with axis _i+1_ yields axis _i+2_.\r\n * @public\r\n */\r\nexport enum AxisOrder {\r\n /** Right handed system, X then Y then Z */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n XYZ = 0,\r\n /** Right handed system, Y then Z then X */\r\n YZX = 1,\r\n /** Right handed system, Z then X then Y */\r\n ZXY = 2,\r\n /** Left handed system, X then Z then Y */\r\n XZY = 4,\r\n /** Left handed system, Y then X then Z */\r\n YXZ = 5,\r\n /** Left handed system, Z then Y then X */\r\n ZYX = 6,\r\n}\r\n/**\r\n * Enumeration of numeric indices of 3 axes AxisIndex.X, AxisIndex.Y, AxisIndex.Z\r\n * @public\r\n */\r\nexport enum AxisIndex {\r\n /** x axis is index 0 */\r\n X = 0,\r\n /** y axis is index 1 */\r\n Y = 1,\r\n /** 2 axis is index 2 */\r\n Z = 2,\r\n}\r\n/**\r\n * Standard views. Used in `Matrix3d.createStandardViewAxes(index: StandardViewIndex, invert: boolean)`\r\n * @public\r\n */\r\nexport enum StandardViewIndex {\r\n /** X to right, Y up */\r\n Top = 1,\r\n /** X to right, negative Y up */\r\n Bottom = 2,\r\n /** Negative Y to right, Z up */\r\n Left = 3,\r\n /** Y to right, Z up */\r\n Right = 4,\r\n /** X to right, Z up */\r\n Front = 5,\r\n /** Negative X to right, Z up */\r\n Back = 6,\r\n /** Isometric: view towards origin from (-1,-1,1) */\r\n Iso = 7,\r\n /** Right isometric: view towards origin from (1,-1,1) */\r\n RightIso = 8,\r\n}\r\n/**\r\n * Enumeration among choice for how a coordinate transformation should incorporate scaling.\r\n * @public\r\n */\r\nexport enum AxisScaleSelect {\r\n /** All axes of unit length. */\r\n Unit = 0,\r\n /** On each axis, the vector length matches the longest side of the range of the data. */\r\n LongestRangeDirection = 1,\r\n /** On each axis, the vector length matches he length of the corresponding edge of the range. */\r\n NonUniformRangeContainment = 2,\r\n}\r\n/**\r\n * Object with a radians value and its associated cosine and sine values.\r\n * @public\r\n */\r\nexport interface TrigValues {\r\n /** The cosine value */\r\n c: number;\r\n /** The sine value */\r\n s: number;\r\n /** The radians value */\r\n radians: number;\r\n}\r\n\r\n/**\r\n * Plane Evaluation methods.\r\n * * These provide the necessary queries to implement clipping operations without knowing if the plane in use\r\n * is a [[ClipPlane]], [[Plane3dByOriginAndUnitNormal]], [[Plane3dByOriginAndVectors]], [[Point4d]].\r\n * * The Plane3d class declares obligation to implement these methods, and\r\n * passes the obligation on to concrete implementations by declaring them as abstract members which the particular classes can implement.\r\n * * It is intended that this interface be deprecated because its implementation by [[Plane3d]] provides all of its functionality and allows more to be added.\r\n * @public\r\n */\r\nexport interface PlaneAltitudeEvaluator {\r\n /**\r\n * Return the altitude of the `point` from the plane.\r\n * @param point the point for evaluation\r\n */\r\n altitude(point: Point3d): number;\r\n /**\r\n * Return the altitude of the `point` from the plane, with the point supplied as simple x,y,z\r\n * @param x x coordinate of the point\r\n * @param y y coordinate of the point\r\n * @param z z coordinate of the point\r\n */\r\n altitudeXYZ(x: number, y: number, z: number): number;\r\n /**\r\n * Return the derivative of altitude with respect to motion along a `vector`.\r\n * @param vector the vector\r\n */\r\n velocity(vector: Vector3d): number;\r\n /**\r\n * Return the derivative of altitude with respect to motion along a `vector` given by components.\r\n * @param x x coordinate of the vector\r\n * @param y y coordinate of the vector\r\n * @param z z coordinate of the vector\r\n */\r\n velocityXYZ(x: number, y: number, z: number): number;\r\n /**\r\n * Return the weighted altitude\r\n * @param point xyzw data.\r\n */\r\n weightedAltitude(point: Point4d): number;\r\n /** x part of normal vector */\r\n normalX(): number;\r\n /** x part of normal vector */\r\n normalY(): number;\r\n /** x part of normal vector */\r\n normalZ(): number;\r\n}\r\n/**\r\n * Enumeration of possible locations of a point in the plane of a polygon.\r\n * @public\r\n */\r\nexport enum PolygonLocation {\r\n /** No location specified. */\r\n Unknown = 0,\r\n /** Point is at a vertex. */\r\n OnPolygonVertex = 1,\r\n /** Point is on an edge (but not a vertex). */\r\n OnPolygonEdgeInterior = 2,\r\n /** Point is strictly inside the polygon with unknown projection. */\r\n InsidePolygon = 3,\r\n /** Point is strictly inside the polygon and projects to a vertex. */\r\n InsidePolygonProjectsToVertex = 4,\r\n /** Point is strictly inside the polygon and projects to an edge (but not a vertex). */\r\n InsidePolygonProjectsToEdgeInterior = 5,\r\n /** Point is strictly outside the polygon with unknown projection. */\r\n OutsidePolygon = 6,\r\n /** Point is strictly outside the polygon and projects to a vertex. */\r\n OutsidePolygonProjectsToVertex = 7,\r\n /** Point is strictly outside the polygon and projects to an edge (but not a vertex). */\r\n OutsidePolygonProjectsToEdgeInterior = 8,\r\n}\r\n/**\r\n * Interface for `toJSON` and `setFromJSON` methods\r\n * @public\r\n */\r\nexport interface BeJSONFunctions {\r\n /**\r\n * Set content from a JSON object.\r\n * If the json object is undefined or unrecognized, always set a default value.\r\n */\r\n setFromJSON(json: any): void;\r\n /** Return a json object with this object's contents. */\r\n toJSON(): any;\r\n}\r\n/**\r\n * The properties for a JSON representation of an `Angle`.\r\n * * If AngleProps data is a number, it is in **degrees**.\r\n * * If AngleProps data is an object, it can have either degrees or radians.\r\n * @public\r\n */\r\nexport type AngleProps =\r\n { degrees: number } |\r\n { radians: number } |\r\n { _radians: number } |\r\n { _degrees: number } |\r\n number;\r\n/**\r\n * The properties for a JSON representation of an `AngleSweep`.\r\n * * The json data is always *start* and *end* angles as a pair in an array.\r\n * * If AngleSweepProps data is an array of two numbers, those are both angles in `degrees`.\r\n * * If AngleSweepProps data is an object with key `degrees`, then the corresponding value must be an array of\r\n * two numbers, the start and end angles in degrees.\r\n * * If the AngleSweepProps is an object with key `radians`, then the corresponding value must be an array of\r\n * two numbers, the start and end angles in radians.\r\n * @public\r\n */\r\nexport type AngleSweepProps =\r\n AngleSweep |\r\n { degrees: [number, number] } |\r\n { radians: [number, number] } |\r\n [number, number];\r\n/**\r\n* Interface for method with a clone operation.\r\n* @public\r\n* @deprecated in 4.4.0 - will not be removed until after 2026-06-13. Use ICloneable.\r\n*/\r\nexport interface Cloneable<T> {\r\n /** Required method to return a deep clone. */\r\n clone(): T | undefined;\r\n}\r\n/**\r\n * Interface for an object with a clone method.\r\n * @public\r\n */\r\nexport interface ICloneable<T> {\r\n /**\r\n * Return a deep clone of the instance.\r\n * @param result optional object to populate and return\r\n */\r\n clone(result?: T): T;\r\n}\r\n/** Options used for methods like [[Vector2d.isPerpendicularTo]] and [[Vector3d.isParallelTo]].\r\n * @public\r\n */\r\nexport interface PerpParallelOptions {\r\n /**\r\n * Squared radian tolerance for comparing the angle between two vectors.\r\n * Default: [[Geometry.smallAngleRadiansSquared]].\r\n */\r\n radianSquaredTol?: number;\r\n /**\r\n * Squared distance tolerance for detecting equal points.\r\n * Default: [[Geometry.smallMetricDistanceSquared]].\r\n */\r\n distanceSquaredTol?: number;\r\n}\r\n\r\n/**\r\n * Class containing static methods for typical numeric operations.\r\n * * Experimentally, methods like Geometry.hypotenuse are observed to be faster than the system intrinsics.\r\n * * This is probably due to\r\n * * Fixed length arg lists\r\n * * strongly typed parameters\r\n * @public\r\n */\r\nexport class Geometry {\r\n /** Tolerance for small distances in metric coordinates. */\r\n public static readonly smallMetricDistance = 1.0e-6;\r\n /** Square of [[smallMetricDistance]]. */\r\n public static readonly smallMetricDistanceSquared = 1.0e-12;\r\n /** Tolerance for small angle measured in radians. */\r\n public static readonly smallAngleRadians = 1.0e-12;\r\n /** Square of [[smallAngleRadians]]. */\r\n public static readonly smallAngleRadiansSquared = 1.0e-24;\r\n /** Tolerance for small angle measured in degrees. */\r\n public static readonly smallAngleDegrees = 5.7e-11;\r\n /** Tolerance for small angle measured in arc-seconds. */\r\n public static readonly smallAngleSeconds = 2e-7;\r\n /** Numeric value that may be considered zero for fractions between 0 and 1. */\r\n public static readonly smallFraction = 1.0e-10;\r\n /** Tight tolerance near machine precision (unitless). Useful for snapping values, e.g., to 0 or 1. */\r\n public static readonly smallFloatingPoint = 1.0e-15;\r\n /** Radians value for full circle 2PI radians minus [[smallAngleRadians]]. */\r\n public static readonly fullCircleRadiansMinusSmallAngle = 2.0 * Math.PI - Geometry.smallAngleRadians;\r\n /**\r\n * Numeric value that may be considered large for a ratio of numbers.\r\n * * Note that the allowed result value is vastly larger than 1.\r\n */\r\n public static readonly largeFractionResult = 1.0e10;\r\n /**\r\n * Numeric value that may considered large for numbers expected to be coordinates.\r\n * * This allows larger results than [[largeFractionResult]].\r\n */\r\n public static readonly largeCoordinateResult = 1.0e13;\r\n /**\r\n * Numeric value that may considered infinite for metric coordinates.\r\n * @deprecated in 4.9.0 - will not be removed until after 2026-06-13. Use [[largeCoordinateResult]].\r\n * * This coordinate should be used only as a placeholder indicating \"at infinity\" -- computing actual\r\n * points at this coordinate invites numerical problems.\r\n */\r\n public static readonly hugeCoordinate = 1.0e12;\r\n /** Test if the absolute value of x is at least [[largeCoordinateResult]]. */\r\n public static isLargeCoordinateResult(x: number): boolean {\r\n return x >= this.largeCoordinateResult || x <= -this.largeCoordinateResult;\r\n }\r\n /**\r\n * Test if the absolute value of x is at least [[largeCoordinateResult]].\r\n * @deprecated in 4.9.0 - will not be removed until after 2026-06-13. Use [[isLargeCoordinateResult]].\r\n */\r\n public static isHugeCoordinate(x: number): boolean {\r\n return Geometry.isLargeCoordinateResult(x);\r\n }\r\n /** Test if a number is odd */\r\n public static isOdd(x: number): boolean {\r\n return (x & (0x01)) === 1; // bitwise operation\r\n }\r\n /**\r\n * Correct a small distance.\r\n * @param distance metric value to test\r\n * @param replacement value to return if `distance` is too small. Default is zero.\r\n * @returns `distance` if it is defined and has absolute value greater than [[smallMetricDistance]];\r\n * otherwise returns `replacement`\r\n */\r\n public static correctSmallMetricDistance(distance: number | undefined, replacement: number = 0.0): number {\r\n if (distance === undefined || Math.abs(distance) <= Geometry.smallMetricDistance) {\r\n return replacement;\r\n }\r\n return distance;\r\n }\r\n /**\r\n * Correct a small fraction.\r\n * @param fraction fraction to test\r\n * @param replacement value to return if `fraction` is too small. Default is zero.\r\n * @returns `fraction` if it is defined and has absolute value greater than [[Geometry.smallFraction]];\r\n * otherwise returns `replacement`\r\n */\r\n public static correctSmallFraction(fraction: number | undefined, replacement: number = 0.0): number {\r\n if (fraction === undefined || Math.abs(fraction) <= Geometry.smallFraction) {\r\n return replacement;\r\n }\r\n return fraction;\r\n }\r\n /**\r\n * Compute the inverse of `distance`, checking for safe division.\r\n * @returns `1/distance` if the absolute value of `distance` exceeds [[smallMetricDistance]];\r\n * otherwise returns `undefined`.\r\n */\r\n public static inverseMetricDistance(distance: number): number | undefined {\r\n return (Math.abs(distance) <= Geometry.smallMetricDistance) ? undefined : 1.0 / distance;\r\n }\r\n /**\r\n * Return the inverse of `distanceSquared`, checking for safe division.\r\n * @returns `1/distanceSquared` if the absolute value of `distanceSquared` exceeds [[smallMetricDistanceSquared]];\r\n * otherwise returns `undefined`.\r\n */\r\n public static inverseMetricDistanceSquared(distanceSquared: number): number | undefined {\r\n return (Math.abs(distanceSquared) <= Geometry.smallMetricDistanceSquared) ? undefined : 1.0 / distanceSquared;\r\n }\r\n /**\r\n * Boolean test for metric coordinate near-equality (i.e., if `x` and `y` are almost equal) using `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameCoordinate(x: number, y: number, tolerance: number = Geometry.smallMetricDistance): boolean {\r\n let d = x - y;\r\n if (d < 0)\r\n d = -d;\r\n return d <= tolerance;\r\n }\r\n /**\r\n * Boolean test for metric coordinate near-equality (i.e., if `x` and `y` are almost equal) using\r\n * `tolerance = toleranceFactor * smallMetricDistance`\r\n * */\r\n public static isSameCoordinateWithToleranceFactor(x: number, y: number, toleranceFactor: number): boolean {\r\n return Geometry.isSameCoordinate(x, y, toleranceFactor * Geometry.smallMetricDistance);\r\n }\r\n /**\r\n * Boolean test for metric coordinate pair near-equality (i.e., if `x0` and `x1` are almost equal\r\n * and `y0` and `y1` are almost equal) using `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameCoordinateXY(\r\n x0: number, y0: number, x1: number, y1: number, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n let d = x1 - x0;\r\n if (d < 0)\r\n d = -d;\r\n if (d > tolerance)\r\n return false;\r\n d = y1 - y0;\r\n if (d < 0)\r\n d = -d;\r\n return d <= tolerance;\r\n }\r\n /**\r\n * Boolean test for squared metric coordinate near-equality (i.e., if `sqrt(x)` and `sqrt(y)` are\r\n * almost equal) using `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameCoordinateSquared(\r\n x: number, y: number, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return Math.abs(Math.sqrt(x) - Math.sqrt(y)) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small `dataA.distance(dataB)` within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSamePoint3d(\r\n dataA: Point3d, dataB: Point3d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xyz-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n * * Note that Point3d and Vector3d are both derived from XYZ, so this method tolerates mixed types.\r\n */\r\n public static isSameXYZ(\r\n dataA: XYZ, dataB: XYZ, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xy-distance (ignoring z) within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSamePoint3dXY(\r\n dataA: Point3d, dataB: Point3d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distanceXY(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xyz-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameVector3d(\r\n dataA: Vector3d, dataB: Vector3d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xy-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSamePoint2d(\r\n dataA: Point2d, dataB: Point2d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xy-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameVector2d(\r\n dataA: Vector2d, dataB: Vector2d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Lexical comparison of (a.x, a.y) and (b.x, b.y) with x as first test and y as second (z is ignored).\r\n * * This is appropriate for a horizontal sweep in the plane.\r\n */\r\n public static lexicalXYLessThan(a: XAndY, b: XAndY): -1 | 0 | 1 {\r\n if (a.x < b.x)\r\n return -1;\r\n else if (a.x > b.x)\r\n return 1;\r\n if (a.y < b.y)\r\n return -1;\r\n else if (a.y > b.y)\r\n return 1;\r\n return 0;\r\n }\r\n /**\r\n * Lexical comparison of (a.x, a.y) and (b.x, b.y) with y as first test and x as second (z is ignored).\r\n * * This is appropriate for a vertical sweep in the plane.\r\n */\r\n public static lexicalYXLessThan(a: XAndY, b: XAndY): -1 | 0 | 1 {\r\n if (a.y < b.y)\r\n return -1;\r\n else if (a.y > b.y)\r\n return 1;\r\n if (a.x < b.x)\r\n return -1;\r\n else if (a.x > b.x)\r\n return 1;\r\n return 0;\r\n }\r\n /** Lexical comparison of (a.x, a.y, a.z) and (b.x, b.y, b.z) with x as first test, y as second, and z as third. */\r\n public static lexicalXYZLessThan(a: XYAndZ, b: XYAndZ): -1 | 0 | 1 {\r\n if (a.x < b.x)\r\n return -1;\r\n else if (a.x > b.x)\r\n return 1;\r\n if (a.y < b.y)\r\n return -1;\r\n else if (a.y > b.y)\r\n return 1;\r\n if (a.z < b.z)\r\n return -1;\r\n else if (a.z > b.z)\r\n return 1;\r\n return 0;\r\n }\r\n /**\r\n * Constructor for a lexical comparison with tolerance (x then y then z).\r\n * @param distanceTol tolerance for comparing coordinates. Default value is [[Geometry.smallMetricDistance]].\r\n * @returns comparison function useful for ordered map callbacks.\r\n */\r\n public static compareXYZ(distanceTol: number = Geometry.smallMetricDistance): OrderedComparator<XYAndZ> {\r\n return (p0: XYAndZ, p1: XYAndZ): -1 | 0 | 1 => {\r\n if (XYAndZ.almostEqual(p0, p1, distanceTol))\r\n return 0;\r\n if (!Geometry.isSameCoordinate(p0.x, p1.x, distanceTol)) {\r\n if (p0.x < p1.x)\r\n return -1;\r\n if (p0.x > p1.x)\r\n return 1;\r\n }\r\n if (!Geometry.isSameCoordinate(p0.y, p1.y, distanceTol)) {\r\n if (p0.y < p1.y)\r\n return -1;\r\n if (p0.y > p1.y)\r\n return 1;\r\n }\r\n if (!Geometry.isSameCoordinate(p0.z, p1.z, distanceTol)) {\r\n if (p0.z < p1.z)\r\n return -1;\r\n if (p0.z > p1.z)\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n }\r\n /**\r\n * Constructor for a lexical comparison with tolerance (x then y).\r\n * @param distanceTol tolerance for comparing coordinates. Default value is [[Geometry.smallMetricDistance]].\r\n * @returns comparison function useful for ordered map callbacks.\r\n */\r\n public static compareXY(distanceTol: number = Geometry.smallMetricDistance): OrderedComparator<XAndY> {\r\n return (p0: XAndY, p1: XAndY): -1 | 0 | 1 => {\r\n if (XAndY.almostEqual(p0, p1, distanceTol))\r\n return 0;\r\n if (!Geometry.isSameCoordinate(p0.x, p1.x, distanceTol)) {\r\n if (p0.x < p1.x)\r\n return -1;\r\n if (p0.x > p1.x)\r\n return 1;\r\n }\r\n if (!Geometry.isSameCoordinate(p0.y, p1.y, distanceTol)) {\r\n if (p0.y < p1.y)\r\n return -1;\r\n if (p0.y > p1.y)\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n }\r\n /**\r\n * Test if `value` is at most [[smallFraction]] in absolute value.\r\n * * This is appropriate if `value` is known to be a fraction.\r\n */\r\n public static isSmallRelative(value: number): boolean {\r\n return Math.abs(value) <= Geometry.smallFraction;\r\n }\r\n /** Test if `value` is at most [[smallAngleRadians]] in absolute value. */\r\n public static isSmallAngleRadians(value: number): boolean {\r\n return Math.abs(value) <= Geometry.smallAngleRadians;\r\n }\r\n /** Test if `value` is at most [[smallAngleRadiansSquared]] in absolute value. */\r\n public static isSmallAngleRadiansSquared(value: number): boolean {\r\n return Math.abs(value) <= Geometry.smallAngleRadiansSquared;\r\n }\r\n /**\r\n * Returns `true` if both values are `undefined` or if both are defined and almost equal within tolerance.\r\n * If one is `undefined` and the other is not, then `false` is returned.\r\n */\r\n public static isAlmostEqualOptional(a: number | undefined, b: number | undefined, tolerance: number): boolean {\r\n if (a !== undefined && b !== undefined) {\r\n if (Math.abs(a - b) > tolerance)\r\n return false;\r\n } else {\r\n if (a !== undefined || b !== undefined)\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Toleranced equality test.\r\n * @param tolerance _relative_ tolerance. Default value is [[smallAngleRadians]].\r\n * @returns true if and only if `a` and `b` are almost equal.\r\n */\r\n public static isAlmostEqualNumber(a: number, b: number, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n const sumAbs = 1.0 + Math.abs(a) + Math.abs(b);\r\n return Math.abs(a - b) <= tolerance * sumAbs;\r\n }\r\n /**\r\n * Toleranced test for equality to at least one of two numbers.\r\n * @param tolerance _relative_ tolerance. Default value is [[smallAngleRadians]].\r\n * @returns true if and only if `a` and `b` are almost equal, or `a` and `c` are almost equal.\r\n */\r\n public static isAlmostEqualEitherNumber(a: number, b: number, c: number, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n return this.isAlmostEqualNumber(a, b, tolerance) || this.isAlmostEqualNumber(a, c, tolerance);\r\n }\r\n /**\r\n * Toleranced test for equality to any value in `values`.\r\n * @param a value to test\r\n * @param values array of values to test against, or an object that provides the i_th value, where 0 <= i < length.\r\n * @param tolerance _relative_ tolerance. Default value is [[smallAngleRadians]].\r\n * @returns true if and only if `a` is almost equal to at least one value supplied by `iterator`.\r\n */\r\n public static isAlmostEqualAnyNumber(a: number, values: number[] | { iter: (i: number) => number, length: number }, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n const value = Array.isArray(values) ? (i: number) => values[i] : values.iter;\r\n for (let i = 0; i < values.length; i++)\r\n if (this.isAlmostEqualNumber(a, value(i), tolerance))\r\n return true;\r\n return false;\r\n }\r\n /**\r\n * Toleranced equality test for xy points.\r\n * @param a first point\r\n * @param b second point\r\n * @param tolerance _relative_ coordinate tolerance. Default value is [[smallAngleRadians]].\r\n */\r\n public static isAlmostEqualXAndY(a: XAndY, b: XAndY, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n const tol = tolerance * (1.0 + Math.abs(a.x) + Math.abs(b.x) + Math.abs(a.y) + Math.abs(b.y));\r\n return (Math.abs(a.x - b.x) <= tol) && (Math.abs(a.y - b.y) <= tol);\r\n }\r\n /**\r\n * Test if a distance is smaller than `tolerance` (or equal).\r\n * @param tolerance distance tolerance. Default value is [[smallMetricDistance]].\r\n */\r\n public static isDistanceWithinTol(distance: number, tolerance: number = Geometry.smallMetricDistance): boolean {\r\n return Math.abs(distance) <= tolerance;\r\n }\r\n /** Test if a distance is smaller than [[smallMetricDistance]] (or equal). */\r\n public static isSmallMetricDistance(distance: number): boolean {\r\n return Math.abs(distance) <= Geometry.smallMetricDistance;\r\n }\r\n /** Test if a squared distance is smaller than [[smallMetricDistanceSquared]] (or equal). */\r\n public static isSmallMetricDistanceSquared(distanceSquared: number): boolean {\r\n return Math.abs(distanceSquared) <= Geometry.smallMetricDistanceSquared;\r\n }\r\n /**\r\n * Return `axis modulo 3` with proper handling of negative indices\r\n * ..., -3:x, -2:y, -1:z, 0:x, 1:y, 2:z, 3:x, 4:y, 5:z, 6:x, 7:y, 8:z, ...\r\n */\r\n public static cyclic3dAxis(axis: number): number {\r\n /* Direct test for the most common cases to avoid more expensive modulo operation */\r\n if (axis >= 0) {\r\n if (axis < 3)\r\n return axis;\r\n if (axis < 6)\r\n return axis - 3;\r\n return axis % 3;\r\n }\r\n const j = axis + 3;\r\n if (j >= 0)\r\n return j;\r\n return 2 - ((-axis - 1) % 3);\r\n }\r\n /**\r\n * Return the `AxisOrder` for which `axisIndex` is the first named axis.\r\n * * `axisIndex === 0` returns `AxisOrder.XYZ`\r\n * * `axisIndex === 1` returns `AxisOrder.YZX`\r\n * * `axisIndex === 2` returns `AxisOrder.ZXY`\r\n */\r\n public static axisIndexToRightHandedAxisOrder(axisIndex: AxisIndex): AxisOrder {\r\n if (axisIndex === 0)\r\n return AxisOrder.XYZ;\r\n if (axisIndex === 1)\r\n return AxisOrder.YZX;\r\n if (axisIndex === 2)\r\n return AxisOrder.ZXY;\r\n return Geometry.axisIndexToRightHandedAxisOrder(Geometry.cyclic3dAxis(axisIndex));\r\n }\r\n /** Return the largest signed value among `a`, `b`, and `c` */\r\n public static maxXYZ(a: number, b: number, c: number): number {\r\n let max = a;\r\n if (b > max)\r\n max = b;\r\n if (c > max)\r\n max = c;\r\n return max;\r\n }\r\n /** Return the smallest signed value among `a`, `b`, and `c` */\r\n public static minXYZ(a: number, b: number, c: number): number {\r\n let min = a;\r\n if (b < min)\r\n min = b;\r\n if (c < min)\r\n min = c;\r\n return min;\r\n }\r\n /** Return the largest signed value among `a` and `b` */\r\n public static maxXY(a: number, b: number): number {\r\n let max = a;\r\n if (b > max)\r\n max = b;\r\n return max;\r\n }\r\n /** Return the smallest signed value among `a` and `b` */\r\n public static minXY(a: number, b: number): number {\r\n let min = a;\r\n if (b < min)\r\n min = b;\r\n return min;\r\n }\r\n /** Return the largest absolute value among `x`, `y`, and `z` */\r\n public static maxAbsXYZ(x: number, y: number, z: number): number {\r\n return Geometry.maxXYZ(Math.abs(x), Math.abs(y), Math.abs(z));\r\n }\r\n /** Return the largest absolute value among `x` and `y` */\r\n public static maxAbsXY(x: number, y: number): number {\r\n return Geometry.maxXY(Math.abs(x), Math.abs(y));\r\n }\r\n /** Return the largest absolute distance from `a` to either of `b0` or `b1` */\r\n public static maxAbsDiff(a: number, b0: number, b1: number): number {\r\n return Math.max(Math.abs(a - b0), Math.abs(a - b1));\r\n }\r\n /**\r\n * Examine the sign of `x`.\r\n * * If `x` is negative, return `outNegative`\r\n * * If `x` is true zero, return `outZero`\r\n * * If `x` is positive, return `outPositive`\r\n */\r\n public static split3WaySign(x: number, outNegative: number, outZero: number, outPositive: number): number {\r\n if (x < 0)\r\n return outNegative;\r\n if (x > 0.0)\r\n return outPositive;\r\n return outZero;\r\n }\r\n /**\r\n * Examine the value (particularly sign) of x.\r\n * * If x is negative, return -1\r\n * * If x is true zero, return 0\r\n * * If x is positive, return 1\r\n */\r\n public static split3Way01(x: number, tolerance: number = Geometry.smallMetricDistance): -1 | 0 | 1 {\r\n if (x > tolerance)\r\n return 1;\r\n if (x < -tolerance)\r\n return -1;\r\n return 0;\r\n }\r\n /** Return the square of x */\r\n public static square(x: number): number {\r\n return x * x;\r\n }\r\n /**\r\n * Return the hypotenuse (i.e., `sqrt(x*x + y*y)`).\r\n * * This is much faster than `Math.hypot(x,y)`.\r\n */\r\n public static hypotenuseXY(x: number, y: number): number {\r\n return Math.sqrt(x * x + y * y);\r\n }\r\n /** Return the squared hypotenuse (i.e., `x*x + y*y`). */\r\n public static hypotenuseSquaredXY(x: number, y: number): number {\r\n return x * x + y * y;\r\n }\r\n /**\r\n * Return the hypotenuse (i.e., `sqrt(x*x + y*y + z*z)`).\r\n * * This is much faster than `Math.hypot(x,y,z)`.\r\n */\r\n public static hypotenuseXYZ(x: number, y: number, z: number): number {\r\n return Math.sqrt(x * x + y * y + z * z);\r\n }\r\n /** Return the squared hypotenuse (i.e., `x*x + y*y + z*z`). */\r\n public static hypotenuseSquaredXYZ(x: number, y: number, z: number): number {\r\n return x * x + y * y + z * z;\r\n }\r\n /**\r\n * Return the full 4d hypotenuse (i.e., `sqrt(x*x + y*y + z*z + w*w)`).\r\n * * This is much faster than `Math.hypot(x,y,z,w)`.\r\n */\r\n public static hypotenuseXYZW(x: number, y: number, z: number, w: number): number {\r\n return Math.sqrt(x * x + y * y + z * z + w * w);\r\n }\r\n /** Return the squared hypotenuse (i.e., `x*x + y*y + z*z + w*w`). */\r\n public static hypotenuseSquaredXYZW(x: number, y: number, z: number, w: number): number {\r\n return x * x + y * y + z * z + w * w;\r\n }\r\n /**\r\n * Return the distance between xy points given as numbers.\r\n * @param x0 x coordinate of point 0\r\n * @param y0 y coordinate of point 0\r\n * @param x1 x coordinate of point 1\r\n * @param y1 y coordinate of point 1\r\n */\r\n public static distanceXYXY(x0: number, y0: number, x1: number, y1: number): number {\r\n return Geometry.hypotenuseXY(x1 - x0, y1 - y0);\r\n }\r\n /**\r\n * Return the squared distance between xy points given as numbers.\r\n * @param x0 x coordinate of point 0\r\n * @param y0 y coordinate of point 0\r\n * @param x1 x coordinate of point 1\r\n * @param y1 y coordinate of point 1\r\n */\r\n public static distanceSquaredXYXY(x0: number, y0: number, x1: number, y1: number): number {\r\n return Geometry.hypotenuseSquaredXY(x1 - x0, y1 - y0);\r\n }\r\n /**\r\n * Return the distance between xyz points given as numbers.\r\n * @param x0 x coordinate of point 0\r\n * @param y0 y coordinate of point 0\r\n * @param z0 z coordinate of point 0\r\n * @param x1 x coordinate of point 1\r\n * @param y1 y coordinate of point 1\r\n * @param z1 z coordinate of point 1\r\n */\r\n public static distanceXYZXYZ(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number): number {\r\n return Geometry.hypotenuseXYZ(x1 - x0, y1 - y0, z1 - z0);\r\n }\r\n /**\r\n * Returns the triple product of 3 vectors provided as x,y,z number sequences.\r\n * * The triple product is the determinant of the 3x3 matrix with the 9 numbers (3 vectors placed in 3 rows).\r\n * * The triple product is positive if the 3 vectors form a right handed coordinate system.\r\n * * The triple product is negative if the 3 vectors form a left handed coordinate system.\r\n * * Treating the 9 numbers as 3 vectors U, V, W, any of these formulas gives the same result:\r\n * * U dot (V cross W)\r\n * * V dot (W cross U)\r\n * * W dot (U cross V)\r\n * * -U dot (W cross V)\r\n * * -V dot (U cross W)\r\n * * -W dot (V cross U)\r\n * * Note the negative in the last 3 formulas. Reversing cross product order changes the sign.\r\n * * The triple product is 6 times the (signed) volume of the tetrahedron with the three vectors as edges from a\r\n * common vertex.\r\n */\r\n public static tripleProduct(\r\n ux: number, uy: number, uz: number,\r\n vx: number, vy: number, vz: number,\r\n wx: number, wy: number, wz: number,\r\n ): number {\r\n return ux * (vy * wz - vz * wy)\r\n + uy * (vz * wx - vx * wz)\r\n + uz * (vx * wy - vy * wx);\r\n }\r\n /** Returns the determinant of the 4x4 matrix unrolled as the 16 parameters */\r\n public static determinant4x4(\r\n xx: number, xy: number, xz: number, xw: number,\r\n yx: number, yy: number, yz: number, yw: number,\r\n zx: number, zy: number, zz: number, zw: number,\r\n wx: number, wy: number, wz: number, ww: number,\r\n ): number {\r\n return xx * this.tripleProduct(yy, yz, yw, zy, zz, zw, wy, wz, ww)\r\n - yx * this.tripleProduct(xy, xz, xw, zy, zz, zw, wy, wz, ww)\r\n + zx * this.tripleProduct(xy, xz, xw, yy, yz, yw, wy, wz, ww)\r\n - wx * this.tripleProduct(xy, xz, xw, yy, yz, yw, zy, zz, zw);\r\n }\r\n /**\r\n * Returns the determinant of 3x3 matrix with first and second rows created from the 3 xy points and the third\r\n * row created from the 3 numbers:\r\n * [columnA.x columnB.x columnC.x]\r\n * [columnA.y columnB.y columnC.y]\r\n * [ weightA weightB weightC ]\r\n */\r\n public static tripleProductXYW(\r\n columnA: XAndY, weightA: number,\r\n columnB: XAndY, weightB: number,\r\n columnC: XAndY, weightC: number,\r\n ): number {\r\n return Geometry.tripleProduct(\r\n columnA.x, columnB.x, columnC.x,\r\n columnA.y, columnB.y, columnC.y,\r\n weightA, weightB, weightC,\r\n );\r\n }\r\n /**\r\n * Returns the determinant of 3x3 matrix columns created by the given `Point4d` ignoring the z part:\r\n * [columnA.x columnB.x columnC.x]\r\n * [columnA.y columnB.y columnC.y]\r\n * [columnA.w columnB.w columnC.w]\r\n */\r\n public static tripleProductPoint4dXYW(columnA: Point4d, columnB: Point4d, columnC: Point4d): number {\r\n return Geometry.tripleProduct(\r\n columnA.x, columnB.x, columnC.x,\r\n columnA.y, columnB.y, columnC.y,\r\n columnA.w, columnB.w, columnC.w,\r\n );\r\n }\r\n /**\r\n * 2D cross product of vectors with the vectors presented as numbers.\r\n * * Sign of 2d cross product is positive <=> sweeping from first vector to second vector is ccw orientation.\r\n * * Sign of 2d cross product is negative <=> sweeping from first vector to second vector is clockwise orientation.\r\n * * 2d cross product is 0 <=> parallel/antiparallel vectors.\r\n */\r\n public static crossProductXYXY(ux: number, uy: number, vx: number, vy: number): number {\r\n return ux * vy - uy * vx;\r\n }\r\n /** 3D cross product of vectors with the vectors presented as numbers. */\r\n public static crossProductXYZXYZ(\r\n ux: number, uy: number, uz: number, vx: number, vy: number, vz: number, result?: Vector3d,\r\n ): Vector3d {\r\n return Vector3d.create(\r\n uy * vz - uz * vy,\r\n uz * vx - ux * vz,\r\n ux * vy - uy * vx,\r\n result,\r\n );\r\n }\r\n /**\r\n * 2D cross product of vectors with the vectors presented with common origin point, and two target points.\r\n * @see crossProductXYXY for interpretations of the result.\r\n */\r\n public static crossProductToPointsXY(origin: XAndY, target0: XAndY, target1: XAndY): number {\r\n return this.crossProductXYXY(target0.x - origin.x, target0.y - origin.y, target1.x - origin.x, target1.y - origin.y);\r\n }\r\n /** Magnitude of 3D cross product of vectors with the vectors presented as numbers. */\r\n public static crossProductMagnitude(\r\n ux: number, uy: number, uz: number, vx: number, vy: number, vz: number,\r\n ): number {\r\n return Geometry.hypotenuseXYZ(\r\n uy * vz - uz * vy,\r\n uz * vx - ux * vz,\r\n ux * vy - uy * vx,\r\n );\r\n }\r\n /**\r\n * 2D dot product of vectors with the vectors presented as numbers.\r\n * * Sign of dot product is positive <=> vectorA points into the same half-space as vectorB.\r\n * * Sign of dot product is negative <=> vectorA points into opposite half-space as vectorB.\r\n * * Dot product is 0 <=> perpendicular vectors.\r\n * * **Note:** half-space is defined in terms of a vector, by the perpendicular plane at its origin (it splits\r\n * the universe into two halves).\r\n */\r\n public static dotProductXYXY(ux: number, uy: number, vx: number, vy: number): number {\r\n return ux * vx + uy * vy;\r\n }\r\n /** 3D dot product of vectors with the vectors presented as numbers. */\r\n public static dotProductXYZXYZ(ux: number, uy: number, uz: number, vx: number, vy: number, vz: number): number {\r\n return ux * vx + uy * vy + uz * vz;\r\n }\r\n /**\r\n * Return the mean curvature for two radii.\r\n * * Curvature is the reciprocal of radius.\r\n * * 0 radius implies 0 curvature.\r\n * @param r0 first radius\r\n * @param r1 second radius\r\n */\r\n public static meanCurvatureOfRadii(r0: number, r1: number): number {\r\n return 0.5 * (this.safeDivideFraction(1, r0, 0) + this.safeDivideFraction(1, r1, 0));\r\n }\r\n /**\r\n * Returns curvature from the first and second derivative vectors.\r\n * * If U is the first derivative and V is the second derivative, the curvature is defined as:\r\n * * `|| U x V || / || U ||^3`.\r\n * * Math details can be found at https://en.wikipedia.org/wiki/Curvature#General_expressions\r\n * @param ux first derivative x component\r\n * @param uy first derivative y component\r\n * @param uz first derivative z component\r\n * @param vx second derivative x component\r\n * @param vy second derivative y component\r\n * @param vz second derivative z component\r\n */\r\n public static curvatureMagnitude(\r\n ux: number, uy: number, uz: number,\r\n vx: number, vy: number, vz: number,\r\n ): number {\r\n let q = uy * vz - uz * vy;\r\n let sum = q * q;\r\n q = uz * vx - ux * vz;\r\n sum += q * q;\r\n q = ux * vy - uy * vx;\r\n sum += q * q;\r\n const magUxV = Math.sqrt(sum);\r\n const magU = Math.sqrt(ux * ux + uy * uy + uz * uz);\r\n const magUCubed = magU * magU * magU;\r\n if (magUCubed > Geometry.smallAngleRadians * magUxV)\r\n return magUxV / magUCubed;\r\n return 0;\r\n }\r\n /**\r\n * Clamp to (min(a,b), max(a,b)).\r\n * * Always returns a number between `a` and `b`.\r\n * @param value value to clamp\r\n * @param a smallest allowed output if `a < b` or largest allowed output if `a > b`\r\n * @param b largest allowed output if `a < b` or smallest allowed output if `a > b`\r\n */\r\n public static clampToStartEnd(value: number, a: number, b: number): number {\r\n if (a > b)\r\n return Geometry.clampToStartEnd(value, b, a);\r\n if (value < a)\r\n return a;\r\n if (b < value)\r\n return b;\r\n return value;\r\n }\r\n /**\r\n * Clamp value to (min, max) with no test for order of (min, max).\r\n * * Always returns a number between `min` and `max`.\r\n * @param value value to clamp\r\n * @param min smallest allowed output\r\n * @param max largest allowed output\r\n */\r\n public static clamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, value));\r\n }\r\n /** If given a `value`, return it. If given `undefined`, return `defaultValue`. */\r\n public static resolveNumber(value: number | undefined, defaultValue: number = 0): number {\r\n return value !== undefined ? value : defaultValue;\r\n }\r\n /** If given a `value`, return it. If given `undefined`, return `defaultValue`. */\r\n public static resolveValue<T>(value: T | undefined, defaultValue: T): T {\r\n return value !== undefined ? value : defaultValue;\r\n }\r\n /** If given `value` matches the `targetValue`, return `undefined`. Otherwise return the `value`. */\r\n public static resolveToUndefined<T>(value: T | undefined, targetValue: T): T | undefined {\r\n return value === targetValue ? undefined : value;\r\n }\r\n /**\r\n * Simple interpolation between values `a` and `b` with fraction `f`.\r\n * * If `f = 0`, then `a` is returned and if `f = 1`, then `b` is returned.\r\n * * For maximum accuracy, we choose `a` or `b` as starting point based on fraction `f`.\r\n */\r\n public static interpolate(a: number, f: number, b: number): number {\r\n return f <= 0.5 ? a + f * (b - a) : b - (1.0 - f) * (b - a);\r\n }\r\n /**\r\n * Interpolate the specified byte of two integers (e.g., colors).\r\n * * Extract a single byte from each integer by shifting to the right by `shiftBits`, then masking off the low 8 bits.\r\n * * Interpolate the number, truncate to floor, and mask off the low 8 bits.\r\n * * Move interpolated byte back into position by shifting to the left by `shiftBits`.\r\n * @internal\r\n */\r\n private static interpolateByte(color0: number, fraction: number, color1: number, shiftBits: number): number {\r\n color0 = (color0 >>> shiftBits) & 0xFF;\r\n color1 = (color1 >>> shiftBits) & 0xFF;\r\n const color = Math.floor(color0 + fraction * (color1 - color0)) & 0xFF; // in range [0,255]\r\n return color << shiftBits;\r\n }\r\n /**\r\n * Interpolate each byte of color0 and color1 as integers.\r\n * @param color0 32-bit RGBA color0\r\n * @param fraction fractional position. This is clamped to 0..1 to prevent byte values outside their 0..255 range.\r\n * @param color1 32-bit RGBA color1\r\n */\r\n public static interpolateColor(color0: number, fraction: number, color1: number): number {\r\n fraction = Geometry.clamp(fraction, 0, 1); // do not allow fractions outside the individual byte ranges\r\n const byte0 = this.interpolateByte(color0, fraction, color1, 0); // red\r\n const byte1 = this.interpolateByte(color0, fraction, color1, 8); // green\r\n const byte2 = this.interpolateByte(color0, fraction, color1, 16); // blue\r\n const byte3 = this.interpolateByte(color0, fraction, color1, 24); // alpha\r\n return (byte0 | byte1 | byte2 | byte3);\r\n }\r\n /**\r\n * Given an `axisOrder` (e.g. XYZ, YZX, etc) and an `index`, return the `axis` at the given index.\r\n * * For example, if `axisOrder = XYZ`, then for index 0 return `X` (or axis 0), for index 1 return\r\n * `Y` (or axis 1), and for index 2 return `Z` (or axis 2).\r\n * * Another example: if `axisOrder = ZXY`, then for index 0 return `Z` (or axis 2), for index 1 return\r\n * `X` (or axis 0), and for index 2 return `Y` (or axis 1).\r\n * * For indexes greater than 2 or smaller than 0, it return cyclic axis. See [[Geometry.cyclic3dAxis]]\r\n * for more info.\r\n */\r\n public static axisOrderToAxis(order: AxisOrder, index: number): number {\r\n const axis = order <= AxisOrder.ZXY ? order + index : (order - AxisOrder.XZY) - index;\r\n return Geometry.cyclic3dAxis(axis);\r\n }\r\n /**\r\n * Return `a` modulo `period`.\r\n * * Both `a` and `period` can be negative.\r\n * * This function can be faster than the `%` operator for the common case when `p > 0` and `-p < a < 2p`.\r\n */\r\n public static modulo(a: number, period: number): number {\r\n // period is negative\r\n if (period <= 0) {\r\n if (period === 0)\r\n return a;\r\n return -Geometry.modulo(-a, -period);\r\n }\r\n // period is positive\r\n if (a >= 0) {\r\n if (a < period) // \"0 < a < period\"\r\n return a;\r\n if (a < 2 * period) // \"0 < period < a < 2*period\"\r\n return a - period;\r\n } else { // \"-period < a < 0\"\r\n a += period;\r\n if (a > 0)\r\n return a;\r\n }\r\n // \"0 < 2*period < a\" or \"a < -period < 0\"\r\n const m = Math.floor(a / period);\r\n return a - m * period;\r\n }\r\n /** Return 0 if the value is `undefined` and 1 if the value is defined. */\r\n public static defined01(value: any): number {\r\n return value === undefined ? 0 : 1;\r\n }\r\n /**\r\n * Return `numerator` divided by `denominator`.\r\n * @param numerator the numerator\r\n * @param denominator the denominator\r\n * @returns return `numerator/denominator` but if the ratio exceeds [[largeFractionResult]],\r\n * return `undefined`.\r\n */\r\n public static conditionalDivideFraction(numerator: number, denominator: number): number | undefined {\r\n if (0 === denominator)\r\n return undefined;\r\n if (Math.abs(denominator) * Geometry.largeFractionResult >= Math.abs(numerator))\r\n return numerator / denominator;\r\n return undefined;\r\n }\r\n /**\r\n * Return `numerator` divided by `denominator`.\r\n * @param numerator the numerator\r\n * @param denominator the denominator\r\n * @returns return `numerator/denominator` but if the ratio exceeds [[largeFractionResult]],\r\n * return `defaultResult`.\r\n */\r\n public static safeDivideFraction(numerator: number, denominator: number, defaultResult: number): number {\r\n const ratio = Geometry.conditionalDivideFraction(numerator, denominator);\r\n if (ratio !== undefined)\r\n return ratio;\r\n return defaultResult;\r\n }\r\n /**\r\n * Return `numerator` divided by `denominator` (with a given `largestResult`).\r\n * @param numerator the numerator\r\n * @param denominator the denominator\r\n * @param largestResult the ratio threshold, defaults to [[largeCoordinateResult]]\r\n * @returns return `numerator/denominator` but if the ratio exceeds `largestResult`, return `undefined`.\r\n */\r\n public static conditionalDivideCoordinate(\r\n numerator: number, denominator: number, largestResult: number = Geometry.largeCoordinateResult,\r\n ): number | undefined {\r\n if (0 === denominator)\r\n return undefined;\r\n if (Math.abs(denominator * largestResult) >= Math.abs(numerator))\r\n return numerator / denominator;\r\n return undefined;\r\n }\r\n /**\r\n * Return solution(s) of equation `constCoff + cosCoff*c + sinCoff*s = 0` for `c` and `s` with the\r\n * constraint `c*c + s*s = 1`.\r\n * * There could be 0, 1, or 2 solutions. Return `undefined` if there is no solution.\r\n */\r\n public static solveTrigForm(constCoff: number, cosCoff: number, sinCoff: number): Vector2d[] | undefined {\r\n /**\r\n * Solutions can be found by finding the intersection of line \"ax + by + d = 0\" and unit circle \"x^2 + y^2 = 1\".\r\n * From the line equation we have \"y = (-ax - d) / b\". By replacing this into the circle equation we get\r\n * \"x^2 + (ax+d)^2/b^2 = 1\". If we solve this by quadratic formula we get\r\n * x = (-ad +- b*sqrt(a^2+b^2-d^2)) / (a^2+b^2)\r\n * y = (-ad -+ a*sqrt(a^2+b^2-d^2)) / (a^2+b^2)\r\n *\r\n * If \"a^2+b^2-d^2 > 0\" then there are two solutions (above).\r\n * If \"a^2+b^2-d^2 = 0\" then there is one solution which is (-ad/(a^2+b^2), -bd/(a^2+b^2)).\r\n * If \"a^2+b^2-d^2 < 0\" then there is no solution.\r\n *\r\n * Below in the code we have \"a = cosCoff\", \"b = sinCoff\", and \"d = constCoff\". Also equivalent criterion\r\n * is used in the code. For example, \"a^2+b^2-d^2 > 0\" is equivalent of \"1 - d^2/(a^2+b^2) > 0\".\r\n */\r\n const a2b2 = cosCoff * cosCoff + sinCoff * sinCoff; // a^2+b^2\r\n const d2 = constCoff * constCoff; // d^2\r\n let result;\r\n if (a2b2 > 0.0) {\r\n const a2b2r = 1.0 / a2b2; // 1/(a^2+b^2)\r\n const d2a2b2 = d2 * a2b2r; // d^2/(a^2+b^2)\r\n const criterion = 1.0 - d2a2b2; // 1 - d^2/(a^2+b^2);\r\n if (criterion < -Geometry.smallMetricDistanceSquared) // nSolution = 0\r\n return result;\r\n const da2b2 = -constCoff * a2b2r; // -d/(a^2+b^2)\r\n // (c0,s0) is the closest approach of the line to the circle center (origin)\r\n const c0 = da2b2 * cosCoff; // -ad/(a^2+b^2)\r\n const s0 = da2b2 * sinCoff; // -bd/(a^2+b^2)\r\n if (criterion <= Geometry.smallMetricDistanceSquared) { // nSolution = 1\r\n // We observed criterion = -2.22e-16 in a rotated tangent system, and criterion = 4.44e-16 in a\r\n // transverse line-arc intersectXYZ near-tangency, therefore for criteria near zero (on either side),\r\n // return the (near) tangency; any larger criteria fall through to return both solutions.\r\n result = [Vector2d.create(c0, s0)];\r\n } else { // nSolution = 2\r\n const s = Math.sqrt(criterion * a2b2r); // sqrt(a^2+b^2-d^2)) / (a^2+b^2)\r\n result = [\r\n Vector2d.create(c0 - s * sinCoff, s0 + s * cosCoff),\r\n Vector2d.create(c0 + s * sinCoff, s0 - s * cosCoff),\r\n ];\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n * For a line `f(x)` where `f(x0) = f0` and `f(x1) = f1`, return the `x` value at which `f(x) = fTarget`.\r\n * Return `defaultResult` if `(fTarget - f0) / (f1 - f0)` exceeds [[largeFractionResult]].\r\n */\r\n public static inverseInterpolate(\r\n x0: number, f0: number, x1: number, f1: number, fTarget: number = 0, defaultResult?: number,\r\n ): number | undefined {\r\n /**\r\n * Line equation is \"fTarget-f0 = (f1-f0)/(x1-x0) * (x-x0)\" or \"(fTarget-f0)/(f1-f0) = (x-x0)/(x1-x0)\".\r\n * The left hand side is known so if we call it \"fr\" (short for \"fraction\") we get \"fr = (x-x0)/(x1-x0)\".\r\n * Therefore, \"x = x0*(1-fr) + x1*fr\". This is same as interpolation between \"x0\" and \"x1\" with fraction \"fr\".\r\n */\r\n const fr = Geometry.conditionalDivideFraction(fTarget - f0, f1 - f0); // (fTarget-f0)/(f1-f0)\r\n if (fr !== undefined)\r\n return Geometry.interpolate(x0, fr, x1); // x = x0*(1-fr) + x1*fr\r\n return defaultResult;\r\n }\r\n /**\r\n * For a line `f(x)` where `f(0) = f0` and `f(1) = f1`, return the `x` value at which `f(x) = fTarget`\r\n * Return `undefined` if `(fTarget - f0) / (f1 - f0)` exceeds [[largeFractionResult]].\r\n */\r\n public static inverseInterpolate01(f0: number, f1: number, fTarget: number = 0): number | undefined {\r\n // Line equation is fTarget-f0 = (f1-f0)*x so x = (fTarget-f0)/(f1-f0)\r\n return Geometry.conditionalDivideFraction(fTarget - f0, f1 - f0);\r\n }\r\n /**\r\n * Return `true` if `json` is an array with at least `minEntries` entries and all entries are numbers (including\r\n * those beyond minEntries).\r\n */\r\n public static isNumberArray(json: any, minEntries: number = 0): json is number[] {\r\n if (Array.isArray(json) && json.length >= minEntries) {\r\n let entry;\r\n for (entry of json) {\r\n if (!Number.isFinite(entry))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Return `true` if `json` is an array of at least `minArrays` arrays with at least `minEntries` entries in\r\n * each array and all entries are numbers (including those beyond minEntries).\r\n */\r\n public static isArrayOfNumberArray(json: any, minArrays: number, minEntries: number = 0): json is number[][] {\r\n if (Array.isArray(json) && json.length >= minArrays) {\r\n let entry;\r\n for (entry of json)\r\n if (!Geometry.isNumberArray(entry, minEntries))\r\n return false;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Return the number of steps to take so that `numSteps * stepSize >= total`.\r\n * * `minCount` is returned in the following 3 cases:\r\n * * (a) `stepSize <= 0`\r\n * * (b) `stepSize >= total`\r\n * * (b) `numSteps < minCount`\r\n * * `maxCount` is returned if `numSteps > maxCount`.\r\n */\r\n public static stepCount(stepSize: number, total: number, minCount = 1, maxCount = 101): number {\r\n if (stepSize <= 0)\r\n return minCount;\r\n total = Math.abs(total);\r\n if (stepSize >= total)\r\n return minCount;\r\n /**\r\n * 0.999999 is multiplied so we return the same \"numSteps\" if\r\n * stepSize*(numSteps-1) < total <= stepSize*numSteps.\r\n * For example, if \"stepSize = 2\" then we return \"numSteps = 5\" if 8 < total <= 10.\r\n */\r\n const numSteps = Math.floor((total + 0.999999 * stepSize) / stepSize);\r\n if (numSteps < minCount)\r\n return minCount;\r\n if (numSteps > maxCount)\r\n return maxCount;\r\n return numSteps;\r\n }\r\n /**\r\n * Test if `x` is in the interval [0,1] (but skip the test if `apply01 = false`).\r\n * * This odd behavior is very convenient for code that sometimes does not do the filtering.\r\n * @param x value to test.\r\n * @param apply01 if false, return `true` for all values of `x`. Default is true.\r\n */\r\n public static isIn01(x: number, apply01: boolean = true): boolean {\r\n return apply01 ? x >= 0.0 && x <= 1.0 : true;\r\n }\r\n /**\r\n * Test if `x` is in the interval [0,1] for a given `tolerance`.\r\n * @param x value to test.\r\n * @param tolerance allowable distance outside the interval within which to classify `x` as inside.\r\n */\r\n public static isIn01WithTolerance(x: number, tolerance: number): boolean {\r\n tolerance = Math.abs(tolerance);\r\n return x + tolerance >= 0.0 && x - tolerance <= 1.0;\r\n }\r\n /**\r\n * Restrict x so it is in the interval `[a,b]` (allowing `a` and `b` to be in either order).\r\n * @param x value to restrict\r\n * @param a (usually the lower) interval limit\r\n * @param b (usually the upper) interval limit\r\n */\r\n public static restrictToInterval(x: number, a: number, b: number): number {\r\n if (a <= b) {\r\n if (x < a)\r\n return a;\r\n if (x > b)\r\n return b;\r\n return x;\r\n }\r\n // reversed interval\r\n if (x < b)\r\n return b;\r\n if (x > a)\r\n return a;\r\n return x;\r\n }\r\n /**\r\n * Case-insensitive string comparison.\r\n * * Return `true` if the `toUpperCase` values of `string1` and `string2` match.\r\n */\r\n public static equalStringNoCase(string1: string, string2: string): boolean {\r\n return string1.toUpperCase() === string2.toUpperCase();\r\n }\r\n /**\r\n * Test for exact match of two number arrays.\r\n * Returns `true` if both arrays have the same length and entries, or if both arrays are empty or `undefined`.\r\n */\r\n public static exactEqualNumberArrays(a: number[] | undefined, b: number[] | undefined): boolean {\r\n if (Array.isArray(a) && a.length === 0)\r\n a = undefined;\r\n if (Array.isArray(b) && b.length === 0)\r\n b = undefined;\r\n if (a === undefined && b === undefined)\r\n return true;\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n if (a.length !== b.length)\r\n return false;\r\n for (let i = 0; i < a.length; i++)\r\n if (a[i] !== b[i])\r\n return false;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Test for match of two arrays of type `T`.\r\n * Returns `true` if both arrays have the same length and have the same entries (or both are empty arrays).\r\n */\r\n public static almostEqualArrays<T>(\r\n a: T[] | undefined, b: T[] | undefined, testFunction: (p: T, q: T) => boolean,\r\n ): boolean {\r\n if (Array.isArray(a) && a.length === 0)\r\n a = undefined;\r\n if (Array.isArray(b) && b.length === 0)\r\n b = undefined;\r\n if (a === undefined && b === undefined)\r\n return true;\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n if (a.length !== b.length)\r\n return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (!testFunction(a[i], b[i]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Test for match of two arrays of type number or Float64Array.\r\n * Returns `true` if both arrays have the same length and have the same entries (or both are empty arrays).\r\n */\r\n public static almostEqualNumberArrays(\r\n a: number[] | Float64Array | undefined, b: number[] | Float64Array | undefined,\r\n testFunction: (p: number, q: number) => boolean,\r\n ): boolean {\r\n if (Array.isArray(a) && a.length === 0)\r\n a = undefined;\r\n if (Array.isArray(b) && b.length === 0)\r\n b = undefined;\r\n if (a === undefined && b === undefined)\r\n return true;\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n if (a.length !== b.length)\r\n return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (!testFunction(a[i], b[i]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Test for match of two values of type `T`.\r\n * @param a first value\r\n * @param b second value\r\n * @param resultIfBothUndefined returned value when both are `undefined`\r\n * @returns `true` if both values are defined and equal (with ===) and `false` if both values are defined\r\n * but not equal or if one is defined and the other undefined.\r\n */\r\n public static areEqualAllowUndefined<T>(\r\n a: T | undefined, b: T | undefined, resultIfBothUndefined: boolean = true,\r\n ): boolean {\r\n if (a === undefined && b === undefined)\r\n return resultIfBothUndefined;\r\n if (a !== undefined && b !== undefined)\r\n return a === b;\r\n return false;\r\n }\r\n /**\r\n * Clone an array whose members have type `T`, which implements the clone method.\r\n * * If the clone method returns `undefined`, then `undefined` is forced into the cloned array.\r\n * @deprecated in 4.4.0 - will not be removed until after 2026-06-13. Use cloneArray.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n public static cloneMembers<T extends Cloneable<T>>(array: T[] | undefined): T[] | undefined {\r\n if (array === undefined)\r\n return undefined;\r\n const clonedArray: (T | undefined)[] = [];\r\n for (const element of array) {\r\n clonedArray.push(element.clone());\r\n }\r\n return clonedArray as T[];\r\n }\r\n /**\r\n * Clone an array whose members have the cloneable type `T`.\r\n */\r\n public static cloneArray<T extends ICloneable<T>>(array: T[] | undefined): T[] | undefined {\r\n if (array === undefined)\r\n return undefined;\r\n const clonedArray: T[] = [];\r\n for (const element of array) {\r\n clonedArray.push(element.clone());\r\n }\r\n return clonedArray;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Geometry.js","sourceRoot":"","sources":["../../src/Geometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\n\r\nimport { OrderedComparator } from \"@itwin/core-bentley\";\r\nimport { AngleSweep } from \"./geometry3d/AngleSweep\";\r\nimport { Point2d, Vector2d } from \"./geometry3d/Point2dVector2d\";\r\nimport { Point3d, Vector3d, XYZ } from \"./geometry3d/Point3dVector3d\";\r\nimport { XAndY, XYAndZ } from \"./geometry3d/XYZProps\";\r\nimport { Point4d } from \"./geometry4d/Point4d\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\n/**\r\n * Enumeration of the 6 possible orderings of XYZ axis order\r\n * * AxisOrder encodes handedness as well. There are 3 right-handed axis orderings (XYZ, YZX, ZXY) and 3 left-handed orderings (XZY, YXZ, ZYX).\r\n * * Given an axis ordering, the cross product of axis _i_ with axis _i+1_ yields axis _i+2_.\r\n * @public\r\n */\r\nexport enum AxisOrder {\r\n /** Right handed system, X then Y then Z */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n XYZ = 0,\r\n /** Right handed system, Y then Z then X */\r\n YZX = 1,\r\n /** Right handed system, Z then X then Y */\r\n ZXY = 2,\r\n /** Left handed system, X then Z then Y */\r\n XZY = 4,\r\n /** Left handed system, Y then X then Z */\r\n YXZ = 5,\r\n /** Left handed system, Z then Y then X */\r\n ZYX = 6,\r\n}\r\n/**\r\n * Enumeration of numeric indices of 3 axes AxisIndex.X, AxisIndex.Y, AxisIndex.Z\r\n * @public\r\n */\r\nexport enum AxisIndex {\r\n /** x axis is index 0 */\r\n X = 0,\r\n /** y axis is index 1 */\r\n Y = 1,\r\n /** 2 axis is index 2 */\r\n Z = 2,\r\n}\r\n/**\r\n * Standard views. Used in `Matrix3d.createStandardViewAxes(index: StandardViewIndex, invert: boolean)`\r\n * @public\r\n */\r\nexport enum StandardViewIndex {\r\n /** X to right, Y up */\r\n Top = 1,\r\n /** X to right, negative Y up */\r\n Bottom = 2,\r\n /** Negative Y to right, Z up */\r\n Left = 3,\r\n /** Y to right, Z up */\r\n Right = 4,\r\n /** X to right, Z up */\r\n Front = 5,\r\n /** Negative X to right, Z up */\r\n Back = 6,\r\n /** Isometric: view towards origin from (-1,-1,1) */\r\n Iso = 7,\r\n /** Right isometric: view towards origin from (1,-1,1) */\r\n RightIso = 8,\r\n}\r\n/**\r\n * Enumeration among choice for how a coordinate transformation should incorporate scaling.\r\n * @public\r\n */\r\nexport enum AxisScaleSelect {\r\n /** All axes of unit length. */\r\n Unit = 0,\r\n /** On each axis, the vector length matches the longest side of the range of the data. */\r\n LongestRangeDirection = 1,\r\n /** On each axis, the vector length matches he length of the corresponding edge of the range. */\r\n NonUniformRangeContainment = 2,\r\n}\r\n/**\r\n * Object with a radians value and its associated cosine and sine values.\r\n * @public\r\n */\r\nexport interface TrigValues {\r\n /** The cosine value */\r\n c: number;\r\n /** The sine value */\r\n s: number;\r\n /** The radians value */\r\n radians: number;\r\n}\r\n\r\n/**\r\n * Plane Evaluation methods.\r\n * * These provide the necessary queries to implement clipping operations without knowing if the plane in use\r\n * is a [[ClipPlane]], [[Plane3dByOriginAndUnitNormal]], [[Plane3dByOriginAndVectors]], [[Point4d]].\r\n * * The Plane3d class declares obligation to implement these methods, and\r\n * passes the obligation on to concrete implementations by declaring them as abstract members which the particular classes can implement.\r\n * * It is intended that this interface be deprecated because its implementation by [[Plane3d]] provides all of its functionality and allows more to be added.\r\n * @public\r\n */\r\nexport interface PlaneAltitudeEvaluator {\r\n /**\r\n * Return the altitude of the `point` from the plane.\r\n * @param point the point for evaluation\r\n */\r\n altitude(point: Point3d): number;\r\n /**\r\n * Return the altitude of the `point` from the plane, with the point supplied as simple x,y,z\r\n * @param x x coordinate of the point\r\n * @param y y coordinate of the point\r\n * @param z z coordinate of the point\r\n */\r\n altitudeXYZ(x: number, y: number, z: number): number;\r\n /**\r\n * Return the derivative of altitude with respect to motion along a `vector`.\r\n * @param vector the vector\r\n */\r\n velocity(vector: Vector3d): number;\r\n /**\r\n * Return the derivative of altitude with respect to motion along a `vector` given by components.\r\n * @param x x coordinate of the vector\r\n * @param y y coordinate of the vector\r\n * @param z z coordinate of the vector\r\n */\r\n velocityXYZ(x: number, y: number, z: number): number;\r\n /**\r\n * Return the weighted altitude\r\n * @param point xyzw data.\r\n */\r\n weightedAltitude(point: Point4d): number;\r\n /** x part of normal vector */\r\n normalX(): number;\r\n /** x part of normal vector */\r\n normalY(): number;\r\n /** x part of normal vector */\r\n normalZ(): number;\r\n}\r\n/**\r\n * Enumeration of possible locations of a point in the plane of a polygon.\r\n * @public\r\n */\r\nexport enum PolygonLocation {\r\n /** No location specified. */\r\n Unknown = 0,\r\n /** Point is at a vertex. */\r\n OnPolygonVertex = 1,\r\n /** Point is on an edge (but not a vertex). */\r\n OnPolygonEdgeInterior = 2,\r\n /** Point is strictly inside the polygon with unknown projection. */\r\n InsidePolygon = 3,\r\n /** Point is strictly inside the polygon and projects to a vertex. */\r\n InsidePolygonProjectsToVertex = 4,\r\n /** Point is strictly inside the polygon and projects to an edge (but not a vertex). */\r\n InsidePolygonProjectsToEdgeInterior = 5,\r\n /** Point is strictly outside the polygon with unknown projection. */\r\n OutsidePolygon = 6,\r\n /** Point is strictly outside the polygon and projects to a vertex. */\r\n OutsidePolygonProjectsToVertex = 7,\r\n /** Point is strictly outside the polygon and projects to an edge (but not a vertex). */\r\n OutsidePolygonProjectsToEdgeInterior = 8,\r\n}\r\n/**\r\n * Interface for `toJSON` and `setFromJSON` methods\r\n * @public\r\n */\r\nexport interface BeJSONFunctions {\r\n /**\r\n * Set content from a JSON object.\r\n * If the json object is undefined or unrecognized, always set a default value.\r\n */\r\n setFromJSON(json: any): void;\r\n /** Return a json object with this object's contents. */\r\n toJSON(): any;\r\n}\r\n/**\r\n * The properties for a JSON representation of an `Angle`.\r\n * * If AngleProps data is a number, it is in **degrees**.\r\n * * If AngleProps data is an object, it can have either degrees or radians.\r\n * @public\r\n */\r\nexport type AngleProps =\r\n { degrees: number } |\r\n { radians: number } |\r\n { _radians: number } |\r\n { _degrees: number } |\r\n number;\r\n/**\r\n * The properties for a JSON representation of an `AngleSweep`.\r\n * * The json data is always *start* and *end* angles as a pair in an array.\r\n * * If AngleSweepProps data is an array of two numbers, those are both angles in `degrees`.\r\n * * If AngleSweepProps data is an object with key `degrees`, then the corresponding value must be an array of\r\n * two numbers, the start and end angles in degrees.\r\n * * If the AngleSweepProps is an object with key `radians`, then the corresponding value must be an array of\r\n * two numbers, the start and end angles in radians.\r\n * @public\r\n */\r\nexport type AngleSweepProps =\r\n AngleSweep |\r\n { degrees: [number, number] } |\r\n { radians: [number, number] } |\r\n [number, number];\r\n/**\r\n* Interface for method with a clone operation.\r\n* @public\r\n* @deprecated in 4.4.0 - will not be removed until after 2026-06-13. Use ICloneable.\r\n*/\r\nexport interface Cloneable<T> {\r\n /** Required method to return a deep clone. */\r\n clone(): T | undefined;\r\n}\r\n/**\r\n * Interface for an object with a clone method.\r\n * @public\r\n */\r\nexport interface ICloneable<T> {\r\n /**\r\n * Return a deep clone of the instance.\r\n * @param result optional object to populate and return\r\n */\r\n clone(result?: T): T;\r\n}\r\n/** Options used for methods like [[Vector2d.isPerpendicularTo]] and [[Vector3d.isParallelTo]].\r\n * @public\r\n */\r\nexport interface PerpParallelOptions {\r\n /**\r\n * Squared radian tolerance for comparing the angle between two vectors.\r\n * Default: [[Geometry.smallAngleRadiansSquared]].\r\n */\r\n radianSquaredTol?: number;\r\n /**\r\n * Squared distance tolerance for detecting equal points.\r\n * Default: [[Geometry.smallMetricDistanceSquared]].\r\n */\r\n distanceSquaredTol?: number;\r\n}\r\n\r\n/**\r\n * Class containing static methods for typical numeric operations.\r\n * * Experimentally, methods like Geometry.hypotenuse are observed to be faster than the system intrinsics.\r\n * * This is probably due to\r\n * * Fixed length arg lists\r\n * * strongly typed parameters\r\n * @public\r\n */\r\nexport class Geometry {\r\n /** Tolerance for small distances in metric coordinates. */\r\n public static readonly smallMetricDistance = 1.0e-6;\r\n /** Square of [[smallMetricDistance]]. */\r\n public static readonly smallMetricDistanceSquared = 1.0e-12;\r\n /** Tolerance for small angle measured in radians. */\r\n public static readonly smallAngleRadians = 1.0e-12;\r\n /** Square of [[smallAngleRadians]]. */\r\n public static readonly smallAngleRadiansSquared = 1.0e-24;\r\n /** Tolerance for small angle measured in degrees. */\r\n public static readonly smallAngleDegrees = 5.7e-11;\r\n /** Tolerance for small angle measured in arc-seconds. */\r\n public static readonly smallAngleSeconds = 2e-7;\r\n /** Numeric value that may be considered zero for fractions between 0 and 1. */\r\n public static readonly smallFraction = 1.0e-10;\r\n /** Tight tolerance near machine precision (unitless). Useful for snapping values, e.g., to 0 or 1. */\r\n public static readonly smallFloatingPoint = 1.0e-15;\r\n /** Radians value for full circle 2PI radians minus [[smallAngleRadians]]. */\r\n public static readonly fullCircleRadiansMinusSmallAngle = 2.0 * Math.PI - Geometry.smallAngleRadians;\r\n /**\r\n * Numeric value that may be considered large for a ratio of numbers.\r\n * * Note that the allowed result value is vastly larger than 1.\r\n */\r\n public static readonly largeFractionResult = 1.0e10;\r\n /**\r\n * Numeric value that may considered large for numbers expected to be coordinates.\r\n * * This allows larger results than [[largeFractionResult]].\r\n */\r\n public static readonly largeCoordinateResult = 1.0e13;\r\n /**\r\n * Numeric value that may considered infinite for metric coordinates.\r\n * @deprecated in 4.9.0 - will not be removed until after 2026-06-13. Use [[largeCoordinateResult]].\r\n * * This coordinate should be used only as a placeholder indicating \"at infinity\" -- computing actual\r\n * points at this coordinate invites numerical problems.\r\n */\r\n public static readonly hugeCoordinate = 1.0e12;\r\n /** Test if the absolute value of x is at least [[largeCoordinateResult]]. */\r\n public static isLargeCoordinateResult(x: number): boolean {\r\n return x >= this.largeCoordinateResult || x <= -this.largeCoordinateResult;\r\n }\r\n /**\r\n * Test if the absolute value of x is at least [[largeCoordinateResult]].\r\n * @deprecated in 4.9.0 - will not be removed until after 2026-06-13. Use [[isLargeCoordinateResult]].\r\n */\r\n public static isHugeCoordinate(x: number): boolean {\r\n return Geometry.isLargeCoordinateResult(x);\r\n }\r\n /** Test if a number is odd */\r\n public static isOdd(x: number): boolean {\r\n return (x & (0x01)) === 1; // bitwise operation\r\n }\r\n /**\r\n * Correct a small distance.\r\n * @param distance metric value to test\r\n * @param replacement value to return if `distance` is too small. Default is zero.\r\n * @returns `distance` if it is defined and has absolute value greater than [[smallMetricDistance]];\r\n * otherwise returns `replacement`\r\n */\r\n public static correctSmallMetricDistance(distance: number | undefined, replacement: number = 0.0): number {\r\n if (distance === undefined || Math.abs(distance) <= Geometry.smallMetricDistance) {\r\n return replacement;\r\n }\r\n return distance;\r\n }\r\n /**\r\n * Correct a small fraction.\r\n * @param fraction fraction to test\r\n * @param replacement value to return if `fraction` is too small. Default is zero.\r\n * @returns `fraction` if it is defined and has absolute value greater than [[Geometry.smallFraction]];\r\n * otherwise returns `replacement`\r\n */\r\n public static correctSmallFraction(fraction: number | undefined, replacement: number = 0.0): number {\r\n if (fraction === undefined || Math.abs(fraction) <= Geometry.smallFraction) {\r\n return replacement;\r\n }\r\n return fraction;\r\n }\r\n /**\r\n * Compute the inverse of `distance`, checking for safe division.\r\n * @returns `1/distance` if the absolute value of `distance` exceeds [[smallMetricDistance]];\r\n * otherwise returns `undefined`.\r\n */\r\n public static inverseMetricDistance(distance: number): number | undefined {\r\n return (Math.abs(distance) <= Geometry.smallMetricDistance) ? undefined : 1.0 / distance;\r\n }\r\n /**\r\n * Return the inverse of `distanceSquared`, checking for safe division.\r\n * @returns `1/distanceSquared` if the absolute value of `distanceSquared` exceeds [[smallMetricDistanceSquared]];\r\n * otherwise returns `undefined`.\r\n */\r\n public static inverseMetricDistanceSquared(distanceSquared: number): number | undefined {\r\n return (Math.abs(distanceSquared) <= Geometry.smallMetricDistanceSquared) ? undefined : 1.0 / distanceSquared;\r\n }\r\n /**\r\n * Boolean test for metric coordinate near-equality (i.e., if `x` and `y` are almost equal) using `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameCoordinate(x: number, y: number, tolerance: number = Geometry.smallMetricDistance): boolean {\r\n let d = x - y;\r\n if (d < 0)\r\n d = -d;\r\n return d <= tolerance;\r\n }\r\n /**\r\n * Toleranced test for equivalent fractions.\r\n * @param x first fraction to compare\r\n * @param y second fraction to compare\r\n * @param tolerance maximum difference between fractions considered equivalent, defaulting to [[smallFraction]].\r\n */\r\n public static isSameFraction(x: number, y: number, tolerance: number = Geometry.smallFraction): boolean {\r\n return this.isSameCoordinate(x, y, tolerance);\r\n }\r\n /**\r\n * Boolean test for metric coordinate near-equality (i.e., if `x` and `y` are almost equal) using\r\n * `tolerance = toleranceFactor * smallMetricDistance`\r\n * */\r\n public static isSameCoordinateWithToleranceFactor(x: number, y: number, toleranceFactor: number): boolean {\r\n return Geometry.isSameCoordinate(x, y, toleranceFactor * Geometry.smallMetricDistance);\r\n }\r\n /**\r\n * Boolean test for metric coordinate pair near-equality (i.e., if `x0` and `x1` are almost equal\r\n * and `y0` and `y1` are almost equal) using `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameCoordinateXY(\r\n x0: number, y0: number, x1: number, y1: number, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n let d = x1 - x0;\r\n if (d < 0)\r\n d = -d;\r\n if (d > tolerance)\r\n return false;\r\n d = y1 - y0;\r\n if (d < 0)\r\n d = -d;\r\n return d <= tolerance;\r\n }\r\n /**\r\n * Boolean test for squared metric coordinate near-equality (i.e., if `sqrt(x)` and `sqrt(y)` are\r\n * almost equal) using `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameCoordinateSquared(\r\n x: number, y: number, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return Math.abs(Math.sqrt(x) - Math.sqrt(y)) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small `dataA.distance(dataB)` within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSamePoint3d(\r\n dataA: Point3d, dataB: Point3d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xyz-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n * * Note that Point3d and Vector3d are both derived from XYZ, so this method tolerates mixed types.\r\n */\r\n public static isSameXYZ(\r\n dataA: XYZ, dataB: XYZ, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xy-distance (ignoring z) within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSamePoint3dXY(\r\n dataA: Point3d, dataB: Point3d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distanceXY(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xyz-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameVector3d(\r\n dataA: Vector3d, dataB: Vector3d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xy-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSamePoint2d(\r\n dataA: Point2d, dataB: Point2d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Boolean test for small xy-distance within `tolerance`.\r\n * * [[smallMetricDistance]] is used if tolerance is `undefined`.\r\n */\r\n public static isSameVector2d(\r\n dataA: Vector2d, dataB: Vector2d, tolerance: number = Geometry.smallMetricDistance,\r\n ): boolean {\r\n return dataA.distance(dataB) <= tolerance;\r\n }\r\n /**\r\n * Lexical comparison of (a.x, a.y) and (b.x, b.y) with x as first test and y as second (z is ignored).\r\n * * This is appropriate for a horizontal sweep in the plane.\r\n */\r\n public static lexicalXYLessThan(a: XAndY, b: XAndY): -1 | 0 | 1 {\r\n if (a.x < b.x)\r\n return -1;\r\n else if (a.x > b.x)\r\n return 1;\r\n if (a.y < b.y)\r\n return -1;\r\n else if (a.y > b.y)\r\n return 1;\r\n return 0;\r\n }\r\n /**\r\n * Lexical comparison of (a.x, a.y) and (b.x, b.y) with y as first test and x as second (z is ignored).\r\n * * This is appropriate for a vertical sweep in the plane.\r\n */\r\n public static lexicalYXLessThan(a: XAndY, b: XAndY): -1 | 0 | 1 {\r\n if (a.y < b.y)\r\n return -1;\r\n else if (a.y > b.y)\r\n return 1;\r\n if (a.x < b.x)\r\n return -1;\r\n else if (a.x > b.x)\r\n return 1;\r\n return 0;\r\n }\r\n /** Lexical comparison of (a.x, a.y, a.z) and (b.x, b.y, b.z) with x as first test, y as second, and z as third. */\r\n public static lexicalXYZLessThan(a: XYAndZ, b: XYAndZ): -1 | 0 | 1 {\r\n if (a.x < b.x)\r\n return -1;\r\n else if (a.x > b.x)\r\n return 1;\r\n if (a.y < b.y)\r\n return -1;\r\n else if (a.y > b.y)\r\n return 1;\r\n if (a.z < b.z)\r\n return -1;\r\n else if (a.z > b.z)\r\n return 1;\r\n return 0;\r\n }\r\n /**\r\n * Constructor for a lexical comparison with tolerance (x then y then z).\r\n * @param distanceTol tolerance for comparing coordinates. Default value is [[Geometry.smallMetricDistance]].\r\n * @returns comparison function useful for ordered map callbacks.\r\n */\r\n public static compareXYZ(distanceTol: number = Geometry.smallMetricDistance): OrderedComparator<XYAndZ> {\r\n return (p0: XYAndZ, p1: XYAndZ): -1 | 0 | 1 => {\r\n if (XYAndZ.almostEqual(p0, p1, distanceTol))\r\n return 0;\r\n if (!Geometry.isSameCoordinate(p0.x, p1.x, distanceTol)) {\r\n if (p0.x < p1.x)\r\n return -1;\r\n if (p0.x > p1.x)\r\n return 1;\r\n }\r\n if (!Geometry.isSameCoordinate(p0.y, p1.y, distanceTol)) {\r\n if (p0.y < p1.y)\r\n return -1;\r\n if (p0.y > p1.y)\r\n return 1;\r\n }\r\n if (!Geometry.isSameCoordinate(p0.z, p1.z, distanceTol)) {\r\n if (p0.z < p1.z)\r\n return -1;\r\n if (p0.z > p1.z)\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n }\r\n /**\r\n * Constructor for a lexical comparison with tolerance (x then y).\r\n * @param distanceTol tolerance for comparing coordinates. Default value is [[Geometry.smallMetricDistance]].\r\n * @returns comparison function useful for ordered map callbacks.\r\n */\r\n public static compareXY(distanceTol: number = Geometry.smallMetricDistance): OrderedComparator<XAndY> {\r\n return (p0: XAndY, p1: XAndY): -1 | 0 | 1 => {\r\n if (XAndY.almostEqual(p0, p1, distanceTol))\r\n return 0;\r\n if (!Geometry.isSameCoordinate(p0.x, p1.x, distanceTol)) {\r\n if (p0.x < p1.x)\r\n return -1;\r\n if (p0.x > p1.x)\r\n return 1;\r\n }\r\n if (!Geometry.isSameCoordinate(p0.y, p1.y, distanceTol)) {\r\n if (p0.y < p1.y)\r\n return -1;\r\n if (p0.y > p1.y)\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n }\r\n /**\r\n * Test if `value` is at most [[smallFraction]] in absolute value.\r\n * * This is appropriate if `value` is known to be a fraction.\r\n */\r\n public static isSmallRelative(value: number): boolean {\r\n return Math.abs(value) <= Geometry.smallFraction;\r\n }\r\n /** Test if `value` is at most [[smallAngleRadians]] in absolute value. */\r\n public static isSmallAngleRadians(value: number): boolean {\r\n return Math.abs(value) <= Geometry.smallAngleRadians;\r\n }\r\n /** Test if `value` is at most [[smallAngleRadiansSquared]] in absolute value. */\r\n public static isSmallAngleRadiansSquared(value: number): boolean {\r\n return Math.abs(value) <= Geometry.smallAngleRadiansSquared;\r\n }\r\n /**\r\n * Returns `true` if both values are `undefined` or if both are defined and almost equal within tolerance.\r\n * If one is `undefined` and the other is not, then `false` is returned.\r\n */\r\n public static isAlmostEqualOptional(a: number | undefined, b: number | undefined, tolerance: number): boolean {\r\n if (a !== undefined && b !== undefined) {\r\n if (Math.abs(a - b) > tolerance)\r\n return false;\r\n } else {\r\n if (a !== undefined || b !== undefined)\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Toleranced equality test.\r\n * @param tolerance _relative_ tolerance. Default value is [[smallAngleRadians]].\r\n * @returns true if and only if `a` and `b` are almost equal.\r\n */\r\n public static isAlmostEqualNumber(a: number, b: number, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n const sumAbs = 1.0 + Math.abs(a) + Math.abs(b);\r\n return Math.abs(a - b) <= tolerance * sumAbs;\r\n }\r\n /**\r\n * Toleranced test for equality to at least one of two numbers.\r\n * @param tolerance _relative_ tolerance. Default value is [[smallAngleRadians]].\r\n * @returns true if and only if `a` and `b` are almost equal, or `a` and `c` are almost equal.\r\n */\r\n public static isAlmostEqualEitherNumber(a: number, b: number, c: number, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n return this.isAlmostEqualNumber(a, b, tolerance) || this.isAlmostEqualNumber(a, c, tolerance);\r\n }\r\n /**\r\n * Toleranced test for equality to any value in `values`.\r\n * @param a value to test\r\n * @param values array of values to test against, or an object that provides the i_th value, where 0 <= i < length.\r\n * @param tolerance _relative_ tolerance. Default value is [[smallAngleRadians]].\r\n * @returns true if and only if `a` is almost equal to at least one value supplied by `iterator`.\r\n */\r\n public static isAlmostEqualAnyNumber(a: number, values: number[] | { iter: (i: number) => number, length: number }, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n const value = Array.isArray(values) ? (i: number) => values[i] : values.iter;\r\n for (let i = 0; i < values.length; i++)\r\n if (this.isAlmostEqualNumber(a, value(i), tolerance))\r\n return true;\r\n return false;\r\n }\r\n /**\r\n * Toleranced equality test for xy points.\r\n * @param a first point\r\n * @param b second point\r\n * @param tolerance _relative_ coordinate tolerance. Default value is [[smallAngleRadians]].\r\n */\r\n public static isAlmostEqualXAndY(a: XAndY, b: XAndY, tolerance: number = Geometry.smallAngleRadians): boolean {\r\n const tol = tolerance * (1.0 + Math.abs(a.x) + Math.abs(b.x) + Math.abs(a.y) + Math.abs(b.y));\r\n return (Math.abs(a.x - b.x) <= tol) && (Math.abs(a.y - b.y) <= tol);\r\n }\r\n /**\r\n * Test if a distance is smaller than `tolerance` (or equal).\r\n * @param tolerance distance tolerance. Default value is [[smallMetricDistance]].\r\n */\r\n public static isDistanceWithinTol(distance: number, tolerance: number = Geometry.smallMetricDistance): boolean {\r\n return Math.abs(distance) <= tolerance;\r\n }\r\n /** Test if a distance is smaller than [[smallMetricDistance]] (or equal). */\r\n public static isSmallMetricDistance(distance: number): boolean {\r\n return Math.abs(distance) <= Geometry.smallMetricDistance;\r\n }\r\n /** Test if a squared distance is smaller than [[smallMetricDistanceSquared]] (or equal). */\r\n public static isSmallMetricDistanceSquared(distanceSquared: number): boolean {\r\n return Math.abs(distanceSquared) <= Geometry.smallMetricDistanceSquared;\r\n }\r\n /**\r\n * Return `axis modulo 3` with proper handling of negative indices\r\n * ..., -3:x, -2:y, -1:z, 0:x, 1:y, 2:z, 3:x, 4:y, 5:z, 6:x, 7:y, 8:z, ...\r\n */\r\n public static cyclic3dAxis(axis: number): number {\r\n /* Direct test for the most common cases to avoid more expensive modulo operation */\r\n if (axis >= 0) {\r\n if (axis < 3)\r\n return axis;\r\n if (axis < 6)\r\n return axis - 3;\r\n return axis % 3;\r\n }\r\n const j = axis + 3;\r\n if (j >= 0)\r\n return j;\r\n return 2 - ((-axis - 1) % 3);\r\n }\r\n /**\r\n * Return the `AxisOrder` for which `axisIndex` is the first named axis.\r\n * * `axisIndex === 0` returns `AxisOrder.XYZ`\r\n * * `axisIndex === 1` returns `AxisOrder.YZX`\r\n * * `axisIndex === 2` returns `AxisOrder.ZXY`\r\n */\r\n public static axisIndexToRightHandedAxisOrder(axisIndex: AxisIndex): AxisOrder {\r\n if (axisIndex === 0)\r\n return AxisOrder.XYZ;\r\n if (axisIndex === 1)\r\n return AxisOrder.YZX;\r\n if (axisIndex === 2)\r\n return AxisOrder.ZXY;\r\n return Geometry.axisIndexToRightHandedAxisOrder(Geometry.cyclic3dAxis(axisIndex));\r\n }\r\n /** Return the largest signed value among `a`, `b`, and `c` */\r\n public static maxXYZ(a: number, b: number, c: number): number {\r\n let max = a;\r\n if (b > max)\r\n max = b;\r\n if (c > max)\r\n max = c;\r\n return max;\r\n }\r\n /** Return the smallest signed value among `a`, `b`, and `c` */\r\n public static minXYZ(a: number, b: number, c: number): number {\r\n let min = a;\r\n if (b < min)\r\n min = b;\r\n if (c < min)\r\n min = c;\r\n return min;\r\n }\r\n /** Return the largest signed value among `a` and `b` */\r\n public static maxXY(a: number, b: number): number {\r\n let max = a;\r\n if (b > max)\r\n max = b;\r\n return max;\r\n }\r\n /** Return the smallest signed value among `a` and `b` */\r\n public static minXY(a: number, b: number): number {\r\n let min = a;\r\n if (b < min)\r\n min = b;\r\n return min;\r\n }\r\n /** Return the largest absolute value among `x`, `y`, and `z` */\r\n public static maxAbsXYZ(x: number, y: number, z: number): number {\r\n return Geometry.maxXYZ(Math.abs(x), Math.abs(y), Math.abs(z));\r\n }\r\n /** Return the largest absolute value among `x` and `y` */\r\n public static maxAbsXY(x: number, y: number): number {\r\n return Geometry.maxXY(Math.abs(x), Math.abs(y));\r\n }\r\n /** Return the largest absolute distance from `a` to either of `b0` or `b1` */\r\n public static maxAbsDiff(a: number, b0: number, b1: number): number {\r\n return Math.max(Math.abs(a - b0), Math.abs(a - b1));\r\n }\r\n /**\r\n * Examine the sign of `x`.\r\n * * If `x` is negative, return `outNegative`\r\n * * If `x` is true zero, return `outZero`\r\n * * If `x` is positive, return `outPositive`\r\n */\r\n public static split3WaySign(x: number, outNegative: number, outZero: number, outPositive: number): number {\r\n if (x < 0)\r\n return outNegative;\r\n if (x > 0.0)\r\n return outPositive;\r\n return outZero;\r\n }\r\n /**\r\n * Examine the value (particularly sign) of x.\r\n * * If x is negative, return -1\r\n * * If x is true zero, return 0\r\n * * If x is positive, return 1\r\n */\r\n public static split3Way01(x: number, tolerance: number = Geometry.smallMetricDistance): -1 | 0 | 1 {\r\n if (x > tolerance)\r\n return 1;\r\n if (x < -tolerance)\r\n return -1;\r\n return 0;\r\n }\r\n /** Return the square of x */\r\n public static square(x: number): number {\r\n return x * x;\r\n }\r\n /**\r\n * Return the hypotenuse (i.e., `sqrt(x*x + y*y)`).\r\n * * This is much faster than `Math.hypot(x,y)`.\r\n */\r\n public static hypotenuseXY(x: number, y: number): number {\r\n return Math.sqrt(x * x + y * y);\r\n }\r\n /** Return the squared hypotenuse (i.e., `x*x + y*y`). */\r\n public static hypotenuseSquaredXY(x: number, y: number): number {\r\n return x * x + y * y;\r\n }\r\n /**\r\n * Return the hypotenuse (i.e., `sqrt(x*x + y*y + z*z)`).\r\n * * This is much faster than `Math.hypot(x,y,z)`.\r\n */\r\n public static hypotenuseXYZ(x: number, y: number, z: number): number {\r\n return Math.sqrt(x * x + y * y + z * z);\r\n }\r\n /** Return the squared hypotenuse (i.e., `x*x + y*y + z*z`). */\r\n public static hypotenuseSquaredXYZ(x: number, y: number, z: number): number {\r\n return x * x + y * y + z * z;\r\n }\r\n /**\r\n * Return the full 4d hypotenuse (i.e., `sqrt(x*x + y*y + z*z + w*w)`).\r\n * * This is much faster than `Math.hypot(x,y,z,w)`.\r\n */\r\n public static hypotenuseXYZW(x: number, y: number, z: number, w: number): number {\r\n return Math.sqrt(x * x + y * y + z * z + w * w);\r\n }\r\n /** Return the squared hypotenuse (i.e., `x*x + y*y + z*z + w*w`). */\r\n public static hypotenuseSquaredXYZW(x: number, y: number, z: number, w: number): number {\r\n return x * x + y * y + z * z + w * w;\r\n }\r\n /**\r\n * Return the distance between xy points given as numbers.\r\n * @param x0 x coordinate of point 0\r\n * @param y0 y coordinate of point 0\r\n * @param x1 x coordinate of point 1\r\n * @param y1 y coordinate of point 1\r\n */\r\n public static distanceXYXY(x0: number, y0: number, x1: number, y1: number): number {\r\n return Geometry.hypotenuseXY(x1 - x0, y1 - y0);\r\n }\r\n /**\r\n * Return the squared distance between xy points given as numbers.\r\n * @param x0 x coordinate of point 0\r\n * @param y0 y coordinate of point 0\r\n * @param x1 x coordinate of point 1\r\n * @param y1 y coordinate of point 1\r\n */\r\n public static distanceSquaredXYXY(x0: number, y0: number, x1: number, y1: number): number {\r\n return Geometry.hypotenuseSquaredXY(x1 - x0, y1 - y0);\r\n }\r\n /**\r\n * Return the distance between xyz points given as numbers.\r\n * @param x0 x coordinate of point 0\r\n * @param y0 y coordinate of point 0\r\n * @param z0 z coordinate of point 0\r\n * @param x1 x coordinate of point 1\r\n * @param y1 y coordinate of point 1\r\n * @param z1 z coordinate of point 1\r\n */\r\n public static distanceXYZXYZ(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number): number {\r\n return Geometry.hypotenuseXYZ(x1 - x0, y1 - y0, z1 - z0);\r\n }\r\n /**\r\n * Returns the triple product of 3 vectors provided as x,y,z number sequences.\r\n * * The triple product is the determinant of the 3x3 matrix with the 9 numbers (3 vectors placed in 3 rows).\r\n * * The triple product is positive if the 3 vectors form a right handed coordinate system.\r\n * * The triple product is negative if the 3 vectors form a left handed coordinate system.\r\n * * Treating the 9 numbers as 3 vectors U, V, W, any of these formulas gives the same result:\r\n * * U dot (V cross W)\r\n * * V dot (W cross U)\r\n * * W dot (U cross V)\r\n * * -U dot (W cross V)\r\n * * -V dot (U cross W)\r\n * * -W dot (V cross U)\r\n * * Note the negative in the last 3 formulas. Reversing cross product order changes the sign.\r\n * * The triple product is 6 times the (signed) volume of the tetrahedron with the three vectors as edges from a\r\n * common vertex.\r\n */\r\n public static tripleProduct(\r\n ux: number, uy: number, uz: number,\r\n vx: number, vy: number, vz: number,\r\n wx: number, wy: number, wz: number,\r\n ): number {\r\n return ux * (vy * wz - vz * wy)\r\n + uy * (vz * wx - vx * wz)\r\n + uz * (vx * wy - vy * wx);\r\n }\r\n /** Returns the determinant of the 4x4 matrix unrolled as the 16 parameters */\r\n public static determinant4x4(\r\n xx: number, xy: number, xz: number, xw: number,\r\n yx: number, yy: number, yz: number, yw: number,\r\n zx: number, zy: number, zz: number, zw: number,\r\n wx: number, wy: number, wz: number, ww: number,\r\n ): number {\r\n return xx * this.tripleProduct(yy, yz, yw, zy, zz, zw, wy, wz, ww)\r\n - yx * this.tripleProduct(xy, xz, xw, zy, zz, zw, wy, wz, ww)\r\n + zx * this.tripleProduct(xy, xz, xw, yy, yz, yw, wy, wz, ww)\r\n - wx * this.tripleProduct(xy, xz, xw, yy, yz, yw, zy, zz, zw);\r\n }\r\n /**\r\n * Returns the determinant of 3x3 matrix with first and second rows created from the 3 xy points and the third\r\n * row created from the 3 numbers:\r\n * [columnA.x columnB.x columnC.x]\r\n * [columnA.y columnB.y columnC.y]\r\n * [ weightA weightB weightC ]\r\n */\r\n public static tripleProductXYW(\r\n columnA: XAndY, weightA: number,\r\n columnB: XAndY, weightB: number,\r\n columnC: XAndY, weightC: number,\r\n ): number {\r\n return Geometry.tripleProduct(\r\n columnA.x, columnB.x, columnC.x,\r\n columnA.y, columnB.y, columnC.y,\r\n weightA, weightB, weightC,\r\n );\r\n }\r\n /**\r\n * Returns the determinant of 3x3 matrix columns created by the given `Point4d` ignoring the z part:\r\n * [columnA.x columnB.x columnC.x]\r\n * [columnA.y columnB.y columnC.y]\r\n * [columnA.w columnB.w columnC.w]\r\n */\r\n public static tripleProductPoint4dXYW(columnA: Point4d, columnB: Point4d, columnC: Point4d): number {\r\n return Geometry.tripleProduct(\r\n columnA.x, columnB.x, columnC.x,\r\n columnA.y, columnB.y, columnC.y,\r\n columnA.w, columnB.w, columnC.w,\r\n );\r\n }\r\n /**\r\n * 2D cross product of vectors with the vectors presented as numbers.\r\n * * Sign of 2d cross product is positive <=> sweeping from first vector to second vector is ccw orientation.\r\n * * Sign of 2d cross product is negative <=> sweeping from first vector to second vector is clockwise orientation.\r\n * * 2d cross product is 0 <=> parallel/antiparallel vectors.\r\n */\r\n public static crossProductXYXY(ux: number, uy: number, vx: number, vy: number): number {\r\n return ux * vy - uy * vx;\r\n }\r\n /** 3D cross product of vectors with the vectors presented as numbers. */\r\n public static crossProductXYZXYZ(\r\n ux: number, uy: number, uz: number, vx: number, vy: number, vz: number, result?: Vector3d,\r\n ): Vector3d {\r\n return Vector3d.create(\r\n uy * vz - uz * vy,\r\n uz * vx - ux * vz,\r\n ux * vy - uy * vx,\r\n result,\r\n );\r\n }\r\n /**\r\n * 2D cross product of vectors with the vectors presented with common origin point, and two target points.\r\n * @see crossProductXYXY for interpretations of the result.\r\n */\r\n public static crossProductToPointsXY(origin: XAndY, target0: XAndY, target1: XAndY): number {\r\n return this.crossProductXYXY(target0.x - origin.x, target0.y - origin.y, target1.x - origin.x, target1.y - origin.y);\r\n }\r\n /** Magnitude of 3D cross product of vectors with the vectors presented as numbers. */\r\n public static crossProductMagnitude(\r\n ux: number, uy: number, uz: number, vx: number, vy: number, vz: number,\r\n ): number {\r\n return Geometry.hypotenuseXYZ(\r\n uy * vz - uz * vy,\r\n uz * vx - ux * vz,\r\n ux * vy - uy * vx,\r\n );\r\n }\r\n /**\r\n * 2D dot product of vectors with the vectors presented as numbers.\r\n * * Sign of dot product is positive <=> vectorA points into the same half-space as vectorB.\r\n * * Sign of dot product is negative <=> vectorA points into opposite half-space as vectorB.\r\n * * Dot product is 0 <=> perpendicular vectors.\r\n * * **Note:** half-space is defined in terms of a vector, by the perpendicular plane at its origin (it splits\r\n * the universe into two halves).\r\n */\r\n public static dotProductXYXY(ux: number, uy: number, vx: number, vy: number): number {\r\n return ux * vx + uy * vy;\r\n }\r\n /** 3D dot product of vectors with the vectors presented as numbers. */\r\n public static dotProductXYZXYZ(ux: number, uy: number, uz: number, vx: number, vy: number, vz: number): number {\r\n return ux * vx + uy * vy + uz * vz;\r\n }\r\n /**\r\n * Return the mean curvature for two radii.\r\n * * Curvature is the reciprocal of radius.\r\n * * 0 radius implies 0 curvature.\r\n * @param r0 first radius\r\n * @param r1 second radius\r\n */\r\n public static meanCurvatureOfRadii(r0: number, r1: number): number {\r\n return 0.5 * (this.safeDivideFraction(1, r0, 0) + this.safeDivideFraction(1, r1, 0));\r\n }\r\n /**\r\n * Returns curvature from the first and second derivative vectors.\r\n * * If U is the first derivative and V is the second derivative, the curvature is defined as:\r\n * * `|| U x V || / || U ||^3`.\r\n * * Math details can be found at https://en.wikipedia.org/wiki/Curvature#General_expressions\r\n * @param ux first derivative x component\r\n * @param uy first derivative y component\r\n * @param uz first derivative z component\r\n * @param vx second derivative x component\r\n * @param vy second derivative y component\r\n * @param vz second derivative z component\r\n */\r\n public static curvatureMagnitude(\r\n ux: number, uy: number, uz: number,\r\n vx: number, vy: number, vz: number,\r\n ): number {\r\n let q = uy * vz - uz * vy;\r\n let sum = q * q;\r\n q = uz * vx - ux * vz;\r\n sum += q * q;\r\n q = ux * vy - uy * vx;\r\n sum += q * q;\r\n const magUxV = Math.sqrt(sum);\r\n const magU = Math.sqrt(ux * ux + uy * uy + uz * uz);\r\n const magUCubed = magU * magU * magU;\r\n if (magUCubed > Geometry.smallAngleRadians * magUxV)\r\n return magUxV / magUCubed;\r\n return 0;\r\n }\r\n /**\r\n * Clamp to (min(a,b), max(a,b)).\r\n * * Always returns a number between `a` and `b`.\r\n * @param value value to clamp\r\n * @param a smallest allowed output if `a < b` or largest allowed output if `a > b`\r\n * @param b largest allowed output if `a < b` or smallest allowed output if `a > b`\r\n */\r\n public static clampToStartEnd(value: number, a: number, b: number): number {\r\n if (a > b)\r\n return Geometry.clampToStartEnd(value, b, a);\r\n if (value < a)\r\n return a;\r\n if (b < value)\r\n return b;\r\n return value;\r\n }\r\n /**\r\n * Clamp value to (min, max) with no test for order of (min, max).\r\n * * Always returns a number between `min` and `max`.\r\n * @param value value to clamp\r\n * @param min smallest allowed output\r\n * @param max largest allowed output\r\n */\r\n public static clamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, value));\r\n }\r\n /** If given a `value`, return it. If given `undefined`, return `defaultValue`. */\r\n public static resolveNumber(value: number | undefined, defaultValue: number = 0): number {\r\n return value !== undefined ? value : defaultValue;\r\n }\r\n /** If given a `value`, return it. If given `undefined`, return `defaultValue`. */\r\n public static resolveValue<T>(value: T | undefined, defaultValue: T): T {\r\n return value !== undefined ? value : defaultValue;\r\n }\r\n /** If given `value` matches the `targetValue`, return `undefined`. Otherwise return the `value`. */\r\n public static resolveToUndefined<T>(value: T | undefined, targetValue: T): T | undefined {\r\n return value === targetValue ? undefined : value;\r\n }\r\n /**\r\n * Simple interpolation between values `a` and `b` with fraction `f`.\r\n * * If `f = 0`, then `a` is returned and if `f = 1`, then `b` is returned.\r\n * * For maximum accuracy, we choose `a` or `b` as starting point based on fraction `f`.\r\n */\r\n public static interpolate(a: number, f: number, b: number): number {\r\n return f <= 0.5 ? a + f * (b - a) : b - (1.0 - f) * (b - a);\r\n }\r\n /**\r\n * Interpolate the specified byte of two integers (e.g., colors).\r\n * * Extract a single byte from each integer by shifting to the right by `shiftBits`, then masking off the low 8 bits.\r\n * * Interpolate the number, truncate to floor, and mask off the low 8 bits.\r\n * * Move interpolated byte back into position by shifting to the left by `shiftBits`.\r\n * @internal\r\n */\r\n private static interpolateByte(color0: number, fraction: number, color1: number, shiftBits: number): number {\r\n color0 = (color0 >>> shiftBits) & 0xFF;\r\n color1 = (color1 >>> shiftBits) & 0xFF;\r\n const color = Math.floor(color0 + fraction * (color1 - color0)) & 0xFF; // in range [0,255]\r\n return color << shiftBits;\r\n }\r\n /**\r\n * Interpolate each byte of color0 and color1 as integers.\r\n * @param color0 32-bit RGBA color0\r\n * @param fraction fractional position. This is clamped to 0..1 to prevent byte values outside their 0..255 range.\r\n * @param color1 32-bit RGBA color1\r\n */\r\n public static interpolateColor(color0: number, fraction: number, color1: number): number {\r\n fraction = Geometry.clamp(fraction, 0, 1); // do not allow fractions outside the individual byte ranges\r\n const byte0 = this.interpolateByte(color0, fraction, color1, 0); // red\r\n const byte1 = this.interpolateByte(color0, fraction, color1, 8); // green\r\n const byte2 = this.interpolateByte(color0, fraction, color1, 16); // blue\r\n const byte3 = this.interpolateByte(color0, fraction, color1, 24); // alpha\r\n return (byte0 | byte1 | byte2 | byte3);\r\n }\r\n /**\r\n * Given an `axisOrder` (e.g. XYZ, YZX, etc) and an `index`, return the `axis` at the given index.\r\n * * For example, if `axisOrder = XYZ`, then for index 0 return `X` (or axis 0), for index 1 return\r\n * `Y` (or axis 1), and for index 2 return `Z` (or axis 2).\r\n * * Another example: if `axisOrder = ZXY`, then for index 0 return `Z` (or axis 2), for index 1 return\r\n * `X` (or axis 0), and for index 2 return `Y` (or axis 1).\r\n * * For indexes greater than 2 or smaller than 0, it return cyclic axis. See [[Geometry.cyclic3dAxis]]\r\n * for more info.\r\n */\r\n public static axisOrderToAxis(order: AxisOrder, index: number): number {\r\n const axis = order <= AxisOrder.ZXY ? order + index : (order - AxisOrder.XZY) - index;\r\n return Geometry.cyclic3dAxis(axis);\r\n }\r\n /**\r\n * Return `a` modulo `period`.\r\n * * Both `a` and `period` can be negative.\r\n * * This function can be faster than the `%` operator for the common case when `p > 0` and `-p < a < 2p`.\r\n */\r\n public static modulo(a: number, period: number): number {\r\n // period is negative\r\n if (period <= 0) {\r\n if (period === 0)\r\n return a;\r\n return -Geometry.modulo(-a, -period);\r\n }\r\n // period is positive\r\n if (a >= 0) {\r\n if (a < period) // \"0 < a < period\"\r\n return a;\r\n if (a < 2 * period) // \"0 < period < a < 2*period\"\r\n return a - period;\r\n } else { // \"-period < a < 0\"\r\n a += period;\r\n if (a > 0)\r\n return a;\r\n }\r\n // \"0 < 2*period < a\" or \"a < -period < 0\"\r\n const m = Math.floor(a / period);\r\n return a - m * period;\r\n }\r\n /** Return 0 if the value is `undefined` and 1 if the value is defined. */\r\n public static defined01(value: any): number {\r\n return value === undefined ? 0 : 1;\r\n }\r\n /**\r\n * Return `numerator` divided by `denominator`.\r\n * @param numerator the numerator\r\n * @param denominator the denominator\r\n * @returns return `numerator/denominator` but if the ratio exceeds [[largeFractionResult]],\r\n * return `undefined`.\r\n */\r\n public static conditionalDivideFraction(numerator: number, denominator: number): number | undefined {\r\n if (0 === denominator)\r\n return undefined;\r\n if (Math.abs(denominator) * Geometry.largeFractionResult >= Math.abs(numerator))\r\n return numerator / denominator;\r\n return undefined;\r\n }\r\n /**\r\n * Return `numerator` divided by `denominator`.\r\n * @param numerator the numerator\r\n * @param denominator the denominator\r\n * @returns return `numerator/denominator` but if the ratio exceeds [[largeFractionResult]],\r\n * return `defaultResult`.\r\n */\r\n public static safeDivideFraction(numerator: number, denominator: number, defaultResult: number): number {\r\n const ratio = Geometry.conditionalDivideFraction(numerator, denominator);\r\n if (ratio !== undefined)\r\n return ratio;\r\n return defaultResult;\r\n }\r\n /**\r\n * Return `numerator` divided by `denominator` (with a given `largestResult`).\r\n * @param numerator the numerator\r\n * @param denominator the denominator\r\n * @param largestResult the ratio threshold, defaults to [[largeCoordinateResult]]\r\n * @returns return `numerator/denominator` but if the ratio exceeds `largestResult`, return `undefined`.\r\n */\r\n public static conditionalDivideCoordinate(\r\n numerator: number, denominator: number, largestResult: number = Geometry.largeCoordinateResult,\r\n ): number | undefined {\r\n if (0 === denominator)\r\n return undefined;\r\n if (Math.abs(denominator * largestResult) >= Math.abs(numerator))\r\n return numerator / denominator;\r\n return undefined;\r\n }\r\n /**\r\n * Return solution(s) of equation `constCoff + cosCoff*c + sinCoff*s = 0` for `c` and `s` with the\r\n * constraint `c*c + s*s = 1`.\r\n * * There could be 0, 1, or 2 solutions. Return `undefined` if there is no solution.\r\n */\r\n public static solveTrigForm(constCoff: number, cosCoff: number, sinCoff: number): Vector2d[] | undefined {\r\n /**\r\n * Solutions can be found by finding the intersection of line \"ax + by + d = 0\" and unit circle \"x^2 + y^2 = 1\".\r\n * From the line equation we have \"y = (-ax - d) / b\". By replacing this into the circle equation we get\r\n * \"x^2 + (ax+d)^2/b^2 = 1\". If we solve this by quadratic formula we get\r\n * x = (-ad +- b*sqrt(a^2+b^2-d^2)) / (a^2+b^2)\r\n * y = (-ad -+ a*sqrt(a^2+b^2-d^2)) / (a^2+b^2)\r\n *\r\n * If \"a^2+b^2-d^2 > 0\" then there are two solutions (above).\r\n * If \"a^2+b^2-d^2 = 0\" then there is one solution which is (-ad/(a^2+b^2), -bd/(a^2+b^2)).\r\n * If \"a^2+b^2-d^2 < 0\" then there is no solution.\r\n *\r\n * Below in the code we have \"a = cosCoff\", \"b = sinCoff\", and \"d = constCoff\". Also equivalent criterion\r\n * is used in the code. For example, \"a^2+b^2-d^2 > 0\" is equivalent of \"1 - d^2/(a^2+b^2) > 0\".\r\n */\r\n const a2b2 = cosCoff * cosCoff + sinCoff * sinCoff; // a^2+b^2\r\n const d2 = constCoff * constCoff; // d^2\r\n let result;\r\n if (a2b2 > 0.0) {\r\n const a2b2r = 1.0 / a2b2; // 1/(a^2+b^2)\r\n const d2a2b2 = d2 * a2b2r; // d^2/(a^2+b^2)\r\n const criterion = 1.0 - d2a2b2; // 1 - d^2/(a^2+b^2);\r\n if (criterion < -Geometry.smallMetricDistanceSquared) // nSolution = 0\r\n return result;\r\n const da2b2 = -constCoff * a2b2r; // -d/(a^2+b^2)\r\n // (c0,s0) is the closest approach of the line to the circle center (origin)\r\n const c0 = da2b2 * cosCoff; // -ad/(a^2+b^2)\r\n const s0 = da2b2 * sinCoff; // -bd/(a^2+b^2)\r\n if (criterion <= Geometry.smallMetricDistanceSquared) { // nSolution = 1\r\n // We observed criterion = -2.22e-16 in a rotated tangent system, and criterion = 4.44e-16 in a\r\n // transverse line-arc intersectXYZ near-tangency, therefore for criteria near zero (on either side),\r\n // return the (near) tangency; any larger criteria fall through to return both solutions.\r\n result = [Vector2d.create(c0, s0)];\r\n } else { // nSolution = 2\r\n const s = Math.sqrt(criterion * a2b2r); // sqrt(a^2+b^2-d^2)) / (a^2+b^2)\r\n result = [\r\n Vector2d.create(c0 - s * sinCoff, s0 + s * cosCoff),\r\n Vector2d.create(c0 + s * sinCoff, s0 - s * cosCoff),\r\n ];\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n * For a line `f(x)` where `f(x0) = f0` and `f(x1) = f1`, return the `x` value at which `f(x) = fTarget`.\r\n * Return `defaultResult` if `(fTarget - f0) / (f1 - f0)` exceeds [[largeFractionResult]].\r\n */\r\n public static inverseInterpolate(\r\n x0: number, f0: number, x1: number, f1: number, fTarget: number = 0, defaultResult?: number,\r\n ): number | undefined {\r\n /**\r\n * Line equation is \"fTarget-f0 = (f1-f0)/(x1-x0) * (x-x0)\" or \"(fTarget-f0)/(f1-f0) = (x-x0)/(x1-x0)\".\r\n * The left hand side is known so if we call it \"fr\" (short for \"fraction\") we get \"fr = (x-x0)/(x1-x0)\".\r\n * Therefore, \"x = x0*(1-fr) + x1*fr\". This is same as interpolation between \"x0\" and \"x1\" with fraction \"fr\".\r\n */\r\n const fr = Geometry.conditionalDivideFraction(fTarget - f0, f1 - f0); // (fTarget-f0)/(f1-f0)\r\n if (fr !== undefined)\r\n return Geometry.interpolate(x0, fr, x1); // x = x0*(1-fr) + x1*fr\r\n return defaultResult;\r\n }\r\n /**\r\n * For a line `f(x)` where `f(0) = f0` and `f(1) = f1`, return the `x` value at which `f(x) = fTarget`\r\n * Return `undefined` if `(fTarget - f0) / (f1 - f0)` exceeds [[largeFractionResult]].\r\n */\r\n public static inverseInterpolate01(f0: number, f1: number, fTarget: number = 0): number | undefined {\r\n // Line equation is fTarget-f0 = (f1-f0)*x so x = (fTarget-f0)/(f1-f0)\r\n return Geometry.conditionalDivideFraction(fTarget - f0, f1 - f0);\r\n }\r\n /**\r\n * Return `true` if `json` is an array with at least `minEntries` entries and all entries are numbers (including\r\n * those beyond minEntries).\r\n */\r\n public static isNumberArray(json: any, minEntries: number = 0): json is number[] {\r\n if (Array.isArray(json) && json.length >= minEntries) {\r\n let entry;\r\n for (entry of json) {\r\n if (!Number.isFinite(entry))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Return `true` if `json` is an array of at least `minArrays` arrays with at least `minEntries` entries in\r\n * each array and all entries are numbers (including those beyond minEntries).\r\n */\r\n public static isArrayOfNumberArray(json: any, minArrays: number, minEntries: number = 0): json is number[][] {\r\n if (Array.isArray(json) && json.length >= minArrays) {\r\n let entry;\r\n for (entry of json)\r\n if (!Geometry.isNumberArray(entry, minEntries))\r\n return false;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Return the number of steps to take so that `numSteps * stepSize >= total`.\r\n * * `minCount` is returned in the following 3 cases:\r\n * * (a) `stepSize <= 0`\r\n * * (b) `stepSize >= total`\r\n * * (b) `numSteps < minCount`\r\n * * `maxCount` is returned if `numSteps > maxCount`.\r\n */\r\n public static stepCount(stepSize: number, total: number, minCount = 1, maxCount = 101): number {\r\n if (stepSize <= 0)\r\n return minCount;\r\n total = Math.abs(total);\r\n if (stepSize >= total)\r\n return minCount;\r\n /**\r\n * 0.999999 is multiplied so we return the same \"numSteps\" if\r\n * stepSize*(numSteps-1) < total <= stepSize*numSteps.\r\n * For example, if \"stepSize = 2\" then we return \"numSteps = 5\" if 8 < total <= 10.\r\n */\r\n const numSteps = Math.floor((total + 0.999999 * stepSize) / stepSize);\r\n if (numSteps < minCount)\r\n return minCount;\r\n if (numSteps > maxCount)\r\n return maxCount;\r\n return numSteps;\r\n }\r\n /**\r\n * Test if `x` is in the interval [0,1] (but skip the test if `apply01 = false`).\r\n * * This odd behavior is very convenient for code that sometimes does not do the filtering.\r\n * @param x value to test.\r\n * @param apply01 if false, return `true` for all values of `x`. Default is true.\r\n */\r\n public static isIn01(x: number, apply01: boolean = true): boolean {\r\n return apply01 ? x >= 0.0 && x <= 1.0 : true;\r\n }\r\n /**\r\n * Test if `x` is in the interval [0,1] for a given `tolerance`.\r\n * @param x value to test.\r\n * @param tolerance allowable distance outside the interval within which to classify `x` as inside.\r\n */\r\n public static isIn01WithTolerance(x: number, tolerance: number): boolean {\r\n tolerance = Math.abs(tolerance);\r\n return x + tolerance >= 0.0 && x - tolerance <= 1.0;\r\n }\r\n /**\r\n * Restrict x so it is in the interval `[a,b]` (allowing `a` and `b` to be in either order).\r\n * @param x value to restrict\r\n * @param a (usually the lower) interval limit\r\n * @param b (usually the upper) interval limit\r\n */\r\n public static restrictToInterval(x: number, a: number, b: number): number {\r\n if (a <= b) {\r\n if (x < a)\r\n return a;\r\n if (x > b)\r\n return b;\r\n return x;\r\n }\r\n // reversed interval\r\n if (x < b)\r\n return b;\r\n if (x > a)\r\n return a;\r\n return x;\r\n }\r\n /**\r\n * Case-insensitive string comparison.\r\n * * Return `true` if the `toUpperCase` values of `string1` and `string2` match.\r\n */\r\n public static equalStringNoCase(string1: string, string2: string): boolean {\r\n return string1.toUpperCase() === string2.toUpperCase();\r\n }\r\n /**\r\n * Test for exact match of two number arrays.\r\n * Returns `true` if both arrays have the same length and entries, or if both arrays are empty or `undefined`.\r\n */\r\n public static exactEqualNumberArrays(a: number[] | undefined, b: number[] | undefined): boolean {\r\n if (Array.isArray(a) && a.length === 0)\r\n a = undefined;\r\n if (Array.isArray(b) && b.length === 0)\r\n b = undefined;\r\n if (a === undefined && b === undefined)\r\n return true;\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n if (a.length !== b.length)\r\n return false;\r\n for (let i = 0; i < a.length; i++)\r\n if (a[i] !== b[i])\r\n return false;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Test for match of two arrays of type `T`.\r\n * Returns `true` if both arrays have the same length and have the same entries (or both are empty arrays).\r\n */\r\n public static almostEqualArrays<T>(\r\n a: T[] | undefined, b: T[] | undefined, testFunction: (p: T, q: T) => boolean,\r\n ): boolean {\r\n if (Array.isArray(a) && a.length === 0)\r\n a = undefined;\r\n if (Array.isArray(b) && b.length === 0)\r\n b = undefined;\r\n if (a === undefined && b === undefined)\r\n return true;\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n if (a.length !== b.length)\r\n return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (!testFunction(a[i], b[i]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Test for match of two arrays of type number or Float64Array.\r\n * Returns `true` if both arrays have the same length and have the same entries (or both are empty arrays).\r\n */\r\n public static almostEqualNumberArrays(\r\n a: number[] | Float64Array | undefined, b: number[] | Float64Array | undefined,\r\n testFunction: (p: number, q: number) => boolean,\r\n ): boolean {\r\n if (Array.isArray(a) && a.length === 0)\r\n a = undefined;\r\n if (Array.isArray(b) && b.length === 0)\r\n b = undefined;\r\n if (a === undefined && b === undefined)\r\n return true;\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n if (a.length !== b.length)\r\n return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (!testFunction(a[i], b[i]))\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Test for match of two values of type `T`.\r\n * @param a first value\r\n * @param b second value\r\n * @param resultIfBothUndefined returned value when both are `undefined`\r\n * @returns `true` if both values are defined and equal (with ===) and `false` if both values are defined\r\n * but not equal or if one is defined and the other undefined.\r\n */\r\n public static areEqualAllowUndefined<T>(\r\n a: T | undefined, b: T | undefined, resultIfBothUndefined: boolean = true,\r\n ): boolean {\r\n if (a === undefined && b === undefined)\r\n return resultIfBothUndefined;\r\n if (a !== undefined && b !== undefined)\r\n return a === b;\r\n return false;\r\n }\r\n /**\r\n * Clone an array whose members have type `T`, which implements the clone method.\r\n * * If the clone method returns `undefined`, then `undefined` is forced into the cloned array.\r\n * @deprecated in 4.4.0 - will not be removed until after 2026-06-13. Use cloneArray.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n public static cloneMembers<T extends Cloneable<T>>(array: T[] | undefined): T[] | undefined {\r\n if (array === undefined)\r\n return undefined;\r\n const clonedArray: (T | undefined)[] = [];\r\n for (const element of array) {\r\n clonedArray.push(element.clone());\r\n }\r\n return clonedArray as T[];\r\n }\r\n /**\r\n * Clone an array whose members have the cloneable type `T`.\r\n */\r\n public static cloneArray<T extends ICloneable<T>>(array: T[] | undefined): T[] | undefined {\r\n if (array === undefined)\r\n return undefined;\r\n const clonedArray: T[] = [];\r\n for (const element of array) {\r\n clonedArray.push(element.clone());\r\n }\r\n return clonedArray;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BSplineCurve.d.ts","sourceRoot":"","sources":["../../../src/bspline/BSplineCurve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BSplineCurve.d.ts","sourceRoot":"","sources":["../../../src/bspline/BSplineCurve.ts"],"names":[],"mappings":"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"}
@@ -310,7 +310,8 @@ class BSplineCurve3dBase extends CurvePrimitive_1.CurvePrimitive {
310
310
  const minMax = Range_1.Range1d.createNull();
311
311
  // put the altitudes of all the B-spline poles in one array
312
312
  for (let i = 0; i < numPole; i++) {
313
- allCoffs[i] = plane.weightedAltitude(this.getPolePoint4d(i, point4d));
313
+ this.getPolePoint4d(i, point4d);
314
+ allCoffs[i] = plane.weightedAltitude(point4d);
314
315
  minMax.extendX(allCoffs[i]);
315
316
  }
316
317
  // A univariate B-spline through the altitude poles gives altitude as function of the B-spline knot.