@itwin/core-geometry 3.0.0-dev.76 → 3.0.0-dev.80

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 (1999) hide show
  1. package/CHANGELOG.md +1049 -0
  2. package/lib/{Constant.d.ts → cjs/Constant.d.ts} +0 -0
  3. package/lib/cjs/Constant.d.ts.map +1 -0
  4. package/lib/{Constant.js → cjs/Constant.js} +0 -0
  5. package/lib/cjs/Constant.js.map +1 -0
  6. package/lib/{Geometry.d.ts → cjs/Geometry.d.ts} +0 -0
  7. package/lib/cjs/Geometry.d.ts.map +1 -0
  8. package/lib/{Geometry.js → cjs/Geometry.js} +0 -0
  9. package/lib/cjs/Geometry.js.map +1 -0
  10. package/lib/{bspline → cjs/bspline}/AkimaCurve3d.d.ts +0 -0
  11. package/lib/cjs/bspline/AkimaCurve3d.d.ts.map +1 -0
  12. package/lib/{bspline → cjs/bspline}/AkimaCurve3d.js +0 -0
  13. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -0
  14. package/lib/{bspline → cjs/bspline}/BSpline1dNd.d.ts +0 -0
  15. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -0
  16. package/lib/{bspline → cjs/bspline}/BSpline1dNd.js +0 -0
  17. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -0
  18. package/lib/{bspline → cjs/bspline}/BSplineCurve.d.ts +0 -0
  19. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -0
  20. package/lib/{bspline → cjs/bspline}/BSplineCurve.js +0 -0
  21. package/lib/cjs/bspline/BSplineCurve.js.map +1 -0
  22. package/lib/{bspline → cjs/bspline}/BSplineCurve3dH.d.ts +0 -0
  23. package/lib/cjs/bspline/BSplineCurve3dH.d.ts.map +1 -0
  24. package/lib/{bspline → cjs/bspline}/BSplineCurve3dH.js +0 -0
  25. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -0
  26. package/lib/{bspline → cjs/bspline}/BSplineCurveOps.d.ts +0 -0
  27. package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -0
  28. package/lib/{bspline → cjs/bspline}/BSplineCurveOps.js +0 -0
  29. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -0
  30. package/lib/cjs/bspline/BSplineSurface.d.ts +491 -0
  31. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -0
  32. package/lib/{bspline → cjs/bspline}/BSplineSurface.js +0 -0
  33. package/lib/cjs/bspline/BSplineSurface.js.map +1 -0
  34. package/lib/{bspline → cjs/bspline}/Bezier1dNd.d.ts +0 -0
  35. package/lib/cjs/bspline/Bezier1dNd.d.ts.map +1 -0
  36. package/lib/{bspline → cjs/bspline}/Bezier1dNd.js +0 -0
  37. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -0
  38. package/lib/{bspline → cjs/bspline}/BezierCurve3d.d.ts +0 -0
  39. package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -0
  40. package/lib/{bspline → cjs/bspline}/BezierCurve3d.js +0 -0
  41. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -0
  42. package/lib/{bspline → cjs/bspline}/BezierCurve3dH.d.ts +0 -0
  43. package/lib/cjs/bspline/BezierCurve3dH.d.ts.map +1 -0
  44. package/lib/{bspline → cjs/bspline}/BezierCurve3dH.js +0 -0
  45. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -0
  46. package/lib/{bspline → cjs/bspline}/BezierCurveBase.d.ts +0 -0
  47. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -0
  48. package/lib/{bspline → cjs/bspline}/BezierCurveBase.js +0 -0
  49. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -0
  50. package/lib/{bspline → cjs/bspline}/InterpolationCurve3d.d.ts +0 -0
  51. package/lib/cjs/bspline/InterpolationCurve3d.d.ts.map +1 -0
  52. package/lib/{bspline → cjs/bspline}/InterpolationCurve3d.js +0 -0
  53. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -0
  54. package/lib/{bspline → cjs/bspline}/KnotVector.d.ts +0 -0
  55. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -0
  56. package/lib/{bspline → cjs/bspline}/KnotVector.js +0 -0
  57. package/lib/cjs/bspline/KnotVector.js.map +1 -0
  58. package/lib/{bspline → cjs/bspline}/SurfaceLocationDetail.d.ts +0 -0
  59. package/lib/cjs/bspline/SurfaceLocationDetail.d.ts.map +1 -0
  60. package/lib/{bspline → cjs/bspline}/SurfaceLocationDetail.js +0 -0
  61. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -0
  62. package/lib/{clipping → cjs/clipping}/AlternatingConvexClipTree.d.ts +0 -0
  63. package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts.map +1 -0
  64. package/lib/{clipping → cjs/clipping}/AlternatingConvexClipTree.js +0 -0
  65. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -0
  66. package/lib/{clipping → cjs/clipping}/BooleanClipFactory.d.ts +0 -0
  67. package/lib/cjs/clipping/BooleanClipFactory.d.ts.map +1 -0
  68. package/lib/{clipping → cjs/clipping}/BooleanClipFactory.js +0 -0
  69. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -0
  70. package/lib/{clipping → cjs/clipping}/BooleanClipNode.d.ts +0 -0
  71. package/lib/cjs/clipping/BooleanClipNode.d.ts.map +1 -0
  72. package/lib/{clipping → cjs/clipping}/BooleanClipNode.js +0 -0
  73. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -0
  74. package/lib/{clipping → cjs/clipping}/ClipPlane.d.ts +0 -0
  75. package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -0
  76. package/lib/{clipping → cjs/clipping}/ClipPlane.js +0 -0
  77. package/lib/cjs/clipping/ClipPlane.js.map +1 -0
  78. package/lib/{clipping → cjs/clipping}/ClipPrimitive.d.ts +0 -0
  79. package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -0
  80. package/lib/{clipping → cjs/clipping}/ClipPrimitive.js +0 -0
  81. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -0
  82. package/lib/{clipping → cjs/clipping}/ClipUtils.d.ts +0 -0
  83. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -0
  84. package/lib/{clipping → cjs/clipping}/ClipUtils.js +0 -0
  85. package/lib/cjs/clipping/ClipUtils.js.map +1 -0
  86. package/lib/{clipping → cjs/clipping}/ClipVector.d.ts +0 -0
  87. package/lib/cjs/clipping/ClipVector.d.ts.map +1 -0
  88. package/lib/{clipping → cjs/clipping}/ClipVector.js +0 -0
  89. package/lib/cjs/clipping/ClipVector.js.map +1 -0
  90. package/lib/{clipping → cjs/clipping}/ConvexClipPlaneSet.d.ts +0 -0
  91. package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -0
  92. package/lib/{clipping → cjs/clipping}/ConvexClipPlaneSet.js +0 -0
  93. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -0
  94. package/lib/{clipping → cjs/clipping}/UnionOfConvexClipPlaneSets.d.ts +0 -0
  95. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -0
  96. package/lib/{clipping → cjs/clipping}/UnionOfConvexClipPlaneSets.js +0 -0
  97. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -0
  98. package/lib/{clipping → cjs/clipping}/internalContexts/LineStringOffsetClipperContext.d.ts +0 -0
  99. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -0
  100. package/lib/{clipping → cjs/clipping}/internalContexts/LineStringOffsetClipperContext.js +0 -0
  101. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -0
  102. package/lib/{core-geometry.d.ts → cjs/core-geometry.d.ts} +0 -0
  103. package/lib/cjs/core-geometry.d.ts.map +1 -0
  104. package/lib/{core-geometry.js → cjs/core-geometry.js} +0 -0
  105. package/lib/cjs/core-geometry.js.map +1 -0
  106. package/lib/{curve → cjs/curve}/Arc3d.d.ts +0 -0
  107. package/lib/cjs/curve/Arc3d.d.ts.map +1 -0
  108. package/lib/{curve → cjs/curve}/Arc3d.js +0 -0
  109. package/lib/cjs/curve/Arc3d.js.map +1 -0
  110. package/lib/{curve → cjs/curve}/ChainCollectorContext.d.ts +0 -0
  111. package/lib/cjs/curve/ChainCollectorContext.d.ts.map +1 -0
  112. package/lib/{curve → cjs/curve}/ChainCollectorContext.js +0 -0
  113. package/lib/cjs/curve/ChainCollectorContext.js.map +1 -0
  114. package/lib/{curve → cjs/curve}/ConstructCurveBetweenCurves.d.ts +0 -0
  115. package/lib/cjs/curve/ConstructCurveBetweenCurves.d.ts.map +1 -0
  116. package/lib/{curve → cjs/curve}/ConstructCurveBetweenCurves.js +0 -0
  117. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -0
  118. package/lib/{curve → cjs/curve}/CoordinateXYZ.d.ts +0 -0
  119. package/lib/cjs/curve/CoordinateXYZ.d.ts.map +1 -0
  120. package/lib/{curve → cjs/curve}/CoordinateXYZ.js +0 -0
  121. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -0
  122. package/lib/{curve → cjs/curve}/CurveChain.d.ts +0 -0
  123. package/lib/cjs/curve/CurveChain.d.ts.map +1 -0
  124. package/lib/{curve → cjs/curve}/CurveChain.js +0 -0
  125. package/lib/cjs/curve/CurveChain.js.map +1 -0
  126. package/lib/{curve → cjs/curve}/CurveChainWithDistanceIndex.d.ts +0 -0
  127. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -0
  128. package/lib/{curve → cjs/curve}/CurveChainWithDistanceIndex.js +0 -0
  129. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -0
  130. package/lib/{curve → cjs/curve}/CurveCollection.d.ts +0 -0
  131. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -0
  132. package/lib/{curve → cjs/curve}/CurveCollection.js +0 -0
  133. package/lib/cjs/curve/CurveCollection.js.map +1 -0
  134. package/lib/{curve → cjs/curve}/CurveCurve.d.ts +0 -0
  135. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -0
  136. package/lib/{curve → cjs/curve}/CurveCurve.js +0 -0
  137. package/lib/cjs/curve/CurveCurve.js.map +1 -0
  138. package/lib/{curve → cjs/curve}/CurveCurveCloseApproachXY.d.ts +0 -0
  139. package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts.map +1 -0
  140. package/lib/{curve → cjs/curve}/CurveCurveCloseApproachXY.js +0 -0
  141. package/lib/cjs/curve/CurveCurveCloseApproachXY.js.map +1 -0
  142. package/lib/{curve → cjs/curve}/CurveCurveIntersectXY.d.ts +0 -0
  143. package/lib/cjs/curve/CurveCurveIntersectXY.d.ts.map +1 -0
  144. package/lib/{curve → cjs/curve}/CurveCurveIntersectXY.js +0 -0
  145. package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -0
  146. package/lib/{curve → cjs/curve}/CurveCurveIntersectXYZ.d.ts +0 -0
  147. package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts.map +1 -0
  148. package/lib/{curve → cjs/curve}/CurveCurveIntersectXYZ.js +0 -0
  149. package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +1 -0
  150. package/lib/{curve → cjs/curve}/CurveExtendMode.d.ts +0 -0
  151. package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -0
  152. package/lib/{curve → cjs/curve}/CurveExtendMode.js +0 -0
  153. package/lib/cjs/curve/CurveExtendMode.js.map +1 -0
  154. package/lib/{curve → cjs/curve}/CurveFactory.d.ts +0 -0
  155. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -0
  156. package/lib/{curve → cjs/curve}/CurveFactory.js +0 -0
  157. package/lib/cjs/curve/CurveFactory.js.map +1 -0
  158. package/lib/{curve → cjs/curve}/CurveLocationDetail.d.ts +0 -0
  159. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -0
  160. package/lib/{curve → cjs/curve}/CurveLocationDetail.js +0 -0
  161. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -0
  162. package/lib/{curve → cjs/curve}/CurvePrimitive.d.ts +0 -0
  163. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -0
  164. package/lib/{curve → cjs/curve}/CurvePrimitive.js +0 -0
  165. package/lib/cjs/curve/CurvePrimitive.js.map +1 -0
  166. package/lib/{curve → cjs/curve}/CurveProcessor.d.ts +0 -0
  167. package/lib/cjs/curve/CurveProcessor.d.ts.map +1 -0
  168. package/lib/{curve → cjs/curve}/CurveProcessor.js +0 -0
  169. package/lib/cjs/curve/CurveProcessor.js.map +1 -0
  170. package/lib/{curve → cjs/curve}/CurveWireMomentsXYZ.d.ts +0 -0
  171. package/lib/cjs/curve/CurveWireMomentsXYZ.d.ts.map +1 -0
  172. package/lib/{curve → cjs/curve}/CurveWireMomentsXYZ.js +0 -0
  173. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -0
  174. package/lib/{curve → cjs/curve}/GeometryQuery.d.ts +0 -0
  175. package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -0
  176. package/lib/{curve → cjs/curve}/GeometryQuery.js +0 -0
  177. package/lib/cjs/curve/GeometryQuery.js.map +1 -0
  178. package/lib/{curve → cjs/curve}/LineSegment3d.d.ts +0 -0
  179. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -0
  180. package/lib/{curve → cjs/curve}/LineSegment3d.js +0 -0
  181. package/lib/cjs/curve/LineSegment3d.js.map +1 -0
  182. package/lib/{curve → cjs/curve}/LineString3d.d.ts +0 -0
  183. package/lib/cjs/curve/LineString3d.d.ts.map +1 -0
  184. package/lib/{curve → cjs/curve}/LineString3d.js +0 -0
  185. package/lib/cjs/curve/LineString3d.js.map +1 -0
  186. package/lib/{curve → cjs/curve}/Loop.d.ts +0 -0
  187. package/lib/cjs/curve/Loop.d.ts.map +1 -0
  188. package/lib/{curve → cjs/curve}/Loop.js +0 -0
  189. package/lib/cjs/curve/Loop.js.map +1 -0
  190. package/lib/{curve → cjs/curve}/ParityRegion.d.ts +0 -0
  191. package/lib/cjs/curve/ParityRegion.d.ts.map +1 -0
  192. package/lib/{curve → cjs/curve}/ParityRegion.js +0 -0
  193. package/lib/cjs/curve/ParityRegion.js.map +1 -0
  194. package/lib/{curve → cjs/curve}/Path.d.ts +0 -0
  195. package/lib/cjs/curve/Path.d.ts.map +1 -0
  196. package/lib/{curve → cjs/curve}/Path.js +0 -0
  197. package/lib/cjs/curve/Path.js.map +1 -0
  198. package/lib/{curve → cjs/curve}/PointString3d.d.ts +0 -0
  199. package/lib/cjs/curve/PointString3d.d.ts.map +1 -0
  200. package/lib/{curve → cjs/curve}/PointString3d.js +0 -0
  201. package/lib/cjs/curve/PointString3d.js.map +1 -0
  202. package/lib/{curve → cjs/curve}/ProxyCurve.d.ts +0 -0
  203. package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -0
  204. package/lib/{curve → cjs/curve}/ProxyCurve.js +0 -0
  205. package/lib/cjs/curve/ProxyCurve.js.map +1 -0
  206. package/lib/{curve → cjs/curve}/Query/ConsolidateAdjacentPrimitivesContext.d.ts +0 -0
  207. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -0
  208. package/lib/{curve → cjs/curve}/Query/ConsolidateAdjacentPrimitivesContext.js +0 -0
  209. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -0
  210. package/lib/{curve → cjs/curve}/Query/CurveSplitContext.d.ts +0 -0
  211. package/lib/cjs/curve/Query/CurveSplitContext.d.ts.map +1 -0
  212. package/lib/{curve → cjs/curve}/Query/CurveSplitContext.js +0 -0
  213. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -0
  214. package/lib/{curve → cjs/curve}/Query/CylindricalRange.d.ts +0 -0
  215. package/lib/cjs/curve/Query/CylindricalRange.d.ts.map +1 -0
  216. package/lib/{curve → cjs/curve}/Query/CylindricalRange.js +0 -0
  217. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -0
  218. package/lib/{curve → cjs/curve}/Query/InOutTests.d.ts +0 -0
  219. package/lib/cjs/curve/Query/InOutTests.d.ts.map +1 -0
  220. package/lib/{curve → cjs/curve}/Query/InOutTests.js +0 -0
  221. package/lib/cjs/curve/Query/InOutTests.js.map +1 -0
  222. package/lib/{curve → cjs/curve}/Query/PlanarSubdivision.d.ts +0 -0
  223. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -0
  224. package/lib/{curve → cjs/curve}/Query/PlanarSubdivision.js +0 -0
  225. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -0
  226. package/lib/{curve → cjs/curve}/Query/StrokeCountChain.d.ts +0 -0
  227. package/lib/cjs/curve/Query/StrokeCountChain.d.ts.map +1 -0
  228. package/lib/{curve → cjs/curve}/Query/StrokeCountChain.js +0 -0
  229. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -0
  230. package/lib/{curve → cjs/curve}/Query/StrokeCountMap.d.ts +0 -0
  231. package/lib/cjs/curve/Query/StrokeCountMap.d.ts.map +1 -0
  232. package/lib/{curve → cjs/curve}/Query/StrokeCountMap.js +0 -0
  233. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -0
  234. package/lib/{curve → cjs/curve}/RegionMomentsXY.d.ts +0 -0
  235. package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -0
  236. package/lib/{curve → cjs/curve}/RegionMomentsXY.js +0 -0
  237. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -0
  238. package/lib/{curve → cjs/curve}/RegionOps.d.ts +0 -0
  239. package/lib/cjs/curve/RegionOps.d.ts.map +1 -0
  240. package/lib/{curve → cjs/curve}/RegionOps.js +0 -0
  241. package/lib/cjs/curve/RegionOps.js.map +1 -0
  242. package/lib/{curve → cjs/curve}/RegionOpsClassificationSweeps.d.ts +0 -0
  243. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -0
  244. package/lib/{curve → cjs/curve}/RegionOpsClassificationSweeps.js +0 -0
  245. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -0
  246. package/lib/{curve → cjs/curve}/StrokeOptions.d.ts +0 -0
  247. package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -0
  248. package/lib/{curve → cjs/curve}/StrokeOptions.js +0 -0
  249. package/lib/cjs/curve/StrokeOptions.js.map +1 -0
  250. package/lib/{curve → cjs/curve}/UnionRegion.d.ts +0 -0
  251. package/lib/cjs/curve/UnionRegion.d.ts.map +1 -0
  252. package/lib/{curve → cjs/curve}/UnionRegion.js +0 -0
  253. package/lib/cjs/curve/UnionRegion.js.map +1 -0
  254. package/lib/{curve → cjs/curve}/internalContexts/CloneCurvesContext.d.ts +0 -0
  255. package/lib/cjs/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -0
  256. package/lib/{curve → cjs/curve}/internalContexts/CloneCurvesContext.js +0 -0
  257. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -0
  258. package/lib/{curve → cjs/curve}/internalContexts/CloneWithExpandedLineStrings.d.ts +0 -0
  259. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.d.ts.map +1 -0
  260. package/lib/{curve → cjs/curve}/internalContexts/CloneWithExpandedLineStrings.js +0 -0
  261. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -0
  262. package/lib/{curve → cjs/curve}/internalContexts/CountLinearPartsSearchContext.d.ts +0 -0
  263. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.d.ts.map +1 -0
  264. package/lib/{curve → cjs/curve}/internalContexts/CountLinearPartsSearchContext.js +0 -0
  265. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -0
  266. package/lib/{curve → cjs/curve}/internalContexts/GapSearchContext.d.ts +0 -0
  267. package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts.map +1 -0
  268. package/lib/{curve → cjs/curve}/internalContexts/GapSearchContext.js +0 -0
  269. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -0
  270. package/lib/{curve → cjs/curve}/internalContexts/MultiChainCollector.d.ts +0 -0
  271. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -0
  272. package/lib/{curve → cjs/curve}/internalContexts/MultiChainCollector.js +0 -0
  273. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -0
  274. package/lib/{curve → cjs/curve}/internalContexts/PlaneAltitudeRangeContext.d.ts +0 -0
  275. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -0
  276. package/lib/{curve → cjs/curve}/internalContexts/PlaneAltitudeRangeContext.js +0 -0
  277. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -0
  278. package/lib/{curve → cjs/curve}/internalContexts/PolygonOffsetContext.d.ts +0 -0
  279. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -0
  280. package/lib/{curve → cjs/curve}/internalContexts/PolygonOffsetContext.js +0 -0
  281. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -0
  282. package/lib/{curve → cjs/curve}/internalContexts/SumLengthsContext.d.ts +0 -0
  283. package/lib/cjs/curve/internalContexts/SumLengthsContext.d.ts.map +1 -0
  284. package/lib/{curve → cjs/curve}/internalContexts/SumLengthsContext.js +0 -0
  285. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -0
  286. package/lib/{curve → cjs/curve}/internalContexts/TransformInPlaceContext.d.ts +0 -0
  287. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -0
  288. package/lib/{curve → cjs/curve}/internalContexts/TransformInPlaceContext.js +0 -0
  289. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -0
  290. package/lib/{curve → cjs/curve}/spiral/AustralianRailCorpXYEvaluator.d.ts +0 -0
  291. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -0
  292. package/lib/{curve → cjs/curve}/spiral/AustralianRailCorpXYEvaluator.js +0 -0
  293. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -0
  294. package/lib/{curve → cjs/curve}/spiral/ClothoidSeries.d.ts +0 -0
  295. package/lib/cjs/curve/spiral/ClothoidSeries.d.ts.map +1 -0
  296. package/lib/{curve → cjs/curve}/spiral/ClothoidSeries.js +0 -0
  297. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -0
  298. package/lib/{curve → cjs/curve}/spiral/CubicEvaluator.d.ts +0 -0
  299. package/lib/cjs/curve/spiral/CubicEvaluator.d.ts.map +1 -0
  300. package/lib/{curve → cjs/curve}/spiral/CubicEvaluator.js +0 -0
  301. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -0
  302. package/lib/{curve → cjs/curve}/spiral/CzechSpiralEvaluator.d.ts +0 -0
  303. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -0
  304. package/lib/{curve → cjs/curve}/spiral/CzechSpiralEvaluator.js +0 -0
  305. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -0
  306. package/lib/{curve → cjs/curve}/spiral/DirectHalfCosineSpiralEvaluator.d.ts +0 -0
  307. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -0
  308. package/lib/{curve → cjs/curve}/spiral/DirectHalfCosineSpiralEvaluator.js +0 -0
  309. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -0
  310. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +265 -0
  311. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -0
  312. package/lib/cjs/curve/spiral/DirectSpiral3d.js +473 -0
  313. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -0
  314. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +158 -0
  315. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -0
  316. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +364 -0
  317. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -0
  318. package/lib/{curve → cjs/curve}/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +0 -0
  319. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -0
  320. package/lib/{curve → cjs/curve}/spiral/MXCubicAlongArcSpiralEvaluator.js +0 -0
  321. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -0
  322. package/lib/{curve → cjs/curve}/spiral/NormalizedTransition.d.ts +0 -0
  323. package/lib/cjs/curve/spiral/NormalizedTransition.d.ts.map +1 -0
  324. package/lib/{curve → cjs/curve}/spiral/NormalizedTransition.js +0 -0
  325. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -0
  326. package/lib/{curve → cjs/curve}/spiral/PolishCubicSpiralEvaluator.d.ts +0 -0
  327. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -0
  328. package/lib/{curve → cjs/curve}/spiral/PolishCubicSpiralEvaluator.js +0 -0
  329. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -0
  330. package/lib/{curve → cjs/curve}/spiral/TransitionConditionalProperties.d.ts +0 -0
  331. package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -0
  332. package/lib/{curve → cjs/curve}/spiral/TransitionConditionalProperties.js +0 -0
  333. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -0
  334. package/lib/{curve → cjs/curve}/spiral/TransitionSpiral3d.d.ts +0 -0
  335. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -0
  336. package/lib/{curve → cjs/curve}/spiral/TransitionSpiral3d.js +0 -0
  337. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -0
  338. package/lib/{curve → cjs/curve}/spiral/XYCurveEvaluator.d.ts +0 -0
  339. package/lib/cjs/curve/spiral/XYCurveEvaluator.d.ts.map +1 -0
  340. package/lib/{curve → cjs/curve}/spiral/XYCurveEvaluator.js +0 -0
  341. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -0
  342. package/lib/{geometry3d → cjs/geometry3d}/Angle.d.ts +0 -0
  343. package/lib/cjs/geometry3d/Angle.d.ts.map +1 -0
  344. package/lib/{geometry3d → cjs/geometry3d}/Angle.js +0 -0
  345. package/lib/cjs/geometry3d/Angle.js.map +1 -0
  346. package/lib/{geometry3d → cjs/geometry3d}/AngleSweep.d.ts +0 -0
  347. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -0
  348. package/lib/{geometry3d → cjs/geometry3d}/AngleSweep.js +0 -0
  349. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -0
  350. package/lib/{geometry3d → cjs/geometry3d}/BarycentricTriangle.d.ts +0 -0
  351. package/lib/cjs/geometry3d/BarycentricTriangle.d.ts.map +1 -0
  352. package/lib/{geometry3d → cjs/geometry3d}/BarycentricTriangle.js +0 -0
  353. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -0
  354. package/lib/{geometry3d → cjs/geometry3d}/BilinearPatch.d.ts +0 -0
  355. package/lib/cjs/geometry3d/BilinearPatch.d.ts.map +1 -0
  356. package/lib/{geometry3d → cjs/geometry3d}/BilinearPatch.js +0 -0
  357. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -0
  358. package/lib/{geometry3d → cjs/geometry3d}/CoincidentGeometryOps.d.ts +0 -0
  359. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -0
  360. package/lib/{geometry3d → cjs/geometry3d}/CoincidentGeometryOps.js +0 -0
  361. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -0
  362. package/lib/{geometry3d → cjs/geometry3d}/Ellipsoid.d.ts +0 -0
  363. package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -0
  364. package/lib/{geometry3d → cjs/geometry3d}/Ellipsoid.js +0 -0
  365. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -0
  366. package/lib/{geometry3d → cjs/geometry3d}/FrameBuilder.d.ts +0 -0
  367. package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -0
  368. package/lib/{geometry3d → cjs/geometry3d}/FrameBuilder.js +0 -0
  369. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -0
  370. package/lib/{geometry3d → cjs/geometry3d}/FrustumAnimation.d.ts +0 -0
  371. package/lib/cjs/geometry3d/FrustumAnimation.d.ts.map +1 -0
  372. package/lib/{geometry3d → cjs/geometry3d}/FrustumAnimation.js +0 -0
  373. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -0
  374. package/lib/{geometry3d → cjs/geometry3d}/GeometryHandler.d.ts +0 -0
  375. package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -0
  376. package/lib/{geometry3d → cjs/geometry3d}/GeometryHandler.js +0 -0
  377. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -0
  378. package/lib/{geometry3d → cjs/geometry3d}/GrowableBlockedArray.d.ts +0 -0
  379. package/lib/cjs/geometry3d/GrowableBlockedArray.d.ts.map +1 -0
  380. package/lib/{geometry3d → cjs/geometry3d}/GrowableBlockedArray.js +0 -0
  381. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -0
  382. package/lib/{geometry3d → cjs/geometry3d}/GrowableFloat64Array.d.ts +0 -0
  383. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -0
  384. package/lib/{geometry3d → cjs/geometry3d}/GrowableFloat64Array.js +0 -0
  385. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -0
  386. package/lib/{geometry3d → cjs/geometry3d}/GrowableXYArray.d.ts +0 -0
  387. package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -0
  388. package/lib/{geometry3d → cjs/geometry3d}/GrowableXYArray.js +0 -0
  389. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -0
  390. package/lib/{geometry3d → cjs/geometry3d}/GrowableXYZArray.d.ts +0 -0
  391. package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -0
  392. package/lib/{geometry3d → cjs/geometry3d}/GrowableXYZArray.js +0 -0
  393. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -0
  394. package/lib/{geometry3d → cjs/geometry3d}/IndexedCollectionInterval.d.ts +0 -0
  395. package/lib/cjs/geometry3d/IndexedCollectionInterval.d.ts.map +1 -0
  396. package/lib/{geometry3d → cjs/geometry3d}/IndexedCollectionInterval.js +0 -0
  397. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -0
  398. package/lib/{geometry3d → cjs/geometry3d}/IndexedXYCollection.d.ts +0 -0
  399. package/lib/cjs/geometry3d/IndexedXYCollection.d.ts.map +1 -0
  400. package/lib/{geometry3d → cjs/geometry3d}/IndexedXYCollection.js +0 -0
  401. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -0
  402. package/lib/{geometry3d → cjs/geometry3d}/IndexedXYZCollection.d.ts +0 -0
  403. package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -0
  404. package/lib/{geometry3d → cjs/geometry3d}/IndexedXYZCollection.js +0 -0
  405. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -0
  406. package/lib/{geometry3d → cjs/geometry3d}/LongitudeLatitudeAltitude.d.ts +0 -0
  407. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.d.ts.map +1 -0
  408. package/lib/{geometry3d → cjs/geometry3d}/LongitudeLatitudeAltitude.js +0 -0
  409. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -0
  410. package/lib/{geometry3d → cjs/geometry3d}/Matrix3d.d.ts +0 -0
  411. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -0
  412. package/lib/{geometry3d → cjs/geometry3d}/Matrix3d.js +0 -0
  413. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -0
  414. package/lib/{geometry3d → cjs/geometry3d}/OrderedRotationAngles.d.ts +0 -0
  415. package/lib/cjs/geometry3d/OrderedRotationAngles.d.ts.map +1 -0
  416. package/lib/{geometry3d → cjs/geometry3d}/OrderedRotationAngles.js +0 -0
  417. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -0
  418. package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndUnitNormal.d.ts +0 -0
  419. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -0
  420. package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndUnitNormal.js +0 -0
  421. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -0
  422. package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndVectors.d.ts +0 -0
  423. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -0
  424. package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndVectors.js +0 -0
  425. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -0
  426. package/lib/{geometry3d → cjs/geometry3d}/Point2dArrayCarrier.d.ts +0 -0
  427. package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts.map +1 -0
  428. package/lib/{geometry3d → cjs/geometry3d}/Point2dArrayCarrier.js +0 -0
  429. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -0
  430. package/lib/{geometry3d → cjs/geometry3d}/Point2dVector2d.d.ts +0 -0
  431. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -0
  432. package/lib/{geometry3d → cjs/geometry3d}/Point2dVector2d.js +0 -0
  433. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -0
  434. package/lib/{geometry3d → cjs/geometry3d}/Point3dArrayCarrier.d.ts +0 -0
  435. package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -0
  436. package/lib/{geometry3d → cjs/geometry3d}/Point3dArrayCarrier.js +0 -0
  437. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -0
  438. package/lib/{geometry3d → cjs/geometry3d}/Point3dVector3d.d.ts +0 -0
  439. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -0
  440. package/lib/{geometry3d → cjs/geometry3d}/Point3dVector3d.js +0 -0
  441. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -0
  442. package/lib/{geometry3d → cjs/geometry3d}/PointHelpers.d.ts +0 -0
  443. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -0
  444. package/lib/{geometry3d → cjs/geometry3d}/PointHelpers.js +0 -0
  445. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -0
  446. package/lib/{geometry3d → cjs/geometry3d}/PointStreaming.d.ts +0 -0
  447. package/lib/cjs/geometry3d/PointStreaming.d.ts.map +1 -0
  448. package/lib/{geometry3d → cjs/geometry3d}/PointStreaming.js +0 -0
  449. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -0
  450. package/lib/{geometry3d → cjs/geometry3d}/PolygonOps.d.ts +0 -0
  451. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -0
  452. package/lib/{geometry3d → cjs/geometry3d}/PolygonOps.js +0 -0
  453. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -0
  454. package/lib/{geometry3d → cjs/geometry3d}/PolylineCompressionByEdgeOffset.d.ts +0 -0
  455. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -0
  456. package/lib/{geometry3d → cjs/geometry3d}/PolylineCompressionByEdgeOffset.js +0 -0
  457. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -0
  458. package/lib/{geometry3d → cjs/geometry3d}/PolylineOps.d.ts +0 -0
  459. package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -0
  460. package/lib/{geometry3d → cjs/geometry3d}/PolylineOps.js +0 -0
  461. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -0
  462. package/lib/{geometry3d → cjs/geometry3d}/Range.d.ts +0 -0
  463. package/lib/cjs/geometry3d/Range.d.ts.map +1 -0
  464. package/lib/{geometry3d → cjs/geometry3d}/Range.js +0 -0
  465. package/lib/cjs/geometry3d/Range.js.map +1 -0
  466. package/lib/{geometry3d → cjs/geometry3d}/Ray3d.d.ts +0 -0
  467. package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -0
  468. package/lib/{geometry3d → cjs/geometry3d}/Ray3d.js +0 -0
  469. package/lib/cjs/geometry3d/Ray3d.js.map +1 -0
  470. package/lib/{geometry3d → cjs/geometry3d}/ReusableObjectCache.d.ts +0 -0
  471. package/lib/cjs/geometry3d/ReusableObjectCache.d.ts.map +1 -0
  472. package/lib/{geometry3d → cjs/geometry3d}/ReusableObjectCache.js +0 -0
  473. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -0
  474. package/lib/{geometry3d → cjs/geometry3d}/Segment1d.d.ts +0 -0
  475. package/lib/cjs/geometry3d/Segment1d.d.ts.map +1 -0
  476. package/lib/{geometry3d → cjs/geometry3d}/Segment1d.js +0 -0
  477. package/lib/cjs/geometry3d/Segment1d.js.map +1 -0
  478. package/lib/{geometry3d → cjs/geometry3d}/SortablePolygon.d.ts +0 -0
  479. package/lib/cjs/geometry3d/SortablePolygon.d.ts.map +1 -0
  480. package/lib/{geometry3d → cjs/geometry3d}/SortablePolygon.js +0 -0
  481. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -0
  482. package/lib/{geometry3d → cjs/geometry3d}/Transform.d.ts +0 -0
  483. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -0
  484. package/lib/{geometry3d → cjs/geometry3d}/Transform.js +0 -0
  485. package/lib/cjs/geometry3d/Transform.js.map +1 -0
  486. package/lib/{geometry3d → cjs/geometry3d}/UVSurfaceOps.d.ts +0 -0
  487. package/lib/cjs/geometry3d/UVSurfaceOps.d.ts.map +1 -0
  488. package/lib/{geometry3d → cjs/geometry3d}/UVSurfaceOps.js +0 -0
  489. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -0
  490. package/lib/{geometry3d → cjs/geometry3d}/XYZProps.d.ts +0 -0
  491. package/lib/cjs/geometry3d/XYZProps.d.ts.map +1 -0
  492. package/lib/{geometry3d → cjs/geometry3d}/XYZProps.js +0 -0
  493. package/lib/cjs/geometry3d/XYZProps.js.map +1 -0
  494. package/lib/{geometry3d → cjs/geometry3d}/YawPitchRollAngles.d.ts +0 -0
  495. package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts.map +1 -0
  496. package/lib/{geometry3d → cjs/geometry3d}/YawPitchRollAngles.js +0 -0
  497. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -0
  498. package/lib/{geometry4d → cjs/geometry4d}/Map4d.d.ts +0 -0
  499. package/lib/cjs/geometry4d/Map4d.d.ts.map +1 -0
  500. package/lib/{geometry4d → cjs/geometry4d}/Map4d.js +0 -0
  501. package/lib/cjs/geometry4d/Map4d.js.map +1 -0
  502. package/lib/{geometry4d → cjs/geometry4d}/Matrix4d.d.ts +0 -0
  503. package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -0
  504. package/lib/{geometry4d → cjs/geometry4d}/Matrix4d.js +0 -0
  505. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -0
  506. package/lib/{geometry4d → cjs/geometry4d}/MomentData.d.ts +0 -0
  507. package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -0
  508. package/lib/{geometry4d → cjs/geometry4d}/MomentData.js +0 -0
  509. package/lib/cjs/geometry4d/MomentData.js.map +1 -0
  510. package/lib/{geometry4d → cjs/geometry4d}/PlaneByOriginAndVectors4d.d.ts +0 -0
  511. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.d.ts.map +1 -0
  512. package/lib/{geometry4d → cjs/geometry4d}/PlaneByOriginAndVectors4d.js +0 -0
  513. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -0
  514. package/lib/{geometry4d → cjs/geometry4d}/Point4d.d.ts +0 -0
  515. package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -0
  516. package/lib/{geometry4d → cjs/geometry4d}/Point4d.js +0 -0
  517. package/lib/cjs/geometry4d/Point4d.js.map +1 -0
  518. package/lib/{numerics → cjs/numerics}/BandedSystem.d.ts +0 -0
  519. package/lib/cjs/numerics/BandedSystem.d.ts.map +1 -0
  520. package/lib/{numerics → cjs/numerics}/BandedSystem.js +0 -0
  521. package/lib/cjs/numerics/BandedSystem.js.map +1 -0
  522. package/lib/{numerics → cjs/numerics}/BezierPolynomials.d.ts +0 -0
  523. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -0
  524. package/lib/{numerics → cjs/numerics}/BezierPolynomials.js +0 -0
  525. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -0
  526. package/lib/{numerics → cjs/numerics}/ClusterableArray.d.ts +0 -0
  527. package/lib/cjs/numerics/ClusterableArray.d.ts.map +1 -0
  528. package/lib/{numerics → cjs/numerics}/ClusterableArray.js +0 -0
  529. package/lib/cjs/numerics/ClusterableArray.js.map +1 -0
  530. package/lib/{numerics → cjs/numerics}/Complex.d.ts +0 -0
  531. package/lib/cjs/numerics/Complex.d.ts.map +1 -0
  532. package/lib/{numerics → cjs/numerics}/Complex.js +0 -0
  533. package/lib/cjs/numerics/Complex.js.map +1 -0
  534. package/lib/{numerics → cjs/numerics}/ConvexPolygon2d.d.ts +0 -0
  535. package/lib/cjs/numerics/ConvexPolygon2d.d.ts.map +1 -0
  536. package/lib/{numerics → cjs/numerics}/ConvexPolygon2d.js +0 -0
  537. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -0
  538. package/lib/{numerics → cjs/numerics}/Newton.d.ts +0 -0
  539. package/lib/cjs/numerics/Newton.d.ts.map +1 -0
  540. package/lib/{numerics → cjs/numerics}/Newton.js +0 -0
  541. package/lib/cjs/numerics/Newton.js.map +1 -0
  542. package/lib/{numerics → cjs/numerics}/PascalCoefficients.d.ts +0 -0
  543. package/lib/cjs/numerics/PascalCoefficients.d.ts.map +1 -0
  544. package/lib/{numerics → cjs/numerics}/PascalCoefficients.js +0 -0
  545. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -0
  546. package/lib/{numerics → cjs/numerics}/PolarData.d.ts +0 -0
  547. package/lib/cjs/numerics/PolarData.d.ts.map +1 -0
  548. package/lib/{numerics → cjs/numerics}/PolarData.js +0 -0
  549. package/lib/cjs/numerics/PolarData.js.map +1 -0
  550. package/lib/{numerics → cjs/numerics}/Polynomials.d.ts +0 -0
  551. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -0
  552. package/lib/{numerics → cjs/numerics}/Polynomials.js +0 -0
  553. package/lib/cjs/numerics/Polynomials.js.map +1 -0
  554. package/lib/{numerics → cjs/numerics}/Quadrature.d.ts +0 -0
  555. package/lib/cjs/numerics/Quadrature.d.ts.map +1 -0
  556. package/lib/{numerics → cjs/numerics}/Quadrature.js +0 -0
  557. package/lib/cjs/numerics/Quadrature.js.map +1 -0
  558. package/lib/{numerics → cjs/numerics}/Range1dArray.d.ts +0 -0
  559. package/lib/cjs/numerics/Range1dArray.d.ts.map +1 -0
  560. package/lib/{numerics → cjs/numerics}/Range1dArray.js +0 -0
  561. package/lib/cjs/numerics/Range1dArray.js.map +1 -0
  562. package/lib/{numerics → cjs/numerics}/TriDiagonalSystem.d.ts +0 -0
  563. package/lib/cjs/numerics/TriDiagonalSystem.d.ts.map +1 -0
  564. package/lib/{numerics → cjs/numerics}/TriDiagonalSystem.js +0 -0
  565. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -0
  566. package/lib/{numerics → cjs/numerics}/UnionFind.d.ts +0 -0
  567. package/lib/cjs/numerics/UnionFind.d.ts.map +1 -0
  568. package/lib/{numerics → cjs/numerics}/UnionFind.js +0 -0
  569. package/lib/cjs/numerics/UnionFind.js.map +1 -0
  570. package/lib/{numerics → cjs/numerics}/UsageSums.d.ts +0 -0
  571. package/lib/cjs/numerics/UsageSums.d.ts.map +1 -0
  572. package/lib/{numerics → cjs/numerics}/UsageSums.js +0 -0
  573. package/lib/cjs/numerics/UsageSums.js.map +1 -0
  574. package/lib/{polyface → cjs/polyface}/AuxData.d.ts +0 -0
  575. package/lib/cjs/polyface/AuxData.d.ts.map +1 -0
  576. package/lib/{polyface → cjs/polyface}/AuxData.js +0 -0
  577. package/lib/cjs/polyface/AuxData.js.map +1 -0
  578. package/lib/{polyface → cjs/polyface}/BoxTopology.d.ts +0 -0
  579. package/lib/cjs/polyface/BoxTopology.d.ts.map +1 -0
  580. package/lib/{polyface → cjs/polyface}/BoxTopology.js +0 -0
  581. package/lib/cjs/polyface/BoxTopology.js.map +1 -0
  582. package/lib/{polyface → cjs/polyface}/FacetFaceData.d.ts +0 -0
  583. package/lib/cjs/polyface/FacetFaceData.d.ts.map +1 -0
  584. package/lib/{polyface → cjs/polyface}/FacetFaceData.js +0 -0
  585. package/lib/cjs/polyface/FacetFaceData.js.map +1 -0
  586. package/lib/{polyface → cjs/polyface}/FacetOrientation.d.ts +0 -0
  587. package/lib/cjs/polyface/FacetOrientation.d.ts.map +1 -0
  588. package/lib/{polyface → cjs/polyface}/FacetOrientation.js +0 -0
  589. package/lib/cjs/polyface/FacetOrientation.js.map +1 -0
  590. package/lib/{polyface → cjs/polyface}/GreedyTriangulationBetweenLineStrings.d.ts +0 -0
  591. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.d.ts.map +1 -0
  592. package/lib/{polyface → cjs/polyface}/GreedyTriangulationBetweenLineStrings.js +0 -0
  593. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -0
  594. package/lib/{polyface → cjs/polyface}/IndexedEdgeMatcher.d.ts +0 -0
  595. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -0
  596. package/lib/{polyface → cjs/polyface}/IndexedEdgeMatcher.js +0 -0
  597. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -0
  598. package/lib/{polyface → cjs/polyface}/IndexedPolyfaceVisitor.d.ts +0 -0
  599. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -0
  600. package/lib/{polyface → cjs/polyface}/IndexedPolyfaceVisitor.js +0 -0
  601. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -0
  602. package/lib/{polyface → cjs/polyface}/Polyface.d.ts +0 -0
  603. package/lib/cjs/polyface/Polyface.d.ts.map +1 -0
  604. package/lib/{polyface → cjs/polyface}/Polyface.js +0 -0
  605. package/lib/cjs/polyface/Polyface.js.map +1 -0
  606. package/lib/{polyface → cjs/polyface}/PolyfaceBuilder.d.ts +0 -0
  607. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -0
  608. package/lib/{polyface → cjs/polyface}/PolyfaceBuilder.js +0 -0
  609. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -0
  610. package/lib/{polyface → cjs/polyface}/PolyfaceClip.d.ts +0 -0
  611. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -0
  612. package/lib/{polyface → cjs/polyface}/PolyfaceClip.js +0 -0
  613. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -0
  614. package/lib/cjs/polyface/PolyfaceData.d.ts +206 -0
  615. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -0
  616. package/lib/cjs/polyface/PolyfaceData.js +531 -0
  617. package/lib/cjs/polyface/PolyfaceData.js.map +1 -0
  618. package/lib/{polyface → cjs/polyface}/PolyfaceQuery.d.ts +0 -0
  619. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -0
  620. package/lib/{polyface → cjs/polyface}/PolyfaceQuery.js +0 -0
  621. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -0
  622. package/lib/{polyface → cjs/polyface}/RangeLengthData.d.ts +0 -0
  623. package/lib/cjs/polyface/RangeLengthData.d.ts.map +1 -0
  624. package/lib/{polyface → cjs/polyface}/RangeLengthData.js +0 -0
  625. package/lib/cjs/polyface/RangeLengthData.js.map +1 -0
  626. package/lib/{polyface → cjs/polyface}/TaggedNumericData.d.ts +0 -0
  627. package/lib/cjs/polyface/TaggedNumericData.d.ts.map +1 -0
  628. package/lib/{polyface → cjs/polyface}/TaggedNumericData.js +0 -0
  629. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -0
  630. package/lib/{polyface → cjs/polyface}/TriangleCandidate.d.ts +0 -0
  631. package/lib/cjs/polyface/TriangleCandidate.d.ts.map +1 -0
  632. package/lib/{polyface → cjs/polyface}/TriangleCandidate.js +0 -0
  633. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -0
  634. package/lib/{polyface → cjs/polyface}/multiclip/BuildAverageNormalsContext.d.ts +0 -0
  635. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -0
  636. package/lib/{polyface → cjs/polyface}/multiclip/BuildAverageNormalsContext.js +0 -0
  637. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -0
  638. package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSet.d.ts +0 -0
  639. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -0
  640. package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSet.js +0 -0
  641. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -0
  642. package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +0 -0
  643. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -0
  644. package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSetWithOverflow.js +0 -0
  645. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -0
  646. package/lib/{polyface → cjs/polyface}/multiclip/LinearSearchRange2dArray.d.ts +0 -0
  647. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -0
  648. package/lib/{polyface → cjs/polyface}/multiclip/LinearSearchRange2dArray.js +0 -0
  649. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -0
  650. package/lib/{polyface → cjs/polyface}/multiclip/Range2dSearchInterface.d.ts +0 -0
  651. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -0
  652. package/lib/{polyface → cjs/polyface}/multiclip/Range2dSearchInterface.js +0 -0
  653. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -0
  654. package/lib/{polyface → cjs/polyface}/multiclip/RangeSearch.d.ts +0 -0
  655. package/lib/cjs/polyface/multiclip/RangeSearch.d.ts.map +1 -0
  656. package/lib/{polyface → cjs/polyface}/multiclip/RangeSearch.js +0 -0
  657. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -0
  658. package/lib/{polyface → cjs/polyface}/multiclip/SweepLineStringToFacetContext.d.ts +0 -0
  659. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -0
  660. package/lib/{polyface → cjs/polyface}/multiclip/SweepLineStringToFacetContext.js +0 -0
  661. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -0
  662. package/lib/{polyface → cjs/polyface}/multiclip/XYPointBuckets.d.ts +0 -0
  663. package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts.map +1 -0
  664. package/lib/{polyface → cjs/polyface}/multiclip/XYPointBuckets.js +0 -0
  665. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -0
  666. package/lib/{serialization → cjs/serialization}/BGFBAccessors.d.ts +0 -0
  667. package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -0
  668. package/lib/{serialization → cjs/serialization}/BGFBAccessors.js +0 -0
  669. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -0
  670. package/lib/{serialization → cjs/serialization}/BGFBReader.d.ts +0 -0
  671. package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -0
  672. package/lib/{serialization → cjs/serialization}/BGFBReader.js +0 -0
  673. package/lib/cjs/serialization/BGFBReader.js.map +1 -0
  674. package/lib/{serialization → cjs/serialization}/BGFBWriter.d.ts +0 -0
  675. package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -0
  676. package/lib/{serialization → cjs/serialization}/BGFBWriter.js +0 -0
  677. package/lib/cjs/serialization/BGFBWriter.js.map +1 -0
  678. package/lib/{serialization → cjs/serialization}/BentleyGeometryFlatBuffer.d.ts +0 -0
  679. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.d.ts.map +1 -0
  680. package/lib/{serialization → cjs/serialization}/BentleyGeometryFlatBuffer.js +0 -0
  681. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -0
  682. package/lib/{serialization → cjs/serialization}/DeepCompare.d.ts +0 -0
  683. package/lib/cjs/serialization/DeepCompare.d.ts.map +1 -0
  684. package/lib/{serialization → cjs/serialization}/DeepCompare.js +0 -0
  685. package/lib/cjs/serialization/DeepCompare.js.map +1 -0
  686. package/lib/{serialization → cjs/serialization}/GeometrySamples.d.ts +0 -0
  687. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -0
  688. package/lib/{serialization → cjs/serialization}/GeometrySamples.js +0 -0
  689. package/lib/cjs/serialization/GeometrySamples.js.map +1 -0
  690. package/lib/{serialization → cjs/serialization}/IModelJsonSchema.d.ts +0 -0
  691. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -0
  692. package/lib/{serialization → cjs/serialization}/IModelJsonSchema.js +0 -0
  693. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -0
  694. package/lib/{solid → cjs/solid}/Box.d.ts +0 -0
  695. package/lib/cjs/solid/Box.d.ts.map +1 -0
  696. package/lib/{solid → cjs/solid}/Box.js +0 -0
  697. package/lib/cjs/solid/Box.js.map +1 -0
  698. package/lib/{solid → cjs/solid}/Cone.d.ts +0 -0
  699. package/lib/cjs/solid/Cone.d.ts.map +1 -0
  700. package/lib/{solid → cjs/solid}/Cone.js +0 -0
  701. package/lib/cjs/solid/Cone.js.map +1 -0
  702. package/lib/{solid → cjs/solid}/LinearSweep.d.ts +0 -0
  703. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -0
  704. package/lib/{solid → cjs/solid}/LinearSweep.js +0 -0
  705. package/lib/cjs/solid/LinearSweep.js.map +1 -0
  706. package/lib/{solid → cjs/solid}/RotationalSweep.d.ts +0 -0
  707. package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -0
  708. package/lib/{solid → cjs/solid}/RotationalSweep.js +0 -0
  709. package/lib/cjs/solid/RotationalSweep.js.map +1 -0
  710. package/lib/{solid → cjs/solid}/RuledSweep.d.ts +0 -0
  711. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -0
  712. package/lib/{solid → cjs/solid}/RuledSweep.js +0 -0
  713. package/lib/cjs/solid/RuledSweep.js.map +1 -0
  714. package/lib/{solid → cjs/solid}/SolidPrimitive.d.ts +0 -0
  715. package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -0
  716. package/lib/{solid → cjs/solid}/SolidPrimitive.js +0 -0
  717. package/lib/cjs/solid/SolidPrimitive.js.map +1 -0
  718. package/lib/{solid → cjs/solid}/Sphere.d.ts +0 -0
  719. package/lib/cjs/solid/Sphere.d.ts.map +1 -0
  720. package/lib/{solid → cjs/solid}/Sphere.js +0 -0
  721. package/lib/cjs/solid/Sphere.js.map +1 -0
  722. package/lib/{solid → cjs/solid}/SweepContour.d.ts +0 -0
  723. package/lib/cjs/solid/SweepContour.d.ts.map +1 -0
  724. package/lib/{solid → cjs/solid}/SweepContour.js +0 -0
  725. package/lib/cjs/solid/SweepContour.js.map +1 -0
  726. package/lib/{solid → cjs/solid}/TorusPipe.d.ts +0 -0
  727. package/lib/cjs/solid/TorusPipe.d.ts.map +1 -0
  728. package/lib/{solid → cjs/solid}/TorusPipe.js +0 -0
  729. package/lib/cjs/solid/TorusPipe.js.map +1 -0
  730. package/lib/{topology → cjs/topology}/ChainMerge.d.ts +0 -0
  731. package/lib/cjs/topology/ChainMerge.d.ts.map +1 -0
  732. package/lib/{topology → cjs/topology}/ChainMerge.js +0 -0
  733. package/lib/cjs/topology/ChainMerge.js.map +1 -0
  734. package/lib/{topology → cjs/topology}/Graph.d.ts +0 -0
  735. package/lib/cjs/topology/Graph.d.ts.map +1 -0
  736. package/lib/{topology → cjs/topology}/Graph.js +0 -0
  737. package/lib/cjs/topology/Graph.js.map +1 -0
  738. package/lib/{topology → cjs/topology}/HalfEdgeGraphSearch.d.ts +0 -0
  739. package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -0
  740. package/lib/{topology → cjs/topology}/HalfEdgeGraphSearch.js +0 -0
  741. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -0
  742. package/lib/{topology → cjs/topology}/HalfEdgeGraphSpineContext.d.ts +0 -0
  743. package/lib/cjs/topology/HalfEdgeGraphSpineContext.d.ts.map +1 -0
  744. package/lib/{topology → cjs/topology}/HalfEdgeGraphSpineContext.js +0 -0
  745. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -0
  746. package/lib/{topology → cjs/topology}/HalfEdgeGraphValidation.d.ts +0 -0
  747. package/lib/cjs/topology/HalfEdgeGraphValidation.d.ts.map +1 -0
  748. package/lib/{topology → cjs/topology}/HalfEdgeGraphValidation.js +0 -0
  749. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -0
  750. package/lib/{topology → cjs/topology}/HalfEdgeMarkSet.d.ts +0 -0
  751. package/lib/cjs/topology/HalfEdgeMarkSet.d.ts.map +1 -0
  752. package/lib/{topology → cjs/topology}/HalfEdgeMarkSet.js +0 -0
  753. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -0
  754. package/lib/{topology → cjs/topology}/HalfEdgeNodeXYZUV.d.ts +0 -0
  755. package/lib/cjs/topology/HalfEdgeNodeXYZUV.d.ts.map +1 -0
  756. package/lib/{topology → cjs/topology}/HalfEdgeNodeXYZUV.js +0 -0
  757. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -0
  758. package/lib/{topology → cjs/topology}/HalfEdgePointInGraphSearch.d.ts +0 -0
  759. package/lib/cjs/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -0
  760. package/lib/{topology → cjs/topology}/HalfEdgePointInGraphSearch.js +0 -0
  761. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -0
  762. package/lib/{topology → cjs/topology}/HalfEdgePositionDetail.d.ts +0 -0
  763. package/lib/cjs/topology/HalfEdgePositionDetail.d.ts.map +1 -0
  764. package/lib/{topology → cjs/topology}/HalfEdgePositionDetail.js +0 -0
  765. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -0
  766. package/lib/{topology → cjs/topology}/HalfEdgePriorityQueue.d.ts +0 -0
  767. package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -0
  768. package/lib/{topology → cjs/topology}/HalfEdgePriorityQueue.js +0 -0
  769. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -0
  770. package/lib/{topology → cjs/topology}/InsertAndRetriangulateContext.d.ts +0 -0
  771. package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts.map +1 -0
  772. package/lib/{topology → cjs/topology}/InsertAndRetriangulateContext.js +0 -0
  773. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -0
  774. package/lib/{topology → cjs/topology}/MaskManager.d.ts +0 -0
  775. package/lib/cjs/topology/MaskManager.d.ts.map +1 -0
  776. package/lib/{topology → cjs/topology}/MaskManager.js +0 -0
  777. package/lib/cjs/topology/MaskManager.js.map +1 -0
  778. package/lib/{topology → cjs/topology}/Merging.d.ts +0 -0
  779. package/lib/cjs/topology/Merging.d.ts.map +1 -0
  780. package/lib/{topology → cjs/topology}/Merging.js +0 -0
  781. package/lib/cjs/topology/Merging.js.map +1 -0
  782. package/lib/{topology → cjs/topology}/RegularizeFace.d.ts +0 -0
  783. package/lib/cjs/topology/RegularizeFace.d.ts.map +1 -0
  784. package/lib/{topology → cjs/topology}/RegularizeFace.js +0 -0
  785. package/lib/cjs/topology/RegularizeFace.js.map +1 -0
  786. package/lib/{topology → cjs/topology}/SignedDataSummary.d.ts +0 -0
  787. package/lib/cjs/topology/SignedDataSummary.d.ts.map +1 -0
  788. package/lib/{topology → cjs/topology}/SignedDataSummary.js +0 -0
  789. package/lib/cjs/topology/SignedDataSummary.js.map +1 -0
  790. package/lib/{topology → cjs/topology}/Triangulation.d.ts +0 -0
  791. package/lib/cjs/topology/Triangulation.d.ts.map +1 -0
  792. package/lib/{topology → cjs/topology}/Triangulation.js +0 -0
  793. package/lib/cjs/topology/Triangulation.js.map +1 -0
  794. package/lib/{topology → cjs/topology}/XYParitySearchContext.d.ts +0 -0
  795. package/lib/cjs/topology/XYParitySearchContext.d.ts.map +1 -0
  796. package/lib/{topology → cjs/topology}/XYParitySearchContext.js +0 -0
  797. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -0
  798. package/lib/esm/Constant.d.ts +26 -0
  799. package/lib/esm/Constant.d.ts.map +1 -0
  800. package/lib/esm/Constant.js +30 -0
  801. package/lib/esm/Constant.js.map +1 -0
  802. package/lib/esm/Geometry.d.ts +498 -0
  803. package/lib/esm/Geometry.d.ts.map +1 -0
  804. package/lib/esm/Geometry.js +776 -0
  805. package/lib/esm/Geometry.js.map +1 -0
  806. package/lib/esm/bspline/AkimaCurve3d.d.ts +97 -0
  807. package/lib/esm/bspline/AkimaCurve3d.d.ts.map +1 -0
  808. package/lib/esm/bspline/AkimaCurve3d.js +158 -0
  809. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -0
  810. package/lib/esm/bspline/BSpline1dNd.d.ts +96 -0
  811. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -0
  812. package/lib/esm/bspline/BSpline1dNd.js +191 -0
  813. package/lib/esm/bspline/BSpline1dNd.js.map +1 -0
  814. package/lib/esm/bspline/BSplineCurve.d.ts +310 -0
  815. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -0
  816. package/lib/esm/bspline/BSplineCurve.js +608 -0
  817. package/lib/esm/bspline/BSplineCurve.js.map +1 -0
  818. package/lib/esm/bspline/BSplineCurve3dH.d.ts +140 -0
  819. package/lib/esm/bspline/BSplineCurve3dH.d.ts.map +1 -0
  820. package/lib/esm/bspline/BSplineCurve3dH.js +421 -0
  821. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -0
  822. package/lib/esm/bspline/BSplineCurveOps.d.ts +159 -0
  823. package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -0
  824. package/lib/esm/bspline/BSplineCurveOps.js +805 -0
  825. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -0
  826. package/lib/esm/bspline/BSplineSurface.d.ts +491 -0
  827. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -0
  828. package/lib/esm/bspline/BSplineSurface.js +837 -0
  829. package/lib/esm/bspline/BSplineSurface.js.map +1 -0
  830. package/lib/esm/bspline/Bezier1dNd.d.ts +113 -0
  831. package/lib/esm/bspline/Bezier1dNd.d.ts.map +1 -0
  832. package/lib/esm/bspline/Bezier1dNd.js +341 -0
  833. package/lib/esm/bspline/Bezier1dNd.js.map +1 -0
  834. package/lib/esm/bspline/BezierCurve3d.d.ts +76 -0
  835. package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -0
  836. package/lib/esm/bspline/BezierCurve3d.js +214 -0
  837. package/lib/esm/bspline/BezierCurve3d.js.map +1 -0
  838. package/lib/esm/bspline/BezierCurve3dH.d.ts +107 -0
  839. package/lib/esm/bspline/BezierCurve3dH.d.ts.map +1 -0
  840. package/lib/esm/bspline/BezierCurve3dH.js +348 -0
  841. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -0
  842. package/lib/esm/bspline/BezierCurveBase.d.ts +111 -0
  843. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -0
  844. package/lib/esm/bspline/BezierCurveBase.js +196 -0
  845. package/lib/esm/bspline/BezierCurveBase.js.map +1 -0
  846. package/lib/esm/bspline/InterpolationCurve3d.d.ts +163 -0
  847. package/lib/esm/bspline/InterpolationCurve3d.d.ts.map +1 -0
  848. package/lib/esm/bspline/InterpolationCurve3d.js +281 -0
  849. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -0
  850. package/lib/esm/bspline/KnotVector.d.ts +160 -0
  851. package/lib/esm/bspline/KnotVector.d.ts.map +1 -0
  852. package/lib/esm/bspline/KnotVector.js +427 -0
  853. package/lib/esm/bspline/KnotVector.js.map +1 -0
  854. package/lib/esm/bspline/SurfaceLocationDetail.d.ts +52 -0
  855. package/lib/esm/bspline/SurfaceLocationDetail.d.ts.map +1 -0
  856. package/lib/esm/bspline/SurfaceLocationDetail.js +55 -0
  857. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -0
  858. package/lib/esm/clipping/AlternatingConvexClipTree.d.ts +165 -0
  859. package/lib/esm/clipping/AlternatingConvexClipTree.d.ts.map +1 -0
  860. package/lib/esm/clipping/AlternatingConvexClipTree.js +519 -0
  861. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -0
  862. package/lib/esm/clipping/BooleanClipFactory.d.ts +80 -0
  863. package/lib/esm/clipping/BooleanClipFactory.d.ts.map +1 -0
  864. package/lib/esm/clipping/BooleanClipFactory.js +198 -0
  865. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -0
  866. package/lib/esm/clipping/BooleanClipNode.d.ts +103 -0
  867. package/lib/esm/clipping/BooleanClipNode.d.ts.map +1 -0
  868. package/lib/esm/clipping/BooleanClipNode.js +255 -0
  869. package/lib/esm/clipping/BooleanClipNode.js.map +1 -0
  870. package/lib/esm/clipping/ClipPlane.d.ts +258 -0
  871. package/lib/esm/clipping/ClipPlane.d.ts.map +1 -0
  872. package/lib/esm/clipping/ClipPlane.js +505 -0
  873. package/lib/esm/clipping/ClipPlane.js.map +1 -0
  874. package/lib/esm/clipping/ClipPrimitive.d.ts +270 -0
  875. package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -0
  876. package/lib/esm/clipping/ClipPrimitive.js +620 -0
  877. package/lib/esm/clipping/ClipPrimitive.js.map +1 -0
  878. package/lib/esm/clipping/ClipUtils.d.ts +278 -0
  879. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -0
  880. package/lib/esm/clipping/ClipUtils.js +593 -0
  881. package/lib/esm/clipping/ClipUtils.js.map +1 -0
  882. package/lib/esm/clipping/ClipVector.d.ts +154 -0
  883. package/lib/esm/clipping/ClipVector.d.ts.map +1 -0
  884. package/lib/esm/clipping/ClipVector.js +388 -0
  885. package/lib/esm/clipping/ClipVector.js.map +1 -0
  886. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +250 -0
  887. package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -0
  888. package/lib/esm/clipping/ConvexClipPlaneSet.js +685 -0
  889. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -0
  890. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +126 -0
  891. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -0
  892. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +325 -0
  893. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -0
  894. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +42 -0
  895. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -0
  896. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +160 -0
  897. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -0
  898. package/lib/esm/core-geometry.d.ts +228 -0
  899. package/lib/esm/core-geometry.d.ts.map +1 -0
  900. package/lib/esm/core-geometry.js +247 -0
  901. package/lib/esm/core-geometry.js.map +1 -0
  902. package/lib/esm/curve/Arc3d.d.ts +477 -0
  903. package/lib/esm/curve/Arc3d.d.ts.map +1 -0
  904. package/lib/esm/curve/Arc3d.js +905 -0
  905. package/lib/esm/curve/Arc3d.js.map +1 -0
  906. package/lib/esm/curve/ChainCollectorContext.d.ts +65 -0
  907. package/lib/esm/curve/ChainCollectorContext.d.ts.map +1 -0
  908. package/lib/esm/curve/ChainCollectorContext.js +175 -0
  909. package/lib/esm/curve/ChainCollectorContext.js.map +1 -0
  910. package/lib/esm/curve/ConstructCurveBetweenCurves.d.ts +46 -0
  911. package/lib/esm/curve/ConstructCurveBetweenCurves.d.ts.map +1 -0
  912. package/lib/esm/curve/ConstructCurveBetweenCurves.js +112 -0
  913. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -0
  914. package/lib/esm/curve/CoordinateXYZ.d.ts +54 -0
  915. package/lib/esm/curve/CoordinateXYZ.d.ts.map +1 -0
  916. package/lib/esm/curve/CoordinateXYZ.js +75 -0
  917. package/lib/esm/curve/CoordinateXYZ.js.map +1 -0
  918. package/lib/esm/curve/CurveChain.d.ts +17 -0
  919. package/lib/esm/curve/CurveChain.d.ts.map +1 -0
  920. package/lib/esm/curve/CurveChain.js +6 -0
  921. package/lib/esm/curve/CurveChain.js.map +1 -0
  922. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +234 -0
  923. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -0
  924. package/lib/esm/curve/CurveChainWithDistanceIndex.js +513 -0
  925. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -0
  926. package/lib/esm/curve/CurveCollection.d.ts +204 -0
  927. package/lib/esm/curve/CurveCollection.d.ts.map +1 -0
  928. package/lib/esm/curve/CurveCollection.js +338 -0
  929. package/lib/esm/curve/CurveCollection.js.map +1 -0
  930. package/lib/esm/curve/CurveCurve.d.ts +56 -0
  931. package/lib/esm/curve/CurveCurve.d.ts.map +1 -0
  932. package/lib/esm/curve/CurveCurve.js +96 -0
  933. package/lib/esm/curve/CurveCurve.js.map +1 -0
  934. package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts +158 -0
  935. package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts.map +1 -0
  936. package/lib/esm/curve/CurveCurveCloseApproachXY.js +720 -0
  937. package/lib/esm/curve/CurveCurveCloseApproachXY.js.map +1 -0
  938. package/lib/esm/curve/CurveCurveIntersectXY.d.ts +148 -0
  939. package/lib/esm/curve/CurveCurveIntersectXY.d.ts.map +1 -0
  940. package/lib/esm/curve/CurveCurveIntersectXY.js +814 -0
  941. package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -0
  942. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts +101 -0
  943. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts.map +1 -0
  944. package/lib/esm/curve/CurveCurveIntersectXYZ.js +669 -0
  945. package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +1 -0
  946. package/lib/esm/curve/CurveExtendMode.d.ts +50 -0
  947. package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -0
  948. package/lib/esm/curve/CurveExtendMode.js +96 -0
  949. package/lib/esm/curve/CurveExtendMode.js.map +1 -0
  950. package/lib/esm/curve/CurveFactory.d.ts +122 -0
  951. package/lib/esm/curve/CurveFactory.d.ts.map +1 -0
  952. package/lib/esm/curve/CurveFactory.js +491 -0
  953. package/lib/esm/curve/CurveFactory.js.map +1 -0
  954. package/lib/esm/curve/CurveLocationDetail.d.ts +207 -0
  955. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -0
  956. package/lib/esm/curve/CurveLocationDetail.js +392 -0
  957. package/lib/esm/curve/CurveLocationDetail.js.map +1 -0
  958. package/lib/esm/curve/CurvePrimitive.d.ts +363 -0
  959. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -0
  960. package/lib/esm/curve/CurvePrimitive.js +774 -0
  961. package/lib/esm/curve/CurvePrimitive.js.map +1 -0
  962. package/lib/esm/curve/CurveProcessor.d.ts +76 -0
  963. package/lib/esm/curve/CurveProcessor.d.ts.map +1 -0
  964. package/lib/esm/curve/CurveProcessor.js +122 -0
  965. package/lib/esm/curve/CurveProcessor.js.map +1 -0
  966. package/lib/esm/curve/CurveWireMomentsXYZ.d.ts +25 -0
  967. package/lib/esm/curve/CurveWireMomentsXYZ.d.ts.map +1 -0
  968. package/lib/esm/curve/CurveWireMomentsXYZ.js +65 -0
  969. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -0
  970. package/lib/esm/curve/GeometryQuery.d.ts +93 -0
  971. package/lib/esm/curve/GeometryQuery.d.ts.map +1 -0
  972. package/lib/esm/curve/GeometryQuery.js +68 -0
  973. package/lib/esm/curve/GeometryQuery.js.map +1 -0
  974. package/lib/esm/curve/LineSegment3d.d.ts +176 -0
  975. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -0
  976. package/lib/esm/curve/LineSegment3d.js +315 -0
  977. package/lib/esm/curve/LineSegment3d.js.map +1 -0
  978. package/lib/esm/curve/LineString3d.d.ts +419 -0
  979. package/lib/esm/curve/LineString3d.d.ts.map +1 -0
  980. package/lib/esm/curve/LineString3d.js +1280 -0
  981. package/lib/esm/curve/LineString3d.js.map +1 -0
  982. package/lib/esm/curve/Loop.d.ts +82 -0
  983. package/lib/esm/curve/Loop.d.ts.map +1 -0
  984. package/lib/esm/curve/Loop.js +93 -0
  985. package/lib/esm/curve/Loop.js.map +1 -0
  986. package/lib/esm/curve/ParityRegion.d.ts +59 -0
  987. package/lib/esm/curve/ParityRegion.d.ts.map +1 -0
  988. package/lib/esm/curve/ParityRegion.js +113 -0
  989. package/lib/esm/curve/ParityRegion.js.map +1 -0
  990. package/lib/esm/curve/Path.d.ts +47 -0
  991. package/lib/esm/curve/Path.d.ts.map +1 -0
  992. package/lib/esm/curve/Path.js +71 -0
  993. package/lib/esm/curve/Path.js.map +1 -0
  994. package/lib/esm/curve/PointString3d.d.ts +78 -0
  995. package/lib/esm/curve/PointString3d.d.ts.map +1 -0
  996. package/lib/esm/curve/PointString3d.js +174 -0
  997. package/lib/esm/curve/PointString3d.js.map +1 -0
  998. package/lib/esm/curve/ProxyCurve.d.ts +59 -0
  999. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -0
  1000. package/lib/esm/curve/ProxyCurve.js +78 -0
  1001. package/lib/esm/curve/ProxyCurve.js.map +1 -0
  1002. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts +25 -0
  1003. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -0
  1004. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +111 -0
  1005. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -0
  1006. package/lib/esm/curve/Query/CurveSplitContext.d.ts +16 -0
  1007. package/lib/esm/curve/Query/CurveSplitContext.d.ts.map +1 -0
  1008. package/lib/esm/curve/Query/CurveSplitContext.js +107 -0
  1009. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -0
  1010. package/lib/esm/curve/Query/CylindricalRange.d.ts +46 -0
  1011. package/lib/esm/curve/Query/CylindricalRange.d.ts.map +1 -0
  1012. package/lib/esm/curve/Query/CylindricalRange.js +111 -0
  1013. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -0
  1014. package/lib/esm/curve/Query/InOutTests.d.ts +32 -0
  1015. package/lib/esm/curve/Query/InOutTests.d.ts.map +1 -0
  1016. package/lib/esm/curve/Query/InOutTests.js +116 -0
  1017. package/lib/esm/curve/Query/InOutTests.js.map +1 -0
  1018. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +16 -0
  1019. package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -0
  1020. package/lib/esm/curve/Query/PlanarSubdivision.js +220 -0
  1021. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -0
  1022. package/lib/esm/curve/Query/StrokeCountChain.d.ts +186 -0
  1023. package/lib/esm/curve/Query/StrokeCountChain.d.ts.map +1 -0
  1024. package/lib/esm/curve/Query/StrokeCountChain.js +429 -0
  1025. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -0
  1026. package/lib/esm/curve/Query/StrokeCountMap.d.ts +94 -0
  1027. package/lib/esm/curve/Query/StrokeCountMap.d.ts.map +1 -0
  1028. package/lib/esm/curve/Query/StrokeCountMap.js +138 -0
  1029. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -0
  1030. package/lib/esm/curve/RegionMomentsXY.d.ts +61 -0
  1031. package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -0
  1032. package/lib/esm/curve/RegionMomentsXY.js +156 -0
  1033. package/lib/esm/curve/RegionMomentsXY.js.map +1 -0
  1034. package/lib/esm/curve/RegionOps.d.ts +320 -0
  1035. package/lib/esm/curve/RegionOps.d.ts.map +1 -0
  1036. package/lib/esm/curve/RegionOps.js +642 -0
  1037. package/lib/esm/curve/RegionOps.js.map +1 -0
  1038. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +263 -0
  1039. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -0
  1040. package/lib/esm/curve/RegionOpsClassificationSweeps.js +703 -0
  1041. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -0
  1042. package/lib/esm/curve/StrokeOptions.d.ts +94 -0
  1043. package/lib/esm/curve/StrokeOptions.d.ts.map +1 -0
  1044. package/lib/esm/curve/StrokeOptions.js +149 -0
  1045. package/lib/esm/curve/StrokeOptions.js.map +1 -0
  1046. package/lib/esm/curve/UnionRegion.d.ts +49 -0
  1047. package/lib/esm/curve/UnionRegion.d.ts.map +1 -0
  1048. package/lib/esm/curve/UnionRegion.js +75 -0
  1049. package/lib/esm/curve/UnionRegion.js.map +1 -0
  1050. package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts +23 -0
  1051. package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -0
  1052. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +62 -0
  1053. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -0
  1054. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.d.ts +16 -0
  1055. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.d.ts.map +1 -0
  1056. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js +36 -0
  1057. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -0
  1058. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.d.ts +18 -0
  1059. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.d.ts.map +1 -0
  1060. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +32 -0
  1061. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -0
  1062. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts +16 -0
  1063. package/lib/esm/curve/internalContexts/GapSearchContext.d.ts.map +1 -0
  1064. package/lib/esm/curve/internalContexts/GapSearchContext.js +34 -0
  1065. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -0
  1066. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +114 -0
  1067. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -0
  1068. package/lib/esm/curve/internalContexts/MultiChainCollector.js +403 -0
  1069. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -0
  1070. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +38 -0
  1071. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -0
  1072. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +88 -0
  1073. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -0
  1074. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +117 -0
  1075. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -0
  1076. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +686 -0
  1077. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -0
  1078. package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts +17 -0
  1079. package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts.map +1 -0
  1080. package/lib/esm/curve/internalContexts/SumLengthsContext.js +21 -0
  1081. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -0
  1082. package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts +19 -0
  1083. package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -0
  1084. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +19 -0
  1085. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -0
  1086. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts +41 -0
  1087. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -0
  1088. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +124 -0
  1089. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -0
  1090. package/lib/esm/curve/spiral/ClothoidSeries.d.ts +66 -0
  1091. package/lib/esm/curve/spiral/ClothoidSeries.d.ts.map +1 -0
  1092. package/lib/esm/curve/spiral/ClothoidSeries.js +220 -0
  1093. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -0
  1094. package/lib/esm/curve/spiral/CubicEvaluator.d.ts +43 -0
  1095. package/lib/esm/curve/spiral/CubicEvaluator.d.ts.map +1 -0
  1096. package/lib/esm/curve/spiral/CubicEvaluator.js +67 -0
  1097. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -0
  1098. package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts +108 -0
  1099. package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -0
  1100. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +198 -0
  1101. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -0
  1102. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts +39 -0
  1103. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -0
  1104. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +88 -0
  1105. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -0
  1106. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +265 -0
  1107. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -0
  1108. package/lib/esm/curve/spiral/DirectSpiral3d.js +469 -0
  1109. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -0
  1110. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +158 -0
  1111. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -0
  1112. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +360 -0
  1113. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -0
  1114. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +38 -0
  1115. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -0
  1116. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +72 -0
  1117. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -0
  1118. package/lib/esm/curve/spiral/NormalizedTransition.d.ts +140 -0
  1119. package/lib/esm/curve/spiral/NormalizedTransition.d.ts.map +1 -0
  1120. package/lib/esm/curve/spiral/NormalizedTransition.js +182 -0
  1121. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -0
  1122. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts +50 -0
  1123. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -0
  1124. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +109 -0
  1125. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -0
  1126. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts +53 -0
  1127. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -0
  1128. package/lib/esm/curve/spiral/TransitionConditionalProperties.js +142 -0
  1129. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -0
  1130. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +101 -0
  1131. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -0
  1132. package/lib/esm/curve/spiral/TransitionSpiral3d.js +106 -0
  1133. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -0
  1134. package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts +80 -0
  1135. package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts.map +1 -0
  1136. package/lib/esm/curve/spiral/XYCurveEvaluator.js +103 -0
  1137. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -0
  1138. package/lib/esm/geometry3d/Angle.d.ts +214 -0
  1139. package/lib/esm/geometry3d/Angle.d.ts.map +1 -0
  1140. package/lib/esm/geometry3d/Angle.js +399 -0
  1141. package/lib/esm/geometry3d/Angle.js.map +1 -0
  1142. package/lib/esm/geometry3d/AngleSweep.d.ts +187 -0
  1143. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -0
  1144. package/lib/esm/geometry3d/AngleSweep.js +325 -0
  1145. package/lib/esm/geometry3d/AngleSweep.js.map +1 -0
  1146. package/lib/esm/geometry3d/BarycentricTriangle.d.ts +51 -0
  1147. package/lib/esm/geometry3d/BarycentricTriangle.d.ts.map +1 -0
  1148. package/lib/esm/geometry3d/BarycentricTriangle.js +97 -0
  1149. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -0
  1150. package/lib/esm/geometry3d/BilinearPatch.d.ts +107 -0
  1151. package/lib/esm/geometry3d/BilinearPatch.d.ts.map +1 -0
  1152. package/lib/esm/geometry3d/BilinearPatch.js +200 -0
  1153. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -0
  1154. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +56 -0
  1155. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -0
  1156. package/lib/esm/geometry3d/CoincidentGeometryOps.js +196 -0
  1157. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -0
  1158. package/lib/esm/geometry3d/Ellipsoid.d.ts +388 -0
  1159. package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -0
  1160. package/lib/esm/geometry3d/Ellipsoid.js +1069 -0
  1161. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -0
  1162. package/lib/esm/geometry3d/FrameBuilder.d.ts +91 -0
  1163. package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -0
  1164. package/lib/esm/geometry3d/FrameBuilder.js +315 -0
  1165. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -0
  1166. package/lib/esm/geometry3d/FrustumAnimation.d.ts +59 -0
  1167. package/lib/esm/geometry3d/FrustumAnimation.d.ts.map +1 -0
  1168. package/lib/esm/geometry3d/FrustumAnimation.js +119 -0
  1169. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -0
  1170. package/lib/esm/geometry3d/GeometryHandler.d.ts +329 -0
  1171. package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -0
  1172. package/lib/esm/geometry3d/GeometryHandler.js +169 -0
  1173. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -0
  1174. package/lib/esm/geometry3d/GrowableBlockedArray.d.ts +71 -0
  1175. package/lib/esm/geometry3d/GrowableBlockedArray.d.ts.map +1 -0
  1176. package/lib/esm/geometry3d/GrowableBlockedArray.js +158 -0
  1177. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -0
  1178. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts +132 -0
  1179. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -0
  1180. package/lib/esm/geometry3d/GrowableFloat64Array.js +249 -0
  1181. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -0
  1182. package/lib/esm/geometry3d/GrowableXYArray.d.ts +204 -0
  1183. package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -0
  1184. package/lib/esm/geometry3d/GrowableXYArray.js +621 -0
  1185. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -0
  1186. package/lib/esm/geometry3d/GrowableXYZArray.d.ts +324 -0
  1187. package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -0
  1188. package/lib/esm/geometry3d/GrowableXYZArray.js +975 -0
  1189. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -0
  1190. package/lib/esm/geometry3d/IndexedCollectionInterval.d.ts +63 -0
  1191. package/lib/esm/geometry3d/IndexedCollectionInterval.d.ts.map +1 -0
  1192. package/lib/esm/geometry3d/IndexedCollectionInterval.js +105 -0
  1193. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -0
  1194. package/lib/esm/geometry3d/IndexedXYCollection.d.ts +69 -0
  1195. package/lib/esm/geometry3d/IndexedXYCollection.d.ts.map +1 -0
  1196. package/lib/esm/geometry3d/IndexedXYCollection.js +16 -0
  1197. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -0
  1198. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +149 -0
  1199. package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -0
  1200. package/lib/esm/geometry3d/IndexedXYZCollection.js +98 -0
  1201. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -0
  1202. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.d.ts +63 -0
  1203. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.d.ts.map +1 -0
  1204. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +119 -0
  1205. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -0
  1206. package/lib/esm/geometry3d/Matrix3d.d.ts +885 -0
  1207. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -0
  1208. package/lib/esm/geometry3d/Matrix3d.js +2269 -0
  1209. package/lib/esm/geometry3d/Matrix3d.js.map +1 -0
  1210. package/lib/esm/geometry3d/OrderedRotationAngles.d.ts +61 -0
  1211. package/lib/esm/geometry3d/OrderedRotationAngles.d.ts.map +1 -0
  1212. package/lib/esm/geometry3d/OrderedRotationAngles.js +228 -0
  1213. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -0
  1214. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +122 -0
  1215. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -0
  1216. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +237 -0
  1217. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -0
  1218. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +119 -0
  1219. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -0
  1220. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +238 -0
  1221. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -0
  1222. package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts +74 -0
  1223. package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts.map +1 -0
  1224. package/lib/esm/geometry3d/Point2dArrayCarrier.js +111 -0
  1225. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -0
  1226. package/lib/esm/geometry3d/Point2dVector2d.d.ts +209 -0
  1227. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -0
  1228. package/lib/esm/geometry3d/Point2dVector2d.js +461 -0
  1229. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -0
  1230. package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts +142 -0
  1231. package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -0
  1232. package/lib/esm/geometry3d/Point3dArrayCarrier.js +233 -0
  1233. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -0
  1234. package/lib/esm/geometry3d/Point3dVector3d.d.ts +699 -0
  1235. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -0
  1236. package/lib/esm/geometry3d/Point3dVector3d.js +1294 -0
  1237. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -0
  1238. package/lib/esm/geometry3d/PointHelpers.d.ts +263 -0
  1239. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -0
  1240. package/lib/esm/geometry3d/PointHelpers.js +898 -0
  1241. package/lib/esm/geometry3d/PointHelpers.js.map +1 -0
  1242. package/lib/esm/geometry3d/PointStreaming.d.ts +87 -0
  1243. package/lib/esm/geometry3d/PointStreaming.d.ts.map +1 -0
  1244. package/lib/esm/geometry3d/PointStreaming.js +181 -0
  1245. package/lib/esm/geometry3d/PointStreaming.js.map +1 -0
  1246. package/lib/esm/geometry3d/PolygonOps.d.ts +306 -0
  1247. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -0
  1248. package/lib/esm/geometry3d/PolygonOps.js +986 -0
  1249. package/lib/esm/geometry3d/PolygonOps.js.map +1 -0
  1250. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +81 -0
  1251. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -0
  1252. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +274 -0
  1253. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -0
  1254. package/lib/esm/geometry3d/PolylineOps.d.ts +63 -0
  1255. package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -0
  1256. package/lib/esm/geometry3d/PolylineOps.js +172 -0
  1257. package/lib/esm/geometry3d/PolylineOps.js.map +1 -0
  1258. package/lib/esm/geometry3d/Range.d.ts +599 -0
  1259. package/lib/esm/geometry3d/Range.d.ts.map +1 -0
  1260. package/lib/esm/geometry3d/Range.js +1424 -0
  1261. package/lib/esm/geometry3d/Range.js.map +1 -0
  1262. package/lib/esm/geometry3d/Ray3d.d.ts +146 -0
  1263. package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -0
  1264. package/lib/esm/geometry3d/Ray3d.js +325 -0
  1265. package/lib/esm/geometry3d/Ray3d.js.map +1 -0
  1266. package/lib/esm/geometry3d/ReusableObjectCache.d.ts +55 -0
  1267. package/lib/esm/geometry3d/ReusableObjectCache.d.ts.map +1 -0
  1268. package/lib/esm/geometry3d/ReusableObjectCache.js +82 -0
  1269. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -0
  1270. package/lib/esm/geometry3d/Segment1d.d.ts +106 -0
  1271. package/lib/esm/geometry3d/Segment1d.d.ts.map +1 -0
  1272. package/lib/esm/geometry3d/Segment1d.js +169 -0
  1273. package/lib/esm/geometry3d/Segment1d.js.map +1 -0
  1274. package/lib/esm/geometry3d/SortablePolygon.d.ts +50 -0
  1275. package/lib/esm/geometry3d/SortablePolygon.d.ts.map +1 -0
  1276. package/lib/esm/geometry3d/SortablePolygon.js +312 -0
  1277. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -0
  1278. package/lib/esm/geometry3d/Transform.d.ts +275 -0
  1279. package/lib/esm/geometry3d/Transform.d.ts.map +1 -0
  1280. package/lib/esm/geometry3d/Transform.js +570 -0
  1281. package/lib/esm/geometry3d/Transform.js.map +1 -0
  1282. package/lib/esm/geometry3d/UVSurfaceOps.d.ts +43 -0
  1283. package/lib/esm/geometry3d/UVSurfaceOps.d.ts.map +1 -0
  1284. package/lib/esm/geometry3d/UVSurfaceOps.js +98 -0
  1285. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -0
  1286. package/lib/esm/geometry3d/XYZProps.d.ts +143 -0
  1287. package/lib/esm/geometry3d/XYZProps.d.ts.map +1 -0
  1288. package/lib/esm/geometry3d/XYZProps.js +6 -0
  1289. package/lib/esm/geometry3d/XYZProps.js.map +1 -0
  1290. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts +111 -0
  1291. package/lib/esm/geometry3d/YawPitchRollAngles.d.ts.map +1 -0
  1292. package/lib/esm/geometry3d/YawPitchRollAngles.js +195 -0
  1293. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -0
  1294. package/lib/esm/geometry4d/Map4d.d.ts +73 -0
  1295. package/lib/esm/geometry4d/Map4d.d.ts.map +1 -0
  1296. package/lib/esm/geometry4d/Map4d.js +147 -0
  1297. package/lib/esm/geometry4d/Map4d.js.map +1 -0
  1298. package/lib/esm/geometry4d/Matrix4d.d.ts +284 -0
  1299. package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -0
  1300. package/lib/esm/geometry4d/Matrix4d.js +739 -0
  1301. package/lib/esm/geometry4d/Matrix4d.js.map +1 -0
  1302. package/lib/esm/geometry4d/MomentData.d.ts +180 -0
  1303. package/lib/esm/geometry4d/MomentData.d.ts.map +1 -0
  1304. package/lib/esm/geometry4d/MomentData.js +384 -0
  1305. package/lib/esm/geometry4d/MomentData.js.map +1 -0
  1306. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.d.ts +43 -0
  1307. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.d.ts.map +1 -0
  1308. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +81 -0
  1309. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -0
  1310. package/lib/esm/geometry4d/Point4d.d.ts +257 -0
  1311. package/lib/esm/geometry4d/Point4d.d.ts.map +1 -0
  1312. package/lib/esm/geometry4d/Point4d.js +552 -0
  1313. package/lib/esm/geometry4d/Point4d.js.map +1 -0
  1314. package/lib/esm/numerics/BandedSystem.d.ts +39 -0
  1315. package/lib/esm/numerics/BandedSystem.d.ts.map +1 -0
  1316. package/lib/esm/numerics/BandedSystem.js +156 -0
  1317. package/lib/esm/numerics/BandedSystem.js.map +1 -0
  1318. package/lib/esm/numerics/BezierPolynomials.d.ts +462 -0
  1319. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -0
  1320. package/lib/esm/numerics/BezierPolynomials.js +1189 -0
  1321. package/lib/esm/numerics/BezierPolynomials.js.map +1 -0
  1322. package/lib/esm/numerics/ClusterableArray.d.ts +162 -0
  1323. package/lib/esm/numerics/ClusterableArray.d.ts.map +1 -0
  1324. package/lib/esm/numerics/ClusterableArray.js +477 -0
  1325. package/lib/esm/numerics/ClusterableArray.js.map +1 -0
  1326. package/lib/esm/numerics/Complex.d.ts +63 -0
  1327. package/lib/esm/numerics/Complex.d.ts.map +1 -0
  1328. package/lib/esm/numerics/Complex.js +116 -0
  1329. package/lib/esm/numerics/Complex.js.map +1 -0
  1330. package/lib/esm/numerics/ConvexPolygon2d.d.ts +86 -0
  1331. package/lib/esm/numerics/ConvexPolygon2d.d.ts.map +1 -0
  1332. package/lib/esm/numerics/ConvexPolygon2d.js +313 -0
  1333. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -0
  1334. package/lib/esm/numerics/Newton.d.ts +188 -0
  1335. package/lib/esm/numerics/Newton.d.ts.map +1 -0
  1336. package/lib/esm/numerics/Newton.js +247 -0
  1337. package/lib/esm/numerics/Newton.js.map +1 -0
  1338. package/lib/esm/numerics/PascalCoefficients.d.ts +33 -0
  1339. package/lib/esm/numerics/PascalCoefficients.d.ts.map +1 -0
  1340. package/lib/esm/numerics/PascalCoefficients.js +91 -0
  1341. package/lib/esm/numerics/PascalCoefficients.js.map +1 -0
  1342. package/lib/esm/numerics/PolarData.d.ts +42 -0
  1343. package/lib/esm/numerics/PolarData.d.ts.map +1 -0
  1344. package/lib/esm/numerics/PolarData.js +162 -0
  1345. package/lib/esm/numerics/PolarData.js.map +1 -0
  1346. package/lib/esm/numerics/Polynomials.d.ts +653 -0
  1347. package/lib/esm/numerics/Polynomials.d.ts.map +1 -0
  1348. package/lib/esm/numerics/Polynomials.js +1697 -0
  1349. package/lib/esm/numerics/Polynomials.js.map +1 -0
  1350. package/lib/esm/numerics/Quadrature.d.ts +91 -0
  1351. package/lib/esm/numerics/Quadrature.d.ts.map +1 -0
  1352. package/lib/esm/numerics/Quadrature.js +199 -0
  1353. package/lib/esm/numerics/Quadrature.js.map +1 -0
  1354. package/lib/esm/numerics/Range1dArray.d.ts +80 -0
  1355. package/lib/esm/numerics/Range1dArray.d.ts.map +1 -0
  1356. package/lib/esm/numerics/Range1dArray.js +358 -0
  1357. package/lib/esm/numerics/Range1dArray.js.map +1 -0
  1358. package/lib/esm/numerics/TriDiagonalSystem.d.ts +51 -0
  1359. package/lib/esm/numerics/TriDiagonalSystem.d.ts.map +1 -0
  1360. package/lib/esm/numerics/TriDiagonalSystem.js +270 -0
  1361. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -0
  1362. package/lib/esm/numerics/UnionFind.d.ts +49 -0
  1363. package/lib/esm/numerics/UnionFind.d.ts.map +1 -0
  1364. package/lib/esm/numerics/UnionFind.js +117 -0
  1365. package/lib/esm/numerics/UnionFind.js.map +1 -0
  1366. package/lib/esm/numerics/UsageSums.d.ts +86 -0
  1367. package/lib/esm/numerics/UsageSums.d.ts.map +1 -0
  1368. package/lib/esm/numerics/UsageSums.js +128 -0
  1369. package/lib/esm/numerics/UsageSums.js.map +1 -0
  1370. package/lib/esm/polyface/AuxData.d.ts +112 -0
  1371. package/lib/esm/polyface/AuxData.d.ts.map +1 -0
  1372. package/lib/esm/polyface/AuxData.js +228 -0
  1373. package/lib/esm/polyface/AuxData.js.map +1 -0
  1374. package/lib/esm/polyface/BoxTopology.d.ts +38 -0
  1375. package/lib/esm/polyface/BoxTopology.d.ts.map +1 -0
  1376. package/lib/esm/polyface/BoxTopology.js +99 -0
  1377. package/lib/esm/polyface/BoxTopology.js.map +1 -0
  1378. package/lib/esm/polyface/FacetFaceData.d.ts +44 -0
  1379. package/lib/esm/polyface/FacetFaceData.d.ts.map +1 -0
  1380. package/lib/esm/polyface/FacetFaceData.js +142 -0
  1381. package/lib/esm/polyface/FacetFaceData.js.map +1 -0
  1382. package/lib/esm/polyface/FacetOrientation.d.ts +39 -0
  1383. package/lib/esm/polyface/FacetOrientation.d.ts.map +1 -0
  1384. package/lib/esm/polyface/FacetOrientation.js +192 -0
  1385. package/lib/esm/polyface/FacetOrientation.js.map +1 -0
  1386. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.d.ts +61 -0
  1387. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.d.ts.map +1 -0
  1388. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +245 -0
  1389. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -0
  1390. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +87 -0
  1391. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -0
  1392. package/lib/esm/polyface/IndexedEdgeMatcher.js +192 -0
  1393. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -0
  1394. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +109 -0
  1395. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -0
  1396. package/lib/esm/polyface/IndexedPolyfaceVisitor.js +237 -0
  1397. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -0
  1398. package/lib/esm/polyface/Polyface.d.ts +254 -0
  1399. package/lib/esm/polyface/Polyface.d.ts.map +1 -0
  1400. package/lib/esm/polyface/Polyface.js +501 -0
  1401. package/lib/esm/polyface/Polyface.js.map +1 -0
  1402. package/lib/esm/polyface/PolyfaceBuilder.d.ts +395 -0
  1403. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -0
  1404. package/lib/esm/polyface/PolyfaceBuilder.js +1634 -0
  1405. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -0
  1406. package/lib/esm/polyface/PolyfaceClip.d.ts +172 -0
  1407. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -0
  1408. package/lib/esm/polyface/PolyfaceClip.js +565 -0
  1409. package/lib/esm/polyface/PolyfaceClip.js.map +1 -0
  1410. package/lib/esm/polyface/PolyfaceData.d.ts +206 -0
  1411. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -0
  1412. package/lib/esm/polyface/PolyfaceData.js +527 -0
  1413. package/lib/esm/polyface/PolyfaceData.js.map +1 -0
  1414. package/lib/esm/polyface/PolyfaceQuery.d.ts +302 -0
  1415. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -0
  1416. package/lib/esm/polyface/PolyfaceQuery.js +947 -0
  1417. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -0
  1418. package/lib/esm/polyface/RangeLengthData.d.ts +31 -0
  1419. package/lib/esm/polyface/RangeLengthData.d.ts.map +1 -0
  1420. package/lib/esm/polyface/RangeLengthData.js +39 -0
  1421. package/lib/esm/polyface/RangeLengthData.js.map +1 -0
  1422. package/lib/esm/polyface/TaggedNumericData.d.ts +95 -0
  1423. package/lib/esm/polyface/TaggedNumericData.d.ts.map +1 -0
  1424. package/lib/esm/polyface/TaggedNumericData.js +160 -0
  1425. package/lib/esm/polyface/TaggedNumericData.js.map +1 -0
  1426. package/lib/esm/polyface/TriangleCandidate.d.ts +64 -0
  1427. package/lib/esm/polyface/TriangleCandidate.d.ts.map +1 -0
  1428. package/lib/esm/polyface/TriangleCandidate.js +116 -0
  1429. package/lib/esm/polyface/TriangleCandidate.js.map +1 -0
  1430. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts +29 -0
  1431. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -0
  1432. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +160 -0
  1433. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -0
  1434. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts +81 -0
  1435. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -0
  1436. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +159 -0
  1437. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -0
  1438. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +53 -0
  1439. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -0
  1440. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +74 -0
  1441. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -0
  1442. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts +44 -0
  1443. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -0
  1444. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +80 -0
  1445. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -0
  1446. package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts +32 -0
  1447. package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -0
  1448. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js +9 -0
  1449. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -0
  1450. package/lib/esm/polyface/multiclip/RangeSearch.d.ts +27 -0
  1451. package/lib/esm/polyface/multiclip/RangeSearch.d.ts.map +1 -0
  1452. package/lib/esm/polyface/multiclip/RangeSearch.js +49 -0
  1453. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -0
  1454. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +25 -0
  1455. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -0
  1456. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +90 -0
  1457. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -0
  1458. package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts +73 -0
  1459. package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts.map +1 -0
  1460. package/lib/esm/polyface/multiclip/XYPointBuckets.js +192 -0
  1461. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -0
  1462. package/lib/esm/serialization/BGFBAccessors.d.ts +3426 -0
  1463. package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -0
  1464. package/lib/esm/serialization/BGFBAccessors.js +5543 -0
  1465. package/lib/esm/serialization/BGFBAccessors.js.map +1 -0
  1466. package/lib/esm/serialization/BGFBReader.d.ts +118 -0
  1467. package/lib/esm/serialization/BGFBReader.d.ts.map +1 -0
  1468. package/lib/esm/serialization/BGFBReader.js +661 -0
  1469. package/lib/esm/serialization/BGFBReader.js.map +1 -0
  1470. package/lib/esm/serialization/BGFBWriter.d.ts +69 -0
  1471. package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -0
  1472. package/lib/esm/serialization/BGFBWriter.js +587 -0
  1473. package/lib/esm/serialization/BGFBWriter.js.map +1 -0
  1474. package/lib/esm/serialization/BentleyGeometryFlatBuffer.d.ts +23 -0
  1475. package/lib/esm/serialization/BentleyGeometryFlatBuffer.d.ts.map +1 -0
  1476. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js +26 -0
  1477. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -0
  1478. package/lib/esm/serialization/DeepCompare.d.ts +41 -0
  1479. package/lib/esm/serialization/DeepCompare.d.ts.map +1 -0
  1480. package/lib/esm/serialization/DeepCompare.js +185 -0
  1481. package/lib/esm/serialization/DeepCompare.js.map +1 -0
  1482. package/lib/esm/serialization/GeometrySamples.d.ts +616 -0
  1483. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -0
  1484. package/lib/esm/serialization/GeometrySamples.js +2124 -0
  1485. package/lib/esm/serialization/GeometrySamples.js.map +1 -0
  1486. package/lib/esm/serialization/IModelJsonSchema.d.ts +671 -0
  1487. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -0
  1488. package/lib/esm/serialization/IModelJsonSchema.js +1523 -0
  1489. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -0
  1490. package/lib/esm/solid/Box.d.ts +122 -0
  1491. package/lib/esm/solid/Box.d.ts.map +1 -0
  1492. package/lib/esm/solid/Box.js +229 -0
  1493. package/lib/esm/solid/Box.js.map +1 -0
  1494. package/lib/esm/solid/Cone.d.ts +119 -0
  1495. package/lib/esm/solid/Cone.d.ts.map +1 -0
  1496. package/lib/esm/solid/Cone.js +267 -0
  1497. package/lib/esm/solid/Cone.js.map +1 -0
  1498. package/lib/esm/solid/LinearSweep.d.ts +81 -0
  1499. package/lib/esm/solid/LinearSweep.d.ts.map +1 -0
  1500. package/lib/esm/solid/LinearSweep.js +143 -0
  1501. package/lib/esm/solid/LinearSweep.js.map +1 -0
  1502. package/lib/esm/solid/RotationalSweep.d.ts +71 -0
  1503. package/lib/esm/solid/RotationalSweep.d.ts.map +1 -0
  1504. package/lib/esm/solid/RotationalSweep.js +139 -0
  1505. package/lib/esm/solid/RotationalSweep.js.map +1 -0
  1506. package/lib/esm/solid/RuledSweep.d.ts +76 -0
  1507. package/lib/esm/solid/RuledSweep.d.ts.map +1 -0
  1508. package/lib/esm/solid/RuledSweep.js +202 -0
  1509. package/lib/esm/solid/RuledSweep.js.map +1 -0
  1510. package/lib/esm/solid/SolidPrimitive.d.ts +63 -0
  1511. package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -0
  1512. package/lib/esm/solid/SolidPrimitive.js +23 -0
  1513. package/lib/esm/solid/SolidPrimitive.js.map +1 -0
  1514. package/lib/esm/solid/Sphere.d.ts +120 -0
  1515. package/lib/esm/solid/Sphere.d.ts.map +1 -0
  1516. package/lib/esm/solid/Sphere.js +294 -0
  1517. package/lib/esm/solid/Sphere.js.map +1 -0
  1518. package/lib/esm/solid/SweepContour.d.ts +82 -0
  1519. package/lib/esm/solid/SweepContour.d.ts.map +1 -0
  1520. package/lib/esm/solid/SweepContour.js +250 -0
  1521. package/lib/esm/solid/SweepContour.js.map +1 -0
  1522. package/lib/esm/solid/TorusPipe.d.ts +123 -0
  1523. package/lib/esm/solid/TorusPipe.d.ts.map +1 -0
  1524. package/lib/esm/solid/TorusPipe.js +296 -0
  1525. package/lib/esm/solid/TorusPipe.js.map +1 -0
  1526. package/lib/esm/topology/ChainMerge.d.ts +119 -0
  1527. package/lib/esm/topology/ChainMerge.d.ts.map +1 -0
  1528. package/lib/esm/topology/ChainMerge.js +280 -0
  1529. package/lib/esm/topology/ChainMerge.js.map +1 -0
  1530. package/lib/esm/topology/Graph.d.ts +591 -0
  1531. package/lib/esm/topology/Graph.d.ts.map +1 -0
  1532. package/lib/esm/topology/Graph.js +1156 -0
  1533. package/lib/esm/topology/Graph.js.map +1 -0
  1534. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +125 -0
  1535. package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -0
  1536. package/lib/esm/topology/HalfEdgeGraphSearch.js +296 -0
  1537. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -0
  1538. package/lib/esm/topology/HalfEdgeGraphSpineContext.d.ts +98 -0
  1539. package/lib/esm/topology/HalfEdgeGraphSpineContext.d.ts.map +1 -0
  1540. package/lib/esm/topology/HalfEdgeGraphSpineContext.js +519 -0
  1541. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -0
  1542. package/lib/esm/topology/HalfEdgeGraphValidation.d.ts +52 -0
  1543. package/lib/esm/topology/HalfEdgeGraphValidation.d.ts.map +1 -0
  1544. package/lib/esm/topology/HalfEdgeGraphValidation.js +107 -0
  1545. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -0
  1546. package/lib/esm/topology/HalfEdgeMarkSet.d.ts +232 -0
  1547. package/lib/esm/topology/HalfEdgeMarkSet.d.ts.map +1 -0
  1548. package/lib/esm/topology/HalfEdgeMarkSet.js +369 -0
  1549. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -0
  1550. package/lib/esm/topology/HalfEdgeNodeXYZUV.d.ts +51 -0
  1551. package/lib/esm/topology/HalfEdgeNodeXYZUV.d.ts.map +1 -0
  1552. package/lib/esm/topology/HalfEdgeNodeXYZUV.js +93 -0
  1553. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -0
  1554. package/lib/esm/topology/HalfEdgePointInGraphSearch.d.ts +34 -0
  1555. package/lib/esm/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -0
  1556. package/lib/esm/topology/HalfEdgePointInGraphSearch.js +252 -0
  1557. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -0
  1558. package/lib/esm/topology/HalfEdgePositionDetail.d.ts +97 -0
  1559. package/lib/esm/topology/HalfEdgePositionDetail.d.ts.map +1 -0
  1560. package/lib/esm/topology/HalfEdgePositionDetail.js +173 -0
  1561. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -0
  1562. package/lib/esm/topology/HalfEdgePriorityQueue.d.ts +34 -0
  1563. package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -0
  1564. package/lib/esm/topology/HalfEdgePriorityQueue.js +68 -0
  1565. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -0
  1566. package/lib/esm/topology/InsertAndRetriangulateContext.d.ts +38 -0
  1567. package/lib/esm/topology/InsertAndRetriangulateContext.d.ts.map +1 -0
  1568. package/lib/esm/topology/InsertAndRetriangulateContext.js +239 -0
  1569. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -0
  1570. package/lib/esm/topology/MaskManager.d.ts +33 -0
  1571. package/lib/esm/topology/MaskManager.d.ts.map +1 -0
  1572. package/lib/esm/topology/MaskManager.js +63 -0
  1573. package/lib/esm/topology/MaskManager.js.map +1 -0
  1574. package/lib/esm/topology/Merging.d.ts +90 -0
  1575. package/lib/esm/topology/Merging.d.ts.map +1 -0
  1576. package/lib/esm/topology/Merging.js +362 -0
  1577. package/lib/esm/topology/Merging.js.map +1 -0
  1578. package/lib/esm/topology/RegularizeFace.d.ts +106 -0
  1579. package/lib/esm/topology/RegularizeFace.d.ts.map +1 -0
  1580. package/lib/esm/topology/RegularizeFace.js +367 -0
  1581. package/lib/esm/topology/RegularizeFace.js.map +1 -0
  1582. package/lib/esm/topology/SignedDataSummary.d.ts +37 -0
  1583. package/lib/esm/topology/SignedDataSummary.d.ts.map +1 -0
  1584. package/lib/esm/topology/SignedDataSummary.js +54 -0
  1585. package/lib/esm/topology/SignedDataSummary.js.map +1 -0
  1586. package/lib/esm/topology/Triangulation.d.ts +230 -0
  1587. package/lib/esm/topology/Triangulation.d.ts.map +1 -0
  1588. package/lib/esm/topology/Triangulation.js +945 -0
  1589. package/lib/esm/topology/Triangulation.js.map +1 -0
  1590. package/lib/esm/topology/XYParitySearchContext.d.ts +54 -0
  1591. package/lib/esm/topology/XYParitySearchContext.d.ts.map +1 -0
  1592. package/lib/esm/topology/XYParitySearchContext.js +138 -0
  1593. package/lib/esm/topology/XYParitySearchContext.js.map +1 -0
  1594. package/package.json +11 -8
  1595. package/lib/Constant.d.ts.map +0 -1
  1596. package/lib/Constant.js.map +0 -1
  1597. package/lib/Geometry.d.ts.map +0 -1
  1598. package/lib/Geometry.js.map +0 -1
  1599. package/lib/bspline/AkimaCurve3d.d.ts.map +0 -1
  1600. package/lib/bspline/AkimaCurve3d.js.map +0 -1
  1601. package/lib/bspline/BSpline1dNd.d.ts.map +0 -1
  1602. package/lib/bspline/BSpline1dNd.js.map +0 -1
  1603. package/lib/bspline/BSplineCurve.d.ts.map +0 -1
  1604. package/lib/bspline/BSplineCurve.js.map +0 -1
  1605. package/lib/bspline/BSplineCurve3dH.d.ts.map +0 -1
  1606. package/lib/bspline/BSplineCurve3dH.js.map +0 -1
  1607. package/lib/bspline/BSplineCurveOps.d.ts.map +0 -1
  1608. package/lib/bspline/BSplineCurveOps.js.map +0 -1
  1609. package/lib/bspline/BSplineSurface.d.ts +0 -485
  1610. package/lib/bspline/BSplineSurface.d.ts.map +0 -1
  1611. package/lib/bspline/BSplineSurface.js.map +0 -1
  1612. package/lib/bspline/Bezier1dNd.d.ts.map +0 -1
  1613. package/lib/bspline/Bezier1dNd.js.map +0 -1
  1614. package/lib/bspline/BezierCurve3d.d.ts.map +0 -1
  1615. package/lib/bspline/BezierCurve3d.js.map +0 -1
  1616. package/lib/bspline/BezierCurve3dH.d.ts.map +0 -1
  1617. package/lib/bspline/BezierCurve3dH.js.map +0 -1
  1618. package/lib/bspline/BezierCurveBase.d.ts.map +0 -1
  1619. package/lib/bspline/BezierCurveBase.js.map +0 -1
  1620. package/lib/bspline/InterpolationCurve3d.d.ts.map +0 -1
  1621. package/lib/bspline/InterpolationCurve3d.js.map +0 -1
  1622. package/lib/bspline/KnotVector.d.ts.map +0 -1
  1623. package/lib/bspline/KnotVector.js.map +0 -1
  1624. package/lib/bspline/SurfaceLocationDetail.d.ts.map +0 -1
  1625. package/lib/bspline/SurfaceLocationDetail.js.map +0 -1
  1626. package/lib/clipping/AlternatingConvexClipTree.d.ts.map +0 -1
  1627. package/lib/clipping/AlternatingConvexClipTree.js.map +0 -1
  1628. package/lib/clipping/BooleanClipFactory.d.ts.map +0 -1
  1629. package/lib/clipping/BooleanClipFactory.js.map +0 -1
  1630. package/lib/clipping/BooleanClipNode.d.ts.map +0 -1
  1631. package/lib/clipping/BooleanClipNode.js.map +0 -1
  1632. package/lib/clipping/ClipPlane.d.ts.map +0 -1
  1633. package/lib/clipping/ClipPlane.js.map +0 -1
  1634. package/lib/clipping/ClipPrimitive.d.ts.map +0 -1
  1635. package/lib/clipping/ClipPrimitive.js.map +0 -1
  1636. package/lib/clipping/ClipUtils.d.ts.map +0 -1
  1637. package/lib/clipping/ClipUtils.js.map +0 -1
  1638. package/lib/clipping/ClipVector.d.ts.map +0 -1
  1639. package/lib/clipping/ClipVector.js.map +0 -1
  1640. package/lib/clipping/ConvexClipPlaneSet.d.ts.map +0 -1
  1641. package/lib/clipping/ConvexClipPlaneSet.js.map +0 -1
  1642. package/lib/clipping/UnionOfConvexClipPlaneSets.d.ts.map +0 -1
  1643. package/lib/clipping/UnionOfConvexClipPlaneSets.js.map +0 -1
  1644. package/lib/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +0 -1
  1645. package/lib/clipping/internalContexts/LineStringOffsetClipperContext.js.map +0 -1
  1646. package/lib/core-geometry.d.ts.map +0 -1
  1647. package/lib/core-geometry.js.map +0 -1
  1648. package/lib/curve/Arc3d.d.ts.map +0 -1
  1649. package/lib/curve/Arc3d.js.map +0 -1
  1650. package/lib/curve/ChainCollectorContext.d.ts.map +0 -1
  1651. package/lib/curve/ChainCollectorContext.js.map +0 -1
  1652. package/lib/curve/ConstructCurveBetweenCurves.d.ts.map +0 -1
  1653. package/lib/curve/ConstructCurveBetweenCurves.js.map +0 -1
  1654. package/lib/curve/CoordinateXYZ.d.ts.map +0 -1
  1655. package/lib/curve/CoordinateXYZ.js.map +0 -1
  1656. package/lib/curve/CurveChain.d.ts.map +0 -1
  1657. package/lib/curve/CurveChain.js.map +0 -1
  1658. package/lib/curve/CurveChainWithDistanceIndex.d.ts.map +0 -1
  1659. package/lib/curve/CurveChainWithDistanceIndex.js.map +0 -1
  1660. package/lib/curve/CurveCollection.d.ts.map +0 -1
  1661. package/lib/curve/CurveCollection.js.map +0 -1
  1662. package/lib/curve/CurveCurve.d.ts.map +0 -1
  1663. package/lib/curve/CurveCurve.js.map +0 -1
  1664. package/lib/curve/CurveCurveCloseApproachXY.d.ts.map +0 -1
  1665. package/lib/curve/CurveCurveCloseApproachXY.js.map +0 -1
  1666. package/lib/curve/CurveCurveIntersectXY.d.ts.map +0 -1
  1667. package/lib/curve/CurveCurveIntersectXY.js.map +0 -1
  1668. package/lib/curve/CurveCurveIntersectXYZ.d.ts.map +0 -1
  1669. package/lib/curve/CurveCurveIntersectXYZ.js.map +0 -1
  1670. package/lib/curve/CurveExtendMode.d.ts.map +0 -1
  1671. package/lib/curve/CurveExtendMode.js.map +0 -1
  1672. package/lib/curve/CurveFactory.d.ts.map +0 -1
  1673. package/lib/curve/CurveFactory.js.map +0 -1
  1674. package/lib/curve/CurveLocationDetail.d.ts.map +0 -1
  1675. package/lib/curve/CurveLocationDetail.js.map +0 -1
  1676. package/lib/curve/CurvePrimitive.d.ts.map +0 -1
  1677. package/lib/curve/CurvePrimitive.js.map +0 -1
  1678. package/lib/curve/CurveProcessor.d.ts.map +0 -1
  1679. package/lib/curve/CurveProcessor.js.map +0 -1
  1680. package/lib/curve/CurveWireMomentsXYZ.d.ts.map +0 -1
  1681. package/lib/curve/CurveWireMomentsXYZ.js.map +0 -1
  1682. package/lib/curve/GeometryQuery.d.ts.map +0 -1
  1683. package/lib/curve/GeometryQuery.js.map +0 -1
  1684. package/lib/curve/LineSegment3d.d.ts.map +0 -1
  1685. package/lib/curve/LineSegment3d.js.map +0 -1
  1686. package/lib/curve/LineString3d.d.ts.map +0 -1
  1687. package/lib/curve/LineString3d.js.map +0 -1
  1688. package/lib/curve/Loop.d.ts.map +0 -1
  1689. package/lib/curve/Loop.js.map +0 -1
  1690. package/lib/curve/ParityRegion.d.ts.map +0 -1
  1691. package/lib/curve/ParityRegion.js.map +0 -1
  1692. package/lib/curve/Path.d.ts.map +0 -1
  1693. package/lib/curve/Path.js.map +0 -1
  1694. package/lib/curve/PointString3d.d.ts.map +0 -1
  1695. package/lib/curve/PointString3d.js.map +0 -1
  1696. package/lib/curve/ProxyCurve.d.ts.map +0 -1
  1697. package/lib/curve/ProxyCurve.js.map +0 -1
  1698. package/lib/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +0 -1
  1699. package/lib/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +0 -1
  1700. package/lib/curve/Query/CurveSplitContext.d.ts.map +0 -1
  1701. package/lib/curve/Query/CurveSplitContext.js.map +0 -1
  1702. package/lib/curve/Query/CylindricalRange.d.ts.map +0 -1
  1703. package/lib/curve/Query/CylindricalRange.js.map +0 -1
  1704. package/lib/curve/Query/InOutTests.d.ts.map +0 -1
  1705. package/lib/curve/Query/InOutTests.js.map +0 -1
  1706. package/lib/curve/Query/PlanarSubdivision.d.ts.map +0 -1
  1707. package/lib/curve/Query/PlanarSubdivision.js.map +0 -1
  1708. package/lib/curve/Query/StrokeCountChain.d.ts.map +0 -1
  1709. package/lib/curve/Query/StrokeCountChain.js.map +0 -1
  1710. package/lib/curve/Query/StrokeCountMap.d.ts.map +0 -1
  1711. package/lib/curve/Query/StrokeCountMap.js.map +0 -1
  1712. package/lib/curve/RegionMomentsXY.d.ts.map +0 -1
  1713. package/lib/curve/RegionMomentsXY.js.map +0 -1
  1714. package/lib/curve/RegionOps.d.ts.map +0 -1
  1715. package/lib/curve/RegionOps.js.map +0 -1
  1716. package/lib/curve/RegionOpsClassificationSweeps.d.ts.map +0 -1
  1717. package/lib/curve/RegionOpsClassificationSweeps.js.map +0 -1
  1718. package/lib/curve/StrokeOptions.d.ts.map +0 -1
  1719. package/lib/curve/StrokeOptions.js.map +0 -1
  1720. package/lib/curve/UnionRegion.d.ts.map +0 -1
  1721. package/lib/curve/UnionRegion.js.map +0 -1
  1722. package/lib/curve/internalContexts/CloneCurvesContext.d.ts.map +0 -1
  1723. package/lib/curve/internalContexts/CloneCurvesContext.js.map +0 -1
  1724. package/lib/curve/internalContexts/CloneWithExpandedLineStrings.d.ts.map +0 -1
  1725. package/lib/curve/internalContexts/CloneWithExpandedLineStrings.js.map +0 -1
  1726. package/lib/curve/internalContexts/CountLinearPartsSearchContext.d.ts.map +0 -1
  1727. package/lib/curve/internalContexts/CountLinearPartsSearchContext.js.map +0 -1
  1728. package/lib/curve/internalContexts/GapSearchContext.d.ts.map +0 -1
  1729. package/lib/curve/internalContexts/GapSearchContext.js.map +0 -1
  1730. package/lib/curve/internalContexts/MultiChainCollector.d.ts.map +0 -1
  1731. package/lib/curve/internalContexts/MultiChainCollector.js.map +0 -1
  1732. package/lib/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +0 -1
  1733. package/lib/curve/internalContexts/PlaneAltitudeRangeContext.js.map +0 -1
  1734. package/lib/curve/internalContexts/PolygonOffsetContext.d.ts.map +0 -1
  1735. package/lib/curve/internalContexts/PolygonOffsetContext.js.map +0 -1
  1736. package/lib/curve/internalContexts/SumLengthsContext.d.ts.map +0 -1
  1737. package/lib/curve/internalContexts/SumLengthsContext.js.map +0 -1
  1738. package/lib/curve/internalContexts/TransformInPlaceContext.d.ts.map +0 -1
  1739. package/lib/curve/internalContexts/TransformInPlaceContext.js.map +0 -1
  1740. package/lib/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +0 -1
  1741. package/lib/curve/spiral/AustralianRailCorpXYEvaluator.js.map +0 -1
  1742. package/lib/curve/spiral/ClothoidSeries.d.ts.map +0 -1
  1743. package/lib/curve/spiral/ClothoidSeries.js.map +0 -1
  1744. package/lib/curve/spiral/CubicEvaluator.d.ts.map +0 -1
  1745. package/lib/curve/spiral/CubicEvaluator.js.map +0 -1
  1746. package/lib/curve/spiral/CzechSpiralEvaluator.d.ts.map +0 -1
  1747. package/lib/curve/spiral/CzechSpiralEvaluator.js.map +0 -1
  1748. package/lib/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +0 -1
  1749. package/lib/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +0 -1
  1750. package/lib/curve/spiral/DirectSpiral3d.d.ts +0 -264
  1751. package/lib/curve/spiral/DirectSpiral3d.d.ts.map +0 -1
  1752. package/lib/curve/spiral/DirectSpiral3d.js +0 -464
  1753. package/lib/curve/spiral/DirectSpiral3d.js.map +0 -1
  1754. package/lib/curve/spiral/IntegratedSpiral3d.d.ts +0 -154
  1755. package/lib/curve/spiral/IntegratedSpiral3d.d.ts.map +0 -1
  1756. package/lib/curve/spiral/IntegratedSpiral3d.js +0 -351
  1757. package/lib/curve/spiral/IntegratedSpiral3d.js.map +0 -1
  1758. package/lib/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +0 -1
  1759. package/lib/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +0 -1
  1760. package/lib/curve/spiral/NormalizedTransition.d.ts.map +0 -1
  1761. package/lib/curve/spiral/NormalizedTransition.js.map +0 -1
  1762. package/lib/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +0 -1
  1763. package/lib/curve/spiral/PolishCubicSpiralEvaluator.js.map +0 -1
  1764. package/lib/curve/spiral/TransitionConditionalProperties.d.ts.map +0 -1
  1765. package/lib/curve/spiral/TransitionConditionalProperties.js.map +0 -1
  1766. package/lib/curve/spiral/TransitionSpiral3d.d.ts.map +0 -1
  1767. package/lib/curve/spiral/TransitionSpiral3d.js.map +0 -1
  1768. package/lib/curve/spiral/XYCurveEvaluator.d.ts.map +0 -1
  1769. package/lib/curve/spiral/XYCurveEvaluator.js.map +0 -1
  1770. package/lib/geometry3d/Angle.d.ts.map +0 -1
  1771. package/lib/geometry3d/Angle.js.map +0 -1
  1772. package/lib/geometry3d/AngleSweep.d.ts.map +0 -1
  1773. package/lib/geometry3d/AngleSweep.js.map +0 -1
  1774. package/lib/geometry3d/BarycentricTriangle.d.ts.map +0 -1
  1775. package/lib/geometry3d/BarycentricTriangle.js.map +0 -1
  1776. package/lib/geometry3d/BilinearPatch.d.ts.map +0 -1
  1777. package/lib/geometry3d/BilinearPatch.js.map +0 -1
  1778. package/lib/geometry3d/CoincidentGeometryOps.d.ts.map +0 -1
  1779. package/lib/geometry3d/CoincidentGeometryOps.js.map +0 -1
  1780. package/lib/geometry3d/Ellipsoid.d.ts.map +0 -1
  1781. package/lib/geometry3d/Ellipsoid.js.map +0 -1
  1782. package/lib/geometry3d/FrameBuilder.d.ts.map +0 -1
  1783. package/lib/geometry3d/FrameBuilder.js.map +0 -1
  1784. package/lib/geometry3d/FrustumAnimation.d.ts.map +0 -1
  1785. package/lib/geometry3d/FrustumAnimation.js.map +0 -1
  1786. package/lib/geometry3d/GeometryHandler.d.ts.map +0 -1
  1787. package/lib/geometry3d/GeometryHandler.js.map +0 -1
  1788. package/lib/geometry3d/GrowableBlockedArray.d.ts.map +0 -1
  1789. package/lib/geometry3d/GrowableBlockedArray.js.map +0 -1
  1790. package/lib/geometry3d/GrowableFloat64Array.d.ts.map +0 -1
  1791. package/lib/geometry3d/GrowableFloat64Array.js.map +0 -1
  1792. package/lib/geometry3d/GrowableXYArray.d.ts.map +0 -1
  1793. package/lib/geometry3d/GrowableXYArray.js.map +0 -1
  1794. package/lib/geometry3d/GrowableXYZArray.d.ts.map +0 -1
  1795. package/lib/geometry3d/GrowableXYZArray.js.map +0 -1
  1796. package/lib/geometry3d/IndexedCollectionInterval.d.ts.map +0 -1
  1797. package/lib/geometry3d/IndexedCollectionInterval.js.map +0 -1
  1798. package/lib/geometry3d/IndexedXYCollection.d.ts.map +0 -1
  1799. package/lib/geometry3d/IndexedXYCollection.js.map +0 -1
  1800. package/lib/geometry3d/IndexedXYZCollection.d.ts.map +0 -1
  1801. package/lib/geometry3d/IndexedXYZCollection.js.map +0 -1
  1802. package/lib/geometry3d/LongitudeLatitudeAltitude.d.ts.map +0 -1
  1803. package/lib/geometry3d/LongitudeLatitudeAltitude.js.map +0 -1
  1804. package/lib/geometry3d/Matrix3d.d.ts.map +0 -1
  1805. package/lib/geometry3d/Matrix3d.js.map +0 -1
  1806. package/lib/geometry3d/OrderedRotationAngles.d.ts.map +0 -1
  1807. package/lib/geometry3d/OrderedRotationAngles.js.map +0 -1
  1808. package/lib/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +0 -1
  1809. package/lib/geometry3d/Plane3dByOriginAndUnitNormal.js.map +0 -1
  1810. package/lib/geometry3d/Plane3dByOriginAndVectors.d.ts.map +0 -1
  1811. package/lib/geometry3d/Plane3dByOriginAndVectors.js.map +0 -1
  1812. package/lib/geometry3d/Point2dArrayCarrier.d.ts.map +0 -1
  1813. package/lib/geometry3d/Point2dArrayCarrier.js.map +0 -1
  1814. package/lib/geometry3d/Point2dVector2d.d.ts.map +0 -1
  1815. package/lib/geometry3d/Point2dVector2d.js.map +0 -1
  1816. package/lib/geometry3d/Point3dArrayCarrier.d.ts.map +0 -1
  1817. package/lib/geometry3d/Point3dArrayCarrier.js.map +0 -1
  1818. package/lib/geometry3d/Point3dVector3d.d.ts.map +0 -1
  1819. package/lib/geometry3d/Point3dVector3d.js.map +0 -1
  1820. package/lib/geometry3d/PointHelpers.d.ts.map +0 -1
  1821. package/lib/geometry3d/PointHelpers.js.map +0 -1
  1822. package/lib/geometry3d/PointStreaming.d.ts.map +0 -1
  1823. package/lib/geometry3d/PointStreaming.js.map +0 -1
  1824. package/lib/geometry3d/PolygonOps.d.ts.map +0 -1
  1825. package/lib/geometry3d/PolygonOps.js.map +0 -1
  1826. package/lib/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +0 -1
  1827. package/lib/geometry3d/PolylineCompressionByEdgeOffset.js.map +0 -1
  1828. package/lib/geometry3d/PolylineOps.d.ts.map +0 -1
  1829. package/lib/geometry3d/PolylineOps.js.map +0 -1
  1830. package/lib/geometry3d/Range.d.ts.map +0 -1
  1831. package/lib/geometry3d/Range.js.map +0 -1
  1832. package/lib/geometry3d/Ray3d.d.ts.map +0 -1
  1833. package/lib/geometry3d/Ray3d.js.map +0 -1
  1834. package/lib/geometry3d/ReusableObjectCache.d.ts.map +0 -1
  1835. package/lib/geometry3d/ReusableObjectCache.js.map +0 -1
  1836. package/lib/geometry3d/Segment1d.d.ts.map +0 -1
  1837. package/lib/geometry3d/Segment1d.js.map +0 -1
  1838. package/lib/geometry3d/SortablePolygon.d.ts.map +0 -1
  1839. package/lib/geometry3d/SortablePolygon.js.map +0 -1
  1840. package/lib/geometry3d/Transform.d.ts.map +0 -1
  1841. package/lib/geometry3d/Transform.js.map +0 -1
  1842. package/lib/geometry3d/UVSurfaceOps.d.ts.map +0 -1
  1843. package/lib/geometry3d/UVSurfaceOps.js.map +0 -1
  1844. package/lib/geometry3d/XYZProps.d.ts.map +0 -1
  1845. package/lib/geometry3d/XYZProps.js.map +0 -1
  1846. package/lib/geometry3d/YawPitchRollAngles.d.ts.map +0 -1
  1847. package/lib/geometry3d/YawPitchRollAngles.js.map +0 -1
  1848. package/lib/geometry4d/Map4d.d.ts.map +0 -1
  1849. package/lib/geometry4d/Map4d.js.map +0 -1
  1850. package/lib/geometry4d/Matrix4d.d.ts.map +0 -1
  1851. package/lib/geometry4d/Matrix4d.js.map +0 -1
  1852. package/lib/geometry4d/MomentData.d.ts.map +0 -1
  1853. package/lib/geometry4d/MomentData.js.map +0 -1
  1854. package/lib/geometry4d/PlaneByOriginAndVectors4d.d.ts.map +0 -1
  1855. package/lib/geometry4d/PlaneByOriginAndVectors4d.js.map +0 -1
  1856. package/lib/geometry4d/Point4d.d.ts.map +0 -1
  1857. package/lib/geometry4d/Point4d.js.map +0 -1
  1858. package/lib/numerics/BandedSystem.d.ts.map +0 -1
  1859. package/lib/numerics/BandedSystem.js.map +0 -1
  1860. package/lib/numerics/BezierPolynomials.d.ts.map +0 -1
  1861. package/lib/numerics/BezierPolynomials.js.map +0 -1
  1862. package/lib/numerics/ClusterableArray.d.ts.map +0 -1
  1863. package/lib/numerics/ClusterableArray.js.map +0 -1
  1864. package/lib/numerics/Complex.d.ts.map +0 -1
  1865. package/lib/numerics/Complex.js.map +0 -1
  1866. package/lib/numerics/ConvexPolygon2d.d.ts.map +0 -1
  1867. package/lib/numerics/ConvexPolygon2d.js.map +0 -1
  1868. package/lib/numerics/Newton.d.ts.map +0 -1
  1869. package/lib/numerics/Newton.js.map +0 -1
  1870. package/lib/numerics/PascalCoefficients.d.ts.map +0 -1
  1871. package/lib/numerics/PascalCoefficients.js.map +0 -1
  1872. package/lib/numerics/PolarData.d.ts.map +0 -1
  1873. package/lib/numerics/PolarData.js.map +0 -1
  1874. package/lib/numerics/Polynomials.d.ts.map +0 -1
  1875. package/lib/numerics/Polynomials.js.map +0 -1
  1876. package/lib/numerics/Quadrature.d.ts.map +0 -1
  1877. package/lib/numerics/Quadrature.js.map +0 -1
  1878. package/lib/numerics/Range1dArray.d.ts.map +0 -1
  1879. package/lib/numerics/Range1dArray.js.map +0 -1
  1880. package/lib/numerics/TriDiagonalSystem.d.ts.map +0 -1
  1881. package/lib/numerics/TriDiagonalSystem.js.map +0 -1
  1882. package/lib/numerics/UnionFind.d.ts.map +0 -1
  1883. package/lib/numerics/UnionFind.js.map +0 -1
  1884. package/lib/numerics/UsageSums.d.ts.map +0 -1
  1885. package/lib/numerics/UsageSums.js.map +0 -1
  1886. package/lib/polyface/AuxData.d.ts.map +0 -1
  1887. package/lib/polyface/AuxData.js.map +0 -1
  1888. package/lib/polyface/BoxTopology.d.ts.map +0 -1
  1889. package/lib/polyface/BoxTopology.js.map +0 -1
  1890. package/lib/polyface/FacetFaceData.d.ts.map +0 -1
  1891. package/lib/polyface/FacetFaceData.js.map +0 -1
  1892. package/lib/polyface/FacetOrientation.d.ts.map +0 -1
  1893. package/lib/polyface/FacetOrientation.js.map +0 -1
  1894. package/lib/polyface/GreedyTriangulationBetweenLineStrings.d.ts.map +0 -1
  1895. package/lib/polyface/GreedyTriangulationBetweenLineStrings.js.map +0 -1
  1896. package/lib/polyface/IndexedEdgeMatcher.d.ts.map +0 -1
  1897. package/lib/polyface/IndexedEdgeMatcher.js.map +0 -1
  1898. package/lib/polyface/IndexedPolyfaceVisitor.d.ts.map +0 -1
  1899. package/lib/polyface/IndexedPolyfaceVisitor.js.map +0 -1
  1900. package/lib/polyface/Polyface.d.ts.map +0 -1
  1901. package/lib/polyface/Polyface.js.map +0 -1
  1902. package/lib/polyface/PolyfaceBuilder.d.ts.map +0 -1
  1903. package/lib/polyface/PolyfaceBuilder.js.map +0 -1
  1904. package/lib/polyface/PolyfaceClip.d.ts.map +0 -1
  1905. package/lib/polyface/PolyfaceClip.js.map +0 -1
  1906. package/lib/polyface/PolyfaceData.d.ts +0 -170
  1907. package/lib/polyface/PolyfaceData.d.ts.map +0 -1
  1908. package/lib/polyface/PolyfaceData.js +0 -531
  1909. package/lib/polyface/PolyfaceData.js.map +0 -1
  1910. package/lib/polyface/PolyfaceQuery.d.ts.map +0 -1
  1911. package/lib/polyface/PolyfaceQuery.js.map +0 -1
  1912. package/lib/polyface/RangeLengthData.d.ts.map +0 -1
  1913. package/lib/polyface/RangeLengthData.js.map +0 -1
  1914. package/lib/polyface/TaggedNumericData.d.ts.map +0 -1
  1915. package/lib/polyface/TaggedNumericData.js.map +0 -1
  1916. package/lib/polyface/TriangleCandidate.d.ts.map +0 -1
  1917. package/lib/polyface/TriangleCandidate.js.map +0 -1
  1918. package/lib/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +0 -1
  1919. package/lib/polyface/multiclip/BuildAverageNormalsContext.js.map +0 -1
  1920. package/lib/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +0 -1
  1921. package/lib/polyface/multiclip/GriddedRaggedRange2dSet.js.map +0 -1
  1922. package/lib/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +0 -1
  1923. package/lib/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +0 -1
  1924. package/lib/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +0 -1
  1925. package/lib/polyface/multiclip/LinearSearchRange2dArray.js.map +0 -1
  1926. package/lib/polyface/multiclip/Range2dSearchInterface.d.ts.map +0 -1
  1927. package/lib/polyface/multiclip/Range2dSearchInterface.js.map +0 -1
  1928. package/lib/polyface/multiclip/RangeSearch.d.ts.map +0 -1
  1929. package/lib/polyface/multiclip/RangeSearch.js.map +0 -1
  1930. package/lib/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +0 -1
  1931. package/lib/polyface/multiclip/SweepLineStringToFacetContext.js.map +0 -1
  1932. package/lib/polyface/multiclip/XYPointBuckets.d.ts.map +0 -1
  1933. package/lib/polyface/multiclip/XYPointBuckets.js.map +0 -1
  1934. package/lib/serialization/BGFBAccessors.d.ts.map +0 -1
  1935. package/lib/serialization/BGFBAccessors.js.map +0 -1
  1936. package/lib/serialization/BGFBReader.d.ts.map +0 -1
  1937. package/lib/serialization/BGFBReader.js.map +0 -1
  1938. package/lib/serialization/BGFBWriter.d.ts.map +0 -1
  1939. package/lib/serialization/BGFBWriter.js.map +0 -1
  1940. package/lib/serialization/BentleyGeometryFlatBuffer.d.ts.map +0 -1
  1941. package/lib/serialization/BentleyGeometryFlatBuffer.js.map +0 -1
  1942. package/lib/serialization/DeepCompare.d.ts.map +0 -1
  1943. package/lib/serialization/DeepCompare.js.map +0 -1
  1944. package/lib/serialization/GeometrySamples.d.ts.map +0 -1
  1945. package/lib/serialization/GeometrySamples.js.map +0 -1
  1946. package/lib/serialization/IModelJsonSchema.d.ts.map +0 -1
  1947. package/lib/serialization/IModelJsonSchema.js.map +0 -1
  1948. package/lib/solid/Box.d.ts.map +0 -1
  1949. package/lib/solid/Box.js.map +0 -1
  1950. package/lib/solid/Cone.d.ts.map +0 -1
  1951. package/lib/solid/Cone.js.map +0 -1
  1952. package/lib/solid/LinearSweep.d.ts.map +0 -1
  1953. package/lib/solid/LinearSweep.js.map +0 -1
  1954. package/lib/solid/RotationalSweep.d.ts.map +0 -1
  1955. package/lib/solid/RotationalSweep.js.map +0 -1
  1956. package/lib/solid/RuledSweep.d.ts.map +0 -1
  1957. package/lib/solid/RuledSweep.js.map +0 -1
  1958. package/lib/solid/SolidPrimitive.d.ts.map +0 -1
  1959. package/lib/solid/SolidPrimitive.js.map +0 -1
  1960. package/lib/solid/Sphere.d.ts.map +0 -1
  1961. package/lib/solid/Sphere.js.map +0 -1
  1962. package/lib/solid/SweepContour.d.ts.map +0 -1
  1963. package/lib/solid/SweepContour.js.map +0 -1
  1964. package/lib/solid/TorusPipe.d.ts.map +0 -1
  1965. package/lib/solid/TorusPipe.js.map +0 -1
  1966. package/lib/topology/ChainMerge.d.ts.map +0 -1
  1967. package/lib/topology/ChainMerge.js.map +0 -1
  1968. package/lib/topology/Graph.d.ts.map +0 -1
  1969. package/lib/topology/Graph.js.map +0 -1
  1970. package/lib/topology/HalfEdgeGraphSearch.d.ts.map +0 -1
  1971. package/lib/topology/HalfEdgeGraphSearch.js.map +0 -1
  1972. package/lib/topology/HalfEdgeGraphSpineContext.d.ts.map +0 -1
  1973. package/lib/topology/HalfEdgeGraphSpineContext.js.map +0 -1
  1974. package/lib/topology/HalfEdgeGraphValidation.d.ts.map +0 -1
  1975. package/lib/topology/HalfEdgeGraphValidation.js.map +0 -1
  1976. package/lib/topology/HalfEdgeMarkSet.d.ts.map +0 -1
  1977. package/lib/topology/HalfEdgeMarkSet.js.map +0 -1
  1978. package/lib/topology/HalfEdgeNodeXYZUV.d.ts.map +0 -1
  1979. package/lib/topology/HalfEdgeNodeXYZUV.js.map +0 -1
  1980. package/lib/topology/HalfEdgePointInGraphSearch.d.ts.map +0 -1
  1981. package/lib/topology/HalfEdgePointInGraphSearch.js.map +0 -1
  1982. package/lib/topology/HalfEdgePositionDetail.d.ts.map +0 -1
  1983. package/lib/topology/HalfEdgePositionDetail.js.map +0 -1
  1984. package/lib/topology/HalfEdgePriorityQueue.d.ts.map +0 -1
  1985. package/lib/topology/HalfEdgePriorityQueue.js.map +0 -1
  1986. package/lib/topology/InsertAndRetriangulateContext.d.ts.map +0 -1
  1987. package/lib/topology/InsertAndRetriangulateContext.js.map +0 -1
  1988. package/lib/topology/MaskManager.d.ts.map +0 -1
  1989. package/lib/topology/MaskManager.js.map +0 -1
  1990. package/lib/topology/Merging.d.ts.map +0 -1
  1991. package/lib/topology/Merging.js.map +0 -1
  1992. package/lib/topology/RegularizeFace.d.ts.map +0 -1
  1993. package/lib/topology/RegularizeFace.js.map +0 -1
  1994. package/lib/topology/SignedDataSummary.d.ts.map +0 -1
  1995. package/lib/topology/SignedDataSummary.js.map +0 -1
  1996. package/lib/topology/Triangulation.d.ts.map +0 -1
  1997. package/lib/topology/Triangulation.js.map +0 -1
  1998. package/lib/topology/XYParitySearchContext.d.ts.map +0 -1
  1999. package/lib/topology/XYParitySearchContext.js.map +0 -1
@@ -0,0 +1,2269 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module CartesianGeometry
7
+ */
8
+ import { AxisIndex, AxisOrder, Geometry, StandardViewIndex } from "../Geometry";
9
+ import { Point4d } from "../geometry4d/Point4d";
10
+ import { Angle } from "./Angle";
11
+ import { Point2d } from "./Point2dVector2d";
12
+ import { Point3d, Vector3d } from "./Point3dVector3d";
13
+ import { Transform } from "./Transform";
14
+ /* eslint-disable @itwin/prefer-get */
15
+ /**
16
+ * PackedMatrix3dOps contains static methods for matrix operations where the matrix is a Float64Array.
17
+ * * The Float64Array contains the matrix entries in row-major order
18
+ * @internal
19
+ * ```
20
+ * equation
21
+ * \newcommand[1]\mij{#1_{00}\ #1_{01}\ a_{02}}
22
+ * ```
23
+ */
24
+ export class PackedMatrix3dOps {
25
+ /**
26
+ * Load 9 doubles into the packed format.
27
+ * @param dest destination, allocated by caller
28
+ * @param a00 row 0, column 0 entry
29
+ * @param a01 row 0, column 1 entry
30
+ * @param a02 row 0, column 2 entry
31
+ * @param a10 row 1, column 0 entry
32
+ * @param a11 row 1, column 1 entry
33
+ * @param a12 row 1, column 2 entry
34
+ * @param a20 row 2, column 0 entry
35
+ * @param a21 row 2, column 1 entry
36
+ * @param a22 row 2, column 2 entry
37
+ */
38
+ static loadMatrix(dest, a00, a01, a02, a10, a11, a12, a20, a21, a22) {
39
+ dest[0] = a00;
40
+ dest[1] = a01;
41
+ dest[2] = a02;
42
+ dest[3] = a10;
43
+ dest[4] = a11;
44
+ dest[5] = a12;
45
+ dest[6] = a20;
46
+ dest[7] = a21;
47
+ dest[8] = a22;
48
+ }
49
+ /**
50
+ * * multiply 3x3 matrix `a*b`, store in c.
51
+ * * All params assumed length 9, allocated by caller.
52
+ * * c may alias either input.
53
+ */
54
+ static multiplyMatrixMatrix(a, b, result) {
55
+ if (!result)
56
+ result = new Float64Array(9);
57
+ PackedMatrix3dOps.loadMatrix(result, (a[0] * b[0] + a[1] * b[3] + a[2] * b[6]), (a[0] * b[1] + a[1] * b[4] + a[2] * b[7]), (a[0] * b[2] + a[1] * b[5] + a[2] * b[8]), (a[3] * b[0] + a[4] * b[3] + a[5] * b[6]), (a[3] * b[1] + a[4] * b[4] + a[5] * b[7]), (a[3] * b[2] + a[4] * b[5] + a[5] * b[8]), (a[6] * b[0] + a[7] * b[3] + a[8] * b[6]), (a[6] * b[1] + a[7] * b[4] + a[8] * b[7]), (a[6] * b[2] + a[7] * b[5] + a[8] * b[8]));
58
+ return result;
59
+ }
60
+ /**
61
+ * * multiply 3x3 matrix `a*bTranspose`, store in c.
62
+ * * All params assumed length 9, allocated by caller.
63
+ * * c may alias either input.
64
+ */
65
+ static multiplyMatrixMatrixTranspose(a, b, result) {
66
+ if (!result)
67
+ result = new Float64Array(9);
68
+ PackedMatrix3dOps.loadMatrix(result, (a[0] * b[0] + a[1] * b[1] + a[2] * b[2]), (a[0] * b[3] + a[1] * b[4] + a[2] * b[5]), (a[0] * b[6] + a[1] * b[7] + a[2] * b[8]), (a[3] * b[0] + a[4] * b[1] + a[5] * b[2]), (a[3] * b[3] + a[4] * b[4] + a[5] * b[5]), (a[3] * b[6] + a[4] * b[7] + a[5] * b[8]), (a[6] * b[0] + a[7] * b[1] + a[8] * b[2]), (a[6] * b[3] + a[7] * b[4] + a[8] * b[5]), (a[6] * b[6] + a[7] * b[7] + a[8] * b[8]));
69
+ return result;
70
+ }
71
+ /**
72
+ * * multiply 3x3 matrix `a*bTranspose`, store in c.
73
+ * * All params assumed length 9, allocated by caller.
74
+ * * c may alias either input.
75
+ */
76
+ static multiplyMatrixTransposeMatrix(a, b, result) {
77
+ if (!result)
78
+ result = new Float64Array(9);
79
+ PackedMatrix3dOps.loadMatrix(result, (a[0] * b[0] + a[3] * b[3] + a[6] * b[6]), (a[0] * b[1] + a[3] * b[4] + a[6] * b[7]), (a[0] * b[2] + a[3] * b[5] + a[6] * b[8]), (a[1] * b[0] + a[4] * b[3] + a[7] * b[6]), (a[1] * b[1] + a[4] * b[4] + a[7] * b[7]), (a[1] * b[2] + a[4] * b[5] + a[7] * b[8]), (a[2] * b[0] + a[5] * b[3] + a[8] * b[6]), (a[2] * b[1] + a[5] * b[4] + a[8] * b[7]), (a[2] * b[2] + a[5] * b[5] + a[8] * b[8]));
80
+ return result;
81
+ }
82
+ /** transpose 3x3 coefficients in place */
83
+ static transposeInPlace(a) {
84
+ let q = a[1];
85
+ a[1] = a[3];
86
+ a[3] = q;
87
+ q = a[2];
88
+ a[2] = a[6];
89
+ a[6] = q;
90
+ q = a[5];
91
+ a[5] = a[7];
92
+ a[7] = q;
93
+ }
94
+ /** transpose 3x3 coefficients in place */
95
+ static copyTransposed(a, dest) {
96
+ if (dest === a) {
97
+ PackedMatrix3dOps.transposeInPlace(a);
98
+ }
99
+ else {
100
+ if (!dest)
101
+ dest = new Float64Array(9);
102
+ dest[0] = a[0];
103
+ dest[1] = a[3];
104
+ dest[2] = a[6];
105
+ dest[3] = a[1];
106
+ dest[4] = a[4];
107
+ dest[5] = a[7];
108
+ dest[6] = a[2];
109
+ dest[7] = a[5];
110
+ dest[8] = a[8];
111
+ }
112
+ return dest;
113
+ }
114
+ /** transpose 3x3 coefficients in place */
115
+ static copy(a, dest) {
116
+ if (dest !== a) {
117
+ dest[0] = a[0];
118
+ dest[1] = a[1];
119
+ dest[2] = a[2];
120
+ dest[3] = a[3];
121
+ dest[4] = a[4];
122
+ dest[5] = a[5];
123
+ dest[6] = a[6];
124
+ dest[7] = a[7];
125
+ dest[8] = a[8];
126
+ }
127
+ return dest;
128
+ }
129
+ }
130
+ /** A Matrix3d is tagged indicating one of the following states:
131
+ * * unknown: it is not know if the matrix is invertible.
132
+ * * inverseStored: the matrix has its inverse stored
133
+ * * singular: the matrix is known to be singular.
134
+ * @public
135
+ */
136
+ export var InverseMatrixState;
137
+ (function (InverseMatrixState) {
138
+ /**
139
+ * * The invertibility of the `coffs` array has not been determined.
140
+ * * Any `inverseCoffs` contents are random.
141
+ */
142
+ InverseMatrixState[InverseMatrixState["unknown"] = 0] = "unknown";
143
+ /** An inverse was computed and stored as the `inverseCoffs` */
144
+ InverseMatrixState[InverseMatrixState["inverseStored"] = 1] = "inverseStored";
145
+ /**
146
+ * * The `coffs` array is known to be singular.
147
+ * * Any `inverseCoffs` contents are random.
148
+ */
149
+ InverseMatrixState[InverseMatrixState["singular"] = 2] = "singular";
150
+ })(InverseMatrixState || (InverseMatrixState = {}));
151
+ /** A Matrix3d is a 3x3 matrix.
152
+ * * A very common use is to hold a rigid body rotation (which has no scaling or skew), but the 3x3 contents can
153
+ * also hold scaling and skewing.
154
+ * * The matrix with 2-dimensional layout
155
+ * ```
156
+ * equation
157
+ * \matrixXY{A}
158
+ * ```
159
+ * is stored as 9 numbers in "row-major" order in a `Float64Array`, viz
160
+ * ```
161
+ * equation
162
+ * \rowMajorMatrixXY{A}
163
+ * ```
164
+ * * If the matrix inverse is known it is stored in the inverseCoffs array.
165
+ * * The inverse status (`unknown`, `inverseStored`, `singular`) status is indicated by the `inverseState` property.
166
+ * * construction methods that are able to trivially construct the inverse store it immediately and note that in the inverseState.
167
+ * * constructions (e.g. createRowValues) for which the inverse is not immediately known mark the
168
+ * inverseState as unknown.
169
+ * * Later queries for the inverse trigger full computation if needed at that time.
170
+ * * Most matrix queries are present with both "column" and "row" variants.
171
+ * * Usage elsewhere in the library is typically "column" based. For example, in a Transform
172
+ * that carries a coordinate frame the matrix columns are the unit vectors for the axes.
173
+ * @public
174
+ */
175
+ export class Matrix3d {
176
+ /**
177
+ *
178
+ * @param coffs optional coefficient array. This is captured.
179
+ */
180
+ constructor(coffs) {
181
+ this.coffs = coffs ? coffs : new Float64Array(9);
182
+ this.inverseCoffs = undefined;
183
+ this.inverseState = InverseMatrixState.unknown;
184
+ }
185
+ /** The identity Matrix3d. Value is frozen and cannot be modified. */
186
+ static get identity() {
187
+ if (undefined === this._identity) {
188
+ this._identity = Matrix3d.createIdentity();
189
+ this._identity.freeze();
190
+ }
191
+ return this._identity;
192
+ }
193
+ /** Freeze this Matrix3d. */
194
+ freeze() {
195
+ this.computeCachedInverse(true);
196
+ /* hm.. can't freeze the Float64Arrays . . .
197
+ Object.freeze(this.coffs);
198
+ if (this.inverseCoffs)
199
+ Object.freeze(this.inverseCoffs);
200
+ */
201
+ return Object.freeze(this);
202
+ }
203
+ /** Return a json object containing the 9 numeric entries as a single array in row major order,
204
+ * `[ [1, 2, 3],[ 4, 5, 6], [7, 8, 9] ]`
205
+ */
206
+ toJSON() {
207
+ return [[this.coffs[0], this.coffs[1], this.coffs[2]],
208
+ [this.coffs[3], this.coffs[4], this.coffs[5]],
209
+ [this.coffs[6], this.coffs[7], this.coffs[8]]];
210
+ }
211
+ /** copy data from various input forms to this matrix.
212
+ * The source can be:
213
+ * * Another `Matrix3d`
214
+ * * An array of 3 arrays, each of which has the 3 numbers for a row of the matrix.
215
+ * * An array of 9 numbers in row major order.
216
+ */
217
+ setFromJSON(json) {
218
+ this.inverseCoffs = undefined;
219
+ if (!json) {
220
+ this.setRowValues(0, 0, 0, 0, 0, 0, 0, 0, 0);
221
+ return;
222
+ }
223
+ if (!Array.isArray(json)) {
224
+ if (json instanceof Matrix3d)
225
+ this.setFrom(json);
226
+ return;
227
+ }
228
+ if (Geometry.isArrayOfNumberArray(json, 3, 3)) {
229
+ const data = json;
230
+ this.setRowValues(data[0][0], data[0][1], data[0][2], data[1][0], data[1][1], data[1][2], data[2][0], data[2][1], data[2][2]);
231
+ return;
232
+ }
233
+ if (json.length === 9) {
234
+ const data = json;
235
+ this.setRowValues(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8]);
236
+ }
237
+ else if (json.length === 4) {
238
+ const data = json;
239
+ this.setRowValues(data[0], data[1], 0, data[2], data[3], 0, 0, 0, 1);
240
+ }
241
+ }
242
+ /** Return a new Matrix3d constructed from contents of the json value. Se `setFromJSON` for layout rules */
243
+ static fromJSON(json) { const result = Matrix3d.createIdentity(); result.setFromJSON(json); return result; }
244
+ /** Test if this Matrix3d and other are within tolerance in all numeric entries.
245
+ * @param tol optional tolerance for comparisons by Geometry.isDistanceWithinTol
246
+ */
247
+ isAlmostEqual(other, tol) {
248
+ return Geometry.isDistanceWithinTol(this.maxDiff(other), tol);
249
+ }
250
+ /** Test if `this` and `other` have almost equal Z column and have X and Y columns differing only by a rotation around that Z.
251
+ * @param tol optional tolerance for comparisons by Geometry.isDistanceWithinTol
252
+ */
253
+ isAlmostEqualAllowZRotation(other, tol) {
254
+ if (this.isAlmostEqual(other, tol))
255
+ return true;
256
+ if (this.isAlmostEqualColumn(AxisIndex.Z, other, tol)) {
257
+ const radians = Angle.radiansBetweenVectorsXYZ(this.coffs[0], this.coffs[3], this.coffs[6], other.coffs[0], other.coffs[3], other.coffs[6]);
258
+ const angle = Angle.createRadians(radians);
259
+ const columnX = this.columnX();
260
+ const columnY = this.columnY();
261
+ const columnZ = this.columnZ();
262
+ let column = Vector3d.createRotateVectorAroundVector(columnX, columnZ, angle);
263
+ if (other.isAlmostEqualColumnXYZ(0, column.x, column.y, column.z, tol)) {
264
+ column = Vector3d.createRotateVectorAroundVector(columnY, columnZ, angle);
265
+ return other.isAlmostEqualColumnXYZ(1, column.x, column.y, column.z, tol);
266
+ }
267
+ }
268
+ return false;
269
+ }
270
+ isAlmostEqualColumn(columnIndex, other, tol) {
271
+ const a = Geometry.maxAbsXYZ(this.coffs[columnIndex] - other.coffs[columnIndex], this.coffs[columnIndex + 3] - other.coffs[columnIndex + 3], this.coffs[columnIndex + 6] - other.coffs[columnIndex + 6]);
272
+ return Geometry.isDistanceWithinTol(a, tol);
273
+ }
274
+ isAlmostEqualColumnXYZ(columnIndex, ax, ay, az, tol) {
275
+ const a = Geometry.maxAbsXYZ(this.coffs[columnIndex] - ax, this.coffs[columnIndex + 3] - ay, this.coffs[columnIndex + 6] - az);
276
+ return Geometry.isDistanceWithinTol(a, tol);
277
+ }
278
+ /** Test for exact (bitwise) equality with other. */
279
+ isExactEqual(other) { return this.maxDiff(other) === 0.0; }
280
+ /** test if all entries in the z row and column are exact 001, i.e. the matrix only acts in 2d */
281
+ get isXY() {
282
+ return this.coffs[2] === 0.0
283
+ && this.coffs[5] === 0.0
284
+ && this.coffs[6] === 0.0
285
+ && this.coffs[7] === 0.0
286
+ && this.coffs[8] === 1.0;
287
+ }
288
+ // !! does not clear supplied result !!
289
+ static _create(result) { return result ? result : new Matrix3d(); }
290
+ /** Returns a Matrix3d populated by numeric values given in row-major order.
291
+ * set all entries in the matrix from call parameters appearing in row - major order, i.e.
292
+ * ```
293
+ * equation
294
+ * \begin{bmatrix}a_{xx}\ a_{xy}\ a_{xz}\\ a_{yx}\ a_{yy}\ a_{yz}\\ a_{zx}\ a_{zy}\ a_{zz}\end{bmatrix}
295
+ * ```
296
+ * @param axx Row x, column x(0, 0) entry
297
+ * @param axy Row x, column y(0, 1) entry
298
+ * @param axz Row x, column z(0, 2) entry
299
+ * @param ayx Row y, column x(1, 0) entry
300
+ * @param ayy Row y, column y(1, 1) entry
301
+ * @param ayz Row y, column z(1, 2) entry
302
+ * @param azx Row z, column x(2, 0) entry
303
+ * @param azy Row z, column y(2, 2) entry
304
+ * @param azz row z, column z(2, 3) entry
305
+ */
306
+ static createRowValues(axx, axy, axz, ayx, ayy, ayz, azx, azy, azz, result) {
307
+ result = result ? result : new Matrix3d();
308
+ result.inverseState = InverseMatrixState.unknown;
309
+ result.coffs[0] = axx;
310
+ result.coffs[1] = axy;
311
+ result.coffs[2] = axz;
312
+ result.coffs[3] = ayx;
313
+ result.coffs[4] = ayy;
314
+ result.coffs[5] = ayz;
315
+ result.coffs[6] = azx;
316
+ result.coffs[7] = azy;
317
+ result.coffs[8] = azz;
318
+ return result;
319
+ }
320
+ /**
321
+ * Create a Matrix3d with caller-supplied coefficients and optional inverse coefficients.
322
+ * * The inputs are captured into the new Matrix3d.
323
+ * * The caller is responsible for validity of the inverse coefficients.
324
+ * @param coffs (required) array of 9 coefficients.
325
+ * @param inverseCoffs (optional) array of 9 coefficients.
326
+ * @returns a Matrix3d populated by a coffs array.
327
+ */
328
+ static createCapture(coffs, inverseCoffs) {
329
+ const result = new Matrix3d(coffs);
330
+ if (inverseCoffs) {
331
+ result.inverseCoffs = inverseCoffs;
332
+ result.inverseState = InverseMatrixState.inverseStored;
333
+ }
334
+ else {
335
+ result.inverseState = InverseMatrixState.unknown;
336
+ }
337
+ return result;
338
+ }
339
+ /**
340
+ * create a matrix by distributing vectors to columns in one of 6 orders.
341
+ * @param axisOrder identifies where the columns are placed.
342
+ * @param columnA vector to place in the first column named by the axis order.
343
+ * @param columnB vector to place in the second column named by the axis order.
344
+ * @param columnC vector to place in the third column named by the axis order.
345
+ * @param result
346
+ */
347
+ static createColumnsInAxisOrder(axisOrder, columnA, columnB, columnC, result) {
348
+ if (!result)
349
+ result = new Matrix3d();
350
+ if (axisOrder === AxisOrder.YZX) {
351
+ result.setColumns(columnC, columnA, columnB);
352
+ }
353
+ else if (axisOrder === AxisOrder.ZXY) {
354
+ result.setColumns(columnB, columnC, columnA);
355
+ }
356
+ else if (axisOrder === AxisOrder.XZY) {
357
+ result.setColumns(columnA, columnC, columnB);
358
+ }
359
+ else if (axisOrder === AxisOrder.YXZ) {
360
+ result.setColumns(columnB, columnA, columnC);
361
+ }
362
+ else if (axisOrder === AxisOrder.ZYX) {
363
+ result.setColumns(columnC, columnB, columnA);
364
+ }
365
+ else { // fallthrough should only happen for AxisOrder.XYZ
366
+ result.setColumns(columnA, columnB, columnC);
367
+ }
368
+ return result;
369
+ }
370
+ /**
371
+ * set all entries in the matrix from call parameters appearing in row-major order.
372
+ * @param axx Row x, column x (0,0) entry
373
+ * @param axy Row x, column y (0,1) entry
374
+ * @param axz Row x, column z (0,2) entry
375
+ * @param ayx Row y, column x (1,0) entry
376
+ * @param ayy Row y, column y (1,1) entry
377
+ * @param ayz Row y, column z (1,2) entry
378
+ * @param azx Row z, column x (2,0) entry
379
+ * @param azy Row z, column y (2,2) entry
380
+ * @param azz row z, column z (2,3) entry
381
+ */
382
+ setRowValues(axx, axy, axz, ayx, ayy, ayz, azx, azy, azz) {
383
+ this.coffs[0] = axx;
384
+ this.coffs[1] = axy;
385
+ this.coffs[2] = axz;
386
+ this.coffs[3] = ayx;
387
+ this.coffs[4] = ayy;
388
+ this.coffs[5] = ayz;
389
+ this.coffs[6] = azx;
390
+ this.coffs[7] = azy;
391
+ this.coffs[8] = azz;
392
+ this.inverseState = InverseMatrixState.unknown;
393
+ }
394
+ /** Set the matrix to an identity. */
395
+ setIdentity() { this.setRowValues(1, 0, 0, 0, 1, 0, 0, 0, 1); this.setupInverseTranspose(); }
396
+ /** Set the matrix to all zeros. */
397
+ setZero() { this.setRowValues(0, 0, 0, 0, 0, 0, 0, 0, 0); this.inverseState = InverseMatrixState.singular; }
398
+ /** copy contents from another matrix. */
399
+ setFrom(other) {
400
+ if (other === undefined) {
401
+ this.setIdentity();
402
+ }
403
+ else if (other !== this) {
404
+ for (let i = 0; i < 9; i++)
405
+ this.coffs[i] = other.coffs[i];
406
+ if (other.inverseState === InverseMatrixState.inverseStored && other.inverseCoffs !== undefined) {
407
+ this.createInverseCoffsWithZeros();
408
+ for (let i = 0; i < 9; i++)
409
+ this.inverseCoffs[i] = other.inverseCoffs[i];
410
+ this.inverseState = InverseMatrixState.inverseStored;
411
+ }
412
+ else if (other.inverseState !== InverseMatrixState.inverseStored) {
413
+ this.inverseState = other.inverseState;
414
+ }
415
+ else { // This is reached of other says stored but does not have coffs. This should not happen.
416
+ this.inverseState = InverseMatrixState.unknown;
417
+ }
418
+ }
419
+ }
420
+ /** return a clone of this matrix.
421
+ * * coefficients are copied.
422
+ * * inverse coefficients are NOT copied.
423
+ * * inverse status is set to unknown
424
+ */
425
+ clone(result) {
426
+ result = result ? result : new Matrix3d();
427
+ result.setFrom(this);
428
+ return result;
429
+ }
430
+ /** create a matrix with all zeros.
431
+ * * Note that for geometry transformations "all zeros" is not a useful default state.
432
+ * * Hence almost always use `createIdentity` for graphics transformations.
433
+ * * "all zeros" is appropriate for summing moment data.
434
+ * ```
435
+ * equation
436
+ * \begin{bmatrix}0 0 0 \\ 0 0 0 \\ 0 0 0\end{bmatrix}
437
+ * ```
438
+ */
439
+ static createZero() {
440
+ const retVal = new Matrix3d();
441
+ retVal.inverseState = InverseMatrixState.singular;
442
+ return retVal;
443
+ }
444
+ /** create an identity matrix.
445
+ * * all diagonal entries (xx,yy,zz) are one
446
+ * * all others are zero.
447
+ * * This (rather than all zeros) is the useful state for most graphics transformations.
448
+ * ```
449
+ * equation
450
+ * \begin{bmatrix}1 0 0 \\ 0 1 0 \\ 0 0 1\end{bmatrix}
451
+ * ```
452
+ *
453
+ */
454
+ static createIdentity(result) {
455
+ result = result ? result : new Matrix3d();
456
+ result.setIdentity();
457
+ return result;
458
+ }
459
+ /**
460
+ * Create a matrix with uniform scale factors.
461
+ * For scale factor _s_,
462
+ * ```
463
+ * equation
464
+ * \begin{bmatrix}s & 0 & 0 \\ 0 & s & 0\\ 0 & 0 & s\end{bmatrix}
465
+ * ```
466
+ */
467
+ static createUniformScale(scaleFactor) {
468
+ return Matrix3d.createScale(scaleFactor, scaleFactor, scaleFactor);
469
+ }
470
+ /**
471
+ * Construct a rigid matrix using createHeadsUpPerpendicular to generate a vector perpendicular to vectorA..
472
+ * *
473
+ */
474
+ static createRigidHeadsUp(vectorA, axisOrder = AxisOrder.ZXY, result) {
475
+ const vectorB = Matrix3d.createPerpendicularVectorFavorXYPlane(vectorA);
476
+ const matrix = Matrix3d.createRigidFromColumns(vectorA, vectorB, axisOrder, result);
477
+ if (matrix) {
478
+ matrix.setupInverseTranspose();
479
+ return matrix;
480
+ }
481
+ return Matrix3d.createIdentity(result);
482
+ }
483
+ /**
484
+ * return a vector that is perpendicular to the input direction.
485
+ * * Among the infinite number of perpendiculars possible, this method
486
+ * favors having one in the xy plane.
487
+ * * Hence, when vectorA is NOT close to the Z axis, the returned vector is Z cross vectorA.
488
+ * * But vectorA is close to the Z axis, the returned vector is unitY cross vectorA.
489
+ */
490
+ static createPerpendicularVectorFavorXYPlane(vector, result) {
491
+ const a = vector.magnitude();
492
+ const b = a / 64.0; // A constant from the dawn of time in the CAD industry.
493
+ if (Math.abs(vector.x) < b && Math.abs(vector.y) < b) {
494
+ return Vector3d.createCrossProduct(vector.x, vector.y, vector.z, 0, -1, 0, result);
495
+ }
496
+ return Vector3d.createCrossProduct(0, 0, 1, vector.x, vector.y, vector.z, result);
497
+ }
498
+ /**
499
+ * return a vector that is perpendicular to the input direction.
500
+ * * Among the infinite number of perpendiculars possible, this method
501
+ * favors having one near the Z.
502
+ * That is achieved by crossing "this" vector with the result of createHeadsUpPerpendicularFavorXYPlane.
503
+ */
504
+ static createPerpendicularVectorFavorPlaneContainingZ(vector, result) {
505
+ result = Matrix3d.createPerpendicularVectorFavorXYPlane(vector, result);
506
+ return vector.crossProduct(result, result);
507
+ }
508
+ /** Create a matrix with distinct x,y,z diagonal (scale) entries.
509
+ * ```
510
+ * equation
511
+ * \begin{bmatrix}s_x & 0 & 0 \\ 0 & s_y & 0\\ 0 & 0 & s_z\end{bmatrix}
512
+ * ```
513
+ */
514
+ static createScale(scaleFactorX, scaleFactorY, scaleFactorZ, result) {
515
+ if (result)
516
+ result.setZero();
517
+ else
518
+ result = new Matrix3d();
519
+ result.coffs[0] = scaleFactorX;
520
+ result.coffs[4] = scaleFactorY;
521
+ result.coffs[8] = scaleFactorZ;
522
+ if (scaleFactorX === 0 || scaleFactorY === 0 || scaleFactorZ === 0) {
523
+ result.inverseState = InverseMatrixState.singular;
524
+ }
525
+ else {
526
+ result.inverseState = InverseMatrixState.inverseStored;
527
+ result.inverseCoffs = Float64Array.from([1 / scaleFactorX, 0, 0,
528
+ 0, 1 / scaleFactorY, 0,
529
+ 0, 0, 1 / scaleFactorZ]);
530
+ }
531
+ return result;
532
+ }
533
+ /** return a rotation of specified angle around an axis */
534
+ static createRotationAroundVector(axis, angle, result) {
535
+ const c = angle.cos();
536
+ const s = angle.sin();
537
+ const v = 1.0 - c;
538
+ const unit = axis.normalize();
539
+ if (unit) {
540
+ const retVal = Matrix3d.createRowValues(unit.x * unit.x * v + c, unit.x * unit.y * v - s * unit.z, unit.x * unit.z * v + s * unit.y, unit.y * unit.x * v + s * unit.z, unit.y * unit.y * v + c, unit.y * unit.z * v - s * unit.x, unit.z * unit.x * v - s * unit.y, unit.z * unit.y * v + s * unit.x, unit.z * unit.z * v + c, result);
541
+ retVal.setupInverseTranspose();
542
+ return retVal;
543
+ }
544
+ return undefined;
545
+ }
546
+ /** Returns a rotation of specified angle around an axis
547
+ * @param axisIndex index of axis (AxisIndex.X, AxisIndex.Y, AxisIndex.Z) kept fixed by the rotation.
548
+ * @param angle angle of rotation
549
+ * @param result optional result matrix.
550
+ */
551
+ static createRotationAroundAxisIndex(axisIndex, angle, result) {
552
+ const c = angle.cos();
553
+ const s = angle.sin();
554
+ let myResult;
555
+ if (axisIndex === AxisIndex.X) {
556
+ myResult = Matrix3d.createRowValues(1, 0, 0, 0, c, -s, 0, s, c, result);
557
+ }
558
+ else if (axisIndex === AxisIndex.Y) {
559
+ myResult = Matrix3d.createRowValues(c, 0, s, 0, 1, 0, -s, 0, c, result);
560
+ }
561
+ else {
562
+ myResult = Matrix3d.createRowValues(c, -s, 0, s, c, 0, 0, 0, 1, result);
563
+ }
564
+ myResult.setupInverseTranspose();
565
+ return myResult;
566
+ }
567
+ /** Create a matrix from "as viewed" right and up vectors.
568
+ * * ColumnX points in the rightVector direction
569
+ * * ColumnY points in in the upVectorDirection
570
+ * * ColumnZ is a unit cross product.
571
+ * Optionally rotate the standard cube by 45 to bring its left or right vertical edge to center
572
+ * * leftNoneRight = [-1,0,1] respectively for left edge, no rotation, or right edge
573
+ * * bottomNoneTop = [-1,0,1] respectively for isometric rotation to view the bottom, no isometric rotation, and isometric rotation to view the top
574
+ * This is expected to be used with various principal unit vectors that are perpendicular to each other.
575
+ * * STANDARD TOP VIEW: (Vector3d.UnitX (), Vector3d.UnitY (), 0, 0)
576
+ * * STANDARD FRONT VIEW: (Vector3d.UnitX (), Vector3d.UnitZ (), 0, 0)
577
+ * * STANDARD BACK VIEW: (Vector3d.UnitX (-1), Vector3d.UnitZ (), 0, 0)
578
+ * * STANDARD RIGHT VIEW: (Vector3d.UnitY (1), Vector3d.UnitZ (), 0, 0)
579
+ * * STANDARD LEFT VIEW: (Vector3d.UnitY (-1), Vector3d.UnitZ (), 0, 0)
580
+ * * STANDARD BOTTOM VIEW: (Vector3d.UnitX (1), Vector3d.UnitY (-1), 0, 0)
581
+ * @param leftNoneRight Normally one of {-1,0,1}, where (-1) indicates the left vertical is rotated to center and (1) for right. Other numbers are used as multiplier for this 45 degree rotation
582
+ * @returns undefined if columnX, columnY are coplanar.
583
+ */
584
+ static createViewedAxes(rightVector, upVector, leftNoneRight = 0, topNoneBottom = 0) {
585
+ const columnZ = rightVector.crossProduct(upVector);
586
+ if (columnZ.normalizeInPlace()) {
587
+ const geometry = Matrix3d.createColumns(rightVector, upVector, columnZ);
588
+ if (leftNoneRight !== 0.0) {
589
+ let c = Math.sqrt(0.5);
590
+ let s = leftNoneRight < 0.0 ? -c : c;
591
+ if (Math.abs(leftNoneRight) !== 1.0) {
592
+ const radians = Angle.degreesToRadians(45.0 * leftNoneRight);
593
+ c = Math.cos(radians);
594
+ s = Math.sin(radians);
595
+ }
596
+ geometry.applyGivensColumnOp(2, 0, c, s); // rotate around Y
597
+ }
598
+ if (topNoneBottom !== 0.0) {
599
+ const theta = topNoneBottom * Math.atan(Math.sqrt(0.5));
600
+ const c = Math.cos(theta);
601
+ const s = Math.sin(theta);
602
+ geometry.applyGivensColumnOp(1, 2, c, -s); // rotate around X
603
+ }
604
+ return geometry;
605
+ }
606
+ return undefined;
607
+ }
608
+ /**
609
+ * Create a rotation matrix for one of the 8 standard views.
610
+ * * With `invert === false` the return is such that `matrix.multiply(worldVector)` returns the vector as seen in the xy (projected) coordinates of the view.
611
+ * * With invert === true the matrix is transposed so that `matrix.multiply(viewVector` maps the "in view" vector to a world vector.
612
+ *
613
+ * @param index standard view index `StandardViewIndex.Top, Bottom, LEft, Right, Front, Back, Iso, LeftIso`
614
+ * @param invert if false (default), the returned Matrix3d "projects" world vectors into XY view vectors. If true, it is inverted to map view vectors to world.
615
+ * @param result optional result.
616
+ */
617
+ static createStandardWorldToView(index, invert = false, result) {
618
+ switch (index) {
619
+ case StandardViewIndex.Bottom:
620
+ result = Matrix3d.createRowValues(1, 0, 0, 0, -1, 0, 0, 0, -1);
621
+ break;
622
+ case StandardViewIndex.Left:
623
+ result = Matrix3d.createRowValues(0, -1, 0, 0, 0, 1, -1, 0, 0);
624
+ break;
625
+ case StandardViewIndex.Right:
626
+ result = Matrix3d.createRowValues(0, 1, 0, 0, 0, 1, 1, 0, 0);
627
+ break;
628
+ case StandardViewIndex.Front: // 0-based 4
629
+ result = Matrix3d.createRowValues(1, 0, 0, 0, 0, 1, 0, -1, 0);
630
+ break;
631
+ case StandardViewIndex.Back: // 0-based 5
632
+ result = Matrix3d.createRowValues(-1, 0, 0, 0, 0, 1, 0, 1, 0);
633
+ break;
634
+ case StandardViewIndex.Iso:
635
+ result = Matrix3d.createRowValues(0.707106781186548, -0.70710678118654757, 0.00000000000000000, 0.408248290463863, 0.40824829046386302, 0.81649658092772603, -0.577350269189626, -0.57735026918962573, 0.57735026918962573);
636
+ break;
637
+ case StandardViewIndex.RightIso:
638
+ result = Matrix3d.createRowValues(0.707106781186548, 0.70710678118654757, 0.00000000000000000, -0.408248290463863, 0.40824829046386302, 0.81649658092772603, 0.577350269189626, -0.57735026918962573, 0.57735026918962573);
639
+ break;
640
+ case StandardViewIndex.Top:
641
+ default:
642
+ result = Matrix3d.createIdentity(result);
643
+ }
644
+ if (invert)
645
+ result.transposeInPlace();
646
+ return result;
647
+ }
648
+ /*
649
+ // this implementation has problems distinguishing failure (normalize) from small angle.
650
+ public getAxisAndAngleOfRotation(): { axis: Vector3d, angle: Angle, error: boolean } {
651
+
652
+ const result = { axis: Vector3d.unitZ(), angle: Angle.createRadians(0), error: true };
653
+ if (this.isIdentity) {
654
+ result.error = false;
655
+ return result;
656
+ }
657
+ if (!this.isRigid())
658
+ return result;
659
+ const QMinusI = this.clone();
660
+ QMinusI.coffs[0] -= 1.0;
661
+ QMinusI.coffs[4] -= 1.0;
662
+ QMinusI.coffs[8] -= 1.0;
663
+ // Each column of (Q - I) is the motion of the corresponding axis vector
664
+ // during the rotation.
665
+ // Only one of the three axes can really be close to the rotation axis.
666
+ const delta0 = QMinusI.columnX();
667
+ const delta1 = QMinusI.columnY();
668
+ const delta2 = QMinusI.columnZ();
669
+ const cross01 = delta0.crossProduct(delta1);
670
+ const cross12 = delta1.crossProduct(delta2);
671
+ const cross20 = delta2.crossProduct(delta0);
672
+
673
+ const aa01 = cross01.magnitudeSquared();
674
+ const aa12 = cross12.magnitudeSquared();
675
+ const aa20 = cross20.magnitudeSquared();
676
+
677
+ const cross = cross01.clone(); // This will end up as the biggest cross product
678
+ const v0 = delta0.clone(); // This will end up as one of the two largest delta vectors
679
+ let aaMax = aa01;
680
+ if (aa12 > aaMax) {
681
+ cross.setFrom(cross12);
682
+ aaMax = aa12;
683
+ v0.setFrom(delta1);
684
+ }
685
+ if (aa20 > aaMax) {
686
+ cross.setFrom(cross20);
687
+ aaMax = aa20;
688
+ v0.setFrom(delta2);
689
+ }
690
+
691
+ if (aaMax === 0.0) {
692
+ // The vectors did not move. Just accept the zero rotation, with error flag set.
693
+ return result;
694
+ }
695
+
696
+ v0.normalizeInPlace();
697
+ // V0 is a unit vector perpendicular to the rotation axis.
698
+ // Rotate it. Its image V1 is also a unit vector, and the angle from V0 to V1 is the quat angle.
699
+ // CrossProduct is axis vector times sine of angle.
700
+ // Dot Product is cosine of angle.
701
+ // V2 is zero in 180 degree case, so we use the Cross from the search as the axis
702
+ // as direction, being careful to keep sine positive.
703
+ const v1 = this.multiplyVector(v0);
704
+ const v2 = v0.crossProduct(v1);
705
+ const sine = v2.magnitude();
706
+ if (v2.dotProduct(cross) < 0.0)
707
+ cross.scaleInPlace(-1.0);
708
+ const cosine = v0.dotProduct(v1);
709
+ result.angle.setRadians(Math.atan2(sine, cosine));
710
+ result.axis.setFrom(cross);
711
+ result.error = !result.axis.tryNormalizeInPlace();
712
+ return result
713
+ }
714
+ */
715
+ /**
716
+ * Compute the (unit vector) axis and angle of rotation.
717
+ * @returns Returns with result.ok === true when the conversion succeeded.
718
+ */
719
+ getAxisAndAngleOfRotation() {
720
+ const trace = this.coffs[0] + this.coffs[4] + this.coffs[8];
721
+ // trace = (xx + yy * zz) * (1-c) + 3 * c = 1 + 2c ==> c = (trace-1) / 2
722
+ const skewXY = this.coffs[3] - this.coffs[1]; // == 2sz
723
+ const skewYZ = this.coffs[7] - this.coffs[5]; // == 2sx
724
+ const skewZX = this.coffs[2] - this.coffs[6]; // == 2sy
725
+ const c = (trace - 1.0) / 2.0;
726
+ const s = Geometry.hypotenuseXYZ(skewXY, skewYZ, skewZX) / 2.0;
727
+ const e = c * c + s * s - 1.0;
728
+ if (Math.abs(e) > Geometry.smallAngleRadians) {
729
+ // the sine and cosine are not a unit circle point. bad matrix . ..
730
+ return { axis: Vector3d.create(0, 0, 1), angle: Angle.createRadians(0), ok: false };
731
+ }
732
+ if (Math.abs(s) < Geometry.smallAngleRadians) {
733
+ // There is no significant skew.
734
+ // The matrix is symmetric
735
+ // So it has simple eigenvalues -- either (1,1,1) or (1,-1,-1).
736
+ if (c > 0) // no rotation
737
+ return { axis: Vector3d.create(0, 0, 1), angle: Angle.createRadians(0), ok: true };
738
+ // 180 degree flip around some axis ?
739
+ // Look for the simple case of a principal rotation ...
740
+ // look for a pair of (-1) entries on the diagonal ...
741
+ const axx = this.coffs[0];
742
+ const ayy = this.coffs[4];
743
+ const azz = this.coffs[8];
744
+ const theta180 = Angle.createDegrees(180);
745
+ // Look for principal axis flips as a special case . ..
746
+ if (Geometry.isAlmostEqualNumber(-1.0, ayy) && Geometry.isAlmostEqualNumber(-1, azz)) {
747
+ // rotate around
748
+ return { axis: Vector3d.create(1, 0, 0), angle: theta180, ok: true };
749
+ }
750
+ else if (Geometry.isAlmostEqualNumber(-1.0, axx) && Geometry.isAlmostEqualNumber(-1, azz)) {
751
+ return { axis: Vector3d.create(0, 1, 0), angle: theta180, ok: true };
752
+ }
753
+ else if (Geometry.isAlmostEqualNumber(-1.0, axx) && Geometry.isAlmostEqualNumber(-1, ayy)) {
754
+ return { axis: Vector3d.create(0, 0, 1), angle: theta180, ok: true };
755
+ }
756
+ // 180 degree flip around some other axis ...
757
+ // eigenvalues will have 1.0 once, -1.0 twice.
758
+ // These cases look for each place (x,y,z) that the 1.0 might appear.
759
+ // But fastSymmetricEigenvalues reliably always seems to put the 1.0 as the x eigenvalue.
760
+ // so only the getColumn(0) return seems reachable in unit tests.
761
+ const eigenvectors = Matrix3d.createIdentity();
762
+ const eigenvalues = Vector3d.create(0, 0, 0);
763
+ if (this.fastSymmetricEigenvalues(eigenvectors, eigenvalues)) {
764
+ for (let axisIndex = 0; axisIndex < 2; axisIndex++) {
765
+ const lambda = eigenvalues.at(axisIndex);
766
+ if (Geometry.isAlmostEqualNumber(1, lambda))
767
+ return { axis: eigenvectors.getColumn(axisIndex), angle: theta180, ok: true };
768
+ }
769
+ // Don't know if this can be reached ....
770
+ return { axis: Vector3d.create(0, 0, 1), angle: Angle.createRadians(0), ok: false };
771
+ }
772
+ return { axis: Vector3d.create(0, 0, 1), angle: Angle.createRadians(0), ok: false };
773
+ }
774
+ const a = 1.0 / (2.0 * s);
775
+ const result = { axis: Vector3d.create(skewYZ * a, skewZX * a, skewXY * a), angle: Angle.createAtan2(s, c), ok: true };
776
+ return result;
777
+ }
778
+ /**
779
+ * Returns a matrix that rotates from vectorA to vectorB.
780
+ */
781
+ static createRotationVectorToVector(vectorA, vectorB, result) {
782
+ return this.createPartialRotationVectorToVector(vectorA, 1.0, vectorB, result);
783
+ }
784
+ /**
785
+ * Return a matrix that rotates a fraction of the angular sweep from vectorA to vectorB.
786
+ * @param vectorA initial vector position
787
+ * @param fraction fractional rotation. 1.0 is "all the way"
788
+ * @param vectorB final vector position
789
+ * @param result optional result matrix.
790
+ */
791
+ static createPartialRotationVectorToVector(vectorA, fraction, vectorB, result) {
792
+ let upVector = vectorA.unitCrossProduct(vectorB);
793
+ if (upVector) { // the usual case --
794
+ return Matrix3d.createRotationAroundVector(upVector, Angle.createRadians(fraction * vectorA.planarAngleTo(vectorB, upVector).radians));
795
+ }
796
+ // fail if either vector is zero ...
797
+ if (Geometry.isSmallMetricDistance(vectorA.magnitude())
798
+ || Geometry.isSmallMetricDistance(vectorB.magnitude()))
799
+ return undefined;
800
+ // nonzero but aligned vectors ...
801
+ if (vectorA.dotProduct(vectorB) > 0.0)
802
+ return Matrix3d.createIdentity(result);
803
+ // nonzero opposing vectors ..
804
+ upVector = Matrix3d.createPerpendicularVectorFavorPlaneContainingZ(vectorA, upVector);
805
+ return Matrix3d.createRotationAroundVector(upVector, Angle.createRadians(fraction * Math.PI));
806
+ }
807
+ /** Create a 90 degree rotation around a principal axis */
808
+ static create90DegreeRotationAroundAxis(axisIndex) {
809
+ axisIndex = Geometry.cyclic3dAxis(axisIndex);
810
+ if (axisIndex === 0) {
811
+ const retVal = Matrix3d.createRowValues(1, 0, 0, 0, 0, -1, 0, 1, 0);
812
+ retVal.setupInverseTranspose();
813
+ return retVal;
814
+ }
815
+ else if (axisIndex === 1) {
816
+ const retVal = Matrix3d.createRowValues(0, 0, 1, 0, 1, 0, -1, 0, 0);
817
+ retVal.setupInverseTranspose();
818
+ return retVal;
819
+ }
820
+ else {
821
+ const retVal = Matrix3d.createRowValues(0, -1, 0, 1, 0, 0, 0, 0, 1);
822
+ retVal.setupInverseTranspose();
823
+ return retVal;
824
+ }
825
+ }
826
+ /** Return (a copy of) the X column */
827
+ columnX(result) { return Vector3d.create(this.coffs[0], this.coffs[3], this.coffs[6], result); }
828
+ /** Return (a copy of)the Y column */
829
+ columnY(result) { return Vector3d.create(this.coffs[1], this.coffs[4], this.coffs[7], result); }
830
+ /** Return (a copy of)the Z column */
831
+ columnZ(result) { return Vector3d.create(this.coffs[2], this.coffs[5], this.coffs[8], result); }
832
+ /** Return the X column magnitude squared */
833
+ columnXMagnitudeSquared() { return Geometry.hypotenuseSquaredXYZ(this.coffs[0], this.coffs[3], this.coffs[6]); }
834
+ /** Return the Y column magnitude squared */
835
+ columnYMagnitudeSquared() { return Geometry.hypotenuseSquaredXYZ(this.coffs[1], this.coffs[4], this.coffs[7]); }
836
+ /** Return the Z column magnitude squared */
837
+ columnZMagnitudeSquared() { return Geometry.hypotenuseSquaredXYZ(this.coffs[2], this.coffs[5], this.coffs[8]); }
838
+ /** Return the X column magnitude */
839
+ columnXMagnitude() { return Geometry.hypotenuseXYZ(this.coffs[0], this.coffs[3], this.coffs[6]); }
840
+ /** Return the Y column magnitude */
841
+ columnYMagnitude() { return Geometry.hypotenuseXYZ(this.coffs[1], this.coffs[4], this.coffs[7]); }
842
+ /** Return the Z column magnitude */
843
+ columnZMagnitude() { return Geometry.hypotenuseXYZ(this.coffs[2], this.coffs[5], this.coffs[8]); }
844
+ /** Return magnitude of columnX cross columnY. */
845
+ columnXYCrossProductMagnitude() {
846
+ return Geometry.crossProductMagnitude(this.coffs[0], this.coffs[3], this.coffs[6], this.coffs[1], this.coffs[4], this.coffs[7]);
847
+ }
848
+ /** Return the X row magnitude d */
849
+ rowXMagnitude() { return Geometry.hypotenuseXYZ(this.coffs[0], this.coffs[1], this.coffs[2]); }
850
+ /** Return the Y row magnitude */
851
+ rowYMagnitude() { return Geometry.hypotenuseXYZ(this.coffs[3], this.coffs[4], this.coffs[5]); }
852
+ /** Return the Z row magnitude */
853
+ rowZMagnitude() { return Geometry.hypotenuseXYZ(this.coffs[6], this.coffs[7], this.coffs[8]); }
854
+ /** Return the dot product of column X with column Y */
855
+ /** Return the dot product of column X with column Y */
856
+ columnXDotColumnY() {
857
+ return this.coffs[0] * this.coffs[1]
858
+ + this.coffs[3] * this.coffs[4]
859
+ + this.coffs[6] * this.coffs[7];
860
+ }
861
+ /**
862
+ * Dot product of an indexed column with a vector given as x,y,z
863
+ * @param columnIndex index of column. Must be 0,1,2
864
+ * @param x x component of vector
865
+ * @param y y component of vector
866
+ * @param z z component of vector
867
+ */
868
+ columnDotXYZ(columnIndex, x, y, z) {
869
+ return this.coffs[columnIndex] * x + this.coffs[columnIndex + 3] * y + this.coffs[columnIndex + 6] * z;
870
+ }
871
+ /** Return (a copy of) the X row */
872
+ rowX(result) { return Vector3d.create(this.coffs[0], this.coffs[1], this.coffs[2], result); }
873
+ /** Return (a copy of) the Y row */
874
+ rowY(result) { return Vector3d.create(this.coffs[3], this.coffs[4], this.coffs[5], result); }
875
+ /** Return (a copy of) the Z row */
876
+ rowZ(result) { return Vector3d.create(this.coffs[6], this.coffs[7], this.coffs[8], result); }
877
+ /** Return the dot product of the vector parameter with the X column. */
878
+ dotColumnX(vector) { return vector.x * this.coffs[0] + vector.y * this.coffs[3] + vector.z * this.coffs[6]; }
879
+ /** Return the dot product of the vector parameter with the Y column. */
880
+ dotColumnY(vector) { return vector.x * this.coffs[1] + vector.y * this.coffs[4] + vector.z * this.coffs[7]; }
881
+ /** Return the dot product of the vector parameter with the Z column. */
882
+ dotColumnZ(vector) { return vector.x * this.coffs[2] + vector.y * this.coffs[5] + vector.z * this.coffs[8]; }
883
+ /** Return the dot product of the vector parameter with the X row. */
884
+ dotRowX(vector) { return vector.x * this.coffs[0] + vector.y * this.coffs[1] + vector.z * this.coffs[2]; }
885
+ /** Return the dot product of the vector parameter with the Y row. */
886
+ dotRowY(vector) { return vector.x * this.coffs[3] + vector.y * this.coffs[4] + vector.z * this.coffs[5]; }
887
+ /** Return the dot product of the vector parameter with the Z row. */
888
+ dotRowZ(vector) { return vector.x * this.coffs[6] + vector.y * this.coffs[7] + vector.z * this.coffs[8]; }
889
+ // cSpell:words XXYZ YXYZ ZXYZ XYZAs Eigen
890
+ /** Return the dot product of the x,y,z with the X row. */
891
+ dotRowXXYZ(x, y, z) { return x * this.coffs[0] + y * this.coffs[1] + z * this.coffs[2]; }
892
+ /** Return the dot product of the x,y,z with the Y row. */
893
+ dotRowYXYZ(x, y, z) { return x * this.coffs[3] + y * this.coffs[4] + z * this.coffs[5]; }
894
+ /** Return the dot product of the x,y,z with the Z row. */
895
+ dotRowZXYZ(x, y, z) { return x * this.coffs[6] + y * this.coffs[7] + z * this.coffs[8]; }
896
+ /** Return the (vector) cross product of the Z column with the vector parameter. */
897
+ columnZCrossVector(vector, result) {
898
+ return Geometry.crossProductXYZXYZ(this.coffs[2], this.coffs[5], this.coffs[8], vector.x, vector.y, vector.z, result);
899
+ }
900
+ /**
901
+ * Replace current rows Ui Uj with (c*Ui - s*Uj) and (c*Uj + s*Ui).
902
+ * @param i first row index. must be 0,1,2 (unchecked)
903
+ * @param j second row index. must be 0,1,2 (unchecked)
904
+ * @param c fist coefficient
905
+ * @param s second coefficient
906
+ */
907
+ applyGivensRowOp(i, j, c, s) {
908
+ let ii = 3 * i;
909
+ let jj = 3 * j;
910
+ const limit = ii + 3;
911
+ for (; ii < limit; ii++, jj++) {
912
+ const a = this.coffs[ii];
913
+ const b = this.coffs[jj];
914
+ this.coffs[ii] = a * c + b * s;
915
+ this.coffs[jj] = -a * s + b * c;
916
+ }
917
+ }
918
+ /**
919
+ * Replace current columns Ui Uj with (c*Ui - s*Uj) and (c*Uj + s*Ui).
920
+ * * This is used in compute intensive inner loops -- there is no checking for i,j being 0,1,2.
921
+ * @param i first row index. must be 0,1,2 (unchecked)
922
+ * @param j second row index. must be 0,1,2 (unchecked)
923
+ * @param c fist coefficient
924
+ * @param s second coefficient
925
+ */
926
+ applyGivensColumnOp(i, j, c, s) {
927
+ const limit = i + 9;
928
+ for (; i < limit; i += 3, j += 3) {
929
+ const a = this.coffs[i];
930
+ const b = this.coffs[j];
931
+ this.coffs[i] = a * c + b * s;
932
+ this.coffs[j] = -a * s + b * c;
933
+ }
934
+ }
935
+ /**
936
+ * create a rigid coordinate frame column z parallel to (_x_,_y_,_z_) and column x in the xy plane.
937
+ * * column z points from origin to x,y,z
938
+ * * column x is perpendicular and in the xy plane
939
+ * * column y is perpendicular to both. It is the "up" vector on the view plane.
940
+ * * Multiplying a world vector times the transpose of this matrix transforms into the view xy
941
+ * * Multiplying the matrix times the an in-view vector transforms the vector to world.
942
+ * @param x eye x coordinate
943
+ * @param y eye y coordinate
944
+ * @param z eye z coordinate
945
+ * @param result
946
+ */
947
+ static createRigidViewAxesZTowardsEye(x, y, z, result) {
948
+ result = Matrix3d.createIdentity(result);
949
+ const rxy = Geometry.hypotenuseXY(x, y);
950
+ if (Geometry.isSmallMetricDistance(rxy)) {
951
+ // special case for top or bottom view.
952
+ if (z < 0.0)
953
+ result.scaleColumnsInPlace(1.0, -1, -1.0);
954
+ }
955
+ else {
956
+ // const d = Geometry.hypotenuseSquaredXYZ(x, y, z);
957
+ const c = x / rxy;
958
+ const s = y / rxy;
959
+ result.setRowValues(-s, 0, c, c, 0, s, 0, 1, 0);
960
+ if (z !== 0.0) {
961
+ const r = Geometry.hypotenuseXYZ(x, y, z);
962
+ const s1 = z / r;
963
+ const c1 = rxy / r;
964
+ result.applyGivensColumnOp(1, 2, c1, -s1);
965
+ }
966
+ }
967
+ return result;
968
+ }
969
+ /** Rotate so columns i and j become perpendicular */
970
+ applyJacobiColumnRotation(i, j, matrixU) {
971
+ const uDotU = this.coffs[i] * this.coffs[i] + this.coffs[i + 3] * this.coffs[i + 3] + this.coffs[i + 6] * this.coffs[i + 6];
972
+ const vDotV = this.coffs[j] * this.coffs[j] + this.coffs[j + 3] * this.coffs[j + 3] + this.coffs[j + 6] * this.coffs[j + 6];
973
+ const uDotV = this.coffs[i] * this.coffs[j] + this.coffs[i + 3] * this.coffs[j + 3] + this.coffs[i + 6] * this.coffs[j + 6];
974
+ // const c2 = uDotU - vDotV;
975
+ // const s2 = 2.0 * uDotV;
976
+ const jacobi = Angle.trigValuesToHalfAngleTrigValues(uDotU - vDotV, 2.0 * uDotV);
977
+ // const h = Math.hypot(c2, s2);
978
+ // console.log(" c2 s2", c2 / h, s2 / h);
979
+ // console.log(" C S ", Math.cos(2 * jacobi.radians), Math.sin(2 * jacobi.radians));
980
+ // console.log("i j uDotV", i, j, uDotV);
981
+ if (Math.abs(jacobi.s) < 2.0e-15)
982
+ return 0.0;
983
+ this.applyGivensColumnOp(i, j, jacobi.c, jacobi.s);
984
+ matrixU.applyGivensRowOp(i, j, jacobi.c, jacobi.s);
985
+ // const BTB = this.multiplyMatrixTransposeMatrix(this);
986
+ // console.log("BTB", BTB.at(0, 0), BTB.at(1, 1), BTB.at(2, 2), " off", BTB.at(0, 1), BTB.at(0, 2), BTB.at(1, 2), " at(i,j)", BTB.at(i, j));
987
+ return Math.abs(uDotV);
988
+ }
989
+ /**
990
+ * Factor this as a product C * U where C has mutually perpendicular columns and
991
+ * U is orthogonal.
992
+ * @param matrixC (allocate by caller, computed here)
993
+ * @param factor (allocate by caller, computed here)
994
+ */
995
+ factorPerpendicularColumns(matrixC, matrixU) {
996
+ matrixC.setFrom(this);
997
+ matrixU.setIdentity();
998
+ const ss = this.sumSquares();
999
+ const tolerance = 1.0e-12 * ss;
1000
+ for (let iteration = 0; iteration < 7; iteration++) {
1001
+ const sum = matrixC.applyJacobiColumnRotation(0, 1, matrixU)
1002
+ + matrixC.applyJacobiColumnRotation(0, 2, matrixU)
1003
+ + matrixC.applyJacobiColumnRotation(1, 2, matrixU);
1004
+ // console.log (" sum", sum);
1005
+ if (sum < tolerance) {
1006
+ // console.log("jacobi iterations", iteration);
1007
+ return true;
1008
+ }
1009
+ }
1010
+ return false;
1011
+ }
1012
+ /** Apply a jacobi step to lambda which evolves towards diagonal. */
1013
+ applySymmetricJacobi(i, j, lambda) {
1014
+ const uDotU = lambda.at(i, i);
1015
+ const vDotV = lambda.at(j, j);
1016
+ const uDotV = lambda.at(i, j);
1017
+ if (Math.abs(uDotV) < 1.0e-15 * (uDotU + vDotV))
1018
+ return 0.0;
1019
+ // const c2 = uDotU - vDotV;
1020
+ // const s2 = 2.0 * uDotV;
1021
+ const jacobi = Angle.trigValuesToHalfAngleTrigValues(uDotU - vDotV, 2.0 * uDotV);
1022
+ // const h = Math.hypot(c2, s2);
1023
+ // console.log(" c2 s2", c2 / h, s2 / h);
1024
+ // console.log(" C S ", Math.cos(2 * jacobi.radians), Math.sin(2 * jacobi.radians));
1025
+ // console.log("i j uDotV", i, j, uDotV);
1026
+ if (Math.abs(jacobi.s) < 2.0e-15)
1027
+ return 0.0;
1028
+ // Factored form is this *lambda * thisTranspose
1029
+ // Let Q be the rotation matrix. Q*QT is inserted, viz
1030
+ // this*Q * QT * lambda * Q*thisTranspose
1031
+ this.applyGivensColumnOp(i, j, jacobi.c, jacobi.s);
1032
+ lambda.applyGivensRowOp(i, j, jacobi.c, jacobi.s);
1033
+ lambda.applyGivensColumnOp(i, j, jacobi.c, jacobi.s);
1034
+ // const BTB = this.multiplyMatrixTransposeMatrix(this);
1035
+ // console.log("BTB", BTB.at(0, 0), BTB.at(1, 1), BTB.at(2, 2), " off", BTB.at(0, 1), BTB.at(0, 2), BTB.at(1, 2), " at(i,j)", BTB.at(i, j));
1036
+ return Math.abs(uDotV);
1037
+ }
1038
+ /**
1039
+ * Factor this (symmetrized) as a product U * lambda * UT where U is orthogonal, lambda is diagonal.
1040
+ * The upper triangle is mirrored to lower triangle to enforce symmetry.
1041
+ * @param matrixC (allocate by caller, computed here)
1042
+ * @param factor (allocate by caller, computed here)
1043
+ */
1044
+ symmetricEigenvalues(leftEigenvectors, lambda) {
1045
+ const matrix = this.clone();
1046
+ leftEigenvectors.setIdentity();
1047
+ matrix.coffs[3] = matrix.coffs[1];
1048
+ matrix.coffs[6] = matrix.coffs[2];
1049
+ matrix.coffs[7] = matrix.coffs[5];
1050
+ const ss = this.sumSquares();
1051
+ const tolerance = 1.0e-12 * ss;
1052
+ for (let iteration = 0; iteration < 7; iteration++) {
1053
+ const sum = leftEigenvectors.applySymmetricJacobi(0, 1, matrix)
1054
+ + leftEigenvectors.applySymmetricJacobi(0, 2, matrix)
1055
+ + leftEigenvectors.applySymmetricJacobi(1, 2, matrix);
1056
+ // console.log("symmetric sum", sum);
1057
+ // console.log (" sum", sum);
1058
+ if (sum < tolerance) {
1059
+ // console.log("symmetric iterations", iteration);
1060
+ lambda.set(matrix.at(0, 0), matrix.at(1, 1), matrix.at(2, 2));
1061
+ return true;
1062
+ }
1063
+ }
1064
+ return false;
1065
+ }
1066
+ /** Apply (in place a jacobi update that zeros out this.at(i,j).
1067
+ *
1068
+ */
1069
+ applyFastSymmetricJacobiUpdate(i, // row index of zeroed member
1070
+ j, // column index of zeroed member
1071
+ k, // other row/column index (different from i and j)
1072
+ leftEigenVectors) {
1073
+ const indexII = 4 * i;
1074
+ const indexJJ = 4 * j;
1075
+ const indexIJ = 3 * i + j;
1076
+ const indexIK = 3 * i + k;
1077
+ const indexJK = 3 * j + k;
1078
+ const dotUU = this.coffs[indexII];
1079
+ const dotVV = this.coffs[indexJJ];
1080
+ const dotUV = this.coffs[indexIJ];
1081
+ const jacobi = Angle.trigValuesToHalfAngleTrigValues(dotUU - dotVV, 2.0 * dotUV);
1082
+ if (Math.abs(dotUV) < 1.0e-15 * (dotUU + dotVV))
1083
+ return 0.0;
1084
+ const c = jacobi.c;
1085
+ const s = jacobi.s;
1086
+ const cc = c * c;
1087
+ const ss = s * s;
1088
+ const sc2 = 2.0 * c * s;
1089
+ this.coffs[indexII] = cc * dotUU + sc2 * dotUV + ss * dotVV;
1090
+ this.coffs[indexJJ] = ss * dotUU - sc2 * dotUV + cc * dotVV;
1091
+ this.coffs[indexIJ] = 0.0;
1092
+ const a = this.coffs[indexIK];
1093
+ const b = this.coffs[indexJK];
1094
+ this.coffs[indexIK] = a * c + b * s;
1095
+ this.coffs[indexJK] = -s * a + c * b;
1096
+ this.coffs[3 * j + i] = 0.0;
1097
+ this.coffs[3 * k + i] = this.coffs[indexIK];
1098
+ this.coffs[3 * k + j] = this.coffs[indexJK];
1099
+ leftEigenVectors.applyGivensColumnOp(i, j, c, s);
1100
+ return Math.abs(dotUV);
1101
+ }
1102
+ /**
1103
+ * Factor this (symmetrized) as a product U * lambda * UT where U is orthogonal, lambda is diagonal.
1104
+ * The upper triangle is mirrored to lower triangle to enforce symmetry.
1105
+ * @param matrixC (allocate by caller, computed here)
1106
+ * @param factor (allocate by caller, computed here)
1107
+ */
1108
+ fastSymmetricEigenvalues(leftEigenvectors, lambda) {
1109
+ const matrix = this.clone();
1110
+ leftEigenvectors.setIdentity();
1111
+ const ss = this.sumSquares();
1112
+ const tolerance = 1.0e-12 * ss;
1113
+ for (let iteration = 0; iteration < 7; iteration++) {
1114
+ const sum = matrix.applyFastSymmetricJacobiUpdate(0, 1, 2, leftEigenvectors)
1115
+ + matrix.applyFastSymmetricJacobiUpdate(0, 2, 1, leftEigenvectors)
1116
+ + matrix.applyFastSymmetricJacobiUpdate(1, 2, 0, leftEigenvectors);
1117
+ // console.log("symmetric sum", sum);
1118
+ // console.log (" sum", sum);
1119
+ if (sum < tolerance) {
1120
+ // console.log("symmetric iterations", iteration);
1121
+ lambda.set(matrix.at(0, 0), matrix.at(1, 1), matrix.at(2, 2));
1122
+ return true;
1123
+ }
1124
+ }
1125
+ return false;
1126
+ }
1127
+ /**
1128
+ * Create a matrix from column vectors.
1129
+ * ```
1130
+ * equation
1131
+ * \begin{bmatrix}U_x & V_x & W_x \\ U_y & V_y & W_y \\ U_z & V_z & W_z \end{bmatrix}
1132
+ * ```
1133
+ */
1134
+ static createColumns(vectorU, vectorV, vectorW, result) {
1135
+ return Matrix3d.createRowValues(vectorU.x, vectorV.x, vectorW.x, vectorU.y, vectorV.y, vectorW.y, vectorU.z, vectorV.z, vectorW.z, result);
1136
+ }
1137
+ /** Create a matrix with each column's _x,y_ parts given `XAndY` and separate numeric z values.
1138
+ * ```
1139
+ * equation
1140
+ * \begin{bmatrix}U_x & V_x & W_x \\ U_y & V_y & W_y \\ u & v & w \end{bmatrix}
1141
+ * ```
1142
+ */
1143
+ static createColumnsXYW(vectorU, u, vectorV, v, vectorW, w, result) {
1144
+ return Matrix3d.createRowValues(vectorU.x, vectorV.x, vectorW.x, vectorU.y, vectorV.y, vectorW.y, u, v, w, result);
1145
+ }
1146
+ /** Install data from xyz parts of Point4d (w part of Point4d ignored) */
1147
+ setColumnsPoint4dXYZ(vectorU, vectorV, vectorW) {
1148
+ this.inverseState = InverseMatrixState.unknown;
1149
+ this.setRowValues(vectorU.x, vectorV.x, vectorW.x, vectorU.y, vectorV.y, vectorW.y, vectorU.z, vectorV.z, vectorW.z);
1150
+ }
1151
+ /**
1152
+ * set entries in one column of the matrix.
1153
+ * @param columnIndex column index. this is interpreted cyclically.
1154
+ * @param value x,yz, values for column. If undefined, zeros are installed.
1155
+ */
1156
+ setColumn(columnIndex, value) {
1157
+ const index = Geometry.cyclic3dAxis(columnIndex);
1158
+ this.inverseState = InverseMatrixState.unknown;
1159
+ if (value) {
1160
+ this.coffs[index] = value.x;
1161
+ this.coffs[index + 3] = value.y;
1162
+ this.coffs[index + 6] = value.z;
1163
+ }
1164
+ else {
1165
+ this.coffs[index] = 0.0;
1166
+ this.coffs[index + 3] = 0.0;
1167
+ this.coffs[index + 6] = 0.0;
1168
+ }
1169
+ }
1170
+ /** Set all columns of the matrix. Any undefined vector is zeros. */
1171
+ setColumns(vectorX, vectorY, vectorZ) {
1172
+ this.setColumn(0, vectorX);
1173
+ this.setColumn(1, vectorY);
1174
+ this.setColumn(2, vectorZ);
1175
+ }
1176
+ /**
1177
+ * set entries in one row of the matrix.
1178
+ * @param rowIndex row index. this is interpreted cyclically.
1179
+ * @param value x,yz, values for row. If undefined, zeros are installed.
1180
+ */
1181
+ setRow(rowIndex, value) {
1182
+ const index = 3 * Geometry.cyclic3dAxis(rowIndex);
1183
+ this.coffs[index] = value.x;
1184
+ this.coffs[index + 1] = value.y;
1185
+ this.coffs[index + 2] = value.z;
1186
+ this.inverseState = InverseMatrixState.unknown;
1187
+ }
1188
+ /** Return a (copy of) a column of the matrix.
1189
+ * @param i column index. This is corrected to 012 by Geometry.cyclic3dAxis.
1190
+ */
1191
+ getColumn(columnIndex, result) {
1192
+ const index = Geometry.cyclic3dAxis(columnIndex);
1193
+ return Vector3d.create(this.coffs[index], this.coffs[index + 3], this.coffs[index + 6], result);
1194
+ }
1195
+ /** Return a (copy of) a row of the matrix.
1196
+ * @param i row index. This is corrected to 012 by Geometry.cyclic3dAxis.
1197
+ */
1198
+ getRow(columnIndex, result) {
1199
+ const index = 3 * Geometry.cyclic3dAxis(columnIndex);
1200
+ return Vector3d.create(this.coffs[index], this.coffs[index + 1], this.coffs[index + 2], result);
1201
+ }
1202
+ /** Create a matrix from column vectors, shuffled into place per AxisTriple */
1203
+ static createShuffledColumns(vectorU, vectorV, vectorW, axisOrder, result) {
1204
+ const target = Matrix3d._create(result);
1205
+ target.setColumn(Geometry.axisOrderToAxis(axisOrder, 0), vectorU);
1206
+ target.setColumn(Geometry.axisOrderToAxis(axisOrder, 1), vectorV);
1207
+ target.setColumn(Geometry.axisOrderToAxis(axisOrder, 2), vectorW);
1208
+ return target;
1209
+ }
1210
+ /** Create a matrix from row vectors.
1211
+ * ```
1212
+ * equation
1213
+ * \begin{bmatrix}U_x & U_y & U_z \\ V_x & V_y & V_z \\ W_x & W_y & W_z \end{bmatrix}
1214
+ * ```
1215
+ */
1216
+ static createRows(vectorU, vectorV, vectorW, result) {
1217
+ return Matrix3d.createRowValues(vectorU.x, vectorU.y, vectorU.z, vectorV.x, vectorV.y, vectorV.z, vectorW.x, vectorW.y, vectorW.z, result);
1218
+ }
1219
+ /** Create a matrix that scales along a specified direction.
1220
+ * * The scale factor can be negative.
1221
+ * * A scale of -1.0 (negative one) is a mirror across the plane perpendicular to the vector.
1222
+ * ```
1223
+ * equation
1224
+ * \text{The matrix is } I - (s-1) U U^T
1225
+ * \\ \text{with }U\text{ being the unit vector in the direction of the input vector.}
1226
+ * ```
1227
+ */
1228
+ static createDirectionalScale(direction, scale, result) {
1229
+ const unit = direction.normalize();
1230
+ if (unit) {
1231
+ const x = unit.x;
1232
+ const y = unit.y;
1233
+ const z = unit.z;
1234
+ const a = (scale - 1);
1235
+ return Matrix3d.createRowValues(1 + a * x * x, a * x * y, a * x * z, a * y * x, 1 + a * y * y, a * y * z, a * z * x, a * z * y, 1 + a * z * z, result);
1236
+ }
1237
+ return Matrix3d.createUniformScale(scale);
1238
+ }
1239
+ /* Create a matrix with the indicated column in the (normalized) direction, and the other two columns perpendicular. All columns are normalized.
1240
+ * * The direction vector is normalized and appears in column axisIndex
1241
+ * * If the direction vector is not close to Z, the "next" column ((axisIndex + 1) mod 3) will be in the XY plane in the direction of (direction cross Z)
1242
+ * * If the direction vector is close to Z, the "next" column ((axisIndex + 1) mode 3) will be in the direction of (direction cross Y)
1243
+ */
1244
+ // static create1Vector(direction: Vector3d, axisIndex: number): Matrix3d;
1245
+ // static createFromXYVectors(vectorX: Vector3d, vectorY: Vector3d, axisIndex: number): Matrix3d;
1246
+ /** Multiply the matrix * vector, treating the vector is a column vector on the right.
1247
+ * ```
1248
+ * equation
1249
+ * \matrixXY{A}\columnSubXYZ{U}
1250
+ * ```
1251
+ * @return the vector result
1252
+ */
1253
+ multiplyVector(vectorU, result) {
1254
+ const x = vectorU.x;
1255
+ const y = vectorU.y;
1256
+ const z = vectorU.z;
1257
+ return Vector3d.create((this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z), (this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z), (this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z), result);
1258
+ }
1259
+ /** Multiply matrix * vector for each array member, i.e. the vector is a column vector on the right.
1260
+ * @return the vector result
1261
+ */
1262
+ multiplyVectorArrayInPlace(data) {
1263
+ for (const v of data)
1264
+ v.set((this.coffs[0] * v.x + this.coffs[1] * v.y + this.coffs[2] * v.z), (this.coffs[3] * v.x + this.coffs[4] * v.y + this.coffs[5] * v.z), (this.coffs[6] * v.x + this.coffs[7] * v.y + this.coffs[8] * v.z));
1265
+ }
1266
+ /** compute `origin - matrix * vector` */
1267
+ static xyzMinusMatrixTimesXYZ(origin, matrix, vector, result) {
1268
+ const x = vector.x;
1269
+ const y = vector.y;
1270
+ const z = vector.z;
1271
+ return Point3d.create(origin.x - (matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z), origin.y - (matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z), origin.z - (matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z), result);
1272
+ }
1273
+ /** compute `origin + matrix * vector` using only the xy parts of the inputs. */
1274
+ static xyPlusMatrixTimesXY(origin, matrix, vector, result) {
1275
+ const x = vector.x;
1276
+ const y = vector.y;
1277
+ return Point2d.create(origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y, origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y, result);
1278
+ }
1279
+ /** compute `origin + matrix * vector` using all xyz parts of the inputs. */
1280
+ static xyzPlusMatrixTimesXYZ(origin, matrix, vector, result) {
1281
+ const x = vector.x;
1282
+ const y = vector.y;
1283
+ const z = vector.z;
1284
+ return Point3d.create(origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z, origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z, origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z, result);
1285
+ }
1286
+ /** compute `origin + matrix * vector` using all xyz parts of the inputs. */
1287
+ static xyzPlusMatrixTimesXYZInPlace(origin, matrix, vector) {
1288
+ const x = vector.x;
1289
+ const y = vector.y;
1290
+ const z = vector.z;
1291
+ vector.x = origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z;
1292
+ vector.y = origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z;
1293
+ vector.z = origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z;
1294
+ }
1295
+ /** compute `origin + matrix * vector` where the final vector is given as direct x,y,z coordinates */
1296
+ static xyzPlusMatrixTimesCoordinates(origin, matrix, x, y, z, result) {
1297
+ return Point3d.create(origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z, origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z, origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z, result);
1298
+ }
1299
+ /**
1300
+ * Treat the 3x3 matrix and origin as upper 3x4 part of a 4x4 matrix, with 0001 as the final row.
1301
+ * Multiply times point with coordinates `[x,y,z,w]`
1302
+ * @param origin translation part (xyz in column 3)
1303
+ * @param matrix matrix part (leading 3x3)
1304
+ * @param x x part of multiplied point
1305
+ * @param y y part of multiplied point
1306
+ * @param z z part of multiplied point
1307
+ * @param w w part of multiplied point
1308
+ * @param result optional result.
1309
+ */
1310
+ static xyzPlusMatrixTimesWeightedCoordinates(origin, matrix, x, y, z, w, result) {
1311
+ return Point4d.create(w * origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z, w * origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z, w * origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z, w, result);
1312
+ }
1313
+ /**
1314
+ * Treat the 3x3 matrix and origin as upper 3x4 part of a 4x4 matrix, with 0001 as the final row.
1315
+ * Multiply times point with coordinates `[x,y,z,w]`
1316
+ * @param origin translation part (xyz in column 3)
1317
+ * @param matrix matrix part (leading 3x3)
1318
+ * @param x x part of multiplied point
1319
+ * @param y y part of multiplied point
1320
+ * @param z z part of multiplied point
1321
+ * @param w w part of multiplied point
1322
+ * @param result optional result.
1323
+ */
1324
+ static xyzPlusMatrixTimesWeightedCoordinatesToFloat64Array(origin, matrix, x, y, z, w, result) {
1325
+ if (!result)
1326
+ result = new Float64Array(4);
1327
+ result[0] = w * origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z;
1328
+ result[1] = w * origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z;
1329
+ result[2] = w * origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z;
1330
+ result[3] = w;
1331
+ return result;
1332
+ }
1333
+ /**
1334
+ * Treat the 3x3 matrix and origin as upper 3x4 part of a 4x4 matrix, with 0001 as the final row.
1335
+ * Multiply times point with coordinates `[x,y,z,w]`
1336
+ * @param origin translation part (xyz in column 3)
1337
+ * @param matrix matrix part (leading 3x3)
1338
+ * @param x x part of multiplied point
1339
+ * @param y y part of multiplied point
1340
+ * @param z z part of multiplied point
1341
+ * @param w w part of multiplied point
1342
+ * @param result optional result.
1343
+ */
1344
+ static xyzPlusMatrixTimesCoordinatesToFloat64Array(origin, matrix, x, y, z, result) {
1345
+ if (!result)
1346
+ result = new Float64Array(3);
1347
+ result[0] = origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z;
1348
+ result[1] = origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z;
1349
+ result[2] = origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z;
1350
+ return result;
1351
+ }
1352
+ /**
1353
+ * Multiply transpose of this matrix times a vector.
1354
+ * * This produces the same x,y,z as treating the vector as a row on the left of the (un-transposed) matrix.
1355
+ * ```
1356
+ * equation
1357
+ * \begin{matrix}
1358
+ * \text{Treating U as a column to the right of transposed matrix\: return column}&\columnSubXYZ{V}&=&\matrixTransposeSubXY{A}\columnSubXYZ{U} \\
1359
+ * \text{Treating U as a row to the left of untransposed matrix\: return row}&\rowSubXYZ{V}&=&\rowSubXYZ{U}\matrixXY{A}
1360
+ * \end{matrix}
1361
+ * ```
1362
+ * @return the vector result
1363
+ */
1364
+ multiplyTransposeVector(vector, result) {
1365
+ result = result ? result : new Vector3d();
1366
+ const x = vector.x;
1367
+ const y = vector.y;
1368
+ const z = vector.z;
1369
+ result.x = (this.coffs[0] * x + this.coffs[3] * y + this.coffs[6] * z);
1370
+ result.y = (this.coffs[1] * x + this.coffs[4] * y + this.coffs[7] * z);
1371
+ result.z = (this.coffs[2] * x + this.coffs[5] * y + this.coffs[8] * z);
1372
+ return result;
1373
+ }
1374
+ /** Multiply the matrix * (x,y,z), i.e. the vector (x,y,z) is a column vector on the right.
1375
+ * @return the vector result
1376
+ */
1377
+ multiplyXYZ(x, y, z, result) {
1378
+ result = result ? result : new Vector3d();
1379
+ result.x = (this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z);
1380
+ result.y = (this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z);
1381
+ result.z = (this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z);
1382
+ return result;
1383
+ }
1384
+ /** Multiply the matrix * xyz, place result in (required) return value.
1385
+ * @param xyz right side
1386
+ * @param result result.
1387
+ */
1388
+ multiplyXYZtoXYZ(xyz, result) {
1389
+ const x = xyz.x;
1390
+ const y = xyz.y;
1391
+ const z = xyz.z;
1392
+ result.x = (this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z);
1393
+ result.y = (this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z);
1394
+ result.z = (this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z);
1395
+ return result;
1396
+ }
1397
+ /** Multiply the matrix * (x,y,0), i.e. the vector (x,y,z) is a column vector on the right.
1398
+ * @return the vector result
1399
+ */
1400
+ multiplyXY(x, y, result) {
1401
+ result = result ? result : new Vector3d();
1402
+ result.x = (this.coffs[0] * x + this.coffs[1] * y);
1403
+ result.y = (this.coffs[3] * x + this.coffs[4] * y);
1404
+ result.z = (this.coffs[6] * x + this.coffs[7] * y);
1405
+ return result;
1406
+ }
1407
+ /** compute `origin + this*[x,y,0]` */
1408
+ originPlusMatrixTimesXY(origin, x, y, result) {
1409
+ return Point3d.create(origin.x + this.coffs[0] * x + this.coffs[1] * y, origin.y + this.coffs[3] * x + this.coffs[4] * y, origin.z + this.coffs[6] * x + this.coffs[7] * y, result);
1410
+ }
1411
+ /** Multiply matrix * (x, y, z) using any 3d object given containing those members */
1412
+ multiplyVectorInPlace(xyzData) {
1413
+ const x = xyzData.x;
1414
+ const y = xyzData.y;
1415
+ const z = xyzData.z;
1416
+ const coffs = this.coffs;
1417
+ xyzData.x = (coffs[0] * x + coffs[1] * y + coffs[2] * z);
1418
+ xyzData.y = (coffs[3] * x + coffs[4] * y + coffs[5] * z);
1419
+ xyzData.z = (coffs[6] * x + coffs[7] * y + coffs[8] * z);
1420
+ }
1421
+ /** Multiply the transpose matrix times column using any 3d object with x,y,z members.
1422
+ * This is equivalent to `multiplyTransposeVector` but always returns the result directly in the input.
1423
+ */
1424
+ multiplyTransposeVectorInPlace(vectorU) {
1425
+ const x = vectorU.x;
1426
+ const y = vectorU.y;
1427
+ const z = vectorU.z;
1428
+ const coffs = this.coffs;
1429
+ vectorU.x = (coffs[0] * x + coffs[3] * y + coffs[6] * z);
1430
+ vectorU.y = (coffs[1] * x + coffs[4] * y + coffs[7] * z);
1431
+ vectorU.z = (coffs[2] * x + coffs[5] * y + coffs[8] * z);
1432
+ }
1433
+ /** Multiply the transpose matrix times column using individual numeric inputs.
1434
+ * * This is equivalent to multiplying with the vector as a row to the left of the plain matrix.
1435
+ * ```
1436
+ * equation
1437
+ * \begin{matrix}
1438
+ * \text{treating the input as a column } \columnXYZ{x}{y}{z}\text{ compute }&\columnSubXYZ{V} &= &A^T \columnXYZ{x}{y}{z} \\
1439
+ * \text{or row vector } \rowXYZ{x}{y}{z} \text{ compute }&\rowSubXYZ{V} &= &\rowXYZ{x}{y}{z} A \\
1440
+ * \phantom{8888}\text{and return V as a Vector3d} & & &
1441
+ * \end{matrix}
1442
+ * ````
1443
+ * @return the vector result
1444
+ */
1445
+ multiplyTransposeXYZ(x, y, z, result) {
1446
+ result = result ? result : new Vector3d();
1447
+ result.x = (this.coffs[0] * x + this.coffs[3] * y + this.coffs[6] * z);
1448
+ result.y = (this.coffs[1] * x + this.coffs[4] * y + this.coffs[7] * z);
1449
+ result.z = (this.coffs[2] * x + this.coffs[5] * y + this.coffs[8] * z);
1450
+ return result;
1451
+ }
1452
+ /** Solve `matrix * result = vector`.
1453
+ * * This is equivalent to multiplication `result = matrixInverse * vector`.
1454
+ * * Result is undefined if the matrix is singular (e.g. has parallel or zero length columns)
1455
+ */
1456
+ multiplyInverse(vector, result) {
1457
+ this.computeCachedInverse(true);
1458
+ if (this.inverseCoffs) {
1459
+ const x = vector.x;
1460
+ const y = vector.y;
1461
+ const z = vector.z;
1462
+ return Vector3d.create((this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z), (this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z), (this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z), result);
1463
+ }
1464
+ return undefined;
1465
+ }
1466
+ /** Solve `matrixTranspose * result = vector`.
1467
+ * * This is equivalent to multiplication `result = matrixInverseTranspose * vector`.
1468
+ * * Result is undefined if the matrix is singular (e.g. has parallel or zero length columns)
1469
+ */
1470
+ multiplyInverseTranspose(vector, result) {
1471
+ this.computeCachedInverse(true);
1472
+ if (this.inverseCoffs) {
1473
+ const x = vector.x;
1474
+ const y = vector.y;
1475
+ const z = vector.z;
1476
+ return Vector3d.create((this.inverseCoffs[0] * x + this.inverseCoffs[3] * y + this.inverseCoffs[6] * z), (this.inverseCoffs[1] * x + this.inverseCoffs[4] * y + this.inverseCoffs[7] * z), (this.inverseCoffs[2] * x + this.inverseCoffs[5] * y + this.inverseCoffs[8] * z), result);
1477
+ }
1478
+ return undefined;
1479
+ }
1480
+ /**
1481
+ * multiply `matrixInverse * [x,y,z]`.
1482
+ * * This is equivalent to solving `matrix * result = [x,y,z]`
1483
+ * * return as a Vector3d, or undefined if the matrix is singular.
1484
+ */
1485
+ multiplyInverseXYZAsVector3d(x, y, z, result) {
1486
+ this.computeCachedInverse(true);
1487
+ if (this.inverseCoffs) {
1488
+ return Vector3d.create((this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z), (this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z), (this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z), result);
1489
+ }
1490
+ return undefined;
1491
+ }
1492
+ /**
1493
+ * multiply `matrixInverse * [x,y,z]` and return packaged as `Point4d` with given weight.
1494
+ * * Equivalent to solving matrix * result = [x,y,z]
1495
+ * * return as a Point4d with the same weight.
1496
+ * * Called by Transform with x,y,z adjusted by subtraction ((xw) - w * origin.x, etc) where xw is the pre-weighted space point.
1497
+ */
1498
+ multiplyInverseXYZW(x, y, z, w, result) {
1499
+ this.computeCachedInverse(true);
1500
+ if (this.inverseCoffs) {
1501
+ return Point4d.create((this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z), (this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z), (this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z), w, result);
1502
+ }
1503
+ return undefined;
1504
+ }
1505
+ /**
1506
+ * multiply `matrixInverse * [x,y,z]` and return packaged as `Point3d`.
1507
+ * * multiply matrixInverse * [x,y,z]
1508
+ * * Equivalent to solving matrix * result = [x,y,z]
1509
+ * * return as a Point3d.
1510
+ */
1511
+ multiplyInverseXYZAsPoint3d(x, y, z, result) {
1512
+ this.computeCachedInverse(true);
1513
+ if (this.inverseCoffs) {
1514
+ return Point3d.create((this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z), (this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z), (this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z), result);
1515
+ }
1516
+ return undefined;
1517
+ }
1518
+ /**
1519
+ * * invoke a given matrix-matrix operation (product function) to compute this.inverseCOffs
1520
+ * * set this.inverseCoffs
1521
+ * * if either input cffA or coffB is undefined, set state to `InverseMatrixState.unknown` (but leave the inverseCoffs untouched)
1522
+ */
1523
+ finishInverseCoffs(f, coffA, coffB) {
1524
+ if (coffA && coffB) {
1525
+ this.createInverseCoffsWithZeros();
1526
+ this.inverseState = InverseMatrixState.inverseStored;
1527
+ f(coffA, coffB, this.inverseCoffs);
1528
+ }
1529
+ else {
1530
+ this.inverseState = InverseMatrixState.unknown;
1531
+ }
1532
+ }
1533
+ /*
1534
+ Notes on inverses of products
1535
+ * 1) M = A * B MInverse = BInverse * AInverse
1536
+ * 2) M = A * BInverse MInverse = B * AInverse
1537
+ * 3) M = AInverse * B MInverse = BInverse * A
1538
+ * 4) M = ATranspose * B MInverse = BInverse * AInverseTranspose
1539
+ * 5) M = A * BTranspose MInverse = BInverseTranspose * AInverse
1540
+ */
1541
+ /** Multiply two matrices.
1542
+ * @return the matrix result
1543
+ */
1544
+ multiplyMatrixMatrix(other, result) {
1545
+ result = result ? result : new Matrix3d();
1546
+ PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.coffs, result.coffs);
1547
+ if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
1548
+ result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.inverseCoffs);
1549
+ else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
1550
+ result.inverseState = InverseMatrixState.singular;
1551
+ else
1552
+ result.inverseState = InverseMatrixState.unknown;
1553
+ return result;
1554
+ }
1555
+ /** Multiply this matrix times inverse of other
1556
+ * @return the matrix result
1557
+ */
1558
+ multiplyMatrixMatrixInverse(other, result) {
1559
+ if (!other.computeCachedInverse(true))
1560
+ return undefined;
1561
+ result = result ? result : new Matrix3d();
1562
+ PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.inverseCoffs, Matrix3d._productBuffer);
1563
+ if (this.inverseState === InverseMatrixState.inverseStored)
1564
+ result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.coffs, this.inverseCoffs);
1565
+ else
1566
+ result.inverseState = InverseMatrixState.unknown;
1567
+ PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
1568
+ return result;
1569
+ }
1570
+ /** Multiply this matrix times inverse of other
1571
+ * @return the matrix result
1572
+ */
1573
+ multiplyMatrixInverseMatrix(other, result) {
1574
+ if (!this.computeCachedInverse(true))
1575
+ return undefined;
1576
+ result = result ? result : new Matrix3d();
1577
+ PackedMatrix3dOps.multiplyMatrixMatrix(this.inverseCoffs, other.coffs, Matrix3d._productBuffer);
1578
+ if (other.inverseState === InverseMatrixState.inverseStored)
1579
+ result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.coffs);
1580
+ else
1581
+ result.inverseState = InverseMatrixState.unknown;
1582
+ PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
1583
+ return result;
1584
+ }
1585
+ /** Multiply `this` matrix times the transpose of `matrixB`.
1586
+ * ```
1587
+ * equation
1588
+ * \text{for instance matrix }A\text{ and other matrix }B\text{ return matrix }C{\text where }\\\matrixXY{C}=\matrixXY{A}\matrixTransposeSubXY{B}
1589
+ * ```
1590
+ * @return the matrix result
1591
+ */
1592
+ multiplyMatrixMatrixTranspose(matrixB, result) {
1593
+ result = result ? result : new Matrix3d();
1594
+ PackedMatrix3dOps.multiplyMatrixMatrixTranspose(this.coffs, matrixB.coffs, result.coffs);
1595
+ if (this.inverseState === InverseMatrixState.inverseStored && matrixB.inverseState === InverseMatrixState.inverseStored)
1596
+ result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixTransposeMatrix, matrixB.inverseCoffs, this.inverseCoffs);
1597
+ else if (this.inverseState === InverseMatrixState.singular || matrixB.inverseState === InverseMatrixState.singular)
1598
+ result.inverseState = InverseMatrixState.singular;
1599
+ else
1600
+ result.inverseState = InverseMatrixState.unknown;
1601
+ return result;
1602
+ }
1603
+ /** Matrix multiplication `thisTranspose * other`.
1604
+ * ```
1605
+ * equation
1606
+ * \matrixXY{result}=\matrixXY{\text{this}}\matrixTransposeSubXY{\text{other}}
1607
+ * ```
1608
+ * @return the matrix result
1609
+ */
1610
+ multiplyMatrixTransposeMatrix(other, result) {
1611
+ result = result ? result : new Matrix3d();
1612
+ PackedMatrix3dOps.multiplyMatrixTransposeMatrix(this.coffs, other.coffs, result.coffs);
1613
+ if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
1614
+ result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrixTranspose, other.inverseCoffs, this.inverseCoffs);
1615
+ else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
1616
+ result.inverseState = InverseMatrixState.singular;
1617
+ else
1618
+ result.inverseState = InverseMatrixState.unknown;
1619
+ return result;
1620
+ }
1621
+ /** multiply this Matrix3d (considered as a transform with 0 translation) times other Transform.
1622
+ * ```
1623
+ * equation
1624
+ * \begin{matrix}
1625
+ * \text{This matrix }\bold{A}\text{ promoted to block transform} & \blockTransform{A}{0} \\
1626
+ * \text{other transform with matrix part }\bold{B}\text{ and translation }\bold{b} & \blockTransform{B}{b}\\
1627
+ * \text{product}& \blockTransform{A}{0}\blockTransform{B}{b}=\blockTransform{AB}{Ab}
1628
+ * \end{matrix}
1629
+ * ```
1630
+ * @param other right hand Matrix3d for multiplication.
1631
+ * @param result optional preallocated result to reuse.
1632
+ */
1633
+ multiplyMatrixTransform(other, result) {
1634
+ if (!result)
1635
+ return Transform.createRefs(this.multiplyXYZ(other.origin.x, other.origin.y, other.origin.z), this.multiplyMatrixMatrix(other.matrix));
1636
+ // be sure to do the point multiplication first before aliasing changes the matrix ..
1637
+ this.multiplyXYZtoXYZ(other.origin, result.origin);
1638
+ this.multiplyMatrixMatrix(other.matrix, result.matrix);
1639
+ return result;
1640
+ }
1641
+ /** return a transposed matrix. `this` is not changed unless also passed as the result. */
1642
+ transpose(result) {
1643
+ if (!result)
1644
+ result = new Matrix3d();
1645
+ PackedMatrix3dOps.copyTransposed(this.coffs, result.coffs);
1646
+ if (this.inverseCoffs !== undefined) {
1647
+ result.inverseState = InverseMatrixState.inverseStored;
1648
+ result.inverseCoffs = PackedMatrix3dOps.copyTransposed(this.inverseCoffs, result.inverseCoffs);
1649
+ }
1650
+ else {
1651
+ result.inverseState = this.inverseState; // singular or unknown.
1652
+ result.inverseCoffs = undefined;
1653
+ }
1654
+ return result;
1655
+ }
1656
+ /** transpose this matrix in place.
1657
+ *
1658
+ */
1659
+ transposeInPlace() {
1660
+ PackedMatrix3dOps.transposeInPlace(this.coffs);
1661
+ if (this.inverseCoffs)
1662
+ PackedMatrix3dOps.transposeInPlace(this.inverseCoffs);
1663
+ }
1664
+ /** return the inverse matrix.
1665
+ * The return is undefined if the matrix is singular (has columns that are coplanar or colinear)
1666
+ * * Note that each Matrix3d object caches its own inverse, and has methods to multiply the inverse times matrices and vectors.
1667
+ * * Hence explicitly constructing this new inverse object is rarely necessary.
1668
+ */
1669
+ inverse(result) {
1670
+ if (!this.computeCachedInverse(true))
1671
+ return undefined;
1672
+ if (result === this) {
1673
+ // swap the contents (preserve pointers .. caller better know what they are doing)
1674
+ PackedMatrix3dOps.copy(this.coffs, Matrix3d._productBuffer);
1675
+ PackedMatrix3dOps.copy(this.inverseCoffs, this.coffs);
1676
+ PackedMatrix3dOps.copy(Matrix3d._productBuffer, this.inverseCoffs);
1677
+ return result;
1678
+ }
1679
+ if (result === undefined) {
1680
+ result = Matrix3d.createIdentity();
1681
+ }
1682
+ result.createInverseCoffsWithZeros();
1683
+ PackedMatrix3dOps.copy(this.coffs, result.inverseCoffs);
1684
+ PackedMatrix3dOps.copy(this.inverseCoffs, result.coffs);
1685
+ result.inverseState = this.inverseState;
1686
+ return result;
1687
+ }
1688
+ /** copy the transpose of the coffs to the inverseCoffs.
1689
+ * * mark the matrix as inverseStored.
1690
+ */
1691
+ setupInverseTranspose() {
1692
+ const coffs = this.coffs;
1693
+ this.inverseState = InverseMatrixState.inverseStored;
1694
+ this.inverseCoffs = Float64Array.from([
1695
+ coffs[0], coffs[3], coffs[6],
1696
+ coffs[1], coffs[4], coffs[7],
1697
+ coffs[2], coffs[5], coffs[8]
1698
+ ]);
1699
+ }
1700
+ /* Alternate implementation of computedCachedInverse - more direct addressing of arrays.
1701
+ This is indeed 10% faster than using static work areas. */
1702
+ // take the cross product of two rows of source.
1703
+ // store as a column of dest.
1704
+ static indexedRowCrossProduct(source, rowStart0, rowStart1, dest, columnStart) {
1705
+ dest[columnStart] = source[rowStart0 + 1] * source[rowStart1 + 2] - source[rowStart0 + 2] * source[rowStart1 + 1];
1706
+ dest[columnStart + 3] = source[rowStart0 + 2] * source[rowStart1] - source[rowStart0] * source[rowStart1 + 2];
1707
+ dest[columnStart + 6] = source[rowStart0] * source[rowStart1 + 1] - source[rowStart0 + 1] * source[rowStart1];
1708
+ }
1709
+ // take the cross product of two columns of source.
1710
+ // store as third column in same Matrix3d.
1711
+ // This is private because the columnStart values are unchecked raw indices into the coffs
1712
+ indexedColumnCrossProductInPlace(colStart0, colStart1, colStart2) {
1713
+ const coffs = this.coffs;
1714
+ coffs[colStart2] = coffs[colStart0 + 3] * coffs[colStart1 + 6] - coffs[colStart0 + 6] * coffs[colStart1 + 3];
1715
+ coffs[colStart2 + 3] = coffs[colStart0 + 6] * coffs[colStart1] - coffs[colStart0] * coffs[colStart1 + 6];
1716
+ coffs[colStart2 + 6] = coffs[colStart0] * coffs[colStart1 + 3] - coffs[colStart0 + 3] * coffs[colStart1];
1717
+ }
1718
+ /** Form cross products among columns in axisOrder.
1719
+ * For axis order ABC,
1720
+ * * form cross product of column A and B, store in C
1721
+ * * form cross product of column C and A, store in B.
1722
+ * This means that in the final matrix:
1723
+ * * column A is strictly parallel to original column A
1724
+ * * column B is linear combination of only original A and B
1725
+ * * column C is perpendicular to A and B of both the original and final.
1726
+ * * original column C does not participate in the result.
1727
+ */
1728
+ axisOrderCrossProductsInPlace(axisOrder) {
1729
+ switch (axisOrder) {
1730
+ case AxisOrder.XYZ: {
1731
+ this.indexedColumnCrossProductInPlace(0, 1, 2);
1732
+ this.indexedColumnCrossProductInPlace(2, 0, 1);
1733
+ break;
1734
+ }
1735
+ case AxisOrder.YZX: {
1736
+ this.indexedColumnCrossProductInPlace(1, 2, 0);
1737
+ this.indexedColumnCrossProductInPlace(0, 1, 2);
1738
+ break;
1739
+ }
1740
+ case AxisOrder.ZXY: {
1741
+ this.indexedColumnCrossProductInPlace(2, 0, 1);
1742
+ this.indexedColumnCrossProductInPlace(1, 2, 0);
1743
+ break;
1744
+ }
1745
+ case AxisOrder.XZY: {
1746
+ this.indexedColumnCrossProductInPlace(0, 2, 1);
1747
+ this.indexedColumnCrossProductInPlace(1, 0, 2);
1748
+ break;
1749
+ }
1750
+ case AxisOrder.YXZ: {
1751
+ this.indexedColumnCrossProductInPlace(1, 0, 2);
1752
+ this.indexedColumnCrossProductInPlace(2, 1, 0);
1753
+ break;
1754
+ }
1755
+ case AxisOrder.ZYX: {
1756
+ this.indexedColumnCrossProductInPlace(2, 1, 0);
1757
+ this.indexedColumnCrossProductInPlace(0, 2, 1);
1758
+ break;
1759
+ }
1760
+ }
1761
+ }
1762
+ /** Normalize each column in place.
1763
+ * * For false return the magnitudes are stored in the originalMagnitudes vector but no columns are altered.
1764
+ * @returns Return true if all columns had nonzero lengths.
1765
+ * @param originalMagnitudes optional vector to receive original column magnitudes.
1766
+ */
1767
+ normalizeColumnsInPlace(originalMagnitudes) {
1768
+ const ax = this.columnXMagnitude();
1769
+ const ay = this.columnYMagnitude();
1770
+ const az = this.columnZMagnitude();
1771
+ if (originalMagnitudes)
1772
+ originalMagnitudes.set(ax, ay, az);
1773
+ if (Geometry.isSmallMetricDistance(ax) || Geometry.isSmallMetricDistance(ay) || Geometry.isSmallMetricDistance(az))
1774
+ return false;
1775
+ this.scaleColumns(1.0 / ax, 1.0 / ay, 1.0 / az, this);
1776
+ return true;
1777
+ }
1778
+ /** Normalize each row in place */
1779
+ normalizeRowsInPlace(originalMagnitudes) {
1780
+ const ax = this.rowXMagnitude();
1781
+ const ay = this.rowYMagnitude();
1782
+ const az = this.rowZMagnitude();
1783
+ if (originalMagnitudes)
1784
+ originalMagnitudes.set(ax, ay, az);
1785
+ if (Geometry.isSmallMetricDistance(ax) || Geometry.isSmallMetricDistance(ay) || Geometry.isSmallMetricDistance(az))
1786
+ return false;
1787
+ this.scaleRows(1.0 / ax, 1.0 / ay, 1.0 / az, this);
1788
+ return true;
1789
+ }
1790
+ // take the cross product of two rows of source.
1791
+ // store as a column of dest.
1792
+ static rowColumnDot(coffA, rowStartA, coffB, columnStartB) {
1793
+ return coffA[rowStartA] * coffB[columnStartB] + coffA[rowStartA + 1] * coffB[columnStartB + 3] + coffA[rowStartA + 2] * coffB[columnStartB + 6];
1794
+ }
1795
+ /**
1796
+ * Returns true if the matrix is singular (i.e. collapses data to a plane, line, or point)
1797
+ */
1798
+ isSingular() {
1799
+ return !this.computeCachedInverse(true);
1800
+ }
1801
+ /**
1802
+ * Mark this matrix as singular.
1803
+ */
1804
+ markSingular() {
1805
+ this.inverseState = InverseMatrixState.singular;
1806
+ }
1807
+ /** Create the inverseCoffs member (filled with zeros)
1808
+ * This is for use by matrix * matrix multiplications which need to be sure the member is there to be filled with method-specific content.
1809
+ */
1810
+ createInverseCoffsWithZeros() {
1811
+ if (!this.inverseCoffs) {
1812
+ this.inverseState = InverseMatrixState.unknown;
1813
+ this.inverseCoffs = new Float64Array(9);
1814
+ }
1815
+ }
1816
+ /** compute the inverse of this Matrix3d. The inverse is stored for later use.
1817
+ * @returns Return true if the inverse computed. (False if the columns collapse to a point, line or plane.)
1818
+ */
1819
+ computeCachedInverse(useCacheIfAvailable) {
1820
+ if (useCacheIfAvailable && Matrix3d.useCachedInverse && this.inverseState !== InverseMatrixState.unknown) {
1821
+ Matrix3d.numUseCache++;
1822
+ return this.inverseState === InverseMatrixState.inverseStored;
1823
+ }
1824
+ this.inverseState = InverseMatrixState.unknown;
1825
+ this.createInverseCoffsWithZeros();
1826
+ const coffs = this.coffs;
1827
+ const inverseCoffs = this.inverseCoffs;
1828
+ Matrix3d.indexedRowCrossProduct(coffs, 3, 6, inverseCoffs, 0);
1829
+ Matrix3d.indexedRowCrossProduct(coffs, 6, 0, inverseCoffs, 1);
1830
+ Matrix3d.indexedRowCrossProduct(coffs, 0, 3, inverseCoffs, 2);
1831
+ Matrix3d.numComputeCache++;
1832
+ const d = Matrix3d.rowColumnDot(coffs, 0, inverseCoffs, 0);
1833
+ if (d === 0.0) { // better test?
1834
+ this.inverseState = InverseMatrixState.singular;
1835
+ this.inverseCoffs = undefined;
1836
+ return false;
1837
+ }
1838
+ const f = 1.0 / d;
1839
+ for (let i = 0; i < 9; i++)
1840
+ inverseCoffs[i] *= f;
1841
+ this.inverseState = InverseMatrixState.inverseStored;
1842
+ // verify inverse
1843
+ // const p = new Float64Array(9);
1844
+ // for (let i = 0; i < 9; i += 3)
1845
+ // for (let j = 0; j < 3; j++)
1846
+ // p[i + j] = Matrix3d.rowColumnDot (coffs, i, inverseCoffs, j);
1847
+ return true;
1848
+ }
1849
+ /* "Classic" inverse implementation with temporary vectors.
1850
+ private static rowX: Vector3d = Vector3d.create();
1851
+ private static rowY: Vector3d = Vector3d.create();
1852
+ private static rowZ: Vector3d = Vector3d.create();
1853
+ private static crossXY: Vector3d = Vector3d.create();
1854
+ private static crossZX: Vector3d = Vector3d.create();
1855
+ private static crossYZ: Vector3d = Vector3d.create();
1856
+ private computeCachedInverse(useCacheIfAvailable: boolean) {
1857
+ if (useCacheIfAvailable && Matrix3d.useCachedInverse && this.inverseState !== InverseMatrixState.unknown) {
1858
+ Matrix3d.numUseCache++;
1859
+ return this.inverseState === InverseMatrixState.inverseStored;
1860
+ }
1861
+ this.inverseState = InverseMatrixState.unknown;
1862
+ Matrix3d.numComputeCache++;
1863
+ const rowX = this.rowX(Matrix3d.rowX);
1864
+ const rowY = this.rowY(Matrix3d.rowY);
1865
+ const rowZ = this.rowZ(Matrix3d.rowZ);
1866
+ const crossXY = rowX.crossProduct(rowY, Matrix3d.crossXY);
1867
+ const crossYZ = rowY.crossProduct(rowZ, Matrix3d.crossYZ);
1868
+ const crossZX = rowZ.crossProduct(rowX, Matrix3d.crossZX);
1869
+ const d = rowX.dotProduct(crossYZ); // that's the determinant
1870
+ if (d === 0.0) { // better test?
1871
+ this.inverseState = InverseMatrixState.singular;
1872
+ this.inverseCoffs = undefined;
1873
+ return false;
1874
+ }
1875
+ const f = 1.0 / d;
1876
+ this.inverseState = InverseMatrixState.inverseStored; // Currently just lists that the inverse has been stored... singular case not handled
1877
+ this.inverseCoffs = Float64Array.from([crossYZ.x * f, crossZX.x * f, crossXY.x * f,
1878
+ crossYZ.y * f, crossZX.y * f, crossXY.y * f,
1879
+ crossYZ.z * f, crossZX.z * f, crossXY.z * f]);
1880
+ return true;
1881
+ }
1882
+ */
1883
+ /** convert a (row,column) index pair to the single index within flattened array of 9 numbers in row-major-order */
1884
+ static flatIndexOf(row, column) {
1885
+ return 3 * Geometry.cyclic3dAxis(row) + Geometry.cyclic3dAxis(column);
1886
+ }
1887
+ /** Get a column by index (0,1,2), packaged as a Point4d with given weight. Out of range index is interpreted cyclically. */
1888
+ indexedColumnWithWeight(index, weight, result) {
1889
+ index = Geometry.cyclic3dAxis(index);
1890
+ return Point4d.create(this.coffs[index], this.coffs[index + 3], this.coffs[index + 6], weight, result);
1891
+ }
1892
+ /** return the entry at specific row and column */
1893
+ at(row, column) {
1894
+ return this.coffs[Matrix3d.flatIndexOf(row, column)];
1895
+ }
1896
+ /** Set the entry at specific row and column */
1897
+ setAt(row, column, value) {
1898
+ this.coffs[Matrix3d.flatIndexOf(row, column)] = value;
1899
+ this.inverseState = InverseMatrixState.unknown;
1900
+ }
1901
+ /** create a Matrix3d whose columns are scaled copies of this Matrix3d.
1902
+ * @param scaleX scale factor for columns x
1903
+ * @param scaleY scale factor for column y
1904
+ * @param scaleZ scale factor for column z
1905
+ * @param result optional result.
1906
+ */
1907
+ scaleColumns(scaleX, scaleY, scaleZ, result) {
1908
+ return Matrix3d.createRowValues(this.coffs[0] * scaleX, this.coffs[1] * scaleY, this.coffs[2] * scaleZ, this.coffs[3] * scaleX, this.coffs[4] * scaleY, this.coffs[5] * scaleZ, this.coffs[6] * scaleX, this.coffs[7] * scaleY, this.coffs[8] * scaleZ, result);
1909
+ }
1910
+ /** create a Matrix3d whose columns are scaled copies of this Matrix3d.
1911
+ * @param scaleX scale factor for columns x
1912
+ * @param scaleY scale factor for column y
1913
+ * @param scaleZ scale factor for column z
1914
+ * @param result optional result.
1915
+ */
1916
+ scaleColumnsInPlace(scaleX, scaleY, scaleZ) {
1917
+ this.coffs[0] *= scaleX;
1918
+ this.coffs[1] *= scaleY;
1919
+ this.coffs[2] *= scaleZ;
1920
+ this.coffs[3] *= scaleX;
1921
+ this.coffs[4] *= scaleY;
1922
+ this.coffs[5] *= scaleZ;
1923
+ this.coffs[6] *= scaleX;
1924
+ this.coffs[7] *= scaleY;
1925
+ this.coffs[8] *= scaleZ;
1926
+ if (this.inverseState === InverseMatrixState.inverseStored && this.inverseCoffs !== undefined) {
1927
+ // apply reciprocal scales to the ROWS of the inverse . . .
1928
+ const divX = Geometry.conditionalDivideFraction(1.0, scaleX);
1929
+ const divY = Geometry.conditionalDivideFraction(1.0, scaleY);
1930
+ const divZ = Geometry.conditionalDivideFraction(1.0, scaleZ);
1931
+ if (divX !== undefined && divY !== undefined && divZ !== undefined) {
1932
+ this.inverseCoffs[0] *= divX;
1933
+ this.inverseCoffs[1] *= divX;
1934
+ this.inverseCoffs[2] *= divX;
1935
+ this.inverseCoffs[3] *= divY;
1936
+ this.inverseCoffs[4] *= divY;
1937
+ this.inverseCoffs[5] *= divY;
1938
+ this.inverseCoffs[6] *= divZ;
1939
+ this.inverseCoffs[7] *= divZ;
1940
+ this.inverseCoffs[8] *= divZ;
1941
+ }
1942
+ else
1943
+ this.inverseState = InverseMatrixState.singular;
1944
+ }
1945
+ }
1946
+ /** create a Matrix3d whose rows are scaled copies of this Matrix3d.
1947
+ * @param scaleX scale factor for row x
1948
+ * @param scaleY scale factor for row y
1949
+ * @param scaleZ scale factor for row z
1950
+ * @param result optional result.
1951
+ */
1952
+ scaleRows(scaleX, scaleY, scaleZ, result) {
1953
+ return Matrix3d.createRowValues(this.coffs[0] * scaleX, this.coffs[1] * scaleX, this.coffs[2] * scaleX, this.coffs[3] * scaleY, this.coffs[4] * scaleY, this.coffs[5] * scaleY, this.coffs[6] * scaleZ, this.coffs[7] * scaleZ, this.coffs[8] * scaleZ, result);
1954
+ }
1955
+ /**
1956
+ * add scaled values from other Matrix3d to this Matrix3d
1957
+ * @param other Matrix3d with values to be added
1958
+ * @param scale scale factor to apply to th eadded values.
1959
+ */
1960
+ addScaledInPlace(other, scale) {
1961
+ for (let i = 0; i < 9; i++)
1962
+ this.coffs[i] += scale * other.coffs[i];
1963
+ this.inverseState = InverseMatrixState.unknown;
1964
+ }
1965
+ /**
1966
+ * add scaled values from an outer product.
1967
+ * * The scaled outer product is a "rank 1" matrix.
1968
+ * * This is useful in constructing mirrors and directional scales.
1969
+ * ```
1970
+ * equation
1971
+ * A += s \columnSubXYZ{U}\rowSubXYZ{V}
1972
+ * \\ \matrixXY{A} += s \begin{bmatrix}
1973
+ * U_x * V_x & U_y * V_x & U_z * V_x \\
1974
+ * U_x * V_y & U_y * V_y & U_z * V_y \\
1975
+ * U_x * V_z & U_y * V_z & U_z * V_z \end{bmatrix}
1976
+ * ```
1977
+ * @param other Matrix3d with values to be added
1978
+ * @param scale scale factor to apply to the added values.
1979
+ */
1980
+ addScaledOuterProductInPlace(vectorU, vectorV, scale) {
1981
+ this.coffs[0] += scale * vectorU.x * vectorV.x;
1982
+ this.coffs[1] += scale * vectorU.x * vectorV.y;
1983
+ this.coffs[2] += scale * vectorU.x * vectorV.z;
1984
+ this.coffs[3] += scale * vectorU.y * vectorV.x;
1985
+ this.coffs[4] += scale * vectorU.y * vectorV.y;
1986
+ this.coffs[5] += scale * vectorU.y * vectorV.z;
1987
+ this.coffs[6] += scale * vectorU.z * vectorV.x;
1988
+ this.coffs[7] += scale * vectorU.z * vectorV.y;
1989
+ this.coffs[8] += scale * vectorU.z * vectorV.z;
1990
+ this.inverseState = InverseMatrixState.unknown;
1991
+ }
1992
+ /** create a Matrix3d whose values are uniformly scaled from this.
1993
+ * @param scale scale factor to apply.
1994
+ * @param result optional result.
1995
+ * @returns Return the new or repopulated matrix
1996
+ */
1997
+ scale(scale, result) {
1998
+ return Matrix3d.createRowValues(this.coffs[0] * scale, this.coffs[1] * scale, this.coffs[2] * scale, this.coffs[3] * scale, this.coffs[4] * scale, this.coffs[5] * scale, this.coffs[6] * scale, this.coffs[7] * scale, this.coffs[8] * scale, result);
1999
+ }
2000
+ /** Return the determinant of this matrix. */
2001
+ determinant() {
2002
+ return this.coffs[0] * this.coffs[4] * this.coffs[8]
2003
+ - this.coffs[0] * this.coffs[7] * this.coffs[5]
2004
+ + this.coffs[3] * this.coffs[7] * this.coffs[2]
2005
+ - this.coffs[3] * this.coffs[1] * this.coffs[8]
2006
+ + this.coffs[6] * this.coffs[1] * this.coffs[5]
2007
+ - this.coffs[6] * this.coffs[4] * this.coffs[2];
2008
+ }
2009
+ /** Return an estimate of how independent the columns are. Near zero is bad. Near 1 is good
2010
+ */
2011
+ conditionNumber() {
2012
+ const determinant = this.determinant();
2013
+ const columnMagnitudeProduct = Geometry.hypotenuseXYZ(this.coffs[0], this.coffs[3], this.coffs[6])
2014
+ + Geometry.hypotenuseXYZ(this.coffs[1], this.coffs[4], this.coffs[7])
2015
+ + Geometry.hypotenuseXYZ(this.coffs[2], this.coffs[5], this.coffs[8]);
2016
+ return Geometry.safeDivideFraction(determinant, columnMagnitudeProduct, 0.0);
2017
+ }
2018
+ /** Return the sum of squares of all entries */
2019
+ sumSquares() {
2020
+ let i = 0;
2021
+ let a = 0;
2022
+ for (i = 0; i < 9; i++)
2023
+ a += this.coffs[i] * this.coffs[i];
2024
+ return a;
2025
+ }
2026
+ /** Return the sum of squares of diagonal entries */
2027
+ sumDiagonalSquares() {
2028
+ let i = 0;
2029
+ let a = 0;
2030
+ for (i = 0; i < 9; i += 4)
2031
+ a += this.coffs[i] * this.coffs[i];
2032
+ return a;
2033
+ }
2034
+ /** Return the sum of diagonal entries (also known as the trace) */
2035
+ sumDiagonal() {
2036
+ return this.coffs[0] + this.coffs[4] + this.coffs[8];
2037
+ }
2038
+ /** Return the Maximum absolute value of any single entry */
2039
+ maxAbs() {
2040
+ let i = 0;
2041
+ let a = 0;
2042
+ for (i = 0; i < 9; i++)
2043
+ a = Math.max(a, Math.abs(this.coffs[i]));
2044
+ return a;
2045
+ }
2046
+ /** Return the maximum absolute difference between corresponding entries */
2047
+ maxDiff(other) {
2048
+ let i = 0;
2049
+ let a = 0;
2050
+ for (i = 0; i < 9; i++)
2051
+ a = Math.max(a, Math.abs(this.coffs[i] - other.coffs[i]));
2052
+ return a;
2053
+ }
2054
+ /** Test if the matrix is (very near to) an identity */
2055
+ get isIdentity() {
2056
+ return this.maxDiff(Matrix3d.identity) < Geometry.smallAngleRadians;
2057
+ }
2058
+ /** Test if the off diagonal entries are all nearly zero */
2059
+ get isDiagonal() {
2060
+ const sumAll = this.sumSquares();
2061
+ const sumDiagonal = this.sumDiagonalSquares();
2062
+ const sumOff = Math.abs(sumAll - sumDiagonal);
2063
+ return Math.sqrt(sumOff) <= Geometry.smallAngleRadians * (1.0 + Math.sqrt(sumAll));
2064
+ }
2065
+ /** Test if the stored inverse is present and marked valid */
2066
+ get hasCachedInverse() {
2067
+ return this.inverseState === InverseMatrixState.inverseStored && this.inverseCoffs !== undefined;
2068
+ }
2069
+ /** Test if the below diagonal entries are all nearly zero */
2070
+ get isUpperTriangular() {
2071
+ const sumAll = this.sumSquares();
2072
+ const sumLow = Geometry.hypotenuseSquaredXYZ(this.coffs[3], this.coffs[6], this.coffs[7]);
2073
+ return Math.sqrt(sumLow) <= Geometry.smallAngleRadians * (1.0 + Math.sqrt(sumAll));
2074
+ }
2075
+ /** If the matrix is diagonal and all diagonals are within tolerance, return the first diagonal. Otherwise return undefined.
2076
+ */
2077
+ sameDiagonalScale() {
2078
+ const sumAll = this.sumSquares();
2079
+ const sumDiagonal = this.sumDiagonalSquares();
2080
+ const sumOff = Math.abs(sumAll - sumDiagonal);
2081
+ if (Math.sqrt(sumOff) <= Geometry.smallAngleRadians * (1.0 + Math.sqrt(sumAll))
2082
+ && Geometry.isSameCoordinate(this.coffs[0], this.coffs[4]) && Geometry.isSameCoordinate(this.coffs[0], this.coffs[8]))
2083
+ return this.coffs[0];
2084
+ return undefined;
2085
+ }
2086
+ /** Sum of squared differences between symmetric pairs */
2087
+ sumSkewSquares() {
2088
+ return Geometry.hypotenuseSquaredXYZ(this.coffs[1] - this.coffs[3], this.coffs[2] - this.coffs[6], this.coffs[5] - this.coffs[7]);
2089
+ }
2090
+ /** Test if the matrix is a pure rotation. */
2091
+ isRigid(allowMirror = false) {
2092
+ return this.testPerpendicularUnitRowsAndColumns() && (allowMirror || this.determinant() > 0);
2093
+ }
2094
+ /** Test if all rows and columns are perpendicular to each other and have equal length.
2095
+ * If so, the length (or its negative) is the scale factor from a set of rigid axes to these axes.
2096
+ * * result.rigidAxes is the rigid axes (with the scale factor removed)
2097
+ * * result.scale is the scale factor
2098
+ */
2099
+ factorRigidWithSignedScale() {
2100
+ const product = this.multiplyMatrixMatrixTranspose(this);
2101
+ const ss = product.sameDiagonalScale();
2102
+ if (ss === undefined || ss <= 0.0)
2103
+ return undefined;
2104
+ const s = this.determinant() > 0 ? Math.sqrt(ss) : -Math.sqrt(ss);
2105
+ const divS = 1.0 / s;
2106
+ const result = { rigidAxes: this.scaleColumns(divS, divS, divS), scale: s };
2107
+ return result;
2108
+ }
2109
+ /** Test if the matrix is shuffles and negates columns. */
2110
+ get isSignedPermutation() {
2111
+ let count = 0;
2112
+ for (let row = 0; row < 3; row++)
2113
+ for (let col = 0; col < 3; col++) {
2114
+ const q = this.at(row, col);
2115
+ if (q === 0) { // This comment makes the block non-empty
2116
+ }
2117
+ else if (q === 1 || q === -1) {
2118
+ // the rest of this row and column should be 0.
2119
+ // "at" will apply cyclic indexing.
2120
+ count++;
2121
+ if (this.at(row + 1, col) !== 0)
2122
+ return false;
2123
+ if (this.at(row + 2, col) !== 0)
2124
+ return false;
2125
+ if (this.at(row, col + 1) !== 0)
2126
+ return false;
2127
+ if (this.at(row, col + 2) !== 0)
2128
+ return false;
2129
+ }
2130
+ else { // entry is not from 0,1,-1 . . .
2131
+ return false;
2132
+ }
2133
+ }
2134
+ return count === 3;
2135
+ }
2136
+ /** Test if all rows and columns are length 1 and are perpendicular to each other. (I.e. the matrix is either a pure rotation with uniform scale factor of 1 or -1) */
2137
+ testPerpendicularUnitRowsAndColumns() {
2138
+ const product = this.multiplyMatrixMatrixTranspose(this);
2139
+ return product.isIdentity;
2140
+ }
2141
+ /** create a new orthogonal matrix (perpendicular columns, unit length, transpose is inverse).
2142
+ * vectorA is placed in the first column of the axis order.
2143
+ * vectorB is projected perpendicular to vectorA within their plane and placed in the second column.
2144
+ */
2145
+ static createRigidFromColumns(vectorA, vectorB, axisOrder, result) {
2146
+ const vectorA1 = vectorA.normalize();
2147
+ if (vectorA1) {
2148
+ const vectorC1 = vectorA1.unitCrossProduct(vectorB);
2149
+ if (vectorC1) {
2150
+ const vectorB1 = vectorC1.unitCrossProduct(vectorA);
2151
+ if (vectorB1) {
2152
+ const retVal = Matrix3d.createShuffledColumns(vectorA1, vectorB1, vectorC1, axisOrder, result);
2153
+ retVal.setupInverseTranspose();
2154
+ return retVal;
2155
+ }
2156
+ }
2157
+ }
2158
+ return undefined;
2159
+ }
2160
+ /** create a new orthogonal matrix (perpendicular columns, unit length, transpose is inverse).
2161
+ * columns are taken from the source Matrix3d in order indicated by the axis order.
2162
+ */
2163
+ static createRigidFromMatrix3d(source, axisOrder = AxisOrder.XYZ, result) {
2164
+ result = source.clone(result);
2165
+ const maxAbs = result.maxAbs();
2166
+ if (Geometry.isSmallMetricDistance(maxAbs))
2167
+ return undefined;
2168
+ const scale = 1.0 / maxAbs;
2169
+ result.scaleColumnsInPlace(scale, scale, scale);
2170
+ result.axisOrderCrossProductsInPlace(axisOrder);
2171
+ if (result.normalizeColumnsInPlace())
2172
+ return result;
2173
+ return undefined;
2174
+ }
2175
+ static computeQuatTerm(numerator, denomCoff, reciprocal, diagSum) {
2176
+ let coff;
2177
+ const diagTol = 0.500;
2178
+ if (diagSum > diagTol) {
2179
+ coff = Math.sqrt(diagSum) * 0.5;
2180
+ if (denomCoff * numerator < 0.0)
2181
+ coff = -coff;
2182
+ }
2183
+ else {
2184
+ coff = numerator * reciprocal;
2185
+ }
2186
+ return coff;
2187
+ }
2188
+ /** create a matrix from a quaternion.
2189
+ * WARNING: There is frequent confusion over whether a "from quaternion" matrix is organized by rows and columns.
2190
+ * WARNING: If you find that the matrix seems to rotate by the opposite angle expect it, transpose it.
2191
+ */
2192
+ static createFromQuaternion(quat) {
2193
+ const qqx = quat.x * quat.x;
2194
+ const qqy = quat.y * quat.y;
2195
+ const qqz = quat.z * quat.z;
2196
+ const qqw = quat.w * quat.w;
2197
+ const mag2 = qqx + qqy + qqz + qqw;
2198
+ if (mag2 === 0.0) {
2199
+ return Matrix3d.createIdentity();
2200
+ }
2201
+ else {
2202
+ const a = 1.0 / mag2;
2203
+ const matrix = Matrix3d.createRowValues(a * (qqw + qqx - qqy - qqz), 2.0 * a * (quat.w * quat.z + quat.x * quat.y), 2.0 * a * (quat.x * quat.z - quat.w * quat.y), 2.0 * a * (quat.x * quat.y - quat.w * quat.z), a * (qqw - qqx + qqy - qqz), 2.0 * a * (quat.w * quat.x + quat.y * quat.z), 2.0 * a * (quat.x * quat.z + quat.w * quat.y), 2.0 * a * (quat.y * quat.z - quat.w * quat.x), a * (qqw - qqx - qqy + qqz));
2204
+ return matrix;
2205
+ }
2206
+ }
2207
+ /** convert the matrix to a quaternion.
2208
+ * @note This calculation requires the matrix to have unit length rows and columns.
2209
+ * WARNING: There is frequent confusion over whether a "from quaternion" matrix is organized by rows and columns.
2210
+ * WARNING: If you find that the matrix seems to rotate by the opposite angle expect it, transpose it.
2211
+ */
2212
+ toQuaternion() {
2213
+ const result = Point4d.createZero();
2214
+ const props = [[this.coffs[0], this.coffs[3], this.coffs[6]],
2215
+ [this.coffs[1], this.coffs[4], this.coffs[7]],
2216
+ [this.coffs[2], this.coffs[5], this.coffs[8]]];
2217
+ const xx = props[0][0];
2218
+ const yy = props[1][1];
2219
+ const zz = props[2][2];
2220
+ const dSum = [];
2221
+ let denom, maxIndex, i;
2222
+ dSum[0] = 1.0 + xx - yy - zz;
2223
+ dSum[1] = 1.0 - xx + yy - zz;
2224
+ dSum[2] = 1.0 - xx - yy + zz;
2225
+ dSum[3] = 1.0 + xx + yy + zz;
2226
+ maxIndex = 0;
2227
+ for (i = 1; i < 4; i++) {
2228
+ if (dSum[i] > dSum[maxIndex])
2229
+ maxIndex = i;
2230
+ }
2231
+ if (maxIndex === 0) {
2232
+ result.x = 0.5 * Math.sqrt(dSum[0]);
2233
+ denom = 1.0 / (4.0 * result.x);
2234
+ result.y = Matrix3d.computeQuatTerm(props[0][1] + props[1][0], result.x, denom, dSum[1]);
2235
+ result.z = Matrix3d.computeQuatTerm(props[0][2] + props[2][0], result.x, denom, dSum[2]);
2236
+ result.w = Matrix3d.computeQuatTerm(props[2][1] - props[1][2], result.x, denom, dSum[3]);
2237
+ }
2238
+ else if (maxIndex === 1) {
2239
+ result.y = 0.5 * Math.sqrt(dSum[1]);
2240
+ denom = 1.0 / (4.0 * result.y);
2241
+ result.x = Matrix3d.computeQuatTerm(props[0][1] + props[1][0], result.y, denom, dSum[0]);
2242
+ result.z = Matrix3d.computeQuatTerm(props[1][2] + props[2][1], result.y, denom, dSum[2]);
2243
+ result.w = Matrix3d.computeQuatTerm(props[0][2] - props[2][0], result.y, denom, dSum[3]);
2244
+ }
2245
+ else if (maxIndex === 2) {
2246
+ result.z = 0.5 * Math.sqrt(dSum[2]);
2247
+ denom = 1.0 / (4.0 * result.z);
2248
+ result.x = Matrix3d.computeQuatTerm(props[0][2] + props[2][0], result.z, denom, dSum[0]);
2249
+ result.y = Matrix3d.computeQuatTerm(props[1][2] + props[2][1], result.z, denom, dSum[1]);
2250
+ result.w = Matrix3d.computeQuatTerm(props[1][0] - props[0][1], result.z, denom, dSum[3]);
2251
+ }
2252
+ else {
2253
+ result.w = 0.5 * Math.sqrt(dSum[3]);
2254
+ denom = 1.0 / (4.0 * result.w);
2255
+ result.x = Matrix3d.computeQuatTerm(props[2][1] - props[1][2], result.w, denom, dSum[0]);
2256
+ result.y = Matrix3d.computeQuatTerm(props[0][2] - props[2][0], result.w, denom, dSum[1]);
2257
+ result.z = Matrix3d.computeQuatTerm(props[1][0] - props[0][1], result.w, denom, dSum[2]);
2258
+ }
2259
+ return result;
2260
+ }
2261
+ }
2262
+ /** Control flag for whether this class uses cached inverse of matrices. */
2263
+ Matrix3d.useCachedInverse = true; // cached inverse can be suppressed for testing.
2264
+ /** total number of times a cached inverse was used to avoid recompute */
2265
+ Matrix3d.numUseCache = 0;
2266
+ /** total number of times a cached inverse was computed. */
2267
+ Matrix3d.numComputeCache = 0;
2268
+ Matrix3d._productBuffer = new Float64Array(9);
2269
+ //# sourceMappingURL=Matrix3d.js.map