@itwin/core-geometry 3.5.0-dev.7 → 3.6.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/CHANGELOG.md +65 -1
  2. package/lib/cjs/Geometry.d.ts +26 -10
  3. package/lib/cjs/Geometry.d.ts.map +1 -1
  4. package/lib/cjs/Geometry.js +32 -17
  5. package/lib/cjs/Geometry.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve.d.ts +11 -5
  7. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurve.js +47 -18
  9. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  10. package/lib/cjs/bspline/BezierCurveBase.d.ts +10 -3
  11. package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BezierCurveBase.js +12 -4
  13. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  14. package/lib/cjs/bspline/InterpolationCurve3d.d.ts.map +1 -1
  15. package/lib/cjs/bspline/InterpolationCurve3d.js +4 -1
  16. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  17. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  18. package/lib/cjs/bspline/KnotVector.js +3 -0
  19. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  20. package/lib/cjs/curve/Arc3d.d.ts +10 -4
  21. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  22. package/lib/cjs/curve/Arc3d.js +17 -5
  23. package/lib/cjs/curve/Arc3d.js.map +1 -1
  24. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +15 -7
  25. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  26. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +46 -29
  27. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  28. package/lib/cjs/curve/CurveCollection.d.ts +13 -4
  29. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  30. package/lib/cjs/curve/CurveCollection.js +23 -2
  31. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  32. package/lib/cjs/curve/CurveCurveIntersectXY.js +1 -1
  33. package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -1
  34. package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts +4 -3
  35. package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts.map +1 -1
  36. package/lib/cjs/curve/CurveCurveIntersectXYZ.js +8 -6
  37. package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +1 -1
  38. package/lib/cjs/curve/CurvePrimitive.d.ts +20 -18
  39. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  40. package/lib/cjs/curve/CurvePrimitive.js +58 -339
  41. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  42. package/lib/cjs/curve/LineSegment3d.d.ts +8 -2
  43. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  44. package/lib/cjs/curve/LineSegment3d.js +9 -0
  45. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  46. package/lib/cjs/curve/LineString3d.d.ts +18 -2
  47. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  48. package/lib/cjs/curve/LineString3d.js +39 -23
  49. package/lib/cjs/curve/LineString3d.js.map +1 -1
  50. package/lib/cjs/curve/ProxyCurve.d.ts +9 -7
  51. package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
  52. package/lib/cjs/curve/ProxyCurve.js +4 -0
  53. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  54. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +2 -1
  55. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  56. package/lib/cjs/curve/Query/PlanarSubdivision.js +5 -4
  57. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  58. package/lib/cjs/curve/RegionOps.d.ts +5 -0
  59. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  60. package/lib/cjs/curve/RegionOps.js +17 -3
  61. package/lib/cjs/curve/RegionOps.js.map +1 -1
  62. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +9 -6
  63. package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  64. package/lib/cjs/curve/RegionOpsClassificationSweeps.js +55 -47
  65. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  66. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +55 -0
  67. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -0
  68. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +143 -0
  69. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -0
  70. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts +43 -0
  71. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -0
  72. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +146 -0
  73. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -0
  74. package/lib/cjs/curve/internalContexts/CurveLengthContext.d.ts +33 -0
  75. package/lib/cjs/curve/internalContexts/CurveLengthContext.d.ts.map +1 -0
  76. package/lib/cjs/curve/internalContexts/CurveLengthContext.js +91 -0
  77. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -0
  78. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +21 -0
  79. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +1 -0
  80. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +34 -0
  81. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -0
  82. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +31 -8
  83. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  84. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js +77 -12
  85. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  86. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +2 -2
  87. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  88. package/lib/cjs/curve/spiral/DirectSpiral3d.js +15 -8
  89. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  90. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +12 -7
  91. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  92. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +12 -3
  93. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  94. package/lib/cjs/geometry3d/Angle.d.ts +66 -42
  95. package/lib/cjs/geometry3d/Angle.d.ts.map +1 -1
  96. package/lib/cjs/geometry3d/Angle.js +201 -99
  97. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  98. package/lib/cjs/geometry3d/AngleSweep.d.ts +102 -60
  99. package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
  100. package/lib/cjs/geometry3d/AngleSweep.js +191 -106
  101. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  102. package/lib/cjs/geometry3d/Matrix3d.d.ts +25 -8
  103. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  104. package/lib/cjs/geometry3d/Matrix3d.js +67 -15
  105. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  106. package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts +1 -0
  107. package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
  108. package/lib/cjs/geometry3d/Point2dArrayCarrier.js +2 -1
  109. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  110. package/lib/cjs/geometry3d/Point2dVector2d.d.ts +86 -25
  111. package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -1
  112. package/lib/cjs/geometry3d/Point2dVector2d.js +230 -81
  113. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  114. package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts +14 -4
  115. package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
  116. package/lib/cjs/geometry3d/Point3dArrayCarrier.js +15 -5
  117. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  118. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +121 -67
  119. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  120. package/lib/cjs/geometry3d/Point3dVector3d.js +318 -137
  121. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  122. package/lib/cjs/geometry3d/Range.d.ts +1 -2
  123. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  124. package/lib/cjs/geometry3d/Range.js +1 -2
  125. package/lib/cjs/geometry3d/Range.js.map +1 -1
  126. package/lib/cjs/geometry3d/Ray3d.d.ts +5 -5
  127. package/lib/cjs/geometry3d/Ray3d.js +5 -5
  128. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  129. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  130. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  131. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  132. package/lib/cjs/numerics/Polynomials.js +0 -1
  133. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  134. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts +4 -4
  135. package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  136. package/lib/cjs/polyface/IndexedEdgeMatcher.js +3 -3
  137. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  138. package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  139. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  140. package/lib/cjs/polyface/Polyface.d.ts +7 -2
  141. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  142. package/lib/cjs/polyface/Polyface.js +8 -1
  143. package/lib/cjs/polyface/Polyface.js.map +1 -1
  144. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  145. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  146. package/lib/cjs/polyface/PolyfaceQuery.d.ts +36 -8
  147. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  148. package/lib/cjs/polyface/PolyfaceQuery.js +112 -31
  149. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  150. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  151. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  152. package/lib/cjs/serialization/IModelJsonSchema.d.ts +1 -1
  153. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  154. package/lib/cjs/serialization/IModelJsonSchema.js +4 -3
  155. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  156. package/lib/cjs/solid/Sphere.d.ts +1 -1
  157. package/lib/cjs/solid/Sphere.js +3 -3
  158. package/lib/cjs/solid/Sphere.js.map +1 -1
  159. package/lib/cjs/solid/TorusPipe.d.ts +17 -13
  160. package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
  161. package/lib/cjs/solid/TorusPipe.js +67 -38
  162. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  163. package/lib/cjs/topology/Graph.d.ts +1 -1
  164. package/lib/cjs/topology/Graph.js +1 -1
  165. package/lib/cjs/topology/Graph.js.map +1 -1
  166. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  167. package/lib/cjs/topology/Merging.js +9 -1
  168. package/lib/cjs/topology/Merging.js.map +1 -1
  169. package/lib/cjs/topology/Triangulation.d.ts +1 -1
  170. package/lib/cjs/topology/Triangulation.js +1 -1
  171. package/lib/cjs/topology/Triangulation.js.map +1 -1
  172. package/lib/esm/Geometry.d.ts +26 -10
  173. package/lib/esm/Geometry.d.ts.map +1 -1
  174. package/lib/esm/Geometry.js +32 -17
  175. package/lib/esm/Geometry.js.map +1 -1
  176. package/lib/esm/bspline/BSplineCurve.d.ts +11 -5
  177. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  178. package/lib/esm/bspline/BSplineCurve.js +47 -18
  179. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  180. package/lib/esm/bspline/BezierCurveBase.d.ts +10 -3
  181. package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -1
  182. package/lib/esm/bspline/BezierCurveBase.js +12 -4
  183. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  184. package/lib/esm/bspline/InterpolationCurve3d.d.ts.map +1 -1
  185. package/lib/esm/bspline/InterpolationCurve3d.js +4 -1
  186. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  187. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  188. package/lib/esm/bspline/KnotVector.js +3 -0
  189. package/lib/esm/bspline/KnotVector.js.map +1 -1
  190. package/lib/esm/curve/Arc3d.d.ts +10 -4
  191. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  192. package/lib/esm/curve/Arc3d.js +17 -5
  193. package/lib/esm/curve/Arc3d.js.map +1 -1
  194. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +15 -7
  195. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  196. package/lib/esm/curve/CurveChainWithDistanceIndex.js +46 -29
  197. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  198. package/lib/esm/curve/CurveCollection.d.ts +13 -4
  199. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  200. package/lib/esm/curve/CurveCollection.js +23 -2
  201. package/lib/esm/curve/CurveCollection.js.map +1 -1
  202. package/lib/esm/curve/CurveCurveIntersectXY.js +1 -1
  203. package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -1
  204. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts +4 -3
  205. package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts.map +1 -1
  206. package/lib/esm/curve/CurveCurveIntersectXYZ.js +8 -6
  207. package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +1 -1
  208. package/lib/esm/curve/CurvePrimitive.d.ts +20 -18
  209. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  210. package/lib/esm/curve/CurvePrimitive.js +52 -333
  211. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  212. package/lib/esm/curve/LineSegment3d.d.ts +8 -2
  213. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  214. package/lib/esm/curve/LineSegment3d.js +9 -0
  215. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  216. package/lib/esm/curve/LineString3d.d.ts +18 -2
  217. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  218. package/lib/esm/curve/LineString3d.js +39 -23
  219. package/lib/esm/curve/LineString3d.js.map +1 -1
  220. package/lib/esm/curve/ProxyCurve.d.ts +9 -7
  221. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
  222. package/lib/esm/curve/ProxyCurve.js +4 -0
  223. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  224. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +2 -1
  225. package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  226. package/lib/esm/curve/Query/PlanarSubdivision.js +5 -4
  227. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  228. package/lib/esm/curve/RegionOps.d.ts +5 -0
  229. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  230. package/lib/esm/curve/RegionOps.js +17 -3
  231. package/lib/esm/curve/RegionOps.js.map +1 -1
  232. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +9 -6
  233. package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
  234. package/lib/esm/curve/RegionOpsClassificationSweeps.js +56 -48
  235. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  236. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +55 -0
  237. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -0
  238. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +139 -0
  239. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -0
  240. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts +43 -0
  241. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -0
  242. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +142 -0
  243. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -0
  244. package/lib/esm/curve/internalContexts/CurveLengthContext.d.ts +33 -0
  245. package/lib/esm/curve/internalContexts/CurveLengthContext.d.ts.map +1 -0
  246. package/lib/esm/curve/internalContexts/CurveLengthContext.js +87 -0
  247. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -0
  248. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +21 -0
  249. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +1 -0
  250. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +30 -0
  251. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -0
  252. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +31 -8
  253. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -1
  254. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +77 -12
  255. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  256. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +2 -2
  257. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  258. package/lib/esm/curve/spiral/DirectSpiral3d.js +15 -8
  259. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  260. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +12 -7
  261. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  262. package/lib/esm/curve/spiral/TransitionSpiral3d.js +12 -3
  263. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  264. package/lib/esm/geometry3d/Angle.d.ts +66 -42
  265. package/lib/esm/geometry3d/Angle.d.ts.map +1 -1
  266. package/lib/esm/geometry3d/Angle.js +201 -99
  267. package/lib/esm/geometry3d/Angle.js.map +1 -1
  268. package/lib/esm/geometry3d/AngleSweep.d.ts +102 -60
  269. package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
  270. package/lib/esm/geometry3d/AngleSweep.js +191 -106
  271. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  272. package/lib/esm/geometry3d/Matrix3d.d.ts +25 -8
  273. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  274. package/lib/esm/geometry3d/Matrix3d.js +67 -15
  275. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  276. package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts +1 -0
  277. package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts.map +1 -1
  278. package/lib/esm/geometry3d/Point2dArrayCarrier.js +2 -1
  279. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  280. package/lib/esm/geometry3d/Point2dVector2d.d.ts +86 -25
  281. package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -1
  282. package/lib/esm/geometry3d/Point2dVector2d.js +230 -81
  283. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  284. package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts +14 -4
  285. package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -1
  286. package/lib/esm/geometry3d/Point3dArrayCarrier.js +15 -5
  287. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  288. package/lib/esm/geometry3d/Point3dVector3d.d.ts +121 -67
  289. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  290. package/lib/esm/geometry3d/Point3dVector3d.js +318 -137
  291. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  292. package/lib/esm/geometry3d/Range.d.ts +1 -2
  293. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  294. package/lib/esm/geometry3d/Range.js +1 -2
  295. package/lib/esm/geometry3d/Range.js.map +1 -1
  296. package/lib/esm/geometry3d/Ray3d.d.ts +5 -5
  297. package/lib/esm/geometry3d/Ray3d.js +5 -5
  298. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  299. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  300. package/lib/esm/geometry3d/Transform.js.map +1 -1
  301. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  302. package/lib/esm/numerics/Polynomials.js +0 -1
  303. package/lib/esm/numerics/Polynomials.js.map +1 -1
  304. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +4 -4
  305. package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -1
  306. package/lib/esm/polyface/IndexedEdgeMatcher.js +3 -3
  307. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  308. package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -1
  309. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  310. package/lib/esm/polyface/Polyface.d.ts +7 -2
  311. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  312. package/lib/esm/polyface/Polyface.js +8 -1
  313. package/lib/esm/polyface/Polyface.js.map +1 -1
  314. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  315. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  316. package/lib/esm/polyface/PolyfaceQuery.d.ts +36 -8
  317. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  318. package/lib/esm/polyface/PolyfaceQuery.js +113 -32
  319. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  320. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  321. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  322. package/lib/esm/serialization/IModelJsonSchema.d.ts +1 -1
  323. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  324. package/lib/esm/serialization/IModelJsonSchema.js +4 -3
  325. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  326. package/lib/esm/solid/Sphere.d.ts +1 -1
  327. package/lib/esm/solid/Sphere.js +3 -3
  328. package/lib/esm/solid/Sphere.js.map +1 -1
  329. package/lib/esm/solid/TorusPipe.d.ts +17 -13
  330. package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
  331. package/lib/esm/solid/TorusPipe.js +67 -38
  332. package/lib/esm/solid/TorusPipe.js.map +1 -1
  333. package/lib/esm/topology/Graph.d.ts +1 -1
  334. package/lib/esm/topology/Graph.js +1 -1
  335. package/lib/esm/topology/Graph.js.map +1 -1
  336. package/lib/esm/topology/Merging.d.ts.map +1 -1
  337. package/lib/esm/topology/Merging.js +9 -1
  338. package/lib/esm/topology/Merging.js.map +1 -1
  339. package/lib/esm/topology/Triangulation.d.ts +1 -1
  340. package/lib/esm/topology/Triangulation.js +1 -1
  341. package/lib/esm/topology/Triangulation.js.map +1 -1
  342. package/package.json +5 -5
@@ -143,12 +143,12 @@ export declare class Ray3d implements BeJSONFunctions {
143
143
  */
144
144
  static closestApproachRay3dRay3d(rayA: Ray3d, rayB: Ray3d): CurveLocationDetailPair;
145
145
  /**
146
- * Return a ray whose ray.origin is interpolated, and ray.direction is the vector between points with a
147
- * scale factor applied.
148
- * @param pt1 start point of interpolation
146
+ * Return a ray with `ray.origin` interpolated between pt1 and pt2 at the given fraction
147
+ * and `ray.direction` set to the vector from pt1 to pt2 multiplied by the given scale factor.
148
+ * @param pt1 start point of interpolation.
149
149
  * @param fraction fractional position between points.
150
- * @param pt2 endpoint of interpolation
151
- * @param tangentScale scale factor to apply to the startToEnd vector
150
+ * @param pt2 endpoint of interpolation.
151
+ * @param tangentScale scale factor to apply to the startToEnd vector.
152
152
  * @param result optional receiver.
153
153
  */
154
154
  static interpolatePointAndTangent(pt1: XYAndZ, fraction: number, pt2: XYAndZ, tangentScale: number, result?: Ray3d): Ray3d;
@@ -322,12 +322,12 @@ export class Ray3d {
322
322
  return pair;
323
323
  }
324
324
  /**
325
- * Return a ray whose ray.origin is interpolated, and ray.direction is the vector between points with a
326
- * scale factor applied.
327
- * @param pt1 start point of interpolation
325
+ * Return a ray with `ray.origin` interpolated between pt1 and pt2 at the given fraction
326
+ * and `ray.direction` set to the vector from pt1 to pt2 multiplied by the given scale factor.
327
+ * @param pt1 start point of interpolation.
328
328
  * @param fraction fractional position between points.
329
- * @param pt2 endpoint of interpolation
330
- * @param tangentScale scale factor to apply to the startToEnd vector
329
+ * @param pt2 endpoint of interpolation.
330
+ * @param tangentScale scale factor to apply to the startToEnd vector.
331
331
  * @param result optional receiver.
332
332
  */
333
333
  static interpolatePointAndTangent(pt1, fraction, pt2, tangentScale, result) {
@@ -1 +1 @@
1
- {"version":3,"file":"Ray3d.js","sourceRoot":"","sources":["../../../src/geometry3d/Ray3d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\nimport { CurveCurveApproachType, CurveLocationDetail, CurveLocationDetailPair } from \"../curve/CurveLocationDetail\";\r\nimport { AxisOrder, BeJSONFunctions, Geometry } from \"../Geometry\";\r\nimport { SmallSystem } from \"../numerics/Polynomials\";\r\nimport { Matrix3d } from \"./Matrix3d\";\r\nimport { Plane3dByOriginAndUnitNormal } from \"./Plane3dByOriginAndUnitNormal\";\r\nimport { Vector2d } from \"./Point2dVector2d\";\r\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\r\nimport { Range1d, Range3d } from \"./Range\";\r\nimport { Transform } from \"./Transform\";\r\nimport { XYAndZ } from \"./XYZProps\";\r\n\r\n/** A Ray3d contains\r\n * * an origin point.\r\n * * a direction vector. The vector is NOT required to be normalized.\r\n * * an optional weight (number).\r\n * @public\r\n */\r\nexport class Ray3d implements BeJSONFunctions {\r\n /** The ray origin */\r\n public origin: Point3d;\r\n /** The ray direction. This is commonly (but not always) a unit vector. */\r\n public direction: Vector3d;\r\n /** Numeric annotation. */\r\n public a?: number; // optional, e.g. weight.\r\n // constructor captures references !!!\r\n private constructor(origin: Point3d, direction: Vector3d) {\r\n this.origin = origin;\r\n this.direction = direction;\r\n this.a = undefined;\r\n }\r\n private static _create(x: number, y: number, z: number, u: number, v: number, w: number) {\r\n return new Ray3d(Point3d.create(x, y, z), Vector3d.create(u, v, w));\r\n }\r\n /** Create a ray on the x axis. */\r\n public static createXAxis(): Ray3d { return Ray3d._create(0, 0, 0, 1, 0, 0); }\r\n /** Create a ray on the y axis. */\r\n public static createYAxis(): Ray3d { return Ray3d._create(0, 0, 0, 0, 1, 0); }\r\n /** Create a ray on the z axis. */\r\n public static createZAxis(): Ray3d { return Ray3d._create(0, 0, 0, 0, 0, 1); }\r\n /** Create a ray with all zeros. */\r\n public static createZero(result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.origin.setZero();\r\n result.direction.setZero();\r\n return result;\r\n }\r\n return new Ray3d(Point3d.createZero(), Vector3d.createZero());\r\n }\r\n /** Test for nearly equal rays. */\r\n public isAlmostEqual(other: Ray3d): boolean {\r\n return this.origin.isAlmostEqual(other.origin) && this.direction.isAlmostEqual(other.direction);\r\n }\r\n /** Create a ray from origin and direction. */\r\n public static create(origin: Point3d, direction: Vector3d, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.set(origin, direction);\r\n return result;\r\n }\r\n return new Ray3d(origin.clone(), direction.clone());\r\n }\r\n /**\r\n * Given a homogeneous point and its derivative components, construct a Ray3d with cartesian coordinates and derivatives.\r\n * @param weightedPoint `[x,y,z,w]` parts of weighted point.\r\n * @param weightedDerivative `[x,y,z,w]` derivatives\r\n * @param result\r\n */\r\n public static createWeightedDerivative(weightedPoint: Float64Array, weightedDerivative: Float64Array, result?: Ray3d): Ray3d | undefined {\r\n const w = weightedPoint[3];\r\n const dw = weightedDerivative[3];\r\n const x = weightedPoint[0];\r\n const y = weightedPoint[1];\r\n const z = weightedPoint[2];\r\n const dx = weightedDerivative[0] * w - weightedPoint[0] * dw;\r\n const dy = weightedDerivative[1] * w - weightedPoint[1] * dw;\r\n const dz = weightedDerivative[2] * w - weightedPoint[2] * dw;\r\n if (Geometry.isSmallMetricDistance(w))\r\n return undefined;\r\n const divW = 1.0 / w;\r\n const divWW = divW * divW;\r\n return Ray3d.createXYZUVW(x * divW, y * divW, z * divW, dx * divWW, dy * divWW, dz * divWW, result);\r\n }\r\n /** Create from coordinates of the origin and direction. */\r\n public static createXYZUVW(originX: number, originY: number, originZ: number, directionX: number, directionY: number, directionZ: number, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.getOriginRef().set(originX, originY, originZ);\r\n result.getDirectionRef().set(directionX, directionY, directionZ);\r\n return result;\r\n }\r\n return new Ray3d(Point3d.create(originX, originY, originZ), Vector3d.create(directionX, directionY, directionZ));\r\n }\r\n /** Capture origin and direction in a new Ray3d. */\r\n public static createCapture(origin: Point3d, direction: Vector3d): Ray3d {\r\n return new Ray3d(origin, direction);\r\n }\r\n /** Create from (clones of) origin, direction, and numeric weight. */\r\n public static createPointVectorNumber(origin: Point3d, direction: Vector3d, a: number, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.origin.setFrom(origin);\r\n result.direction.setFrom(direction);\r\n result.a = a;\r\n return result;\r\n }\r\n result = new Ray3d(origin.clone(), direction.clone());\r\n result.a = a;\r\n return result;\r\n }\r\n /** Create from origin and target. The direction vector is the full length (non-unit) vector from origin to target. */\r\n public static createStartEnd(origin: Point3d, target: Point3d, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.origin.setFrom(origin);\r\n result.direction.setStartEnd(origin, target);\r\n return result;\r\n }\r\n return new Ray3d(origin.clone(), Vector3d.createStartEnd(origin, target));\r\n }\r\n /** Return a reference to the ray's origin. */\r\n public getOriginRef(): Point3d { return this.origin; }\r\n /** Return a reference to the ray's direction vector. */\r\n public getDirectionRef(): Vector3d { return this.direction; }\r\n /** copy coordinates from origin and direction. */\r\n public set(origin: Point3d, direction: Vector3d): void {\r\n this.origin.setFrom(origin);\r\n this.direction.setFrom(direction);\r\n }\r\n /** Clone the ray. */\r\n public clone(result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.set(this.origin.clone(), this.direction.clone());\r\n return result;\r\n }\r\n return new Ray3d(this.origin.clone(), this.direction.clone());\r\n }\r\n /** Create a clone and return the transform of the clone. */\r\n public cloneTransformed(transform: Transform): Ray3d {\r\n return new Ray3d(transform.multiplyPoint3d(this.origin), transform.multiplyVector(this.direction));\r\n }\r\n\r\n /** Create a clone and return the inverse transform of the clone. */\r\n public cloneInverseTransformed(transform: Transform): Ray3d | undefined {\r\n const origin = transform.multiplyInversePoint3d(this.origin);\r\n const direction = transform.matrix.multiplyInverseXYZAsVector3d(this.direction.x, this.direction.y, this.direction.z);\r\n if (undefined !== origin && undefined !== direction)\r\n return new Ray3d(origin, direction);\r\n return undefined;\r\n }\r\n\r\n /** Apply a transform in place. */\r\n public transformInPlace(transform: Transform) {\r\n transform.multiplyPoint3d(this.origin, this.origin);\r\n transform.multiplyVector(this.direction, this.direction);\r\n }\r\n /** Copy data from another ray. */\r\n public setFrom(source: Ray3d): void { this.set(source.origin, source.direction); }\r\n /** * fraction 0 is the ray origin.\r\n * * fraction 1 is at the end of the direction vector when placed at the origin.\r\n * @returns Return a point at fractional position along the ray.\r\n */\r\n public fractionToPoint(fraction: number, result?: Point3d): Point3d { return this.origin.plusScaled(this.direction, fraction, result); }\r\n /** Return the dot product of the ray's direction vector with a vector from the ray origin to the space point. */\r\n public dotProductToPoint(spacePoint: Point3d): number { return this.direction.dotProductStartEnd(this.origin, spacePoint); }\r\n /**\r\n * Return the fractional coordinate (along the direction vector) of the spacePoint projected to the ray.\r\n */\r\n public pointToFraction(spacePoint: Point3d): number {\r\n return Geometry.safeDivideFraction(this.direction.dotProductStartEnd(this.origin, spacePoint), this.direction.magnitudeSquared(), 0);\r\n }\r\n /**\r\n *\r\n * Return the spacePoint projected onto the ray.\r\n */\r\n public projectPointToRay(spacePoint: Point3d): Point3d {\r\n return this.origin.plusScaled(this.direction, this.pointToFraction(spacePoint));\r\n }\r\n /** Return a transform for rigid axes\r\n * at ray origin with z in ray direction. If the direction vector is zero, axes default to identity (from createHeadsUpTriad)\r\n */\r\n public toRigidZFrame(): Transform | undefined {\r\n const axes = Matrix3d.createRigidHeadsUp(this.direction, AxisOrder.ZXY);\r\n return Transform.createOriginAndMatrix(this.origin, axes);\r\n }\r\n /**\r\n * Convert {origin:[x,y,z], direction:[u,v,w]} to a Ray3d.\r\n */\r\n public setFromJSON(json?: any) {\r\n if (!json) {\r\n this.origin.set(0, 0, 0);\r\n this.direction.set(0, 0, 1);\r\n return;\r\n }\r\n this.origin.setFromJSON(json.origin);\r\n this.direction.setFromJSON(json.direction);\r\n }\r\n /**\r\n * try to scale the direction vector to a given magnitude.\r\n * @returns Returns false if ray direction is a zero vector.\r\n */\r\n public trySetDirectionMagnitudeInPlace(magnitude: number = 1.0): boolean {\r\n if (this.direction.tryNormalizeInPlace()) {\r\n this.direction.scaleInPlace(magnitude);\r\n return true;\r\n }\r\n this.direction.setZero();\r\n this.a = 0.0;\r\n return false;\r\n }\r\n /**\r\n * * If parameter `a` is clearly nonzero and the direction vector can be normalized,\r\n * * save the parameter `a` as the optional `a` member of the ray.\r\n * * normalize the ray's direction vector\r\n * * If parameter `a` is nearly zero,\r\n * * Set the `a` member to zero\r\n * * Set the ray's direction vector to zero.\r\n * @param a area to be saved.\r\n */\r\n // input a ray and \"a\" understood as an area.\r\n // if a is clearly nonzero metric squared and the vector can be normalized, install those and return true.\r\n // otherwise set ray.z to zero and zero the vector of the ray and return false.\r\n public tryNormalizeInPlaceWithAreaWeight(a: number): boolean {\r\n const tolerance = Geometry.smallMetricDistanceSquared;\r\n this.a = a;\r\n if (Math.abs(a) > tolerance && this.direction.tryNormalizeInPlace(tolerance))\r\n return true;\r\n this.direction.setZero();\r\n this.a = 0.0;\r\n return false;\r\n }\r\n /**\r\n * Convert an Angle to a JSON object.\r\n * @return {*} [origin,normal]\r\n */\r\n public toJSON(): any { return { origin: this.origin.toJSON(), direction: this.direction.toJSON() }; }\r\n /** Create a new ray from json object. See `setFromJSON` for json structure; */\r\n public static fromJSON(json?: any) {\r\n const result = Ray3d.createXAxis();\r\n result.setFromJSON(json);\r\n return result;\r\n }\r\n /** return distance from the ray to point in space */\r\n public distance(spacePoint: Point3d): number {\r\n const uu = this.direction.magnitudeSquared();\r\n const uv = this.dotProductToPoint(spacePoint);\r\n const aa = Geometry.inverseMetricDistanceSquared(uu);\r\n if (aa)\r\n return Math.sqrt(this.origin.distanceSquared(spacePoint) - uv * uv * aa);\r\n else\r\n return Math.sqrt(this.origin.distanceSquared(spacePoint));\r\n }\r\n /**\r\n * Return the intersection of the unbounded ray with a plane.\r\n * Stores the point of intersection in the result point given as a parameter,\r\n * and returns the parameter along the ray where the intersection occurs.\r\n * Returns undefined if the ray and plane are parallel or coplanar.\r\n */\r\n public intersectionWithPlane(plane: Plane3dByOriginAndUnitNormal, result?: Point3d): number | undefined {\r\n const vectorA = Vector3d.createStartEnd(plane.getOriginRef(), this.origin);\r\n const uDotN = this.direction.dotProduct(plane.getNormalRef());\r\n const nDotN = this.direction.magnitudeSquared();\r\n const aDotN = vectorA.dotProduct(plane.getNormalRef());\r\n const division = Geometry.conditionalDivideFraction(-aDotN, uDotN);\r\n if (undefined === division)\r\n return undefined;\r\n const division1 = Geometry.conditionalDivideFraction(nDotN, uDotN);\r\n if (undefined === division1)\r\n return undefined;\r\n if (result) {\r\n this.origin.plusScaled(this.direction, division, result);\r\n }\r\n return division;\r\n }\r\n\r\n /**\r\n * * Find intersection of the ray with a Range3d.\r\n * * return the range of fractions (on the ray) which are \"inside\" the range.\r\n * * Note that a range is always returned; if there is no intersection it is indicated by the test `result.sNull`\r\n */\r\n public intersectionWithRange3d(range: Range3d, result?: Range1d): Range1d {\r\n if (range.isNull)\r\n return Range1d.createNull(result);\r\n const interval = Range1d.createXX(-Geometry.largeCoordinateResult, Geometry.largeCoordinateResult, result);\r\n if (interval.clipLinearMapToInterval(this.origin.x, this.direction.x, range.low.x, range.high.x)\r\n && interval.clipLinearMapToInterval(this.origin.y, this.direction.y, range.low.y, range.high.y)\r\n && interval.clipLinearMapToInterval(this.origin.z, this.direction.z, range.low.z, range.high.z))\r\n return interval;\r\n return interval;\r\n }\r\n\r\n /** Construct a vector from `ray.origin` to target point.\r\n * * return the part of the vector that is perpendicular to `ray.direction`.\r\n * * i.e. return the shortest vector from the ray to the point.\r\n */\r\n public perpendicularPartOfVectorToTarget(targetPoint: XYAndZ, result?: Vector3d): Vector3d {\r\n const vectorV = Vector3d.createStartEnd(this.origin, targetPoint);\r\n const uu = this.direction.magnitudeSquared();\r\n const uv = this.direction.dotProductStartEnd(this.origin, targetPoint);\r\n const fraction = Geometry.safeDivideFraction(uv, uu, 0.0);\r\n return vectorV.plusScaled(this.direction, -fraction, result);\r\n }\r\n /** Determine if two rays intersect, are fully overlapped, parallel but no coincident, or skew\r\n * * Return a CurveLocationDetailPair which\r\n * * contains fraction and point on each ray.\r\n * * has (in the CurveLocationDetailPair structure, as member approachType) annotation indicating one of these relationships\r\n * * CurveCurveApproachType.Intersection -- the rays have a simple intersection, at fractions indicated in detailA and detailB\r\n * * CurveCurveApproachType.PerpendicularChord -- there is pair of where the rays have closest approach. The rays are skew in space.\r\n * * CurveCurveApproachType.CoincidentGeometry -- the rays are the same unbounded line in space. The fractions and points are a representative single common point.\r\n * * CurveCurveApproachType.Parallel -- the rays are parallel (and not coincident). The two points are at the minimum distance\r\n */\r\n public static closestApproachRay3dRay3d(rayA: Ray3d, rayB: Ray3d): CurveLocationDetailPair {\r\n const intersectionFractions = Vector2d.create();\r\n let fractionA, fractionB;\r\n let pointA, pointB;\r\n let pairType;\r\n if (SmallSystem.ray3dXYZUVWClosestApproachUnbounded(\r\n rayA.origin.x, rayA.origin.y, rayA.origin.z, rayA.direction.x, rayA.direction.y, rayA.direction.z,\r\n rayB.origin.x, rayB.origin.y, rayB.origin.z, rayB.direction.x, rayB.direction.y, rayB.direction.z, intersectionFractions)) {\r\n fractionA = intersectionFractions.x;\r\n fractionB = intersectionFractions.y;\r\n pointA = rayA.fractionToPoint(fractionA);\r\n pointB = rayB.fractionToPoint(fractionB);\r\n pairType = pointA.isAlmostEqualMetric(pointB) ? CurveCurveApproachType.Intersection : CurveCurveApproachType.PerpendicularChord;\r\n } else {\r\n fractionB = 0.0;\r\n fractionA = rayA.pointToFraction(rayB.origin);\r\n pointA = rayA.fractionToPoint(fractionA);\r\n pointB = rayB.fractionToPoint(fractionB);\r\n pairType = pointA.isAlmostEqualMetric(pointB) ? CurveCurveApproachType.CoincidentGeometry : CurveCurveApproachType.ParallelGeometry;\r\n }\r\n const pair = CurveLocationDetailPair.createCapture(\r\n CurveLocationDetail.createRayFractionPoint(rayA, fractionA, rayA.fractionToPoint(fractionA)),\r\n CurveLocationDetail.createRayFractionPoint(rayB, fractionB, rayB.fractionToPoint(fractionB)));\r\n pair.approachType = pairType;\r\n return pair;\r\n }\r\n\r\n /**\r\n * Return a ray whose ray.origin is interpolated, and ray.direction is the vector between points with a\r\n * scale factor applied.\r\n * @param pt1 start point of interpolation\r\n * @param fraction fractional position between points.\r\n * @param pt2 endpoint of interpolation\r\n * @param tangentScale scale factor to apply to the startToEnd vector\r\n * @param result optional receiver.\r\n */\r\n public static interpolatePointAndTangent(pt1: XYAndZ, fraction: number, pt2: XYAndZ, tangentScale: number, result?: Ray3d): Ray3d {\r\n result = result ?? Ray3d.createZero();\r\n const dx = pt2.x - pt1.x;\r\n const dy = pt2.y - pt1.y;\r\n const dz = pt2.z - pt1.z;\r\n result.direction.set(tangentScale * dx, tangentScale * dy, tangentScale * dz);\r\n if (fraction <= 0.5)\r\n result.origin.set(pt1.x + fraction * dx, pt1.y + fraction * dy, pt1.z + fraction * dz);\r\n else {\r\n const t: number = fraction - 1.0;\r\n result.origin.set(pt2.x + t * dx, pt2.y + t * dy, pt2.z + t * dz);\r\n }\r\n return result;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Ray3d.js","sourceRoot":"","sources":["../../../src/geometry3d/Ray3d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\nimport { CurveCurveApproachType, CurveLocationDetail, CurveLocationDetailPair } from \"../curve/CurveLocationDetail\";\r\nimport { AxisOrder, BeJSONFunctions, Geometry } from \"../Geometry\";\r\nimport { SmallSystem } from \"../numerics/Polynomials\";\r\nimport { Matrix3d } from \"./Matrix3d\";\r\nimport { Plane3dByOriginAndUnitNormal } from \"./Plane3dByOriginAndUnitNormal\";\r\nimport { Vector2d } from \"./Point2dVector2d\";\r\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\r\nimport { Range1d, Range3d } from \"./Range\";\r\nimport { Transform } from \"./Transform\";\r\nimport { XYAndZ } from \"./XYZProps\";\r\n\r\n/** A Ray3d contains\r\n * * an origin point.\r\n * * a direction vector. The vector is NOT required to be normalized.\r\n * * an optional weight (number).\r\n * @public\r\n */\r\nexport class Ray3d implements BeJSONFunctions {\r\n /** The ray origin */\r\n public origin: Point3d;\r\n /** The ray direction. This is commonly (but not always) a unit vector. */\r\n public direction: Vector3d;\r\n /** Numeric annotation. */\r\n public a?: number; // optional, e.g. weight.\r\n // constructor captures references !!!\r\n private constructor(origin: Point3d, direction: Vector3d) {\r\n this.origin = origin;\r\n this.direction = direction;\r\n this.a = undefined;\r\n }\r\n private static _create(x: number, y: number, z: number, u: number, v: number, w: number) {\r\n return new Ray3d(Point3d.create(x, y, z), Vector3d.create(u, v, w));\r\n }\r\n /** Create a ray on the x axis. */\r\n public static createXAxis(): Ray3d { return Ray3d._create(0, 0, 0, 1, 0, 0); }\r\n /** Create a ray on the y axis. */\r\n public static createYAxis(): Ray3d { return Ray3d._create(0, 0, 0, 0, 1, 0); }\r\n /** Create a ray on the z axis. */\r\n public static createZAxis(): Ray3d { return Ray3d._create(0, 0, 0, 0, 0, 1); }\r\n /** Create a ray with all zeros. */\r\n public static createZero(result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.origin.setZero();\r\n result.direction.setZero();\r\n return result;\r\n }\r\n return new Ray3d(Point3d.createZero(), Vector3d.createZero());\r\n }\r\n /** Test for nearly equal rays. */\r\n public isAlmostEqual(other: Ray3d): boolean {\r\n return this.origin.isAlmostEqual(other.origin) && this.direction.isAlmostEqual(other.direction);\r\n }\r\n /** Create a ray from origin and direction. */\r\n public static create(origin: Point3d, direction: Vector3d, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.set(origin, direction);\r\n return result;\r\n }\r\n return new Ray3d(origin.clone(), direction.clone());\r\n }\r\n /**\r\n * Given a homogeneous point and its derivative components, construct a Ray3d with cartesian coordinates and derivatives.\r\n * @param weightedPoint `[x,y,z,w]` parts of weighted point.\r\n * @param weightedDerivative `[x,y,z,w]` derivatives\r\n * @param result\r\n */\r\n public static createWeightedDerivative(weightedPoint: Float64Array, weightedDerivative: Float64Array, result?: Ray3d): Ray3d | undefined {\r\n const w = weightedPoint[3];\r\n const dw = weightedDerivative[3];\r\n const x = weightedPoint[0];\r\n const y = weightedPoint[1];\r\n const z = weightedPoint[2];\r\n const dx = weightedDerivative[0] * w - weightedPoint[0] * dw;\r\n const dy = weightedDerivative[1] * w - weightedPoint[1] * dw;\r\n const dz = weightedDerivative[2] * w - weightedPoint[2] * dw;\r\n if (Geometry.isSmallMetricDistance(w))\r\n return undefined;\r\n const divW = 1.0 / w;\r\n const divWW = divW * divW;\r\n return Ray3d.createXYZUVW(x * divW, y * divW, z * divW, dx * divWW, dy * divWW, dz * divWW, result);\r\n }\r\n /** Create from coordinates of the origin and direction. */\r\n public static createXYZUVW(originX: number, originY: number, originZ: number, directionX: number, directionY: number, directionZ: number, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.getOriginRef().set(originX, originY, originZ);\r\n result.getDirectionRef().set(directionX, directionY, directionZ);\r\n return result;\r\n }\r\n return new Ray3d(Point3d.create(originX, originY, originZ), Vector3d.create(directionX, directionY, directionZ));\r\n }\r\n /** Capture origin and direction in a new Ray3d. */\r\n public static createCapture(origin: Point3d, direction: Vector3d): Ray3d {\r\n return new Ray3d(origin, direction);\r\n }\r\n /** Create from (clones of) origin, direction, and numeric weight. */\r\n public static createPointVectorNumber(origin: Point3d, direction: Vector3d, a: number, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.origin.setFrom(origin);\r\n result.direction.setFrom(direction);\r\n result.a = a;\r\n return result;\r\n }\r\n result = new Ray3d(origin.clone(), direction.clone());\r\n result.a = a;\r\n return result;\r\n }\r\n /** Create from origin and target. The direction vector is the full length (non-unit) vector from origin to target. */\r\n public static createStartEnd(origin: Point3d, target: Point3d, result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.origin.setFrom(origin);\r\n result.direction.setStartEnd(origin, target);\r\n return result;\r\n }\r\n return new Ray3d(origin.clone(), Vector3d.createStartEnd(origin, target));\r\n }\r\n /** Return a reference to the ray's origin. */\r\n public getOriginRef(): Point3d { return this.origin; }\r\n /** Return a reference to the ray's direction vector. */\r\n public getDirectionRef(): Vector3d { return this.direction; }\r\n /** copy coordinates from origin and direction. */\r\n public set(origin: Point3d, direction: Vector3d): void {\r\n this.origin.setFrom(origin);\r\n this.direction.setFrom(direction);\r\n }\r\n /** Clone the ray. */\r\n public clone(result?: Ray3d): Ray3d {\r\n if (result) {\r\n result.set(this.origin.clone(), this.direction.clone());\r\n return result;\r\n }\r\n return new Ray3d(this.origin.clone(), this.direction.clone());\r\n }\r\n /** Create a clone and return the transform of the clone. */\r\n public cloneTransformed(transform: Transform): Ray3d {\r\n return new Ray3d(transform.multiplyPoint3d(this.origin), transform.multiplyVector(this.direction));\r\n }\r\n\r\n /** Create a clone and return the inverse transform of the clone. */\r\n public cloneInverseTransformed(transform: Transform): Ray3d | undefined {\r\n const origin = transform.multiplyInversePoint3d(this.origin);\r\n const direction = transform.matrix.multiplyInverseXYZAsVector3d(this.direction.x, this.direction.y, this.direction.z);\r\n if (undefined !== origin && undefined !== direction)\r\n return new Ray3d(origin, direction);\r\n return undefined;\r\n }\r\n\r\n /** Apply a transform in place. */\r\n public transformInPlace(transform: Transform) {\r\n transform.multiplyPoint3d(this.origin, this.origin);\r\n transform.multiplyVector(this.direction, this.direction);\r\n }\r\n /** Copy data from another ray. */\r\n public setFrom(source: Ray3d): void { this.set(source.origin, source.direction); }\r\n /** * fraction 0 is the ray origin.\r\n * * fraction 1 is at the end of the direction vector when placed at the origin.\r\n * @returns Return a point at fractional position along the ray.\r\n */\r\n public fractionToPoint(fraction: number, result?: Point3d): Point3d { return this.origin.plusScaled(this.direction, fraction, result); }\r\n /** Return the dot product of the ray's direction vector with a vector from the ray origin to the space point. */\r\n public dotProductToPoint(spacePoint: Point3d): number { return this.direction.dotProductStartEnd(this.origin, spacePoint); }\r\n /**\r\n * Return the fractional coordinate (along the direction vector) of the spacePoint projected to the ray.\r\n */\r\n public pointToFraction(spacePoint: Point3d): number {\r\n return Geometry.safeDivideFraction(this.direction.dotProductStartEnd(this.origin, spacePoint), this.direction.magnitudeSquared(), 0);\r\n }\r\n /**\r\n *\r\n * Return the spacePoint projected onto the ray.\r\n */\r\n public projectPointToRay(spacePoint: Point3d): Point3d {\r\n return this.origin.plusScaled(this.direction, this.pointToFraction(spacePoint));\r\n }\r\n /** Return a transform for rigid axes\r\n * at ray origin with z in ray direction. If the direction vector is zero, axes default to identity (from createHeadsUpTriad)\r\n */\r\n public toRigidZFrame(): Transform | undefined {\r\n const axes = Matrix3d.createRigidHeadsUp(this.direction, AxisOrder.ZXY);\r\n return Transform.createOriginAndMatrix(this.origin, axes);\r\n }\r\n /**\r\n * Convert {origin:[x,y,z], direction:[u,v,w]} to a Ray3d.\r\n */\r\n public setFromJSON(json?: any) {\r\n if (!json) {\r\n this.origin.set(0, 0, 0);\r\n this.direction.set(0, 0, 1);\r\n return;\r\n }\r\n this.origin.setFromJSON(json.origin);\r\n this.direction.setFromJSON(json.direction);\r\n }\r\n /**\r\n * try to scale the direction vector to a given magnitude.\r\n * @returns Returns false if ray direction is a zero vector.\r\n */\r\n public trySetDirectionMagnitudeInPlace(magnitude: number = 1.0): boolean {\r\n if (this.direction.tryNormalizeInPlace()) {\r\n this.direction.scaleInPlace(magnitude);\r\n return true;\r\n }\r\n this.direction.setZero();\r\n this.a = 0.0;\r\n return false;\r\n }\r\n /**\r\n * * If parameter `a` is clearly nonzero and the direction vector can be normalized,\r\n * * save the parameter `a` as the optional `a` member of the ray.\r\n * * normalize the ray's direction vector\r\n * * If parameter `a` is nearly zero,\r\n * * Set the `a` member to zero\r\n * * Set the ray's direction vector to zero.\r\n * @param a area to be saved.\r\n */\r\n // input a ray and \"a\" understood as an area.\r\n // if a is clearly nonzero metric squared and the vector can be normalized, install those and return true.\r\n // otherwise set ray.z to zero and zero the vector of the ray and return false.\r\n public tryNormalizeInPlaceWithAreaWeight(a: number): boolean {\r\n const tolerance = Geometry.smallMetricDistanceSquared;\r\n this.a = a;\r\n if (Math.abs(a) > tolerance && this.direction.tryNormalizeInPlace(tolerance))\r\n return true;\r\n this.direction.setZero();\r\n this.a = 0.0;\r\n return false;\r\n }\r\n /**\r\n * Convert an Angle to a JSON object.\r\n * @return {*} [origin,normal]\r\n */\r\n public toJSON(): any { return { origin: this.origin.toJSON(), direction: this.direction.toJSON() }; }\r\n /** Create a new ray from json object. See `setFromJSON` for json structure; */\r\n public static fromJSON(json?: any) {\r\n const result = Ray3d.createXAxis();\r\n result.setFromJSON(json);\r\n return result;\r\n }\r\n /** return distance from the ray to point in space */\r\n public distance(spacePoint: Point3d): number {\r\n const uu = this.direction.magnitudeSquared();\r\n const uv = this.dotProductToPoint(spacePoint);\r\n const aa = Geometry.inverseMetricDistanceSquared(uu);\r\n if (aa)\r\n return Math.sqrt(this.origin.distanceSquared(spacePoint) - uv * uv * aa);\r\n else\r\n return Math.sqrt(this.origin.distanceSquared(spacePoint));\r\n }\r\n /**\r\n * Return the intersection of the unbounded ray with a plane.\r\n * Stores the point of intersection in the result point given as a parameter,\r\n * and returns the parameter along the ray where the intersection occurs.\r\n * Returns undefined if the ray and plane are parallel or coplanar.\r\n */\r\n public intersectionWithPlane(plane: Plane3dByOriginAndUnitNormal, result?: Point3d): number | undefined {\r\n const vectorA = Vector3d.createStartEnd(plane.getOriginRef(), this.origin);\r\n const uDotN = this.direction.dotProduct(plane.getNormalRef());\r\n const nDotN = this.direction.magnitudeSquared();\r\n const aDotN = vectorA.dotProduct(plane.getNormalRef());\r\n const division = Geometry.conditionalDivideFraction(-aDotN, uDotN);\r\n if (undefined === division)\r\n return undefined;\r\n const division1 = Geometry.conditionalDivideFraction(nDotN, uDotN);\r\n if (undefined === division1)\r\n return undefined;\r\n if (result) {\r\n this.origin.plusScaled(this.direction, division, result);\r\n }\r\n return division;\r\n }\r\n\r\n /**\r\n * * Find intersection of the ray with a Range3d.\r\n * * return the range of fractions (on the ray) which are \"inside\" the range.\r\n * * Note that a range is always returned; if there is no intersection it is indicated by the test `result.sNull`\r\n */\r\n public intersectionWithRange3d(range: Range3d, result?: Range1d): Range1d {\r\n if (range.isNull)\r\n return Range1d.createNull(result);\r\n const interval = Range1d.createXX(-Geometry.largeCoordinateResult, Geometry.largeCoordinateResult, result);\r\n if (interval.clipLinearMapToInterval(this.origin.x, this.direction.x, range.low.x, range.high.x)\r\n && interval.clipLinearMapToInterval(this.origin.y, this.direction.y, range.low.y, range.high.y)\r\n && interval.clipLinearMapToInterval(this.origin.z, this.direction.z, range.low.z, range.high.z))\r\n return interval;\r\n return interval;\r\n }\r\n\r\n /** Construct a vector from `ray.origin` to target point.\r\n * * return the part of the vector that is perpendicular to `ray.direction`.\r\n * * i.e. return the shortest vector from the ray to the point.\r\n */\r\n public perpendicularPartOfVectorToTarget(targetPoint: XYAndZ, result?: Vector3d): Vector3d {\r\n const vectorV = Vector3d.createStartEnd(this.origin, targetPoint);\r\n const uu = this.direction.magnitudeSquared();\r\n const uv = this.direction.dotProductStartEnd(this.origin, targetPoint);\r\n const fraction = Geometry.safeDivideFraction(uv, uu, 0.0);\r\n return vectorV.plusScaled(this.direction, -fraction, result);\r\n }\r\n /** Determine if two rays intersect, are fully overlapped, parallel but no coincident, or skew\r\n * * Return a CurveLocationDetailPair which\r\n * * contains fraction and point on each ray.\r\n * * has (in the CurveLocationDetailPair structure, as member approachType) annotation indicating one of these relationships\r\n * * CurveCurveApproachType.Intersection -- the rays have a simple intersection, at fractions indicated in detailA and detailB\r\n * * CurveCurveApproachType.PerpendicularChord -- there is pair of where the rays have closest approach. The rays are skew in space.\r\n * * CurveCurveApproachType.CoincidentGeometry -- the rays are the same unbounded line in space. The fractions and points are a representative single common point.\r\n * * CurveCurveApproachType.Parallel -- the rays are parallel (and not coincident). The two points are at the minimum distance\r\n */\r\n public static closestApproachRay3dRay3d(rayA: Ray3d, rayB: Ray3d): CurveLocationDetailPair {\r\n const intersectionFractions = Vector2d.create();\r\n let fractionA, fractionB;\r\n let pointA, pointB;\r\n let pairType;\r\n if (SmallSystem.ray3dXYZUVWClosestApproachUnbounded(\r\n rayA.origin.x, rayA.origin.y, rayA.origin.z, rayA.direction.x, rayA.direction.y, rayA.direction.z,\r\n rayB.origin.x, rayB.origin.y, rayB.origin.z, rayB.direction.x, rayB.direction.y, rayB.direction.z, intersectionFractions)) {\r\n fractionA = intersectionFractions.x;\r\n fractionB = intersectionFractions.y;\r\n pointA = rayA.fractionToPoint(fractionA);\r\n pointB = rayB.fractionToPoint(fractionB);\r\n pairType = pointA.isAlmostEqualMetric(pointB) ? CurveCurveApproachType.Intersection : CurveCurveApproachType.PerpendicularChord;\r\n } else {\r\n fractionB = 0.0;\r\n fractionA = rayA.pointToFraction(rayB.origin);\r\n pointA = rayA.fractionToPoint(fractionA);\r\n pointB = rayB.fractionToPoint(fractionB);\r\n pairType = pointA.isAlmostEqualMetric(pointB) ? CurveCurveApproachType.CoincidentGeometry : CurveCurveApproachType.ParallelGeometry;\r\n }\r\n const pair = CurveLocationDetailPair.createCapture(\r\n CurveLocationDetail.createRayFractionPoint(rayA, fractionA, rayA.fractionToPoint(fractionA)),\r\n CurveLocationDetail.createRayFractionPoint(rayB, fractionB, rayB.fractionToPoint(fractionB)));\r\n pair.approachType = pairType;\r\n return pair;\r\n }\r\n\r\n /**\r\n * Return a ray with `ray.origin` interpolated between pt1 and pt2 at the given fraction\r\n * and `ray.direction` set to the vector from pt1 to pt2 multiplied by the given scale factor.\r\n * @param pt1 start point of interpolation.\r\n * @param fraction fractional position between points.\r\n * @param pt2 endpoint of interpolation.\r\n * @param tangentScale scale factor to apply to the startToEnd vector.\r\n * @param result optional receiver.\r\n */\r\n public static interpolatePointAndTangent(pt1: XYAndZ, fraction: number, pt2: XYAndZ, tangentScale: number, result?: Ray3d): Ray3d {\r\n result = result ?? Ray3d.createZero();\r\n const dx = pt2.x - pt1.x;\r\n const dy = pt2.y - pt1.y;\r\n const dz = pt2.z - pt1.z;\r\n result.direction.set(tangentScale * dx, tangentScale * dy, tangentScale * dz);\r\n if (fraction <= 0.5)\r\n result.origin.set(pt1.x + fraction * dx, pt1.y + fraction * dy, pt1.z + fraction * dz);\r\n else {\r\n const t: number = fraction - 1.0;\r\n result.origin.set(pt2.x + t * dx, pt2.y + t * dy, pt2.z + t * dz);\r\n }\r\n return result;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Transform.js","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\n\r\nimport { AxisOrder, BeJSONFunctions, Geometry } from \"../Geometry\";\r\nimport { Point4d } from \"../geometry4d/Point4d\";\r\nimport { Matrix3d } from \"./Matrix3d\";\r\nimport { Point2d } from \"./Point2dVector2d\";\r\nimport { Point3d, Vector3d, XYZ } from \"./Point3dVector3d\";\r\nimport { Range3d } from \"./Range\";\r\nimport { TransformProps, XAndY, XYAndZ } from \"./XYZProps\";\r\n\r\n/** A transform is an origin and a Matrix3d.\r\n *\r\n * * This describes a coordinate frame with\r\n * this origin, with the columns of the Matrix3d being the\r\n * local x,y,z axis directions.\r\n * * Beware that for common transformations (e.g. scale about point,\r\n * rotate around line, mirror across a plane) the \"fixed point\" that is used\r\n * when describing the transform is NOT the \"origin\" stored in the transform.\r\n * Setup methods (e.g createFixedPointAndMatrix, createScaleAboutPoint)\r\n * take care of determining the appropriate origin coordinates.\r\n * @public\r\n */\r\nexport class Transform implements BeJSONFunctions {\r\n // static (one per class) vars for temporaries in computation.\r\n // ASSUME any user of these vars needs them only within its own scope\r\n // ASSUME no calls to other methods that use the same scratch.\r\n // When Transform was in the same file with Point3d, this was initialized right here.\r\n // But when split, there is a load order issue, so it has to be initialized at point-of-use\r\n private static _scratchPoint: Point3d;\r\n private _origin: XYZ;\r\n private _matrix: Matrix3d;\r\n // Constructor accepts and uses POINTER to content .. no copy here.\r\n private constructor(origin: XYZ, matrix: Matrix3d) { this._origin = origin; this._matrix = matrix; }\r\n\r\n private static _identity?: Transform;\r\n /** The identity Transform. Value is frozen and cannot be modified. */\r\n public static get identity(): Transform {\r\n if (undefined === this._identity) {\r\n this._identity = Transform.createIdentity();\r\n this._identity.freeze();\r\n }\r\n\r\n return this._identity;\r\n }\r\n /** Freeze this instance (and its members) so it is read-only */\r\n public freeze(): Readonly<this> { this._origin.freeze(); this._matrix.freeze(); return Object.freeze(this); }\r\n /**\r\n * Copy contents from other Transform into this Transform\r\n * @param other source transform\r\n */\r\n public setFrom(other: Transform) { this._origin.setFrom(other._origin), this._matrix.setFrom(other._matrix); }\r\n /** Set this Transform to be an identity. */\r\n public setIdentity() { this._origin.setZero(); this._matrix.setIdentity(); }\r\n /** Set this Transform instance from flexible inputs:\r\n * * Any object (such as another Transform) that has `origin` and `matrix` members accepted by Point3d.setFromJSON and Matrix3d.setFromJSON\r\n * * An array of 3 number arrays, each with 4 entries which are rows in a 3x4 matrix.\r\n * * An array of 12 numbers, each block of 4 entries as a row 3x4 matrix.\r\n */\r\n public setFromJSON(json?: TransformProps | Transform): void {\r\n if (json) {\r\n if (json instanceof Object && (json as any).origin && (json as any).matrix) {\r\n this._origin.setFromJSON((json as any).origin);\r\n this._matrix.setFromJSON((json as any).matrix);\r\n return;\r\n }\r\n if (Geometry.isArrayOfNumberArray(json, 3, 4)) {\r\n const data = json as number[][];\r\n this._matrix.setRowValues(\r\n data[0][0], data[0][1], data[0][2],\r\n data[1][0], data[1][1], data[1][2],\r\n data[2][0], data[2][1], data[2][2]);\r\n this._origin.set(data[0][3], data[1][3], data[2][3]);\r\n return;\r\n }\r\n if (Geometry.isNumberArray(json, 12)) {\r\n const data = json as number[];\r\n this._matrix.setRowValues(\r\n data[0], data[1], data[2],\r\n data[4], data[5], data[6],\r\n data[8], data[9], data[10]);\r\n this._origin.set(data[3], data[7], data[11]);\r\n return;\r\n }\r\n }\r\n this.setIdentity();\r\n }\r\n /**\r\n * Test for near equality with other Transform. Comparison uses the isAlmostEqual methods on\r\n * the origin and matrix parts.\r\n * @param other Transform to compare to.\r\n */\r\n public isAlmostEqual(other: Readonly<Transform>): boolean { return this.origin.isAlmostEqual(other.origin) && this.matrix.isAlmostEqual(other.matrix); }\r\n\r\n /**\r\n * Test for near equality with other Transform. Comparison uses the isAlmostEqualAllowZRotation method of Matrix3d\r\n * the origin and matrix parts.\r\n * @param other Transform to compare to.\r\n */\r\n public isAlmostEqualAllowZRotation(other: Transform): boolean { return this._origin.isAlmostEqual(other._origin) && this._matrix.isAlmostEqualAllowZRotation(other._matrix); }\r\n\r\n /** Return a 3 by 4 matrix containing the rows of this Transform\r\n * * This transform's origin is the [3] entry of the json arrays\r\n */\r\n public toJSON(): TransformProps {\r\n return this.toRows();\r\n }\r\n\r\n /** Return a 3 by 4 matrix containing the rows of this Transform\r\n * * This transform's origin is the [3] entry of the json arrays\r\n */\r\n public toRows(): number[][] {\r\n return [\r\n [this._matrix.coffs[0], this._matrix.coffs[1], this._matrix.coffs[2], this._origin.x],\r\n [this._matrix.coffs[3], this._matrix.coffs[4], this._matrix.coffs[5], this._origin.y],\r\n [this._matrix.coffs[6], this._matrix.coffs[7], this._matrix.coffs[8], this._origin.z],\r\n ];\r\n }\r\n\r\n /** Return a new Transform initialized by `setFromJSON (json)` */\r\n public static fromJSON(json?: TransformProps): Transform {\r\n const result = Transform.createIdentity();\r\n result.setFromJSON(json);\r\n return result;\r\n }\r\n /** Copy the contents of this transform into a new Transform (or to the result, if specified). */\r\n public clone(result?: Transform): Transform {\r\n if (result) {\r\n result._matrix.setFrom(this._matrix);\r\n result._origin.setFrom(this._origin);\r\n return result;\r\n }\r\n return new Transform(\r\n Point3d.createFrom(this._origin),\r\n this._matrix.clone());\r\n }\r\n /** Return a copy of this Transform, modified so that its axes are rigid\r\n * * The first axis direction named in axisOrder is preserved\r\n * * The plane of the first and second directions is preserved, and its vector in the rigid matrix has positive dot product with the corresponding vector if the instance\r\n * * The third named column is the cross product of the first and second.\r\n */\r\n public cloneRigid(axisOrder: AxisOrder = AxisOrder.XYZ): Transform | undefined {\r\n const axes0 = Matrix3d.createRigidFromMatrix3d(this.matrix, axisOrder);\r\n if (!axes0)\r\n return undefined;\r\n return new Transform(this.origin.cloneAsPoint3d(), axes0);\r\n }\r\n /** Create a copy with the given origin and matrix captured as the Transform origin and Matrix3d. */\r\n public static createRefs(origin: XYZ | undefined, matrix: Matrix3d, result?: Transform): Transform {\r\n if (!origin)\r\n origin = Point3d.createZero();\r\n if (result) {\r\n result._origin = origin;\r\n result._matrix = matrix;\r\n return result;\r\n }\r\n return new Transform(origin, matrix);\r\n }\r\n /** Create a transform with complete contents given */\r\n public static createRowValues(\r\n qxx: number, qxy: number, qxz: number, ax: number,\r\n qyx: number, qyy: number, qyz: number, ay: number,\r\n qzx: number, qzy: number, qzz: number, az: number,\r\n result?: Transform): Transform {\r\n if (result) {\r\n result._origin.set(ax, ay, az);\r\n result._matrix.setRowValues(qxx, qxy, qxz, qyx, qyy, qyz, qzx, qzy, qzz);\r\n return result;\r\n }\r\n return new Transform(Point3d.create(ax, ay, az), Matrix3d.createRowValues(qxx, qxy, qxz, qyx, qyy, qyz, qzx, qzy, qzz));\r\n }\r\n /** Create a transform with all zeros.\r\n */\r\n public static createZero(result?: Transform): Transform {\r\n return Transform.createRowValues(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, result);\r\n }\r\n\r\n /**\r\n * create a Transform with translation provided by x,y,z parts.\r\n * @param x x part of translation\r\n * @param y y part of translation\r\n * @param z z part of translation\r\n * @param result optional result\r\n * @returns new or updated transform.\r\n */\r\n public static createTranslationXYZ(x: number = 0, y: number = 0, z: number = 0, result?: Transform): Transform {\r\n return Transform.createRefs(Vector3d.create(x, y, z), Matrix3d.createIdentity(), result);\r\n }\r\n /** Create a matrix with specified translation part.\r\n * @param XYZ x,y,z parts of the translation.\r\n * @returns new or updated transform.\r\n */\r\n public static createTranslation(translation: XYZ, result?: Transform): Transform {\r\n return Transform.createRefs(translation, Matrix3d.createIdentity(), result);\r\n }\r\n\r\n /** Return a reference to the matrix within the transform. (NOT a copy) */\r\n public get matrix(): Matrix3d { return this._matrix; }\r\n /** Return a reference to the origin within the transform. (NOT a copy) */\r\n public get origin(): XYZ { return this._origin; }\r\n\r\n /** return a (clone of) the origin part of the transform, as a Point3d */\r\n public getOrigin(): Point3d { return Point3d.createFrom(this._origin); }\r\n\r\n /** return a (clone of) the origin part of the transform, as a Vector3d */\r\n public getTranslation(): Vector3d { return Vector3d.createFrom(this._origin); }\r\n\r\n /** test if the transform has 000 origin and identity Matrix3d */\r\n public get isIdentity(): boolean {\r\n return this._matrix.isIdentity && this._origin.isAlmostZero;\r\n }\r\n /** Return an identity transform, optionally filling existing transform. */\r\n public static createIdentity(result?: Transform): Transform {\r\n if (result) {\r\n result._origin.setZero();\r\n result._matrix.setIdentity();\r\n return result;\r\n }\r\n return Transform.createRefs(Point3d.createZero(), Matrix3d.createIdentity());\r\n }\r\n /** Create by directly installing origin and matrix\r\n * this is a the appropriate construction when the columns of the matrix are coordinate axes of a local-to-global mapping\r\n * Note there is a closely related createFixedPointAndMatrix whose point input is the fixed point of the global-to-global transformation.\r\n */\r\n public static createOriginAndMatrix(origin: XYZ | undefined, matrix: Matrix3d | undefined, result?: Transform): Transform {\r\n if (result) {\r\n result._origin.setFromPoint3d(origin);\r\n result._matrix.setFrom(matrix);\r\n return result;\r\n }\r\n return Transform.createRefs(\r\n origin ? origin.cloneAsPoint3d() : Point3d.createZero(),\r\n matrix === undefined ? Matrix3d.createIdentity() : matrix.clone(), result);\r\n }\r\n /** Create by directly installing origin and columns of the matrix\r\n */\r\n public static createOriginAndMatrixColumns(origin: XYZ, vectorX: Vector3d, vectorY: Vector3d, vectorZ: Vector3d, result?: Transform): Transform {\r\n if (result)\r\n result.setOriginAndMatrixColumns(origin, vectorX, vectorY, vectorZ);\r\n else\r\n result = Transform.createRefs(Vector3d.createFrom(origin), Matrix3d.createColumns(vectorX, vectorY, vectorZ));\r\n return result;\r\n }\r\n /** Create by with matrix from Matrix3d.createRigidFromColumns.\r\n * * Has careful logic for building up optional result without allocations.\r\n */\r\n public static createRigidFromOriginAndColumns(origin: XYZ | undefined, vectorX: Vector3d, vectorY: Vector3d, axisOrder: AxisOrder, result?: Transform): Transform | undefined {\r\n const matrix = Matrix3d.createRigidFromColumns(vectorX, vectorY, axisOrder,\r\n result ? result._matrix : undefined);\r\n if (!matrix)\r\n return undefined;\r\n if (result) {\r\n // The matrix was already defined !!!\r\n result._origin.setFrom(origin);\r\n return result;\r\n }\r\n // cleanly capture the matrix and then the point ..\r\n result = Transform.createRefs(undefined, matrix);\r\n result._origin.setFromPoint3d(origin);\r\n return result;\r\n }\r\n\r\n /** Reinitialize by directly installing origin and columns of the matrix\r\n */\r\n public setOriginAndMatrixColumns(origin: XYZ | undefined, vectorX: Vector3d | undefined, vectorY: Vector3d | undefined, vectorZ: Vector3d | undefined) {\r\n if (origin !== undefined)\r\n this._origin.setFrom(origin);\r\n this._matrix.setColumns(vectorX, vectorY, vectorZ);\r\n }\r\n\r\n /** Create a transform with the specified matrix. Compute an origin (different from the given fixedPoint)\r\n * so that the fixedPoint maps back to itself.\r\n */\r\n public static createFixedPointAndMatrix(fixedPoint: XYAndZ | undefined, matrix: Matrix3d, result?: Transform): Transform {\r\n if (fixedPoint) {\r\n const origin = Matrix3d.xyzMinusMatrixTimesXYZ(fixedPoint, matrix, fixedPoint);\r\n return Transform.createRefs(origin, matrix.clone(), result);\r\n }\r\n return Transform.createRefs(undefined, matrix.clone());\r\n }\r\n /** Create a transform with the specified matrix, acting on any `pointX `via\r\n * `pointY = matrix * (pointX - pointA) + pointB`\r\n * so that the fixedPoint maps back to itself.\r\n */\r\n public static createMatrixPickupPutdown(matrix: Matrix3d, pointA: Point3d, pointB: Point3d, result?: Transform): Transform {\r\n const origin = Matrix3d.xyzMinusMatrixTimesXYZ(pointB, matrix, pointA);\r\n return Transform.createRefs(origin, matrix.clone(), result);\r\n }\r\n\r\n /** Create a Transform which leaves the fixedPoint unchanged and\r\n * scales everything else around it by a single scale factor.\r\n */\r\n public static createScaleAboutPoint(fixedPoint: Point3d, scale: number, result?: Transform): Transform {\r\n const matrix = Matrix3d.createScale(scale, scale, scale);\r\n const origin = Matrix3d.xyzMinusMatrixTimesXYZ(fixedPoint, matrix, fixedPoint);\r\n return Transform.createRefs(origin, matrix, result);\r\n }\r\n\r\n /** Transform the input 2d point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyPoint2d(source: XAndY, result?: Point2d): Point2d {\r\n return Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, source, result);\r\n }\r\n\r\n /** Transform the input 3d point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyPoint3d(point: XYAndZ, result?: Point3d): Point3d {\r\n return Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, point, result);\r\n }\r\n\r\n /** Transform the input object with x,y,z members */\r\n public multiplyXYAndZInPlace(point: XYAndZ) {\r\n return Matrix3d.xyzPlusMatrixTimesXYZInPlace(this._origin, this._matrix, point);\r\n }\r\n\r\n /** Transform the input point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZ(x: number, y: number, z: number = 0, result?: Point3d): Point3d {\r\n return Matrix3d.xyzPlusMatrixTimesCoordinates(this._origin, this._matrix, x, y, z, result);\r\n }\r\n /** Multiply a specific row of the transform times xyz. Return the (number). */\r\n public multiplyComponentXYZ(componentIndex: number, x: number, y: number, z: number = 0): number {\r\n const coffs = this._matrix.coffs;\r\n const i0 = 3 * componentIndex;\r\n return this.origin.at(componentIndex) + coffs[i0] * x + coffs[i0 + 1] * y + coffs[i0 + 2] * z;\r\n }\r\n /** Multiply a specific row of the transform times (weighted!) xyzw. Return the (number). */\r\n public multiplyComponentXYZW(componentIndex: number, x: number, y: number, z: number, w: number): number {\r\n const coffs = this._matrix.coffs;\r\n const i0 = 3 * componentIndex;\r\n return this.origin.at(componentIndex) * w +\r\n coffs[i0] * x + coffs[i0 + 1] * y + coffs[i0 + 2] * z;\r\n }\r\n\r\n /** Transform the input homogeneous point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZW(x: number, y: number, z: number, w: number, result?: Point4d): Point4d {\r\n return Matrix3d.xyzPlusMatrixTimesWeightedCoordinates(this._origin, this._matrix, x, y, z, w, result);\r\n }\r\n /** Transform the input homogeneous point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZWToFloat64Array(x: number, y: number, z: number, w: number, result?: Float64Array): Float64Array {\r\n return Matrix3d.xyzPlusMatrixTimesWeightedCoordinatesToFloat64Array(this._origin, this._matrix, x, y, z, w, result);\r\n }\r\n\r\n /** Transform the input homogeneous point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZToFloat64Array(x: number, y: number, z: number, result?: Float64Array): Float64Array {\r\n return Matrix3d.xyzPlusMatrixTimesCoordinatesToFloat64Array(this._origin, this._matrix, x, y, z, result);\r\n }\r\n /** Multiply the transposed transform (as 4x4 with 0001 row) by Point4d given as xyzw.. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyTransposeXYZW(x: number, y: number, z: number, w: number, result?: Point4d): Point4d {\r\n const coffs = this._matrix.coffs;\r\n const origin = this._origin;\r\n return Point4d.create(\r\n x * coffs[0] + y * coffs[3] + z * coffs[6],\r\n x * coffs[1] + y * coffs[4] + z * coffs[7],\r\n x * coffs[2] + y * coffs[5] + z * coffs[8],\r\n x * origin.x + y * origin.y + z * origin.z + w,\r\n result);\r\n }\r\n\r\n /** for each point: replace point by Transform*point */\r\n public multiplyPoint3dArrayInPlace(points: Point3d[]) {\r\n let point;\r\n for (point of points)\r\n Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, point, point);\r\n }\r\n\r\n /** for each point: replace point by Transform*point */\r\n public multiplyPoint3dArrayArrayInPlace(chains: Point3d[][]) {\r\n for (const chain of chains)\r\n this.multiplyPoint3dArrayInPlace(chain);\r\n }\r\n /** Return product of the transform's inverse times a point. */\r\n public multiplyInversePoint3d(point: XYAndZ, result?: Point3d): Point3d | undefined {\r\n return this._matrix.multiplyInverseXYZAsPoint3d(\r\n point.x - this._origin.x,\r\n point.y - this._origin.y,\r\n point.z - this._origin.z,\r\n result);\r\n }\r\n /** Inverse transform the input homogeneous point.\r\n * * Return as a new point or in the optional result.\r\n * * returns undefined if the matrix part if this Transform is singular.\r\n */\r\n public multiplyInversePoint4d(weightedPoint: Point4d, result?: Point4d): Point4d | undefined {\r\n const w = weightedPoint.w;\r\n return this._matrix.multiplyInverseXYZW(\r\n weightedPoint.x - w * this.origin.x,\r\n weightedPoint.y - w * this.origin.y,\r\n weightedPoint.z - w * this.origin.z,\r\n w, result);\r\n }\r\n\r\n /** Return product of the transform's inverse times a point (point given as x,y,z) */\r\n public multiplyInverseXYZ(x: number, y: number, z: number, result?: Point3d): Point3d | undefined {\r\n return this._matrix.multiplyInverseXYZAsPoint3d(\r\n x - this._origin.x,\r\n y - this._origin.y,\r\n z - this._origin.z,\r\n result);\r\n }\r\n\r\n /**\r\n * * for each point: multiply transform * point\r\n * * if result is given, resize to match source and replace each corresponding pi\r\n * * if result is not given, return a new array.\r\n */\r\n public multiplyInversePoint3dArray(source: Point3d[], result?: Point3d[]): Point3d[] | undefined {\r\n if (!this._matrix.computeCachedInverse(true))\r\n return undefined;\r\n const originX = this.origin.x;\r\n const originY = this.origin.y;\r\n const originZ = this.origin.z;\r\n if (result) {\r\n const n = Transform.matchArrayLengths(source, result, Point3d.createZero);\r\n for (let i = 0; i < n; i++)\r\n this._matrix.multiplyInverseXYZAsPoint3d(\r\n source[i].x - originX,\r\n source[i].y - originY,\r\n source[i].z - originZ,\r\n result[i]);\r\n }\r\n result = [];\r\n for (const p of source)\r\n result.push(this._matrix.multiplyInverseXYZAsPoint3d(\r\n p.x - originX,\r\n p.y - originY,\r\n p.z - originZ)!);\r\n\r\n return result;\r\n }\r\n /**\r\n * * for each point in source: multiply transformInverse * point in place in the point.\r\n * * return false if not invertible.\r\n */\r\n public multiplyInversePoint3dArrayInPlace(source: Point3d[]): boolean {\r\n if (!this._matrix.computeCachedInverse(true))\r\n return false;\r\n const originX = this.origin.x;\r\n const originY = this.origin.y;\r\n const originZ = this.origin.z;\r\n const n = source.length;\r\n for (let i = 0; i < n; i++)\r\n this._matrix.multiplyInverseXYZAsPoint3d(\r\n source[i].x - originX,\r\n source[i].y - originY,\r\n source[i].z - originZ,\r\n source[i]);\r\n return true;\r\n }\r\n /**\r\n * * Compute (if needed) the inverse of the matrix part, thereby ensuring inverse operations can complete.\r\n * * Return true if matrix inverse completes.\r\n * @param useCached If true, accept prior cached inverse if available.\r\n */\r\n public computeCachedInverse(useCached: boolean = true): boolean {\r\n return this._matrix.computeCachedInverse(useCached);\r\n }\r\n /**\r\n * * If destination has more values than source, remove the extras.\r\n * * If destination has fewer values, use the constructionFunction to create new ones.\r\n * @param source array\r\n * @param dest destination array, to be modified to match source length\r\n * @param constructionFunction function to call to create new entries.\r\n */\r\n // modify destination so it has non-null points for the same length as the source.\r\n // (ASSUME existing elements of dest are non-null, and that parameters are given as either Point2d or Point3d arrays)\r\n public static matchArrayLengths(source: any[], dest: any[], constructionFunction: () => any): number {\r\n const numSource = source.length;\r\n const numDest = dest.length;\r\n if (numSource > numDest) {\r\n for (let i = numDest; i < numSource; i++) {\r\n dest.push(constructionFunction());\r\n }\r\n } else if (numDest > numSource) {\r\n dest.length = numSource;\r\n }\r\n return numSource;\r\n }\r\n\r\n /**\r\n * * for each point: multiply transform * point\r\n * * if result is given, resize to match source and replace each corresponding pi\r\n * * if result is not given, return a new array.\r\n */\r\n public multiplyPoint2dArray(source: Point2d[], result?: Point2d[]): Point2d[] {\r\n if (result) {\r\n const n = Transform.matchArrayLengths(source, result, Point2d.createZero);\r\n for (let i = 0; i < n; i++)\r\n Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, source[i], result[i]);\r\n return result;\r\n }\r\n result = [];\r\n for (const p of source)\r\n result.push(Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, p));\r\n\r\n return result;\r\n }\r\n /**\r\n * * for each point: multiply transform * point\r\n * * if result is given, resize to match source and replace each corresponding pi\r\n * * if result is not given, return a new array.\r\n */\r\n public multiplyPoint3dArray(source: Point3d[], result?: Point3d[]): Point3d[] {\r\n if (result) {\r\n const n = Transform.matchArrayLengths(source, result, Point3d.createZero);\r\n for (let i = 0; i < n; i++)\r\n Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, source[i], result[i]);\r\n return result;\r\n }\r\n result = [];\r\n for (const p of source)\r\n result.push(Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, p));\r\n\r\n return result;\r\n }\r\n\r\n /** Multiply the vector by the Matrix3d part of the transform.\r\n *\r\n * * The transform's origin is not used.\r\n * * Return as new or result by usual optional result convention\r\n */\r\n public multiplyVector(vector: Vector3d, result?: Vector3d): Vector3d {\r\n return this._matrix.multiplyVector(vector, result);\r\n }\r\n\r\n/** Multiply the vector in place by the Matrix3d part of the transform.\r\n *\r\n * * The transform's origin is not used.\r\n */\r\n public multiplyVectorInPlace(vector: Vector3d): void {\r\n this._matrix.multiplyVectorInPlace(vector);\r\n}\r\n\r\n /** Multiply the vector (x,y,z) by the Matrix3d part of the transform.\r\n *\r\n * * The transform's origin is not used.\r\n * * Return as new or result by usual optional result convention\r\n */\r\n public multiplyVectorXYZ(x: number, y: number, z: number, result?: Vector3d): Vector3d {\r\n return this._matrix.multiplyXYZ(x, y, z, result);\r\n }\r\n /** multiply this Transform times other Transform.\r\n * ```\r\n * equation\r\n * \\begin{matrix}\r\n * \\text{`this` transform with matrix part }\\bold{A}\\text{ and translation }\\bold{a} & \\blockTransform{A}{a}\\\\\r\n * \\text{`other` transform with matrix part }\\bold{B}\\text{ and translation part }\\bold{b}\\text{ promoted to block transform} & \\blockTransform{B}{b} \\\\\r\n * \\text{product}& \\blockTransform{A}{a}\\blockTransform{B}{b}=\\blockTransform{AB}{Ab + a}\r\n * \\end{matrix}\r\n * ```\r\n * @param other right hand transform for multiplication.\r\n * @param result optional preallocated result to reuse.\r\n */\r\n public multiplyTransformTransform(other: Transform, result?: Transform) {\r\n if (!result)\r\n return Transform.createRefs(\r\n Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, other._origin),\r\n this._matrix.multiplyMatrixMatrix(other._matrix));\r\n result.setMultiplyTransformTransform(this, other);\r\n return result;\r\n }\r\n /**\r\n * multiply transformA * transformB, store to calling instance.\r\n * @param transformA left operand\r\n * @param transformB right operand\r\n */\r\n public setMultiplyTransformTransform(transformA: Transform, transformB: Transform): void {\r\n if (Transform._scratchPoint === undefined)\r\n Transform._scratchPoint = Point3d.create();\r\n Matrix3d.xyzPlusMatrixTimesXYZ(transformA._origin, transformA._matrix, transformB._origin, Transform._scratchPoint);\r\n this._origin.setFrom(Transform._scratchPoint);\r\n transformA._matrix.multiplyMatrixMatrix(transformB._matrix, this._matrix);\r\n }\r\n // [Q A][R 0] = [QR A]\r\n // [0 1][0 1] [0 1]\r\n /** multiply this Transform times other Matrix3d, with other considered to be a Transform with 0 translation.\r\n * ```\r\n * equation\r\n * \\begin{matrix}\r\n * \\text{`this` transform with matrix part }\\bold{A}\\text{ and translation }\\bold{b} & \\blockTransform{B}{b}\\\\\r\n * \\text{`other` matrix }\\bold{B}\\text{ promoted to block transform} & \\blockTransform{B}{0} \\\\\r\n * \\text{product}& \\blockTransform{A}{a}\\blockTransform{B}{0}=\\blockTransform{AB}{a}\r\n * \\end{matrix}\r\n * ```\r\n * @param other right hand Matrix3d for multiplication.\r\n * @param result optional preallocated result to reuse.\r\n */\r\n public multiplyTransformMatrix3d(other: Matrix3d, result?: Transform): Transform {\r\n if (!result)\r\n return Transform.createRefs(\r\n this._origin.cloneAsPoint3d(),\r\n this._matrix.multiplyMatrixMatrix(other));\r\n this._matrix.multiplyMatrixMatrix(other, result._matrix);\r\n result._origin.setFrom(this._origin);\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the range of the transformed corners.\r\n * * The 8 corners are transformed individually.\r\n * * Note that if there is anything other than translation and principal axis scaling in the transform, the volume of the range rotation will increase.\r\n * * Hence to get a \"tight\" range on rotated geometry, a range computation must be made on the rotated geometry itself.\r\n */\r\n public multiplyRange(range: Range3d, result?: Range3d): Range3d {\r\n if (range.isNull)\r\n return range.clone(result);\r\n\r\n // snag current values to allow aliasing.\r\n const lowX = range.low.x;\r\n const lowY = range.low.y;\r\n const lowZ = range.low.z;\r\n const highX = range.high.x;\r\n const highY = range.high.y;\r\n const highZ = range.high.z;\r\n result = Range3d.createNull(result);\r\n result.extendTransformedXYZ(this, lowX, lowY, lowZ);\r\n result.extendTransformedXYZ(this, highX, lowY, lowZ);\r\n result.extendTransformedXYZ(this, lowX, highY, lowZ);\r\n result.extendTransformedXYZ(this, highX, highY, lowZ);\r\n\r\n result.extendTransformedXYZ(this, lowX, lowY, highZ);\r\n result.extendTransformedXYZ(this, highX, lowY, highZ);\r\n result.extendTransformedXYZ(this, lowX, highY, highZ);\r\n result.extendTransformedXYZ(this, highX, highY, highZ);\r\n return result;\r\n }\r\n /**\r\n * * Return a Transform which is the inverse of this transform.\r\n * * Return undefined if this Transform's matrix is singular.\r\n */\r\n public inverse(): Transform | undefined {\r\n const matrixInverse = this._matrix.inverse();\r\n if (!matrixInverse)\r\n return undefined;\r\n return Transform.createRefs(\r\n matrixInverse.multiplyXYZ(-this._origin.x, -this._origin.y, -this._origin.z),\r\n matrixInverse);\r\n }\r\n /** Initialize transforms that map each direction of a box (axis aligned) to `[0,1]`.\r\n * * The corner coordinates do _not_ need to be in order in any of the x,y,z directions.\r\n * * The npcToGlobalTransform (if supplied) maps 000 to the point named point000.\r\n * * The npcToGlobalTransform (if supplied) maps 11 to the point named point000.\r\n * * The globalToNpc transform is the inverse.\r\n * @param min the \"000\" corner of the box\r\n * @param max the \"111\" corner of the box\r\n * @param npcToGlobal (object created by caller, re-initialized here) transform that carries 01 coordinates into the min,max box.\r\n * @param globalToNpc (object created by caller, re-initialized here) transform that carries world coordinates into 01\r\n */\r\n public static initFromRange(min: Point3d, max: Point3d, npcToGlobal?: Transform, globalToNpc?: Transform) {\r\n const diag = max.minus(min);\r\n if (diag.x === 0.0) diag.x = 1.0;\r\n if (diag.y === 0.0) diag.y = 1.0;\r\n if (diag.z === 0.0) diag.z = 1.0;\r\n\r\n const rMatrix = new Matrix3d();\r\n if (npcToGlobal) {\r\n Matrix3d.createScale(diag.x, diag.y, diag.z, rMatrix);\r\n Transform.createOriginAndMatrix(min, rMatrix, npcToGlobal);\r\n }\r\n\r\n if (globalToNpc) {\r\n const origin = new Point3d(- min.x / diag.x, - min.y / diag.y, - min.z / diag.z);\r\n Matrix3d.createScale(1.0 / diag.x, 1.0 / diag.y, 1.0 / diag.z, rMatrix);\r\n Transform.createOriginAndMatrix(origin, rMatrix, globalToNpc);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Transform.js","sourceRoot":"","sources":["../../../src/geometry3d/Transform.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAmB,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAO,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,SAAS;IASpB,mEAAmE;IACnE,YAAoB,MAAW,EAAE,MAAgB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IAGpG,sEAAsE;IAC/D,MAAM,KAAK,QAAQ;QACxB,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,gEAAgE;IACzD,MAAM,KAAqB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7G;;;OAGG;IACI,OAAO,CAAC,KAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9G,4CAA4C;IACrC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5E;;;;OAIG;IACI,WAAW,CAAC,IAAiC;QAClD,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,YAAY,MAAM,IAAK,IAAY,CAAC,MAAM,IAAK,IAAY,CAAC,MAAM,EAAE;gBAC1E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,IAAY,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAE,IAAY,CAAC,MAAM,CAAC,CAAC;gBAC/C,OAAO;aACR;YACD,IAAI,QAAQ,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;gBAC7C,MAAM,IAAI,GAAG,IAAkB,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,OAAO;aACR;YACD,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;gBACpC,MAAM,IAAI,GAAG,IAAgB,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7C,OAAO;aACR;SACF;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IACD;;;;OAIG;IACI,aAAa,CAAC,KAA0B,IAAa,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAExJ;;;;OAIG;IACK,2BAA2B,CAAC,KAAgB,IAAa,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9K;;MAEE;IACI,MAAM;QACX,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,MAAM;QACX,OAAO;YACL,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACtF,CAAC;IACJ,CAAC;IAED,iEAAiE;IAC1D,MAAM,CAAC,QAAQ,CAAC,IAAqB;QAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,iGAAiG;IAC1F,KAAK,CAAC,MAAkB;QAC7B,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,SAAS,CAClB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD;;;;OAIG;IACI,UAAU,CAAC,YAAuB,SAAS,CAAC,GAAG;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK;YACR,OAAO,SAAS,CAAC;QACnB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,oGAAoG;IAC7F,MAAM,CAAC,UAAU,CAAC,MAAuB,EAAE,MAAgB,EAAE,MAAkB;QACpF,IAAI,CAAC,MAAM;YACT,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;YACxB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;YACxB,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,sDAAsD;IAC/C,MAAM,CAAC,eAAe,CAC3B,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,EAAU,EACjD,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,EAAU,EACjD,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,EAAU,EACjD,MAAkB;QAClB,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACzE,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1H,CAAC;IACD;OACG;IACI,MAAM,CAAC,UAAU,CAAC,MAAkB;QACzC,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,oBAAoB,CAAC,IAAY,CAAC,EAAE,IAAY,CAAC,EAAE,IAAY,CAAC,EAAE,MAAkB;QAChG,OAAO,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3F,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,iBAAiB,CAAC,WAAgB,EAAE,MAAkB;QAClE,OAAO,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,2EAA2E;IAC3E,IAAW,MAAM,KAAe,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,2EAA2E;IAC3E,IAAW,MAAM,KAAU,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjD,yEAAyE;IAClE,SAAS,KAAc,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAExE,0EAA0E;IACnE,cAAc,KAAe,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE/E,iEAAiE;IACjE,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9D,CAAC;IACD,4EAA4E;IACrE,MAAM,CAAC,cAAc,CAAC,MAAkB;QAC7C,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,qBAAqB,CAAC,MAAuB,EAAE,MAA4B,EAAE,MAAkB;QAC3G,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,MAAM,CAAC;SACf;QACD,OAAO,SAAS,CAAC,UAAU,CACzB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EACvD,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IACD;OACG;IACI,MAAM,CAAC,4BAA4B,CAAC,MAAW,EAAE,OAAiB,EAAE,OAAiB,EAAE,OAAiB,EAAE,MAAkB;QACjI,IAAI,MAAM;YACR,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;;YAEpE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAChH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;OAEG;IACI,MAAM,CAAC,+BAA+B,CAAC,MAAuB,EAAE,OAAiB,EAAE,OAAiB,EAAE,SAAoB,EAAE,MAAkB;QACnJ,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjH,IAAI,CAAC,MAAM;YACT,OAAO,SAAS,CAAC;QACnB,IAAI,MAAM,EAAE;YACV,qCAAqC;YACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,MAAM,CAAC;SACf;QACD,mDAAmD;QACnD,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;OACG;IACI,yBAAyB,CAAC,MAAuB,EAAE,OAA6B,EAAE,OAA6B,EAAE,OAA6B;QACnJ,IAAI,MAAM,KAAK,SAAS;YACtB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,yBAAyB,CAAC,UAA8B,EAAE,MAAgB,EAAE,MAAkB;QAC1G,IAAI,UAAU,EAAE;YACd,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC/E,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;SAC7D;QACD,OAAO,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,yBAAyB,CAAC,MAAgB,EAAE,MAAe,EAAE,MAAe,EAAE,MAAkB;QAC5G,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,qBAAqB,CAAC,UAAmB,EAAE,KAAa,EAAE,MAAkB;QACxF,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,+GAA+G;IACxG,eAAe,CAAC,MAAa,EAAE,MAAgB;QACpD,OAAO,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,+GAA+G;IACxG,eAAe,CAAC,KAAa,EAAE,MAAgB;QACpD,OAAO,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED,oDAAoD;IAC7C,qBAAqB,CAAC,KAAa;QACxC,OAAO,QAAQ,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClF,CAAC;IAED,4GAA4G;IACrG,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY,CAAC,EAAE,MAAgB;QACtE,OAAO,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;IACD,+EAA+E;IACxE,oBAAoB,CAAC,cAAsB,EAAE,CAAS,EAAE,CAAS,EAAE,IAAY,CAAC;QACrF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC;IACD,4FAA4F;IACrF,qBAAqB,CAAC,cAAsB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC;YACvC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,wHAAwH;IACjH,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,MAAgB;QAC9E,OAAO,QAAQ,CAAC,qCAAqC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxG,CAAC;IACD,wHAAwH;IACjH,0BAA0B,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,MAAqB;QACjG,OAAO,QAAQ,CAAC,mDAAmD,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACtH,CAAC;IAED,wHAAwH;IACjH,yBAAyB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,MAAqB;QACrF,OAAO,QAAQ,CAAC,2CAA2C,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3G,CAAC;IACD,qKAAqK;IAC9J,qBAAqB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,MAAgB;QACvF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAC1C,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAC1C,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAC1C,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,EAC9C,MAAM,CAAC,CAAC;IACZ,CAAC;IAED,wDAAwD;IACjD,2BAA2B,CAAC,MAAiB;QAClD,IAAI,KAAK,CAAC;QACV,KAAK,KAAK,IAAI,MAAM;YAClB,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,wDAAwD;IACjD,gCAAgC,CAAC,MAAmB;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM;YACxB,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,+DAA+D;IACxD,sBAAsB,CAAC,KAAa,EAAE,MAAgB;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAC7C,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EACxB,MAAM,CAAC,CAAC;IACZ,CAAC;IACD;;;OAGG;IACI,sBAAsB,CAAC,aAAsB,EAAE,MAAgB;QACpE,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CACrC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EACnC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EACnC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EACnC,CAAC,EAAE,MAAM,CAAC,CAAC;IACf,CAAC;IAED,qFAAqF;IAC9E,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,MAAgB;QACzE,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAC7C,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAClB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAClB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAClB,MAAM,CAAC,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACI,2BAA2B,CAAC,MAAiB,EAAE,MAAkB;QACtE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC1C,OAAO,SAAS,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,2BAA2B,CACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB;QACD,MAAM,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,MAAM;YACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAClD,CAAC,CAAC,CAAC,GAAG,OAAO,EACb,CAAC,CAAC,CAAC,GAAG,OAAO,EACb,CAAC,CAAC,CAAC,GAAG,OAAO,CAAE,CAAC,CAAC;QAErB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,kCAAkC,CAAC,MAAiB;QACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,2BAA2B,CACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;;OAIG;IACI,oBAAoB,CAAC,YAAqB,IAAI;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IACD;;;;;;OAMG;IACH,kFAAkF;IAClF,qHAAqH;IAC9G,MAAM,CAAC,iBAAiB,CAAC,MAAa,EAAE,IAAW,EAAE,oBAA+B;QACzF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,SAAS,GAAG,OAAO,EAAE;YACvB,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;aACnC;SACF;aAAM,IAAI,OAAO,GAAG,SAAS,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;SACzB;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,oBAAoB,CAAC,MAAiB,EAAE,MAAkB;QAC/D,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACxB,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,OAAO,MAAM,CAAC;SACf;QACD,MAAM,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,MAAM;YACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;OAIG;IACI,oBAAoB,CAAC,MAAiB,EAAE,MAAkB;QAC/D,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACxB,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC;SACf;QACD,MAAM,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,MAAM;YACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,MAAgB,EAAE,MAAiB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAEH;;;SAGK;IACG,qBAAqB,CAAC,MAAgB;QAC5C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEC;;;;OAIG;IACI,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,MAAiB;QACzE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IACD;;;;;;;;;;;OAWG;IACI,0BAA0B,CAAC,KAAgB,EAAE,MAAkB;QACpE,IAAI,CAAC,MAAM;YACT,OAAO,SAAS,CAAC,UAAU,CACzB,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EACzE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;OAIG;IACI,6BAA6B,CAAC,UAAqB,EAAE,UAAqB;QAC/E,IAAI,SAAS,CAAC,aAAa,KAAK,SAAS;YACvC,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7C,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QACpH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC9C,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IACD,wBAAwB;IACxB,wBAAwB;IACxB;;;;;;;;;;;OAWG;IACI,yBAAyB,CAAC,KAAe,EAAE,MAAkB;QAClE,IAAI,CAAC,MAAM;YACT,OAAO,SAAS,CAAC,UAAU,CACzB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAC7B,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,KAAc,EAAE,MAAgB;QACnD,IAAI,KAAK,CAAC,MAAM;YACd,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE7B,yCAAyC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEtD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,OAAO;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,aAAa;YAChB,OAAO,SAAS,CAAC;QACnB,OAAO,SAAS,CAAC,UAAU,CACzB,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAC5E,aAAa,CAAC,CAAC;IACnB,CAAC;IACD;;;;;;;;;OASG;IACI,MAAM,CAAC,aAAa,CAAC,GAAY,EAAE,GAAY,EAAE,WAAuB,EAAE,WAAuB;QACtG,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG;YAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACjC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG;YAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACjC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG;YAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QAEjC,MAAM,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,WAAW,EAAE;YACf,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtD,SAAS,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;SAC5D;QAED,IAAI,WAAW,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACjF,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACxE,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;SAC/D;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module CartesianGeometry\r\n */\r\n\r\nimport { AxisOrder, BeJSONFunctions, Geometry } from \"../Geometry\";\r\nimport { Point4d } from \"../geometry4d/Point4d\";\r\nimport { Matrix3d } from \"./Matrix3d\";\r\nimport { Point2d } from \"./Point2dVector2d\";\r\nimport { Point3d, Vector3d, XYZ } from \"./Point3dVector3d\";\r\nimport { Range3d } from \"./Range\";\r\nimport { TransformProps, XAndY, XYAndZ } from \"./XYZProps\";\r\n\r\n/** A transform is an origin and a Matrix3d.\r\n *\r\n * * This describes a coordinate frame with\r\n * this origin, with the columns of the Matrix3d being the\r\n * local x,y,z axis directions.\r\n * * Beware that for common transformations (e.g. scale about point,\r\n * rotate around line, mirror across a plane) the \"fixed point\" that is used\r\n * when describing the transform is NOT the \"origin\" stored in the transform.\r\n * Setup methods (e.g createFixedPointAndMatrix, createScaleAboutPoint)\r\n * take care of determining the appropriate origin coordinates.\r\n * @public\r\n */\r\nexport class Transform implements BeJSONFunctions {\r\n // static (one per class) vars for temporaries in computation.\r\n // ASSUME any user of these vars needs them only within its own scope\r\n // ASSUME no calls to other methods that use the same scratch.\r\n // When Transform was in the same file with Point3d, this was initialized right here.\r\n // But when split, there is a load order issue, so it has to be initialized at point-of-use\r\n private static _scratchPoint: Point3d;\r\n private _origin: XYZ;\r\n private _matrix: Matrix3d;\r\n // Constructor accepts and uses POINTER to content .. no copy here.\r\n private constructor(origin: XYZ, matrix: Matrix3d) { this._origin = origin; this._matrix = matrix; }\r\n\r\n private static _identity?: Transform;\r\n /** The identity Transform. Value is frozen and cannot be modified. */\r\n public static get identity(): Transform {\r\n if (undefined === this._identity) {\r\n this._identity = Transform.createIdentity();\r\n this._identity.freeze();\r\n }\r\n\r\n return this._identity;\r\n }\r\n /** Freeze this instance (and its members) so it is read-only */\r\n public freeze(): Readonly<this> { this._origin.freeze(); this._matrix.freeze(); return Object.freeze(this); }\r\n /**\r\n * Copy contents from other Transform into this Transform\r\n * @param other source transform\r\n */\r\n public setFrom(other: Transform) { this._origin.setFrom(other._origin), this._matrix.setFrom(other._matrix); }\r\n /** Set this Transform to be an identity. */\r\n public setIdentity() { this._origin.setZero(); this._matrix.setIdentity(); }\r\n /** Set this Transform instance from flexible inputs:\r\n * * Any object (such as another Transform) that has `origin` and `matrix` members accepted by Point3d.setFromJSON and Matrix3d.setFromJSON\r\n * * An array of 3 number arrays, each with 4 entries which are rows in a 3x4 matrix.\r\n * * An array of 12 numbers, each block of 4 entries as a row 3x4 matrix.\r\n */\r\n public setFromJSON(json?: TransformProps | Transform): void {\r\n if (json) {\r\n if (json instanceof Object && (json as any).origin && (json as any).matrix) {\r\n this._origin.setFromJSON((json as any).origin);\r\n this._matrix.setFromJSON((json as any).matrix);\r\n return;\r\n }\r\n if (Geometry.isArrayOfNumberArray(json, 3, 4)) {\r\n const data = json as number[][];\r\n this._matrix.setRowValues(\r\n data[0][0], data[0][1], data[0][2],\r\n data[1][0], data[1][1], data[1][2],\r\n data[2][0], data[2][1], data[2][2]);\r\n this._origin.set(data[0][3], data[1][3], data[2][3]);\r\n return;\r\n }\r\n if (Geometry.isNumberArray(json, 12)) {\r\n const data = json as number[];\r\n this._matrix.setRowValues(\r\n data[0], data[1], data[2],\r\n data[4], data[5], data[6],\r\n data[8], data[9], data[10]);\r\n this._origin.set(data[3], data[7], data[11]);\r\n return;\r\n }\r\n }\r\n this.setIdentity();\r\n }\r\n /**\r\n * Test for near equality with other Transform. Comparison uses the isAlmostEqual methods on\r\n * the origin and matrix parts.\r\n * @param other Transform to compare to.\r\n */\r\n public isAlmostEqual(other: Readonly<Transform>): boolean { return this.origin.isAlmostEqual(other.origin) && this.matrix.isAlmostEqual(other.matrix); }\r\n\r\n /**\r\n * Test for near equality with other Transform. Comparison uses the isAlmostEqualAllowZRotation method of Matrix3d\r\n * the origin and matrix parts.\r\n * @param other Transform to compare to.\r\n */\r\n public isAlmostEqualAllowZRotation(other: Transform): boolean { return this._origin.isAlmostEqual(other._origin) && this._matrix.isAlmostEqualAllowZRotation(other._matrix); }\r\n\r\n /** Return a 3 by 4 matrix containing the rows of this Transform\r\n * * This transform's origin is the [3] entry of the json arrays\r\n */\r\n public toJSON(): TransformProps {\r\n return this.toRows();\r\n }\r\n\r\n /** Return a 3 by 4 matrix containing the rows of this Transform\r\n * * This transform's origin is the [3] entry of the json arrays\r\n */\r\n public toRows(): number[][] {\r\n return [\r\n [this._matrix.coffs[0], this._matrix.coffs[1], this._matrix.coffs[2], this._origin.x],\r\n [this._matrix.coffs[3], this._matrix.coffs[4], this._matrix.coffs[5], this._origin.y],\r\n [this._matrix.coffs[6], this._matrix.coffs[7], this._matrix.coffs[8], this._origin.z],\r\n ];\r\n }\r\n\r\n /** Return a new Transform initialized by `setFromJSON (json)` */\r\n public static fromJSON(json?: TransformProps): Transform {\r\n const result = Transform.createIdentity();\r\n result.setFromJSON(json);\r\n return result;\r\n }\r\n /** Copy the contents of this transform into a new Transform (or to the result, if specified). */\r\n public clone(result?: Transform): Transform {\r\n if (result) {\r\n result._matrix.setFrom(this._matrix);\r\n result._origin.setFrom(this._origin);\r\n return result;\r\n }\r\n return new Transform(\r\n Point3d.createFrom(this._origin),\r\n this._matrix.clone());\r\n }\r\n /** Return a copy of this Transform, modified so that its axes are rigid\r\n * * The first axis direction named in axisOrder is preserved\r\n * * The plane of the first and second directions is preserved, and its vector in the rigid matrix has positive dot product with the corresponding vector if the instance\r\n * * The third named column is the cross product of the first and second.\r\n */\r\n public cloneRigid(axisOrder: AxisOrder = AxisOrder.XYZ): Transform | undefined {\r\n const axes0 = Matrix3d.createRigidFromMatrix3d(this.matrix, axisOrder);\r\n if (!axes0)\r\n return undefined;\r\n return new Transform(this.origin.cloneAsPoint3d(), axes0);\r\n }\r\n /** Create a copy with the given origin and matrix captured as the Transform origin and Matrix3d. */\r\n public static createRefs(origin: XYZ | undefined, matrix: Matrix3d, result?: Transform): Transform {\r\n if (!origin)\r\n origin = Point3d.createZero();\r\n if (result) {\r\n result._origin = origin;\r\n result._matrix = matrix;\r\n return result;\r\n }\r\n return new Transform(origin, matrix);\r\n }\r\n /** Create a transform with complete contents given */\r\n public static createRowValues(\r\n qxx: number, qxy: number, qxz: number, ax: number,\r\n qyx: number, qyy: number, qyz: number, ay: number,\r\n qzx: number, qzy: number, qzz: number, az: number,\r\n result?: Transform): Transform {\r\n if (result) {\r\n result._origin.set(ax, ay, az);\r\n result._matrix.setRowValues(qxx, qxy, qxz, qyx, qyy, qyz, qzx, qzy, qzz);\r\n return result;\r\n }\r\n return new Transform(Point3d.create(ax, ay, az), Matrix3d.createRowValues(qxx, qxy, qxz, qyx, qyy, qyz, qzx, qzy, qzz));\r\n }\r\n /** Create a transform with all zeros.\r\n */\r\n public static createZero(result?: Transform): Transform {\r\n return Transform.createRowValues(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, result);\r\n }\r\n\r\n /**\r\n * create a Transform with translation provided by x,y,z parts.\r\n * @param x x part of translation\r\n * @param y y part of translation\r\n * @param z z part of translation\r\n * @param result optional result\r\n * @returns new or updated transform.\r\n */\r\n public static createTranslationXYZ(x: number = 0, y: number = 0, z: number = 0, result?: Transform): Transform {\r\n return Transform.createRefs(Vector3d.create(x, y, z), Matrix3d.createIdentity(), result);\r\n }\r\n /** Create a matrix with specified translation part.\r\n * @param XYZ x,y,z parts of the translation.\r\n * @returns new or updated transform.\r\n */\r\n public static createTranslation(translation: XYZ, result?: Transform): Transform {\r\n return Transform.createRefs(translation, Matrix3d.createIdentity(), result);\r\n }\r\n\r\n /** Return a reference to the matrix within the transform. (NOT a copy) */\r\n public get matrix(): Matrix3d { return this._matrix; }\r\n /** Return a reference to the origin within the transform. (NOT a copy) */\r\n public get origin(): XYZ { return this._origin; }\r\n\r\n /** return a (clone of) the origin part of the transform, as a Point3d */\r\n public getOrigin(): Point3d { return Point3d.createFrom(this._origin); }\r\n\r\n /** return a (clone of) the origin part of the transform, as a Vector3d */\r\n public getTranslation(): Vector3d { return Vector3d.createFrom(this._origin); }\r\n\r\n /** test if the transform has 000 origin and identity Matrix3d */\r\n public get isIdentity(): boolean {\r\n return this._matrix.isIdentity && this._origin.isAlmostZero;\r\n }\r\n /** Return an identity transform, optionally filling existing transform. */\r\n public static createIdentity(result?: Transform): Transform {\r\n if (result) {\r\n result._origin.setZero();\r\n result._matrix.setIdentity();\r\n return result;\r\n }\r\n return Transform.createRefs(Point3d.createZero(), Matrix3d.createIdentity());\r\n }\r\n /** Create by directly installing origin and matrix\r\n * this is a the appropriate construction when the columns of the matrix are coordinate axes of a local-to-global mapping\r\n * Note there is a closely related createFixedPointAndMatrix whose point input is the fixed point of the global-to-global transformation.\r\n */\r\n public static createOriginAndMatrix(origin: XYZ | undefined, matrix: Matrix3d | undefined, result?: Transform): Transform {\r\n if (result) {\r\n result._origin.setFromPoint3d(origin);\r\n result._matrix.setFrom(matrix);\r\n return result;\r\n }\r\n return Transform.createRefs(\r\n origin ? origin.cloneAsPoint3d() : Point3d.createZero(),\r\n matrix === undefined ? Matrix3d.createIdentity() : matrix.clone(), result);\r\n }\r\n /** Create by directly installing origin and columns of the matrix\r\n */\r\n public static createOriginAndMatrixColumns(origin: XYZ, vectorX: Vector3d, vectorY: Vector3d, vectorZ: Vector3d, result?: Transform): Transform {\r\n if (result)\r\n result.setOriginAndMatrixColumns(origin, vectorX, vectorY, vectorZ);\r\n else\r\n result = Transform.createRefs(Vector3d.createFrom(origin), Matrix3d.createColumns(vectorX, vectorY, vectorZ));\r\n return result;\r\n }\r\n /** Create by with matrix from Matrix3d.createRigidFromColumns.\r\n * * Has careful logic for building up optional result without allocations.\r\n */\r\n public static createRigidFromOriginAndColumns(origin: XYZ | undefined, vectorX: Vector3d, vectorY: Vector3d, axisOrder: AxisOrder, result?: Transform): Transform | undefined {\r\n const matrix = Matrix3d.createRigidFromColumns(vectorX, vectorY, axisOrder, result ? result._matrix : undefined);\r\n if (!matrix)\r\n return undefined;\r\n if (result) {\r\n // The matrix was already defined !!!\r\n result._origin.setFrom(origin);\r\n return result;\r\n }\r\n // cleanly capture the matrix and then the point ..\r\n result = Transform.createRefs(undefined, matrix);\r\n result._origin.setFromPoint3d(origin);\r\n return result;\r\n }\r\n\r\n /** Reinitialize by directly installing origin and columns of the matrix\r\n */\r\n public setOriginAndMatrixColumns(origin: XYZ | undefined, vectorX: Vector3d | undefined, vectorY: Vector3d | undefined, vectorZ: Vector3d | undefined) {\r\n if (origin !== undefined)\r\n this._origin.setFrom(origin);\r\n this._matrix.setColumns(vectorX, vectorY, vectorZ);\r\n }\r\n\r\n /** Create a transform with the specified matrix. Compute an origin (different from the given fixedPoint)\r\n * so that the fixedPoint maps back to itself.\r\n */\r\n public static createFixedPointAndMatrix(fixedPoint: XYAndZ | undefined, matrix: Matrix3d, result?: Transform): Transform {\r\n if (fixedPoint) {\r\n const origin = Matrix3d.xyzMinusMatrixTimesXYZ(fixedPoint, matrix, fixedPoint);\r\n return Transform.createRefs(origin, matrix.clone(), result);\r\n }\r\n return Transform.createRefs(undefined, matrix.clone());\r\n }\r\n /** Create a transform with the specified matrix, acting on any `pointX `via\r\n * `pointY = matrix * (pointX - pointA) + pointB`\r\n * so that the fixedPoint maps back to itself.\r\n */\r\n public static createMatrixPickupPutdown(matrix: Matrix3d, pointA: Point3d, pointB: Point3d, result?: Transform): Transform {\r\n const origin = Matrix3d.xyzMinusMatrixTimesXYZ(pointB, matrix, pointA);\r\n return Transform.createRefs(origin, matrix.clone(), result);\r\n }\r\n\r\n /** Create a Transform which leaves the fixedPoint unchanged and\r\n * scales everything else around it by a single scale factor.\r\n */\r\n public static createScaleAboutPoint(fixedPoint: Point3d, scale: number, result?: Transform): Transform {\r\n const matrix = Matrix3d.createScale(scale, scale, scale);\r\n const origin = Matrix3d.xyzMinusMatrixTimesXYZ(fixedPoint, matrix, fixedPoint);\r\n return Transform.createRefs(origin, matrix, result);\r\n }\r\n\r\n /** Transform the input 2d point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyPoint2d(source: XAndY, result?: Point2d): Point2d {\r\n return Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, source, result);\r\n }\r\n\r\n /** Transform the input 3d point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyPoint3d(point: XYAndZ, result?: Point3d): Point3d {\r\n return Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, point, result);\r\n }\r\n\r\n /** Transform the input object with x,y,z members */\r\n public multiplyXYAndZInPlace(point: XYAndZ) {\r\n return Matrix3d.xyzPlusMatrixTimesXYZInPlace(this._origin, this._matrix, point);\r\n }\r\n\r\n /** Transform the input point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZ(x: number, y: number, z: number = 0, result?: Point3d): Point3d {\r\n return Matrix3d.xyzPlusMatrixTimesCoordinates(this._origin, this._matrix, x, y, z, result);\r\n }\r\n /** Multiply a specific row of the transform times xyz. Return the (number). */\r\n public multiplyComponentXYZ(componentIndex: number, x: number, y: number, z: number = 0): number {\r\n const coffs = this._matrix.coffs;\r\n const i0 = 3 * componentIndex;\r\n return this.origin.at(componentIndex) + coffs[i0] * x + coffs[i0 + 1] * y + coffs[i0 + 2] * z;\r\n }\r\n /** Multiply a specific row of the transform times (weighted!) xyzw. Return the (number). */\r\n public multiplyComponentXYZW(componentIndex: number, x: number, y: number, z: number, w: number): number {\r\n const coffs = this._matrix.coffs;\r\n const i0 = 3 * componentIndex;\r\n return this.origin.at(componentIndex) * w +\r\n coffs[i0] * x + coffs[i0 + 1] * y + coffs[i0 + 2] * z;\r\n }\r\n\r\n /** Transform the input homogeneous point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZW(x: number, y: number, z: number, w: number, result?: Point4d): Point4d {\r\n return Matrix3d.xyzPlusMatrixTimesWeightedCoordinates(this._origin, this._matrix, x, y, z, w, result);\r\n }\r\n /** Transform the input homogeneous point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZWToFloat64Array(x: number, y: number, z: number, w: number, result?: Float64Array): Float64Array {\r\n return Matrix3d.xyzPlusMatrixTimesWeightedCoordinatesToFloat64Array(this._origin, this._matrix, x, y, z, w, result);\r\n }\r\n\r\n /** Transform the input homogeneous point. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyXYZToFloat64Array(x: number, y: number, z: number, result?: Float64Array): Float64Array {\r\n return Matrix3d.xyzPlusMatrixTimesCoordinatesToFloat64Array(this._origin, this._matrix, x, y, z, result);\r\n }\r\n /** Multiply the transposed transform (as 4x4 with 0001 row) by Point4d given as xyzw.. Return as a new point or in the pre-allocated result (if result is given) */\r\n public multiplyTransposeXYZW(x: number, y: number, z: number, w: number, result?: Point4d): Point4d {\r\n const coffs = this._matrix.coffs;\r\n const origin = this._origin;\r\n return Point4d.create(\r\n x * coffs[0] + y * coffs[3] + z * coffs[6],\r\n x * coffs[1] + y * coffs[4] + z * coffs[7],\r\n x * coffs[2] + y * coffs[5] + z * coffs[8],\r\n x * origin.x + y * origin.y + z * origin.z + w,\r\n result);\r\n }\r\n\r\n /** for each point: replace point by Transform*point */\r\n public multiplyPoint3dArrayInPlace(points: Point3d[]) {\r\n let point;\r\n for (point of points)\r\n Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, point, point);\r\n }\r\n\r\n /** for each point: replace point by Transform*point */\r\n public multiplyPoint3dArrayArrayInPlace(chains: Point3d[][]) {\r\n for (const chain of chains)\r\n this.multiplyPoint3dArrayInPlace(chain);\r\n }\r\n /** Return product of the transform's inverse times a point. */\r\n public multiplyInversePoint3d(point: XYAndZ, result?: Point3d): Point3d | undefined {\r\n return this._matrix.multiplyInverseXYZAsPoint3d(\r\n point.x - this._origin.x,\r\n point.y - this._origin.y,\r\n point.z - this._origin.z,\r\n result);\r\n }\r\n /** Inverse transform the input homogeneous point.\r\n * * Return as a new point or in the optional result.\r\n * * returns undefined if the matrix part if this Transform is singular.\r\n */\r\n public multiplyInversePoint4d(weightedPoint: Point4d, result?: Point4d): Point4d | undefined {\r\n const w = weightedPoint.w;\r\n return this._matrix.multiplyInverseXYZW(\r\n weightedPoint.x - w * this.origin.x,\r\n weightedPoint.y - w * this.origin.y,\r\n weightedPoint.z - w * this.origin.z,\r\n w, result);\r\n }\r\n\r\n /** Return product of the transform's inverse times a point (point given as x,y,z) */\r\n public multiplyInverseXYZ(x: number, y: number, z: number, result?: Point3d): Point3d | undefined {\r\n return this._matrix.multiplyInverseXYZAsPoint3d(\r\n x - this._origin.x,\r\n y - this._origin.y,\r\n z - this._origin.z,\r\n result);\r\n }\r\n\r\n /**\r\n * * for each point: multiply transform * point\r\n * * if result is given, resize to match source and replace each corresponding pi\r\n * * if result is not given, return a new array.\r\n */\r\n public multiplyInversePoint3dArray(source: Point3d[], result?: Point3d[]): Point3d[] | undefined {\r\n if (!this._matrix.computeCachedInverse(true))\r\n return undefined;\r\n const originX = this.origin.x;\r\n const originY = this.origin.y;\r\n const originZ = this.origin.z;\r\n if (result) {\r\n const n = Transform.matchArrayLengths(source, result, Point3d.createZero);\r\n for (let i = 0; i < n; i++)\r\n this._matrix.multiplyInverseXYZAsPoint3d(\r\n source[i].x - originX,\r\n source[i].y - originY,\r\n source[i].z - originZ,\r\n result[i]);\r\n }\r\n result = [];\r\n for (const p of source)\r\n result.push(this._matrix.multiplyInverseXYZAsPoint3d(\r\n p.x - originX,\r\n p.y - originY,\r\n p.z - originZ)!);\r\n\r\n return result;\r\n }\r\n /**\r\n * * for each point in source: multiply transformInverse * point in place in the point.\r\n * * return false if not invertible.\r\n */\r\n public multiplyInversePoint3dArrayInPlace(source: Point3d[]): boolean {\r\n if (!this._matrix.computeCachedInverse(true))\r\n return false;\r\n const originX = this.origin.x;\r\n const originY = this.origin.y;\r\n const originZ = this.origin.z;\r\n const n = source.length;\r\n for (let i = 0; i < n; i++)\r\n this._matrix.multiplyInverseXYZAsPoint3d(\r\n source[i].x - originX,\r\n source[i].y - originY,\r\n source[i].z - originZ,\r\n source[i]);\r\n return true;\r\n }\r\n /**\r\n * * Compute (if needed) the inverse of the matrix part, thereby ensuring inverse operations can complete.\r\n * * Return true if matrix inverse completes.\r\n * @param useCached If true, accept prior cached inverse if available.\r\n */\r\n public computeCachedInverse(useCached: boolean = true): boolean {\r\n return this._matrix.computeCachedInverse(useCached);\r\n }\r\n /**\r\n * * If destination has more values than source, remove the extras.\r\n * * If destination has fewer values, use the constructionFunction to create new ones.\r\n * @param source array\r\n * @param dest destination array, to be modified to match source length\r\n * @param constructionFunction function to call to create new entries.\r\n */\r\n // modify destination so it has non-null points for the same length as the source.\r\n // (ASSUME existing elements of dest are non-null, and that parameters are given as either Point2d or Point3d arrays)\r\n public static matchArrayLengths(source: any[], dest: any[], constructionFunction: () => any): number {\r\n const numSource = source.length;\r\n const numDest = dest.length;\r\n if (numSource > numDest) {\r\n for (let i = numDest; i < numSource; i++) {\r\n dest.push(constructionFunction());\r\n }\r\n } else if (numDest > numSource) {\r\n dest.length = numSource;\r\n }\r\n return numSource;\r\n }\r\n\r\n /**\r\n * * for each point: multiply transform * point\r\n * * if result is given, resize to match source and replace each corresponding pi\r\n * * if result is not given, return a new array.\r\n */\r\n public multiplyPoint2dArray(source: Point2d[], result?: Point2d[]): Point2d[] {\r\n if (result) {\r\n const n = Transform.matchArrayLengths(source, result, Point2d.createZero);\r\n for (let i = 0; i < n; i++)\r\n Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, source[i], result[i]);\r\n return result;\r\n }\r\n result = [];\r\n for (const p of source)\r\n result.push(Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, p));\r\n\r\n return result;\r\n }\r\n /**\r\n * * for each point: multiply transform * point\r\n * * if result is given, resize to match source and replace each corresponding pi\r\n * * if result is not given, return a new array.\r\n */\r\n public multiplyPoint3dArray(source: Point3d[], result?: Point3d[]): Point3d[] {\r\n if (result) {\r\n const n = Transform.matchArrayLengths(source, result, Point3d.createZero);\r\n for (let i = 0; i < n; i++)\r\n Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, source[i], result[i]);\r\n return result;\r\n }\r\n result = [];\r\n for (const p of source)\r\n result.push(Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, p));\r\n\r\n return result;\r\n }\r\n\r\n /** Multiply the vector by the Matrix3d part of the transform.\r\n *\r\n * * The transform's origin is not used.\r\n * * Return as new or result by usual optional result convention\r\n */\r\n public multiplyVector(vector: Vector3d, result?: Vector3d): Vector3d {\r\n return this._matrix.multiplyVector(vector, result);\r\n }\r\n\r\n/** Multiply the vector in place by the Matrix3d part of the transform.\r\n *\r\n * * The transform's origin is not used.\r\n */\r\n public multiplyVectorInPlace(vector: Vector3d): void {\r\n this._matrix.multiplyVectorInPlace(vector);\r\n}\r\n\r\n /** Multiply the vector (x,y,z) by the Matrix3d part of the transform.\r\n *\r\n * * The transform's origin is not used.\r\n * * Return as new or result by usual optional result convention\r\n */\r\n public multiplyVectorXYZ(x: number, y: number, z: number, result?: Vector3d): Vector3d {\r\n return this._matrix.multiplyXYZ(x, y, z, result);\r\n }\r\n /** multiply this Transform times other Transform.\r\n * ```\r\n * equation\r\n * \\begin{matrix}\r\n * \\text{`this` transform with matrix part }\\bold{A}\\text{ and translation }\\bold{a} & \\blockTransform{A}{a}\\\\\r\n * \\text{`other` transform with matrix part }\\bold{B}\\text{ and translation part }\\bold{b}\\text{ promoted to block transform} & \\blockTransform{B}{b} \\\\\r\n * \\text{product}& \\blockTransform{A}{a}\\blockTransform{B}{b}=\\blockTransform{AB}{Ab + a}\r\n * \\end{matrix}\r\n * ```\r\n * @param other right hand transform for multiplication.\r\n * @param result optional preallocated result to reuse.\r\n */\r\n public multiplyTransformTransform(other: Transform, result?: Transform) {\r\n if (!result)\r\n return Transform.createRefs(\r\n Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, other._origin),\r\n this._matrix.multiplyMatrixMatrix(other._matrix));\r\n result.setMultiplyTransformTransform(this, other);\r\n return result;\r\n }\r\n /**\r\n * multiply transformA * transformB, store to calling instance.\r\n * @param transformA left operand\r\n * @param transformB right operand\r\n */\r\n public setMultiplyTransformTransform(transformA: Transform, transformB: Transform): void {\r\n if (Transform._scratchPoint === undefined)\r\n Transform._scratchPoint = Point3d.create();\r\n Matrix3d.xyzPlusMatrixTimesXYZ(transformA._origin, transformA._matrix, transformB._origin, Transform._scratchPoint);\r\n this._origin.setFrom(Transform._scratchPoint);\r\n transformA._matrix.multiplyMatrixMatrix(transformB._matrix, this._matrix);\r\n }\r\n // [Q A][R 0] = [QR A]\r\n // [0 1][0 1] [0 1]\r\n /** multiply this Transform times other Matrix3d, with other considered to be a Transform with 0 translation.\r\n * ```\r\n * equation\r\n * \\begin{matrix}\r\n * \\text{`this` transform with matrix part }\\bold{A}\\text{ and translation }\\bold{b} & \\blockTransform{B}{b}\\\\\r\n * \\text{`other` matrix }\\bold{B}\\text{ promoted to block transform} & \\blockTransform{B}{0} \\\\\r\n * \\text{product}& \\blockTransform{A}{a}\\blockTransform{B}{0}=\\blockTransform{AB}{a}\r\n * \\end{matrix}\r\n * ```\r\n * @param other right hand Matrix3d for multiplication.\r\n * @param result optional preallocated result to reuse.\r\n */\r\n public multiplyTransformMatrix3d(other: Matrix3d, result?: Transform): Transform {\r\n if (!result)\r\n return Transform.createRefs(\r\n this._origin.cloneAsPoint3d(),\r\n this._matrix.multiplyMatrixMatrix(other));\r\n this._matrix.multiplyMatrixMatrix(other, result._matrix);\r\n result._origin.setFrom(this._origin);\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the range of the transformed corners.\r\n * * The 8 corners are transformed individually.\r\n * * Note that if there is anything other than translation and principal axis scaling in the transform, the volume of the range rotation will increase.\r\n * * Hence to get a \"tight\" range on rotated geometry, a range computation must be made on the rotated geometry itself.\r\n */\r\n public multiplyRange(range: Range3d, result?: Range3d): Range3d {\r\n if (range.isNull)\r\n return range.clone(result);\r\n\r\n // snag current values to allow aliasing.\r\n const lowX = range.low.x;\r\n const lowY = range.low.y;\r\n const lowZ = range.low.z;\r\n const highX = range.high.x;\r\n const highY = range.high.y;\r\n const highZ = range.high.z;\r\n result = Range3d.createNull(result);\r\n result.extendTransformedXYZ(this, lowX, lowY, lowZ);\r\n result.extendTransformedXYZ(this, highX, lowY, lowZ);\r\n result.extendTransformedXYZ(this, lowX, highY, lowZ);\r\n result.extendTransformedXYZ(this, highX, highY, lowZ);\r\n\r\n result.extendTransformedXYZ(this, lowX, lowY, highZ);\r\n result.extendTransformedXYZ(this, highX, lowY, highZ);\r\n result.extendTransformedXYZ(this, lowX, highY, highZ);\r\n result.extendTransformedXYZ(this, highX, highY, highZ);\r\n return result;\r\n }\r\n /**\r\n * * Return a Transform which is the inverse of this transform.\r\n * * Return undefined if this Transform's matrix is singular.\r\n */\r\n public inverse(): Transform | undefined {\r\n const matrixInverse = this._matrix.inverse();\r\n if (!matrixInverse)\r\n return undefined;\r\n return Transform.createRefs(\r\n matrixInverse.multiplyXYZ(-this._origin.x, -this._origin.y, -this._origin.z),\r\n matrixInverse);\r\n }\r\n /** Initialize transforms that map each direction of a box (axis aligned) to `[0,1]`.\r\n * * The corner coordinates do _not_ need to be in order in any of the x,y,z directions.\r\n * * The npcToGlobalTransform (if supplied) maps 000 to the point named point000.\r\n * * The npcToGlobalTransform (if supplied) maps 11 to the point named point000.\r\n * * The globalToNpc transform is the inverse.\r\n * @param min the \"000\" corner of the box\r\n * @param max the \"111\" corner of the box\r\n * @param npcToGlobal (object created by caller, re-initialized here) transform that carries 01 coordinates into the min,max box.\r\n * @param globalToNpc (object created by caller, re-initialized here) transform that carries world coordinates into 01\r\n */\r\n public static initFromRange(min: Point3d, max: Point3d, npcToGlobal?: Transform, globalToNpc?: Transform) {\r\n const diag = max.minus(min);\r\n if (diag.x === 0.0) diag.x = 1.0;\r\n if (diag.y === 0.0) diag.y = 1.0;\r\n if (diag.z === 0.0) diag.z = 1.0;\r\n\r\n const rMatrix = new Matrix3d();\r\n if (npcToGlobal) {\r\n Matrix3d.createScale(diag.x, diag.y, diag.z, rMatrix);\r\n Transform.createOriginAndMatrix(min, rMatrix, npcToGlobal);\r\n }\r\n\r\n if (globalToNpc) {\r\n const origin = new Point3d(- min.x / diag.x, - min.y / diag.y, - min.z / diag.z);\r\n Matrix3d.createScale(1.0 / diag.x, 1.0 / diag.y, 1.0 / diag.z, rMatrix);\r\n Transform.createOriginAndMatrix(origin, rMatrix, globalToNpc);\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Polynomials.d.ts","sourceRoot":"","sources":["../../../src/numerics/Polynomials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Polynomials.d.ts","sourceRoot":"","sources":["../../../src/numerics/Polynomials.ts"],"names":[],"mappings":"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"}
@@ -1402,7 +1402,6 @@ export class SmallSystem {
1402
1402
  * @param spacePoint homogeneous point in space
1403
1403
  */
1404
1404
  static lineSegment3dClosestPointUnbounded(pointA0, pointA1, spacePoint) {
1405
- // Considering only x,y parts....
1406
1405
  const ux = pointA1.x - pointA0.x;
1407
1406
  const uy = pointA1.y - pointA0.y;
1408
1407
  const uz = pointA1.z - pointA0.z;