@itwin/core-geometry 5.0.0-dev.4 → 5.0.0-dev.6

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 (579) hide show
  1. package/lib/cjs/Constant.js.map +1 -1
  2. package/lib/cjs/Geometry.js.map +1 -1
  3. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  4. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  5. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  7. package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
  8. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  9. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  10. package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
  11. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  12. package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
  13. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  14. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  15. package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
  16. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  17. package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
  18. package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
  19. package/lib/cjs/clipping/ClipPlane.js.map +1 -1
  20. package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
  21. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  22. package/lib/cjs/clipping/ClipVector.js.map +1 -1
  23. package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
  24. package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  25. package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  26. package/lib/cjs/core-geometry.js.map +1 -1
  27. package/lib/cjs/curve/Arc3d.d.ts +25 -5
  28. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  29. package/lib/cjs/curve/Arc3d.js +44 -5
  30. package/lib/cjs/curve/Arc3d.js.map +1 -1
  31. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  32. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  33. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  34. package/lib/cjs/curve/CurveCollection.d.ts +6 -2
  35. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  36. package/lib/cjs/curve/CurveCollection.js +11 -2
  37. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  38. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  39. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  40. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  41. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  42. package/lib/cjs/curve/CurveOps.js.map +1 -1
  43. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  44. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  45. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  46. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  47. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  48. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  49. package/lib/cjs/curve/LineString3d.d.ts +12 -8
  50. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  51. package/lib/cjs/curve/LineString3d.js +29 -8
  52. package/lib/cjs/curve/LineString3d.js.map +1 -1
  53. package/lib/cjs/curve/Loop.d.ts +12 -6
  54. package/lib/cjs/curve/Loop.d.ts.map +1 -1
  55. package/lib/cjs/curve/Loop.js +12 -6
  56. package/lib/cjs/curve/Loop.js.map +1 -1
  57. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  58. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  59. package/lib/cjs/curve/Path.js.map +1 -1
  60. package/lib/cjs/curve/PointString3d.js.map +1 -1
  61. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  62. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  63. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  64. package/lib/cjs/curve/Query/CylindricalRange.d.ts +8 -6
  65. package/lib/cjs/curve/Query/CylindricalRange.d.ts.map +1 -1
  66. package/lib/cjs/curve/Query/CylindricalRange.js +13 -9
  67. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  68. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  69. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  70. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  71. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  72. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  73. package/lib/cjs/curve/RegionOps.js.map +1 -1
  74. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  75. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  76. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  80. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  83. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  84. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  85. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  86. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  87. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  88. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  89. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js +24 -18
  90. package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  91. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  92. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  93. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  94. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  95. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  96. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  97. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  98. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  99. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  100. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  101. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  102. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  103. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  104. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  105. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  106. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  107. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  108. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  109. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  110. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  111. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  112. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  113. package/lib/cjs/geometry3d/BarycentricTriangle.d.ts +14 -8
  114. package/lib/cjs/geometry3d/BarycentricTriangle.d.ts.map +1 -1
  115. package/lib/cjs/geometry3d/BarycentricTriangle.js +17 -8
  116. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  117. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  118. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  119. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  120. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  121. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  122. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  123. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  124. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts +2 -0
  125. package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  126. package/lib/cjs/geometry3d/GrowableFloat64Array.js +4 -0
  127. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  128. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  129. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  130. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  131. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  132. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  133. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  134. package/lib/cjs/geometry3d/Matrix3d.d.ts +8 -4
  135. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  136. package/lib/cjs/geometry3d/Matrix3d.js +25 -22
  137. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  138. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  139. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  140. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  141. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  142. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  143. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  144. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  145. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  146. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  147. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  148. package/lib/cjs/geometry3d/PolygonOps.d.ts +10 -4
  149. package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -1
  150. package/lib/cjs/geometry3d/PolygonOps.js +92 -45
  151. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  152. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  153. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  154. package/lib/cjs/geometry3d/Range.js.map +1 -1
  155. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  156. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  157. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  158. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  159. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  160. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  161. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  162. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  163. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  164. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  165. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  166. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  167. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  168. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  169. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  170. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  171. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  172. package/lib/cjs/numerics/Complex.js.map +1 -1
  173. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  174. package/lib/cjs/numerics/Newton.js.map +1 -1
  175. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  176. package/lib/cjs/numerics/PolarData.js.map +1 -1
  177. package/lib/cjs/numerics/Polynomials.d.ts +5 -5
  178. package/lib/cjs/numerics/Polynomials.js +6 -6
  179. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  180. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  181. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  182. package/lib/cjs/numerics/SmallSystem.js.map +1 -1
  183. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  184. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  185. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  186. package/lib/cjs/polyface/AuxData.d.ts +2 -2
  187. package/lib/cjs/polyface/AuxData.d.ts.map +1 -1
  188. package/lib/cjs/polyface/AuxData.js +11 -3
  189. package/lib/cjs/polyface/AuxData.js.map +1 -1
  190. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  191. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  192. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  193. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  194. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  195. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  196. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  197. package/lib/cjs/polyface/Polyface.d.ts +3 -5
  198. package/lib/cjs/polyface/Polyface.d.ts.map +1 -1
  199. package/lib/cjs/polyface/Polyface.js +6 -13
  200. package/lib/cjs/polyface/Polyface.js.map +1 -1
  201. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  202. package/lib/cjs/polyface/PolyfaceBuilder.js +23 -13
  203. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  204. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  205. package/lib/cjs/polyface/PolyfaceData.d.ts +13 -3
  206. package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -1
  207. package/lib/cjs/polyface/PolyfaceData.js +21 -4
  208. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  209. package/lib/cjs/polyface/PolyfaceQuery.d.ts +2 -2
  210. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  211. package/lib/cjs/polyface/PolyfaceQuery.js +4 -3
  212. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  213. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  214. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  215. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  216. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  217. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  218. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  219. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  220. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  221. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  222. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  223. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  224. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  225. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  226. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  227. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  228. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  229. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  230. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  231. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  232. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  233. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  234. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  235. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  236. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  237. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  238. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  239. package/lib/cjs/solid/Box.d.ts +9 -3
  240. package/lib/cjs/solid/Box.d.ts.map +1 -1
  241. package/lib/cjs/solid/Box.js +10 -5
  242. package/lib/cjs/solid/Box.js.map +1 -1
  243. package/lib/cjs/solid/Cone.d.ts +3 -2
  244. package/lib/cjs/solid/Cone.d.ts.map +1 -1
  245. package/lib/cjs/solid/Cone.js +3 -3
  246. package/lib/cjs/solid/Cone.js.map +1 -1
  247. package/lib/cjs/solid/LinearSweep.d.ts +9 -3
  248. package/lib/cjs/solid/LinearSweep.d.ts.map +1 -1
  249. package/lib/cjs/solid/LinearSweep.js +9 -4
  250. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  251. package/lib/cjs/solid/RotationalSweep.d.ts +15 -4
  252. package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -1
  253. package/lib/cjs/solid/RotationalSweep.js +20 -7
  254. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  255. package/lib/cjs/solid/RuledSweep.d.ts +9 -3
  256. package/lib/cjs/solid/RuledSweep.d.ts.map +1 -1
  257. package/lib/cjs/solid/RuledSweep.js +11 -5
  258. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  259. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  260. package/lib/cjs/solid/Sphere.d.ts +17 -7
  261. package/lib/cjs/solid/Sphere.d.ts.map +1 -1
  262. package/lib/cjs/solid/Sphere.js +22 -16
  263. package/lib/cjs/solid/Sphere.js.map +1 -1
  264. package/lib/cjs/solid/SweepContour.d.ts +1 -1
  265. package/lib/cjs/solid/SweepContour.js +1 -1
  266. package/lib/cjs/solid/SweepContour.js.map +1 -1
  267. package/lib/cjs/solid/TorusPipe.d.ts +8 -2
  268. package/lib/cjs/solid/TorusPipe.d.ts.map +1 -1
  269. package/lib/cjs/solid/TorusPipe.js +9 -5
  270. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  271. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  272. package/lib/cjs/topology/Graph.js.map +1 -1
  273. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  274. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  275. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  276. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  277. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  278. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  279. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  280. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  281. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  282. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  283. package/lib/cjs/topology/MaskManager.js.map +1 -1
  284. package/lib/cjs/topology/Merging.js.map +1 -1
  285. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  286. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  287. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  288. package/lib/cjs/topology/Triangulation.js.map +1 -1
  289. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  290. package/lib/esm/Constant.js.map +1 -1
  291. package/lib/esm/Geometry.js.map +1 -1
  292. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  293. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  294. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  295. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  296. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  297. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  298. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  299. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  300. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  301. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  302. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  303. package/lib/esm/bspline/KnotVector.js.map +1 -1
  304. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  305. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  306. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  307. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  308. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  309. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  310. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  311. package/lib/esm/clipping/ClipVector.js.map +1 -1
  312. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  313. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  314. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  315. package/lib/esm/core-geometry.js.map +1 -1
  316. package/lib/esm/curve/Arc3d.d.ts +25 -5
  317. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  318. package/lib/esm/curve/Arc3d.js +44 -5
  319. package/lib/esm/curve/Arc3d.js.map +1 -1
  320. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  321. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  322. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  323. package/lib/esm/curve/CurveCollection.d.ts +6 -2
  324. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  325. package/lib/esm/curve/CurveCollection.js +11 -2
  326. package/lib/esm/curve/CurveCollection.js.map +1 -1
  327. package/lib/esm/curve/CurveCurve.js.map +1 -1
  328. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  329. package/lib/esm/curve/CurveFactory.js.map +1 -1
  330. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  331. package/lib/esm/curve/CurveOps.js.map +1 -1
  332. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  333. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  334. package/lib/esm/curve/CurveTypes.js.map +1 -1
  335. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  336. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  337. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  338. package/lib/esm/curve/LineString3d.d.ts +12 -8
  339. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  340. package/lib/esm/curve/LineString3d.js +29 -8
  341. package/lib/esm/curve/LineString3d.js.map +1 -1
  342. package/lib/esm/curve/Loop.d.ts +12 -6
  343. package/lib/esm/curve/Loop.d.ts.map +1 -1
  344. package/lib/esm/curve/Loop.js +12 -6
  345. package/lib/esm/curve/Loop.js.map +1 -1
  346. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  347. package/lib/esm/curve/ParityRegion.js.map +1 -1
  348. package/lib/esm/curve/Path.js.map +1 -1
  349. package/lib/esm/curve/PointString3d.js.map +1 -1
  350. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  351. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  352. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  353. package/lib/esm/curve/Query/CylindricalRange.d.ts +8 -6
  354. package/lib/esm/curve/Query/CylindricalRange.d.ts.map +1 -1
  355. package/lib/esm/curve/Query/CylindricalRange.js +13 -9
  356. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  357. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  358. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  359. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  360. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  361. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  362. package/lib/esm/curve/RegionOps.js.map +1 -1
  363. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  364. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  365. package/lib/esm/curve/UnionRegion.js.map +1 -1
  366. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  367. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  368. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  369. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  370. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  371. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  372. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  373. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  374. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  375. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  376. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  377. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.d.ts.map +1 -1
  378. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js +24 -18
  379. package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
  380. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  381. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  382. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  383. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  384. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  385. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  386. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  387. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  388. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  389. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  390. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  391. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  392. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  393. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  394. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  395. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  396. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  397. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  398. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  399. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  400. package/lib/esm/geometry3d/Angle.js.map +1 -1
  401. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  402. package/lib/esm/geometry3d/BarycentricTriangle.d.ts +14 -8
  403. package/lib/esm/geometry3d/BarycentricTriangle.d.ts.map +1 -1
  404. package/lib/esm/geometry3d/BarycentricTriangle.js +17 -8
  405. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  406. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  407. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  408. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  409. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  410. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  411. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  412. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  413. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts +2 -0
  414. package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -1
  415. package/lib/esm/geometry3d/GrowableFloat64Array.js +4 -0
  416. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  417. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  418. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  419. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  420. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  421. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  422. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  423. package/lib/esm/geometry3d/Matrix3d.d.ts +8 -4
  424. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  425. package/lib/esm/geometry3d/Matrix3d.js +25 -22
  426. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  427. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  428. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  429. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  430. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  431. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  432. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  433. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  434. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  435. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  436. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  437. package/lib/esm/geometry3d/PolygonOps.d.ts +10 -4
  438. package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -1
  439. package/lib/esm/geometry3d/PolygonOps.js +92 -45
  440. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  441. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  442. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  443. package/lib/esm/geometry3d/Range.js.map +1 -1
  444. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  445. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  446. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  447. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  448. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  449. package/lib/esm/geometry3d/Transform.js.map +1 -1
  450. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  451. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  452. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  453. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  454. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  455. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  456. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  457. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  458. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  459. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  460. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  461. package/lib/esm/numerics/Complex.js.map +1 -1
  462. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  463. package/lib/esm/numerics/Newton.js.map +1 -1
  464. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  465. package/lib/esm/numerics/PolarData.js.map +1 -1
  466. package/lib/esm/numerics/Polynomials.d.ts +5 -5
  467. package/lib/esm/numerics/Polynomials.js +6 -6
  468. package/lib/esm/numerics/Polynomials.js.map +1 -1
  469. package/lib/esm/numerics/Quadrature.js.map +1 -1
  470. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  471. package/lib/esm/numerics/SmallSystem.js.map +1 -1
  472. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  473. package/lib/esm/numerics/UnionFind.js.map +1 -1
  474. package/lib/esm/numerics/UsageSums.js.map +1 -1
  475. package/lib/esm/polyface/AuxData.d.ts +2 -2
  476. package/lib/esm/polyface/AuxData.d.ts.map +1 -1
  477. package/lib/esm/polyface/AuxData.js +11 -3
  478. package/lib/esm/polyface/AuxData.js.map +1 -1
  479. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  480. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  481. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  482. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  483. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  484. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  485. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  486. package/lib/esm/polyface/Polyface.d.ts +3 -5
  487. package/lib/esm/polyface/Polyface.d.ts.map +1 -1
  488. package/lib/esm/polyface/Polyface.js +6 -13
  489. package/lib/esm/polyface/Polyface.js.map +1 -1
  490. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  491. package/lib/esm/polyface/PolyfaceBuilder.js +23 -13
  492. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  493. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  494. package/lib/esm/polyface/PolyfaceData.d.ts +13 -3
  495. package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -1
  496. package/lib/esm/polyface/PolyfaceData.js +21 -4
  497. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  498. package/lib/esm/polyface/PolyfaceQuery.d.ts +2 -2
  499. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  500. package/lib/esm/polyface/PolyfaceQuery.js +4 -3
  501. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  502. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  503. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  504. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  505. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  506. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  507. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  508. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  509. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  510. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  511. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  512. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  513. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  514. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  515. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  516. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  517. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  518. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  519. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  520. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  521. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  522. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  523. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  524. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  525. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  526. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  527. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  528. package/lib/esm/solid/Box.d.ts +9 -3
  529. package/lib/esm/solid/Box.d.ts.map +1 -1
  530. package/lib/esm/solid/Box.js +10 -5
  531. package/lib/esm/solid/Box.js.map +1 -1
  532. package/lib/esm/solid/Cone.d.ts +3 -2
  533. package/lib/esm/solid/Cone.d.ts.map +1 -1
  534. package/lib/esm/solid/Cone.js +3 -3
  535. package/lib/esm/solid/Cone.js.map +1 -1
  536. package/lib/esm/solid/LinearSweep.d.ts +9 -3
  537. package/lib/esm/solid/LinearSweep.d.ts.map +1 -1
  538. package/lib/esm/solid/LinearSweep.js +9 -4
  539. package/lib/esm/solid/LinearSweep.js.map +1 -1
  540. package/lib/esm/solid/RotationalSweep.d.ts +15 -4
  541. package/lib/esm/solid/RotationalSweep.d.ts.map +1 -1
  542. package/lib/esm/solid/RotationalSweep.js +20 -7
  543. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  544. package/lib/esm/solid/RuledSweep.d.ts +9 -3
  545. package/lib/esm/solid/RuledSweep.d.ts.map +1 -1
  546. package/lib/esm/solid/RuledSweep.js +11 -5
  547. package/lib/esm/solid/RuledSweep.js.map +1 -1
  548. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  549. package/lib/esm/solid/Sphere.d.ts +17 -7
  550. package/lib/esm/solid/Sphere.d.ts.map +1 -1
  551. package/lib/esm/solid/Sphere.js +22 -16
  552. package/lib/esm/solid/Sphere.js.map +1 -1
  553. package/lib/esm/solid/SweepContour.d.ts +1 -1
  554. package/lib/esm/solid/SweepContour.js +1 -1
  555. package/lib/esm/solid/SweepContour.js.map +1 -1
  556. package/lib/esm/solid/TorusPipe.d.ts +8 -2
  557. package/lib/esm/solid/TorusPipe.d.ts.map +1 -1
  558. package/lib/esm/solid/TorusPipe.js +9 -5
  559. package/lib/esm/solid/TorusPipe.js.map +1 -1
  560. package/lib/esm/topology/ChainMerge.js.map +1 -1
  561. package/lib/esm/topology/Graph.js.map +1 -1
  562. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  563. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  564. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  565. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  566. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  567. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  568. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  569. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  570. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  571. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  572. package/lib/esm/topology/MaskManager.js.map +1 -1
  573. package/lib/esm/topology/Merging.js.map +1 -1
  574. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  575. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  576. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  577. package/lib/esm/topology/Triangulation.js.map +1 -1
  578. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  579. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"PolyfaceData.js","sourceRoot":"","sources":["../../../src/polyface/PolyfaceData.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Polyface\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { GrowableXYArray } from \"../geometry3d/GrowableXYArray\";\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { NumberArray } from \"../geometry3d/PointHelpers\";\nimport { Range3d } from \"../geometry3d/Range\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { ClusterableArray } from \"../numerics/ClusterableArray\";\nimport { PolyfaceAuxData } from \"./AuxData\";\nimport { FacetFaceData } from \"./FacetFaceData\";\nimport { TaggedNumericData } from \"./TaggedNumericData\";\n\n// cspell:word internaldocs\n\n/**\n * `PolyfaceData` carries data arrays for point, normal, uv-parameters, and color, and index arrays for each.\n * * Normal, uv-parameter, and color data are optional.\n * * A given data array is defined if and only if its corresponding index array is defined.\n * * All defined index arrays have parallel face loop order and structure, and thus the same length.\n * * `IndexedPolyface` carries a PolyfaceData as a member (NOT as a base class; it already has `GeometryQuery` as base).\n * * `IndexedPolyfaceVisitor` uses PolyfaceData as a base class. In this use, there is only a single facet in `PolyfaceData`.\n * * `PolyfaceData` does not know what index range constitutes a given facet. This is managed by a derived/carrier class.\n * @public\n */\nexport class PolyfaceData {\n /**\n * Relative tolerance used in tests for planar facets.\n * @internal\n */\n public static readonly planarityLocalRelTol = 1.0e-13;\n /** Coordinate data for points in the facets (packed as numbers in a contiguous array). */\n public point: GrowableXYZArray;\n /** Indices of points at facet vertices. */\n public pointIndex: number[];\n /** Coordinates of normal vectors (packed as numbers in a contiguous array). */\n public normal?: GrowableXYZArray;\n /** Indices of normals at facet vertices. */\n public normalIndex?: number[];\n /** Coordinates of uv parameters (packed as numbers in a contiguous array). */\n public param?: GrowableXYArray;\n /** Indices of params at facet vertices. */\n public paramIndex?: number[];\n /**\n * Color values. These are carried around as simple numbers, but are probably required (by display systems) to map\n * exactly to 32-bit integers.\n */\n public color?: number[];\n /** Indices of colors at facet vertices. */\n public colorIndex?: number[];\n /**\n * Map from facet index to face data.\n * * A \"face\" is a logical grouping of connected facets in the mesh, e.g., the facets that resulted from faceting\n * a given face of a solid.\n * * Face data remains empty until a face is specified.\n */\n public face: FacetFaceData[];\n /** Auxiliary data. */\n public auxData?: PolyfaceAuxData;\n /** Tagged geometry data. */\n public taggedNumericData?: TaggedNumericData;\n /**\n * Booleans indicating visibility of corresponding edges.\n * * The `edgeVisible` array is parallel to the `pointIndex` array.\n * * The visibility flag applies to the edge whose start vertex index appears in the same place in the `pointIndex` array.\n * * For example, consider the mesh with 2 triangular facets given by `pointIndex = [1,0,2, 1,2,3]`. If the triangles'\n * shared edge is hidden, then the mesh has `edgeVisible = [true,true,false, false,true,true]`.\n */\n public edgeVisible: boolean[];\n /** Boolean tag indicating if the facets are viewable from the back. */\n private _twoSided: boolean;\n /**\n * Flag indicating if the mesh closure is unknown (0), open sheet (1), closed solid (2).\n * * A boundary edge of a mesh is defined as an edge with only one connected facet.\n * * Closed solid is a mesh with no boundary edge. Open sheet is a mesh that has boundary edge(s).\n */\n private _expectedClosure: number;\n /**\n * Constructor for facets.\n * @param needNormals `true` to allocate empty normal data and index arrays; `false` (default) to leave undefined.\n * @param needParams `true` to allocate empty uv parameter data and index arrays; `false` (default) to leave undefined.\n * @param needColors `true` to allocate empty color data and index arrays; `false` (default) to leave undefined.\n * @param twoSided `true` if the facets are to be considered viewable from the back; `false` (default) if not.\n */\n public constructor(\n needNormals: boolean = false, needParams: boolean = false, needColors: boolean = false, twoSided: boolean = false,\n ) {\n this.point = new GrowableXYZArray();\n this.pointIndex = [];\n if (needNormals) {\n this.normal = new GrowableXYZArray();\n this.normalIndex = [];\n }\n if (needParams) {\n this.param = new GrowableXYArray();\n this.paramIndex = [];\n }\n if (needColors) {\n this.color = [];\n this.colorIndex = [];\n }\n this.face = [];\n this.edgeVisible = [];\n this._twoSided = twoSided;\n this._expectedClosure = 0;\n }\n /** Return a deep clone. */\n public clone(): PolyfaceData {\n const result = new PolyfaceData();\n result.point = this.point.clone();\n result.pointIndex = this.pointIndex.slice();\n if (this.normal)\n result.normal = this.normal.clone();\n if (this.normalIndex)\n result.normalIndex = this.normalIndex.slice();\n if (this.param)\n result.param = this.param.clone();\n if (this.paramIndex)\n result.paramIndex = this.paramIndex.slice();\n if (this.color)\n result.color = this.color.slice();\n if (this.colorIndex)\n result.colorIndex = this.colorIndex.slice();\n result.face = this.face.slice();\n if (this.auxData)\n result.auxData = this.auxData.clone();\n if (this.taggedNumericData)\n result.taggedNumericData = this.taggedNumericData.clone();\n result.edgeVisible = this.edgeVisible.slice();\n result.twoSided = this.twoSided;\n result.expectedClosure = this.expectedClosure;\n return result;\n }\n /** Test for equal indices and nearly equal coordinates. */\n public isAlmostEqual(other: PolyfaceData): boolean {\n if (!GrowableXYZArray.isAlmostEqual(this.point, other.point))\n return false;\n if (!NumberArray.isExactEqual(this.pointIndex, other.pointIndex))\n return false;\n if (!GrowableXYZArray.isAlmostEqual(this.normal, other.normal))\n return false;\n if (!NumberArray.isExactEqual(this.normalIndex, other.normalIndex))\n return false;\n if (!GrowableXYArray.isAlmostEqual(this.param, other.param))\n return false;\n if (!NumberArray.isExactEqual(this.paramIndex, other.paramIndex))\n return false;\n if (!NumberArray.isExactEqual(this.color, other.color))\n return false;\n if (!NumberArray.isExactEqual(this.colorIndex, other.colorIndex))\n return false;\n if (!PolyfaceAuxData.isAlmostEqual(this.auxData, other.auxData))\n return false;\n if (!TaggedNumericData.areAlmostEqual(this.taggedNumericData, other.taggedNumericData))\n return false;\n if (!NumberArray.isExactEqual(this.edgeVisible, other.edgeVisible))\n return false;\n if (this.twoSided !== other.twoSided)\n return false;\n if (this.expectedClosure !== other.expectedClosure)\n return false;\n return true;\n }\n /** Ask if normals are required in this mesh. */\n public get requireNormals(): boolean {\n return undefined !== this.normal;\n }\n /** Ask if params are required in this mesh. */\n public get requireParams(): boolean {\n return undefined !== this.param;\n }\n /** Ask if colors are required in this mesh. */\n public get requireColors(): boolean {\n return undefined !== this.color;\n }\n /** Get the point count */\n public get pointCount() {\n return this.point.length;\n }\n /** Get the normal count */\n public get normalCount() {\n return this.normal ? this.normal.length : 0;\n }\n /** Get the param count */\n public get paramCount() {\n return this.param ? this.param.length : 0;\n }\n /** Get the color count */\n public get colorCount() {\n return this.color ? this.color.length : 0;\n }\n /** Get the index count. Note that the point array is always indexed, and index arrays all have the same length. */\n public get indexCount() {\n return this.pointIndex.length;\n }\n /**\n * Get the number of faces.\n * * Note that a \"face\" is not a facet.\n * * A face is a subset of the Polyface's facets grouped for application purposes.\n */\n public get faceCount() {\n return this.face.length;\n }\n /** Return indexed point at index `i`. This is a COPY of the coordinates, not a reference. */\n public getPoint(i: number, result?: Point3d): Point3d | undefined {\n return this.point.getPoint3dAtCheckedPointIndex(i, result);\n }\n /** Return indexed normal at index `i`. This is a COPY of the normal, not a reference. */\n public getNormal(i: number, result?: Vector3d): Vector3d | undefined {\n return this.normal ? this.normal.getVector3dAtCheckedVectorIndex(i, result) : undefined;\n }\n /** Return indexed param at index `i`. This is a COPY of the coordinates, not a reference. */\n public getParam(i: number, result?: Point2d): Point2d | undefined {\n return this.param ? this.param.getPoint2dAtCheckedPointIndex(i, result) : undefined;\n }\n /** Return indexed color at index `i`. Index `i` is not checked for validity. */\n public getColor(i: number): number {\n return this.color ? this.color[i] : 0;\n }\n /** Return indexed visibility. at index `i`. Index `i` is not checked for validity. */\n public getEdgeVisible(i: number): boolean {\n return this.edgeVisible[i];\n }\n /** Get boolean tag indicating if the facets are to be considered viewable from the back. */\n public get twoSided(): boolean {\n return this._twoSided;\n }\n public set twoSided(value: boolean) {\n this._twoSided = value;\n }\n /** Get flag indicating if the mesh closure is unknown (0), open sheet (1), closed solid (2). */\n public get expectedClosure(): number {\n return this._expectedClosure;\n }\n public set expectedClosure(value: number) {\n this._expectedClosure = value;\n }\n /** Set the tagged geometry data. */\n public setTaggedNumericData(data: TaggedNumericData | undefined) {\n this.taggedNumericData = data;\n }\n /** Copy the contents (not pointer) of `point[i]` into `dest`. Index `i` is not checked for validity. */\n public copyPointTo(i: number, dest: Point3d): void {\n this.point.getPoint3dAtUncheckedPointIndex(i, dest);\n }\n /** Copy the contents (not pointer) of `normal[i]` into `dest`. Index `i` is not checked for validity. */\n public copyNormalTo(i: number, dest: Vector3d): void {\n if (this.normal)\n this.normal.getVector3dAtUncheckedVectorIndex(i, dest);\n }\n /** Copy the contents (not pointer) of `param[i]` into `dest`. Index `i` is not checked for validity. */\n public copyParamTo(i: number, dest: Point2d): void {\n if (this.param)\n this.param.getPoint2dAtUncheckedPointIndex(i, dest);\n }\n /** Test if param at a index `i` matches the given uv */\n public isAlmostEqualParamIndexUV(i: number, u: number, v: number): boolean {\n if (this.param !== undefined && i >= 0 && i < this.param.length)\n return Geometry.isSameCoordinate(u, this.param.getXAtUncheckedPointIndex(i))\n && Geometry.isSameCoordinate(v, this.param.getYAtUncheckedPointIndex(i));\n return false;\n }\n /**\n * Copy data from `other` to `this`.\n * * This is the essence of transferring coordinates spread throughout a large polyface into a visitor's single facet.\n * * Common usage: \"other\" is a Polyface, \"this\" is a PolyfaceVisitor to receive data from a single facet of the Polyface.\n * * Does NOT copy face data - visitors reference the FacetFaceData array for the whole polyface.\n * @param other polyface data being mined.\n * @param index0 start index in other's index arrays.\n * @param index1 end index (one beyond last data accessed) in other's index arrays.\n * @param numWrap number of points to replicate as wraparound.\n */\n public gatherIndexedData(other: PolyfaceData, index0: number, index1: number, numWrap: number): void {\n const numEdge = index1 - index0;\n if (numWrap > numEdge)\n numWrap = numEdge;\n const numTotal = numEdge + numWrap;\n this.resizeAllArrays(numTotal);\n // copy wrapped points\n for (let i = 0; i < numEdge; i++)\n this.point.transferFromGrowableXYZArray(i, other.point, other.pointIndex[index0 + i]);\n for (let i = 0; i < numWrap; i++)\n this.point.transferFromGrowableXYZArray(numEdge + i, this.point, i);\n // copy wrapped pointIndex\n for (let i = 0; i < numEdge; i++)\n this.pointIndex[i] = other.pointIndex[index0 + i];\n for (let i = 0; i < numWrap; i++)\n this.pointIndex[numEdge + i] = this.pointIndex[i];\n // copy wrapped normals\n if (this.normal && this.normalIndex && other.normal && other.normalIndex) {\n for (let i = 0; i < numEdge; i++)\n this.normal.transferFromGrowableXYZArray(i, other.normal, other.normalIndex[index0 + i]);\n for (let i = 0; i < numWrap; i++)\n this.normal.transferFromGrowableXYZArray(numEdge + i, this.normal, i);\n // copy wrapped normalIndex\n for (let i = 0; i < numEdge; i++)\n this.normalIndex[i] = other.normalIndex[index0 + i];\n for (let i = 0; i < numWrap; i++)\n this.normalIndex[numEdge + i] = this.normalIndex[i];\n }\n // copy wrapped params\n if (this.param && this.paramIndex && other.param && other.paramIndex) {\n for (let i = 0; i < numEdge; i++)\n this.param.transferFromGrowableXYArray(i, other.param, other.paramIndex[index0 + i]);\n for (let i = 0; i < numWrap; i++)\n this.param.transferFromGrowableXYArray(numEdge + i, this.param, i);\n // copy wrapped paramIndex\n for (let i = 0; i < numEdge; i++)\n this.paramIndex[i] = other.paramIndex[index0 + i];\n for (let i = 0; i < numWrap; i++)\n this.paramIndex[numEdge + i] = this.paramIndex[i];\n }\n // copy wrapped colors\n if (this.color && this.colorIndex && other.color && other.colorIndex) {\n for (let i = 0; i < numEdge; i++)\n this.color[i] = other.color[other.colorIndex[index0 + i]];\n for (let i = 0; i < numWrap; i++)\n this.color[numEdge + i] = this.color[i];\n // copy wrapped colorIndex\n for (let i = 0; i < numEdge; i++)\n this.colorIndex[i] = other.colorIndex[index0 + i];\n for (let i = 0; i < numWrap; i++)\n this.colorIndex[numEdge + i] = this.colorIndex[i];\n }\n // copy wrapped edge visibility\n for (let i = 0; i < numEdge; i++)\n this.edgeVisible[i] = other.edgeVisible[index0 + i];\n for (let i = 0; i < numWrap; i++)\n this.edgeVisible[numEdge + i] = this.edgeVisible[i];\n // copy wrapped auxData\n if (this.auxData && other.auxData && this.auxData.channels.length === other.auxData.channels.length) {\n for (let iChannel = 0; iChannel < this.auxData.channels.length; iChannel++) {\n const thisChannel = this.auxData.channels[iChannel];\n const otherChannel = other.auxData.channels[iChannel];\n const blockSize = thisChannel.entriesPerValue;\n if (thisChannel.data.length === otherChannel.data.length) {\n for (let iData = 0; iData < thisChannel.data.length; iData++) {\n const thisData = thisChannel.data[iData];\n const otherData = otherChannel.data[iData];\n for (let i = 0; i < numEdge; i++)\n thisData.copyValues(otherData, i, other.auxData.indices[index0 + i], blockSize);\n for (let i = 0; i < numWrap; i++)\n thisData.copyValues(thisData, other.auxData.indices[numEdge + i], i, blockSize);\n }\n }\n }\n // copy wrapped auxData index\n for (let i = 0; i < numEdge; i++)\n this.auxData.indices[i] = other.auxData.indices[index0 + i];\n for (let i = 0; i < numWrap; i++)\n this.auxData.indices[numEdge + i] = this.auxData.indices[i];\n }\n }\n /** Trim the `data` arrays to the stated `length`. */\n private static trimArray(data: any[] | undefined, length: number) {\n if (data && length < data.length)\n data.length = length;\n }\n /**\n * Trim all index arrays to the stated `length`.\n * * This is called by PolyfaceBuilder to clean up after an aborted construction sequence.\n */\n public trimAllIndexArrays(length: number): void {\n PolyfaceData.trimArray(this.pointIndex, length);\n PolyfaceData.trimArray(this.paramIndex, length);\n PolyfaceData.trimArray(this.normalIndex, length);\n PolyfaceData.trimArray(this.colorIndex, length);\n PolyfaceData.trimArray(this.edgeVisible, length);\n if (this.auxData) {\n PolyfaceData.trimArray(this.auxData.indices, length);\n for (const channel of this.auxData.channels) {\n for (const data of channel.data)\n PolyfaceData.trimArray(data.values, channel.entriesPerValue * length);\n }\n }\n }\n /**\n * Resize all data and index arrays to the specified `length`.\n * * This is used by visitors, whose data and index arrays are all parallel.\n */\n public resizeAllArrays(length: number): void {\n if (length > this.point.length) {\n while (this.point.length < length)\n this.point.push(Point3d.create());\n while (this.pointIndex.length < length)\n this.pointIndex.push(-1);\n if (this.normal)\n while (this.normal.length < length)\n this.normal.push(Vector3d.create());\n if (this.normalIndex)\n while (this.normalIndex.length < length)\n this.normalIndex.push(-1);\n if (this.param)\n while (this.param.length < length)\n this.param.push(Point2d.create());\n if (this.paramIndex)\n while (this.paramIndex.length < length)\n this.paramIndex.push(-1);\n if (this.color)\n while (this.color.length < length)\n this.color.push(0);\n if (this.colorIndex)\n while (this.colorIndex.length < length)\n this.colorIndex.push(-1);\n while (this.edgeVisible.length < length)\n this.edgeVisible.push(false);\n if (this.auxData) {\n for (const channel of this.auxData.channels) {\n for (const channelData of channel.data) {\n while (channelData.values.length < length * channel.entriesPerValue) channelData.values.push(0);\n }\n }\n if (this.auxData.indices)\n this.auxData.indices.push(-1);\n }\n } else if (length < this.point.length) {\n this.point.resize(length);\n this.pointIndex.length = length;\n if (this.normal)\n this.normal.resize(length);\n if (this.normalIndex)\n this.normalIndex.length = length;\n if (this.param)\n this.param.resize(length);\n if (this.paramIndex)\n this.paramIndex.length = length;\n if (this.color)\n this.color.length = length;\n if (this.colorIndex)\n this.colorIndex.length = length;\n this.edgeVisible.length = length;\n if (this.auxData) {\n for (const channel of this.auxData.channels) {\n for (const channelData of channel.data) {\n channelData.values.length = length * channel.entriesPerValue;\n }\n }\n if (this.auxData.indices)\n this.auxData.indices.length = length;\n }\n }\n }\n /**\n * Resize all data arrays to the specified `length`.\n * @deprecated in 4.x because name is misleading. Call [[PolyfaceData.resizeAllArrays]] instead.\n */\n public resizeAllDataArrays(length: number): void {\n if (length > this.point.length) {\n while (this.point.length < length) this.point.push(Point3d.create());\n while (this.pointIndex.length < length) this.pointIndex.push(-1);\n while (this.edgeVisible.length < length) this.edgeVisible.push(false);\n if (this.normal)\n while (this.normal.length < length) this.normal.push(Vector3d.create());\n if (this.param)\n while (this.param.length < length) this.param.push(Point2d.create());\n if (this.color)\n while (this.color.length < length) this.color.push(0);\n if (this.auxData) {\n for (const channel of this.auxData.channels) {\n for (const channelData of channel.data) {\n while (channelData.values.length < length * channel.entriesPerValue) channelData.values.push(0);\n }\n }\n }\n } else if (length < this.point.length) {\n this.point.resize(length);\n this.edgeVisible.length = length;\n this.pointIndex.length = length;\n if (this.normal) this.normal.resize(length);\n if (this.param) this.param.resize(length);\n if (this.color) this.color.length = length;\n if (this.auxData) {\n for (const channel of this.auxData.channels) {\n for (const channelData of channel.data) {\n channelData.values.length = length * channel.entriesPerValue;\n }\n }\n }\n }\n }\n /** Return the range of the point array (optionally transformed). */\n public range(result?: Range3d, transform?: Transform): Range3d {\n result = result ? result : Range3d.createNull();\n result.extendArray(this.point, transform);\n return result;\n }\n /**\n * Apply `transform` to point and normal arrays and to auxData.\n * * IMPORTANT This base class is just a data carrier. It does not know if the index order and normal directions\n * have special meaning, i.e., caller must separately reverse index order and normal direction if needed.\n */\n public tryTransformInPlace(transform: Transform): boolean {\n this.point.multiplyTransformInPlace(transform);\n if (this.normal && !transform.matrix.isIdentity)\n this.normal.multiplyAndRenormalizeMatrix3dInverseTransposeInPlace(transform.matrix);\n return undefined === this.auxData || this.auxData.tryTransformInPlace(transform);\n }\n /**\n * Compress the instance by equating duplicate data.\n * * Search for duplicates within vertices, normals, params, and colors.\n * * Compress each data array.\n * * Revise all indexing for the relocated data.\n * * [[PolyfaceAuxData]] is compressed if and only if exactly one [[AuxChannelData]] is present.\n * @param tolerance (optional) tolerance for clustering mesh vertices only. Default value, and the tolerance used to cluster all other data, is [[Geometry.smallMetricDistance]].\n */\n public compress(tolerance: number = Geometry.smallMetricDistance): void {\n // more info can be found at geometry/internaldocs/Polyface.md\n const packedPoints = ClusterableArray.clusterGrowablePoint3dArray(this.point, tolerance);\n this.point = packedPoints.growablePackedPoints!;\n packedPoints.updateIndices(this.pointIndex);\n // for now, normals, params, and colors use the default tolerance for clustering\n if (this.normalIndex && this.normal) {\n const packedNormals = ClusterableArray.clusterGrowablePoint3dArray(this.normal);\n this.normal = packedNormals.growablePackedPoints!;\n packedNormals.updateIndices(this.normalIndex);\n }\n if (this.paramIndex && this.param) {\n const packedParams = ClusterableArray.clusterGrowablePoint2dArray(this.param);\n this.param = packedParams.growablePackedPoints;\n packedParams.updateIndices(this.paramIndex);\n }\n if (this.colorIndex && this.color) {\n const packedColors = ClusterableArray.clusterNumberArray(this.color);\n this.color = packedColors.packedNumbers;\n packedColors.updateIndices(this.colorIndex);\n }\n if (this.auxData && this.auxData.channels.length === 1 && this.auxData.channels[0].data.length === 1) {\n const dataSize = this.auxData.channels[0].entriesPerValue;\n if (1 === dataSize) {\n const packedData = ClusterableArray.clusterNumberArray(this.auxData.channels[0].data[0].values);\n this.auxData.channels[0].data[0].values = packedData.packedNumbers;\n packedData.updateIndices(this.auxData.indices);\n } else if (3 === dataSize) {\n const blockedData = GrowableXYZArray.create(this.auxData.channels[0].data[0].values);\n const packedData = ClusterableArray.clusterGrowablePoint3dArray(blockedData);\n this.auxData.channels[0].data[0].values = NumberArray.create(packedData.growablePackedPoints!.float64Data());\n packedData.updateIndices(this.auxData.indices);\n }\n }\n }\n /**\n * Test if `facetStartIndex` is (minimally) valid.\n * * Length must be nonzero (recall that for \"no facets\", the `facetStartIndex` array still must contain a 0).\n * * Each entry must be strictly smaller than the one that follows.\n * @param facetStartIndex start indices of all facets. Facet k starts at facetStartIndex[k] up to (but not including)\n * `facetStartIndex[k + 1]`\n */\n public static isValidFacetStartIndexArray(facetStartIndex: number[]): boolean {\n // facetStartIndex for empty facets has a single entry \"0\" -- empty array is not allowed\n if (facetStartIndex.length === 0)\n return false;\n for (let i = 0; i + 1 < facetStartIndex.length; i++)\n if (facetStartIndex[i] >= facetStartIndex[i + 1])\n return false;\n return true;\n }\n /**\n * Reverse the indices for the specified facets in the given index array.\n * * Parameterized over type T so non-number data (e.g., boolean visibility flags) can be reversed.\n * @param facetStartIndex start indices of *consecutive* facets to be reversed, e.g., an IndexedPolyface's _facetStart\n * array. See the non-static [[reverseIndices]].\n * @param indices the index array, e.g., pointIndex, normalIndex, etc.\n * @param preserveStart `true` to preserve the start index of each facet (e.g., facet [1,2,3,4] becomes [1,4,3,2]);\n * `false` to reverse all indices (e.g., facet [1,2,3,4] becomes [4,3,2,1]).\n */\n public static reverseIndices<T>(facetStartIndex: number[], indices: T[] | undefined, preserveStart: boolean): boolean {\n if (!indices || indices.length === 0)\n return true; // empty case\n if (indices.length > 0) {\n if (facetStartIndex[facetStartIndex.length - 1] === indices.length) {\n for (let i = 0; i + 1 < facetStartIndex.length; i++) {\n let index0 = facetStartIndex[i];\n let index1 = facetStartIndex[i + 1];\n if (preserveStart) { // leave \"index0\" as is so reversed facet starts at same vertex\n while (index1 > index0 + 2) {\n index1--;\n index0++;\n const a = indices[index0];\n indices[index0] = indices[index1];\n indices[index1] = a;\n }\n } else { // reverse all\n while (index1 > index0 + 1) {\n index1--;\n const a = indices[index0];\n indices[index0] = indices[index1];\n indices[index1] = a;\n index0++;\n }\n }\n }\n return true;\n }\n }\n return false;\n }\n\n /**\n * Reverse the indices for the specified facet in the specified index array.\n * * Parameterized over type T so non-number data (e.g., boolean visibility flags) can be reversed.\n * @param facetIndex index of the facet to reverse. The entries of `indices` to be reversed are found at\n * `facetStartIndex[facetIndex] <= i < facetStartIndex[facetIndex + 1]`.\n * @param facetStartIndex start indices of *consecutive* facets, e.g., an IndexedPolyface's _facetStart array.\n * See [[reverseIndices]].\n * @param indices the index array, e.g., pointIndex, normalIndex, etc.\n * @param preserveStart `true` to preserve the start index of each facet (e.g., facet [1,2,3,4] becomes [1,4,3,2]);\n * `false` to reverse all indices (e.g., facet [1,2,3,4] becomes [4,3,2,1]).\n */\n public static reverseIndicesSingleFacet<T>(\n facetIndex: number, facetStartIndex: number[], indices: T[] | undefined, preserveStart: boolean,\n ): boolean {\n if (!indices || indices.length === 0)\n return true; // empty case\n if (indices.length > 0) {\n if (facetStartIndex[facetStartIndex.length - 1] === indices.length\n && facetIndex >= 0 && facetIndex + 1 < facetStartIndex.length) {\n let index0 = facetStartIndex[facetIndex];\n let index1 = facetStartIndex[facetIndex + 1];\n if (preserveStart) { // leave \"index0\" as is so reversed facet starts at same vertex\n while (index1 > index0 + 2) {\n index1--;\n index0++;\n const a = indices[index0];\n indices[index0] = indices[index1];\n indices[index1] = a;\n }\n } else { // reverse all\n while (index1 > index0 + 1) {\n index1--;\n const a = indices[index0];\n indices[index0] = indices[index1];\n indices[index1] = a;\n index0++;\n }\n }\n return true;\n }\n }\n return false;\n }\n /**\n * Reverse the indices for the specified facets in the index arrays (pointIndex, normalIndex, paramIndex, colorIndex,\n * and edgeVisible).\n * @param facetStartIndex start indices of *consecutive* facets to be reversed.\n * * Consecutive indices in this array define where a given facet is represented in each of the parallel index arrays.\n * * The indices for facet k are `facetStartIndex[k]` up to (but not including) `facetStartIndex[k + 1]`.\n * * This implies `facetStartIndex[k + 1]` is both the upper limit of facet k's indices, and the start index of facet k+1.\n * * For example, passing an IndexedPolyface's _facetStart array into this method reverses every facet.\n */\n public reverseIndices(facetStartIndex?: number[]): void {\n if (facetStartIndex && PolyfaceData.isValidFacetStartIndexArray(facetStartIndex)) {\n PolyfaceData.reverseIndices(facetStartIndex, this.pointIndex, true);\n if (this.normalIndex !== this.pointIndex)\n PolyfaceData.reverseIndices(facetStartIndex, this.normalIndex, true);\n if (this.paramIndex !== this.pointIndex)\n PolyfaceData.reverseIndices(facetStartIndex, this.paramIndex, true);\n if (this.colorIndex !== this.pointIndex)\n PolyfaceData.reverseIndices(facetStartIndex, this.colorIndex, true);\n PolyfaceData.reverseIndices(facetStartIndex, this.edgeVisible, false);\n }\n }\n /**\n * Reverse the indices for the specified facet in the index arrays (pointIndex, normalIndex, paramIndex, colorIndex,\n * and edgeVisible).\n * @param facetIndex index of the facet to reverse. The entries of each index array to be reversed are found at\n * `facetStartIndex[facetIndex] <= i < facetStartIndex[facetIndex + 1]`.\n * @param facetStartIndex start indices of *consecutive* facets, e.g., an IndexedPolyface's _facetStart array.\n * See [[reverseIndices]].\n */\n public reverseIndicesSingleFacet(facetIndex: number, facetStartIndex: number[]): void {\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.pointIndex, true);\n if (this.normalIndex !== this.pointIndex)\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.normalIndex, true);\n if (this.paramIndex !== this.pointIndex)\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.paramIndex, true);\n if (this.colorIndex !== this.pointIndex)\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.colorIndex, true);\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.edgeVisible, false);\n }\n /** Scale all the normals by -1. */\n public reverseNormals() {\n if (this.normal)\n this.normal.scaleInPlace(-1.0);\n }\n}\n"]}
1
+ {"version":3,"file":"PolyfaceData.js","sourceRoot":"","sources":["../../../src/polyface/PolyfaceData.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 Polyface\r\n */\r\n\r\nimport { Geometry } from \"../Geometry\";\r\nimport { GrowableXYArray } from \"../geometry3d/GrowableXYArray\";\r\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\r\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { NumberArray } from \"../geometry3d/PointHelpers\";\r\nimport { Range3d } from \"../geometry3d/Range\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { ClusterableArray } from \"../numerics/ClusterableArray\";\r\nimport { PolyfaceAuxData } from \"./AuxData\";\r\nimport { FacetFaceData } from \"./FacetFaceData\";\r\nimport { TaggedNumericData } from \"./TaggedNumericData\";\r\n\r\n// cspell:word internaldocs\r\n\r\n/**\r\n * `PolyfaceData` carries data arrays for point, normal, uv-parameters, and color, and index arrays for each.\r\n * * Normal, uv-parameter, and color data are optional.\r\n * * A given data array is defined if and only if its corresponding index array is defined.\r\n * * All defined index arrays have parallel face loop order and structure, and thus the same length.\r\n * * `IndexedPolyface` carries a PolyfaceData as a member (NOT as a base class; it already has `GeometryQuery` as base).\r\n * * `IndexedPolyfaceVisitor` uses PolyfaceData as a base class. In this use, there is only a single facet in `PolyfaceData`.\r\n * * `PolyfaceData` does not know what index range constitutes a given facet. This is managed by a derived/carrier class.\r\n * @public\r\n */\r\nexport class PolyfaceData {\r\n /**\r\n * Relative tolerance used in tests for planar facets.\r\n * @internal\r\n */\r\n public static readonly planarityLocalRelTol = 1.0e-13;\r\n /** Coordinate data for points in the facets (packed as numbers in a contiguous array). */\r\n public point: GrowableXYZArray;\r\n /** Indices of points at facet vertices. */\r\n public pointIndex: number[];\r\n /** Coordinates of normal vectors (packed as numbers in a contiguous array). */\r\n public normal?: GrowableXYZArray;\r\n /** Indices of normals at facet vertices. */\r\n public normalIndex?: number[];\r\n /** Coordinates of uv parameters (packed as numbers in a contiguous array). */\r\n public param?: GrowableXYArray;\r\n /** Indices of params at facet vertices. */\r\n public paramIndex?: number[];\r\n /**\r\n * Color values. These are carried around as simple numbers, but are probably required (by display systems) to map\r\n * exactly to 32-bit integers.\r\n */\r\n public color?: number[];\r\n /** Indices of colors at facet vertices. */\r\n public colorIndex?: number[];\r\n /**\r\n * Map from facet index to face data.\r\n * * A \"face\" is a logical grouping of connected facets in the mesh, e.g., the facets that resulted from faceting\r\n * a given face of a solid.\r\n * * Face data remains empty until a face is specified.\r\n */\r\n public face: FacetFaceData[];\r\n /** Auxiliary data. */\r\n public auxData?: PolyfaceAuxData;\r\n /** Tagged geometry data. */\r\n public taggedNumericData?: TaggedNumericData;\r\n /**\r\n * Booleans indicating visibility of corresponding edges.\r\n * * The `edgeVisible` array is parallel to the `pointIndex` array.\r\n * * The visibility flag applies to the edge whose start vertex index appears in the same place in the `pointIndex` array.\r\n * * For example, consider the mesh with 2 triangular facets given by `pointIndex = [1,0,2, 1,2,3]`. If the triangles'\r\n * shared edge is hidden, then the mesh has `edgeVisible = [true,true,false, false,true,true]`.\r\n */\r\n public edgeVisible: boolean[];\r\n /** Boolean tag indicating if the facets are viewable from the back. */\r\n private _twoSided: boolean;\r\n /**\r\n * Flag indicating if the mesh closure is unknown (0), open sheet (1), closed solid (2).\r\n * * A boundary edge of a mesh is defined as an edge with only one connected facet.\r\n * * Closed solid is a mesh with no boundary edge. Open sheet is a mesh that has boundary edge(s).\r\n */\r\n private _expectedClosure: number;\r\n /**\r\n * Constructor for facets.\r\n * @param needNormals `true` to allocate empty normal data and index arrays; `false` (default) to leave undefined.\r\n * @param needParams `true` to allocate empty uv parameter data and index arrays; `false` (default) to leave undefined.\r\n * @param needColors `true` to allocate empty color data and index arrays; `false` (default) to leave undefined.\r\n * @param twoSided `true` if the facets are to be considered viewable from the back; `false` (default) if not.\r\n */\r\n public constructor(\r\n needNormals: boolean = false, needParams: boolean = false, needColors: boolean = false, twoSided: boolean = false,\r\n ) {\r\n this.point = new GrowableXYZArray();\r\n this.pointIndex = [];\r\n if (needNormals) {\r\n this.normal = new GrowableXYZArray();\r\n this.normalIndex = [];\r\n }\r\n if (needParams) {\r\n this.param = new GrowableXYArray();\r\n this.paramIndex = [];\r\n }\r\n if (needColors) {\r\n this.color = [];\r\n this.colorIndex = [];\r\n }\r\n this.face = [];\r\n this.edgeVisible = [];\r\n this._twoSided = twoSided;\r\n this._expectedClosure = 0;\r\n }\r\n /** Return a deep clone. */\r\n public clone(): PolyfaceData {\r\n const result = new PolyfaceData();\r\n result.point = this.point.clone();\r\n result.pointIndex = this.pointIndex.slice();\r\n if (this.normal)\r\n result.normal = this.normal.clone();\r\n if (this.normalIndex)\r\n result.normalIndex = this.normalIndex.slice();\r\n if (this.param)\r\n result.param = this.param.clone();\r\n if (this.paramIndex)\r\n result.paramIndex = this.paramIndex.slice();\r\n if (this.color)\r\n result.color = this.color.slice();\r\n if (this.colorIndex)\r\n result.colorIndex = this.colorIndex.slice();\r\n result.face = this.face.slice();\r\n if (this.auxData)\r\n result.auxData = this.auxData.clone();\r\n if (this.taggedNumericData)\r\n result.taggedNumericData = this.taggedNumericData.clone();\r\n result.edgeVisible = this.edgeVisible.slice();\r\n result.twoSided = this.twoSided;\r\n result.expectedClosure = this.expectedClosure;\r\n return result;\r\n }\r\n /** Test for equal indices and nearly equal coordinates. */\r\n public isAlmostEqual(other: PolyfaceData): boolean {\r\n if (!GrowableXYZArray.isAlmostEqual(this.point, other.point))\r\n return false;\r\n if (!NumberArray.isExactEqual(this.pointIndex, other.pointIndex))\r\n return false;\r\n if (!GrowableXYZArray.isAlmostEqual(this.normal, other.normal))\r\n return false;\r\n if (!NumberArray.isExactEqual(this.normalIndex, other.normalIndex))\r\n return false;\r\n if (!GrowableXYArray.isAlmostEqual(this.param, other.param))\r\n return false;\r\n if (!NumberArray.isExactEqual(this.paramIndex, other.paramIndex))\r\n return false;\r\n if (!NumberArray.isExactEqual(this.color, other.color))\r\n return false;\r\n if (!NumberArray.isExactEqual(this.colorIndex, other.colorIndex))\r\n return false;\r\n if (!PolyfaceAuxData.isAlmostEqual(this.auxData, other.auxData))\r\n return false;\r\n if (!TaggedNumericData.areAlmostEqual(this.taggedNumericData, other.taggedNumericData))\r\n return false;\r\n if (!NumberArray.isExactEqual(this.edgeVisible, other.edgeVisible))\r\n return false;\r\n if (this.twoSided !== other.twoSided)\r\n return false;\r\n if (this.expectedClosure !== other.expectedClosure)\r\n return false;\r\n return true;\r\n }\r\n /** Ask if normals are required in this mesh. */\r\n public get requireNormals(): boolean {\r\n return undefined !== this.normal;\r\n }\r\n /** Ask if params are required in this mesh. */\r\n public get requireParams(): boolean {\r\n return undefined !== this.param;\r\n }\r\n /** Ask if colors are required in this mesh. */\r\n public get requireColors(): boolean {\r\n return undefined !== this.color;\r\n }\r\n /** Get the point count */\r\n public get pointCount() {\r\n return this.point.length;\r\n }\r\n /** Get the normal count */\r\n public get normalCount() {\r\n return this.normal ? this.normal.length : 0;\r\n }\r\n /** Get the param count */\r\n public get paramCount() {\r\n return this.param ? this.param.length : 0;\r\n }\r\n /** Get the color count */\r\n public get colorCount() {\r\n return this.color ? this.color.length : 0;\r\n }\r\n /** Get the index count. Note that the point array is always indexed, and index arrays all have the same length. */\r\n public get indexCount() {\r\n return this.pointIndex.length;\r\n }\r\n /**\r\n * Get the number of faces.\r\n * * Note that a \"face\" is not a facet.\r\n * * A face is a subset of the Polyface's facets grouped for application purposes.\r\n */\r\n public get faceCount() {\r\n return this.face.length;\r\n }\r\n /** Return indexed point at index `i`. This is a COPY of the coordinates, not a reference. */\r\n public getPoint(i: number, result?: Point3d): Point3d | undefined {\r\n return this.point.getPoint3dAtCheckedPointIndex(i, result);\r\n }\r\n /** Return indexed normal at index `i`. This is a COPY of the normal, not a reference. */\r\n public getNormal(i: number, result?: Vector3d): Vector3d | undefined {\r\n return this.normal ? this.normal.getVector3dAtCheckedVectorIndex(i, result) : undefined;\r\n }\r\n /** Return indexed param at index `i`. This is a COPY of the coordinates, not a reference. */\r\n public getParam(i: number, result?: Point2d): Point2d | undefined {\r\n return this.param ? this.param.getPoint2dAtCheckedPointIndex(i, result) : undefined;\r\n }\r\n /** Return indexed color at index `i`. Index `i` is not checked for validity. */\r\n public getColor(i: number): number {\r\n return this.color ? this.color[i] : 0;\r\n }\r\n /** Return indexed visibility. at index `i`. Index `i` is not checked for validity. */\r\n public getEdgeVisible(i: number): boolean {\r\n return this.edgeVisible[i];\r\n }\r\n /** Get boolean tag indicating if the facets are to be considered viewable from the back. */\r\n public get twoSided(): boolean {\r\n return this._twoSided;\r\n }\r\n public set twoSided(value: boolean) {\r\n this._twoSided = value;\r\n }\r\n /** Get flag indicating if the mesh closure is unknown (0), open sheet (1), closed solid (2). */\r\n public get expectedClosure(): number {\r\n return this._expectedClosure;\r\n }\r\n public set expectedClosure(value: number) {\r\n this._expectedClosure = value;\r\n }\r\n /** Set the tagged geometry data. */\r\n public setTaggedNumericData(data: TaggedNumericData | undefined) {\r\n this.taggedNumericData = data;\r\n }\r\n /** Copy the contents (not pointer) of `point[i]` into `dest`. Index `i` is not checked for validity. */\r\n public copyPointTo(i: number, dest: Point3d): void {\r\n this.point.getPoint3dAtUncheckedPointIndex(i, dest);\r\n }\r\n /** Copy the contents (not pointer) of `normal[i]` into `dest`. Index `i` is not checked for validity. */\r\n public copyNormalTo(i: number, dest: Vector3d): void {\r\n if (this.normal)\r\n this.normal.getVector3dAtUncheckedVectorIndex(i, dest);\r\n }\r\n /** Copy the contents (not pointer) of `param[i]` into `dest`. Index `i` is not checked for validity. */\r\n public copyParamTo(i: number, dest: Point2d): void {\r\n if (this.param)\r\n this.param.getPoint2dAtUncheckedPointIndex(i, dest);\r\n }\r\n /** Test if param at a index `i` matches the given uv */\r\n public isAlmostEqualParamIndexUV(i: number, u: number, v: number): boolean {\r\n if (this.param !== undefined && i >= 0 && i < this.param.length)\r\n return Geometry.isSameCoordinate(u, this.param.getXAtUncheckedPointIndex(i))\r\n && Geometry.isSameCoordinate(v, this.param.getYAtUncheckedPointIndex(i));\r\n return false;\r\n }\r\n /**\r\n * Copy data from `other` to `this`.\r\n * * This is the essence of transferring coordinates spread throughout a large polyface into a visitor's single facet.\r\n * * Common usage: \"other\" is a Polyface, \"this\" is a PolyfaceVisitor to receive data from a single facet of the Polyface.\r\n * * Does NOT copy face data - visitors reference the FacetFaceData array for the whole polyface.\r\n * @param other polyface data being mined.\r\n * @param index0 start index in other's index arrays.\r\n * @param index1 end index (one beyond last data accessed) in other's index arrays.\r\n * @param numWrap number of points to replicate as wraparound.\r\n */\r\n public gatherIndexedData(other: PolyfaceData, index0: number, index1: number, numWrap: number): void {\r\n const numEdge = index1 - index0;\r\n if (numWrap > numEdge)\r\n numWrap = numEdge;\r\n const numTotal = numEdge + numWrap;\r\n this.resizeAllArrays(numTotal);\r\n // copy wrapped points\r\n for (let i = 0; i < numEdge; i++)\r\n this.point.transferFromGrowableXYZArray(i, other.point, other.pointIndex[index0 + i]);\r\n for (let i = 0; i < numWrap; i++)\r\n this.point.transferFromGrowableXYZArray(numEdge + i, this.point, i);\r\n // copy wrapped pointIndex\r\n for (let i = 0; i < numEdge; i++)\r\n this.pointIndex[i] = other.pointIndex[index0 + i];\r\n for (let i = 0; i < numWrap; i++)\r\n this.pointIndex[numEdge + i] = this.pointIndex[i];\r\n // copy wrapped normals\r\n if (this.normal && this.normalIndex && other.normal && other.normalIndex) {\r\n for (let i = 0; i < numEdge; i++)\r\n this.normal.transferFromGrowableXYZArray(i, other.normal, other.normalIndex[index0 + i]);\r\n for (let i = 0; i < numWrap; i++)\r\n this.normal.transferFromGrowableXYZArray(numEdge + i, this.normal, i);\r\n // copy wrapped normalIndex\r\n for (let i = 0; i < numEdge; i++)\r\n this.normalIndex[i] = other.normalIndex[index0 + i];\r\n for (let i = 0; i < numWrap; i++)\r\n this.normalIndex[numEdge + i] = this.normalIndex[i];\r\n }\r\n // copy wrapped params\r\n if (this.param && this.paramIndex && other.param && other.paramIndex) {\r\n for (let i = 0; i < numEdge; i++)\r\n this.param.transferFromGrowableXYArray(i, other.param, other.paramIndex[index0 + i]);\r\n for (let i = 0; i < numWrap; i++)\r\n this.param.transferFromGrowableXYArray(numEdge + i, this.param, i);\r\n // copy wrapped paramIndex\r\n for (let i = 0; i < numEdge; i++)\r\n this.paramIndex[i] = other.paramIndex[index0 + i];\r\n for (let i = 0; i < numWrap; i++)\r\n this.paramIndex[numEdge + i] = this.paramIndex[i];\r\n }\r\n // copy wrapped colors\r\n if (this.color && this.colorIndex && other.color && other.colorIndex) {\r\n for (let i = 0; i < numEdge; i++)\r\n this.color[i] = other.color[other.colorIndex[index0 + i]];\r\n for (let i = 0; i < numWrap; i++)\r\n this.color[numEdge + i] = this.color[i];\r\n // copy wrapped colorIndex\r\n for (let i = 0; i < numEdge; i++)\r\n this.colorIndex[i] = other.colorIndex[index0 + i];\r\n for (let i = 0; i < numWrap; i++)\r\n this.colorIndex[numEdge + i] = this.colorIndex[i];\r\n }\r\n // copy wrapped edge visibility\r\n for (let i = 0; i < numEdge; i++)\r\n this.edgeVisible[i] = other.edgeVisible[index0 + i];\r\n for (let i = 0; i < numWrap; i++)\r\n this.edgeVisible[numEdge + i] = this.edgeVisible[i];\r\n // copy wrapped auxData\r\n if (this.auxData && other.auxData && this.auxData.channels.length === other.auxData.channels.length) {\r\n for (let iChannel = 0; iChannel < this.auxData.channels.length; iChannel++) {\r\n const thisChannel = this.auxData.channels[iChannel];\r\n const otherChannel = other.auxData.channels[iChannel];\r\n const blockSize = thisChannel.entriesPerValue;\r\n if (thisChannel.data.length === otherChannel.data.length) {\r\n for (let iData = 0; iData < thisChannel.data.length; iData++) {\r\n const thisData = thisChannel.data[iData];\r\n const otherData = otherChannel.data[iData];\r\n for (let i = 0; i < numEdge; i++)\r\n thisData.copyValues(otherData, i, other.auxData.indices[index0 + i], blockSize);\r\n for (let i = 0; i < numWrap; i++)\r\n thisData.copyValues(thisData, other.auxData.indices[numEdge + i], i, blockSize);\r\n }\r\n }\r\n }\r\n // copy wrapped auxData index\r\n for (let i = 0; i < numEdge; i++)\r\n this.auxData.indices[i] = other.auxData.indices[index0 + i];\r\n for (let i = 0; i < numWrap; i++)\r\n this.auxData.indices[numEdge + i] = this.auxData.indices[i];\r\n }\r\n }\r\n /** Trim the `data` arrays to the stated `length`. */\r\n private static trimArray(data: any[] | undefined, length: number) {\r\n if (data && length < data.length)\r\n data.length = length;\r\n }\r\n /**\r\n * Trim all index arrays to the stated `length`.\r\n * * This is called by PolyfaceBuilder to clean up after an aborted construction sequence.\r\n */\r\n public trimAllIndexArrays(length: number): void {\r\n PolyfaceData.trimArray(this.pointIndex, length);\r\n PolyfaceData.trimArray(this.paramIndex, length);\r\n PolyfaceData.trimArray(this.normalIndex, length);\r\n PolyfaceData.trimArray(this.colorIndex, length);\r\n PolyfaceData.trimArray(this.edgeVisible, length);\r\n if (this.auxData) {\r\n PolyfaceData.trimArray(this.auxData.indices, length);\r\n for (const channel of this.auxData.channels) {\r\n for (const data of channel.data)\r\n PolyfaceData.trimArray(data.values, channel.entriesPerValue * length);\r\n }\r\n }\r\n }\r\n /**\r\n * Resize all data and index arrays to the specified `length`.\r\n * * This is used by visitors, whose data and index arrays are all parallel.\r\n */\r\n public resizeAllArrays(length: number): void {\r\n if (length > this.point.length) {\r\n while (this.point.length < length)\r\n this.point.push(Point3d.create());\r\n while (this.pointIndex.length < length)\r\n this.pointIndex.push(-1);\r\n if (this.normal)\r\n while (this.normal.length < length)\r\n this.normal.push(Vector3d.create());\r\n if (this.normalIndex)\r\n while (this.normalIndex.length < length)\r\n this.normalIndex.push(-1);\r\n if (this.param)\r\n while (this.param.length < length)\r\n this.param.push(Point2d.create());\r\n if (this.paramIndex)\r\n while (this.paramIndex.length < length)\r\n this.paramIndex.push(-1);\r\n if (this.color)\r\n while (this.color.length < length)\r\n this.color.push(0);\r\n if (this.colorIndex)\r\n while (this.colorIndex.length < length)\r\n this.colorIndex.push(-1);\r\n while (this.edgeVisible.length < length)\r\n this.edgeVisible.push(false);\r\n if (this.auxData) {\r\n for (const channel of this.auxData.channels) {\r\n for (const channelData of channel.data) {\r\n while (channelData.values.length < length * channel.entriesPerValue) channelData.values.push(0);\r\n }\r\n }\r\n if (this.auxData.indices)\r\n this.auxData.indices.push(-1);\r\n }\r\n } else if (length < this.point.length) {\r\n this.point.resize(length);\r\n this.pointIndex.length = length;\r\n if (this.normal)\r\n this.normal.resize(length);\r\n if (this.normalIndex)\r\n this.normalIndex.length = length;\r\n if (this.param)\r\n this.param.resize(length);\r\n if (this.paramIndex)\r\n this.paramIndex.length = length;\r\n if (this.color)\r\n this.color.length = length;\r\n if (this.colorIndex)\r\n this.colorIndex.length = length;\r\n this.edgeVisible.length = length;\r\n if (this.auxData) {\r\n for (const channel of this.auxData.channels) {\r\n for (const channelData of channel.data) {\r\n channelData.values.length = length * channel.entriesPerValue;\r\n }\r\n }\r\n if (this.auxData.indices)\r\n this.auxData.indices.length = length;\r\n }\r\n }\r\n }\r\n /**\r\n * Resize all data arrays to the specified `length`.\r\n * @deprecated in 4.x because name is misleading. Call [[PolyfaceData.resizeAllArrays]] instead.\r\n */\r\n public resizeAllDataArrays(length: number): void {\r\n if (length > this.point.length) {\r\n while (this.point.length < length) this.point.push(Point3d.create());\r\n while (this.pointIndex.length < length) this.pointIndex.push(-1);\r\n while (this.edgeVisible.length < length) this.edgeVisible.push(false);\r\n if (this.normal)\r\n while (this.normal.length < length) this.normal.push(Vector3d.create());\r\n if (this.param)\r\n while (this.param.length < length) this.param.push(Point2d.create());\r\n if (this.color)\r\n while (this.color.length < length) this.color.push(0);\r\n if (this.auxData) {\r\n for (const channel of this.auxData.channels) {\r\n for (const channelData of channel.data) {\r\n while (channelData.values.length < length * channel.entriesPerValue) channelData.values.push(0);\r\n }\r\n }\r\n }\r\n } else if (length < this.point.length) {\r\n this.point.resize(length);\r\n this.edgeVisible.length = length;\r\n this.pointIndex.length = length;\r\n if (this.normal) this.normal.resize(length);\r\n if (this.param) this.param.resize(length);\r\n if (this.color) this.color.length = length;\r\n if (this.auxData) {\r\n for (const channel of this.auxData.channels) {\r\n for (const channelData of channel.data) {\r\n channelData.values.length = length * channel.entriesPerValue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /** Return the range of the point array (optionally transformed). */\r\n public range(result?: Range3d, transform?: Transform): Range3d {\r\n result = result ? result : Range3d.createNull();\r\n result.extendArray(this.point, transform);\r\n return result;\r\n }\r\n /**\r\n * Apply a transform to the mesh data.\r\n * * Transform the data as follows:\r\n * * apply `transform` to points.\r\n * * apply inverse transpose of `transform` to normals and renormalize. This preserves normals perpendicular\r\n * to transformed facets, and keeps them pointing outward, e.g, if the mesh is closed. If the transform is not\r\n * invertible or a normal has zero length, the normal(s) are left unchanged, and this error is silently ignored.\r\n * * apply `transform` to auxData.\r\n * * scale faceData distances by the cube root of the absolute value of the determinant of `transform.matrix`.\r\n * * Note that if the transform is a mirror, this method does NOT reverse index order. This is the caller's\r\n * responsibility. This base class is just a data carrier: PolyfaceData does not know if the index order has\r\n * special meaning.\r\n * * Note that this method always returns true. If transforming normals fails (due to singular matrix or zero\r\n * normal), the original normal(s) are left unchanged.\r\n */\r\n public tryTransformInPlace(transform: Transform): boolean {\r\n this.point.multiplyTransformInPlace(transform);\r\n if (this.normal && !transform.matrix.isIdentity)\r\n this.normal.multiplyAndRenormalizeMatrix3dInverseTransposeInPlace(transform.matrix);\r\n if (this.face.length > 0) {\r\n const distScale = Math.cbrt(Math.abs(transform.matrix.determinant()));\r\n for (const faceData of this.face)\r\n faceData.scaleDistances(distScale);\r\n }\r\n if (this.auxData)\r\n this.auxData.tryTransformInPlace(transform);\r\n return true;\r\n }\r\n /**\r\n * Compress the instance by equating duplicate data.\r\n * * Search for duplicates within vertices, normals, params, and colors.\r\n * * Compress each data array.\r\n * * Revise all indexing for the relocated data.\r\n * * [[PolyfaceAuxData]] is compressed if and only if exactly one [[AuxChannelData]] is present.\r\n * @param tolerance (optional) tolerance for clustering mesh vertices only. Default value, and the tolerance used to cluster all other data, is [[Geometry.smallMetricDistance]].\r\n */\r\n public compress(tolerance: number = Geometry.smallMetricDistance): void {\r\n // more info can be found at geometry/internaldocs/Polyface.md\r\n const packedPoints = ClusterableArray.clusterGrowablePoint3dArray(this.point, tolerance);\r\n this.point = packedPoints.growablePackedPoints!;\r\n packedPoints.updateIndices(this.pointIndex);\r\n // for now, normals, params, and colors use the default tolerance for clustering\r\n if (this.normalIndex && this.normal) {\r\n const packedNormals = ClusterableArray.clusterGrowablePoint3dArray(this.normal);\r\n this.normal = packedNormals.growablePackedPoints!;\r\n packedNormals.updateIndices(this.normalIndex);\r\n }\r\n if (this.paramIndex && this.param) {\r\n const packedParams = ClusterableArray.clusterGrowablePoint2dArray(this.param);\r\n this.param = packedParams.growablePackedPoints;\r\n packedParams.updateIndices(this.paramIndex);\r\n }\r\n if (this.colorIndex && this.color) {\r\n const packedColors = ClusterableArray.clusterNumberArray(this.color);\r\n this.color = packedColors.packedNumbers;\r\n packedColors.updateIndices(this.colorIndex);\r\n }\r\n if (this.auxData && this.auxData.channels.length === 1 && this.auxData.channels[0].data.length === 1) {\r\n const dataSize = this.auxData.channels[0].entriesPerValue;\r\n if (1 === dataSize) {\r\n const packedData = ClusterableArray.clusterNumberArray(this.auxData.channels[0].data[0].values);\r\n this.auxData.channels[0].data[0].values = packedData.packedNumbers;\r\n packedData.updateIndices(this.auxData.indices);\r\n } else if (3 === dataSize) {\r\n const blockedData = GrowableXYZArray.create(this.auxData.channels[0].data[0].values);\r\n const packedData = ClusterableArray.clusterGrowablePoint3dArray(blockedData);\r\n this.auxData.channels[0].data[0].values = NumberArray.create(packedData.growablePackedPoints!.float64Data());\r\n packedData.updateIndices(this.auxData.indices);\r\n }\r\n }\r\n }\r\n /**\r\n * Test if `facetStartIndex` is (minimally) valid.\r\n * * Length must be nonzero (recall that for \"no facets\", the `facetStartIndex` array still must contain a 0).\r\n * * Each entry must be strictly smaller than the one that follows.\r\n * @param facetStartIndex start indices of all facets. Facet k starts at facetStartIndex[k] up to (but not including)\r\n * `facetStartIndex[k + 1]`\r\n */\r\n public static isValidFacetStartIndexArray(facetStartIndex: number[]): boolean {\r\n // facetStartIndex for empty facets has a single entry \"0\" -- empty array is not allowed\r\n if (facetStartIndex.length === 0)\r\n return false;\r\n for (let i = 0; i + 1 < facetStartIndex.length; i++)\r\n if (facetStartIndex[i] >= facetStartIndex[i + 1])\r\n return false;\r\n return true;\r\n }\r\n /**\r\n * Reverse the indices for the specified facets in the given index array.\r\n * * Parameterized over type T so non-number data (e.g., boolean visibility flags) can be reversed.\r\n * @param facetStartIndex start indices of *consecutive* facets to be reversed, e.g., an IndexedPolyface's _facetStart\r\n * array. See the non-static [[reverseIndices]].\r\n * @param indices the index array, e.g., pointIndex, normalIndex, etc.\r\n * @param preserveStart `true` to preserve the start index of each facet (e.g., facet [1,2,3,4] becomes [1,4,3,2]);\r\n * `false` to reverse all indices (e.g., facet [1,2,3,4] becomes [4,3,2,1]).\r\n */\r\n public static reverseIndices<T>(facetStartIndex: number[], indices: T[] | undefined, preserveStart: boolean): boolean {\r\n if (!indices || indices.length === 0)\r\n return true; // empty case\r\n if (indices.length > 0) {\r\n if (facetStartIndex[facetStartIndex.length - 1] === indices.length) {\r\n for (let i = 0; i + 1 < facetStartIndex.length; i++) {\r\n let index0 = facetStartIndex[i];\r\n let index1 = facetStartIndex[i + 1];\r\n if (preserveStart) { // leave \"index0\" as is so reversed facet starts at same vertex\r\n while (index1 > index0 + 2) {\r\n index1--;\r\n index0++;\r\n const a = indices[index0];\r\n indices[index0] = indices[index1];\r\n indices[index1] = a;\r\n }\r\n } else { // reverse all\r\n while (index1 > index0 + 1) {\r\n index1--;\r\n const a = indices[index0];\r\n indices[index0] = indices[index1];\r\n indices[index1] = a;\r\n index0++;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Reverse the indices for the specified facet in the specified index array.\r\n * * Parameterized over type T so non-number data (e.g., boolean visibility flags) can be reversed.\r\n * @param facetIndex index of the facet to reverse. The entries of `indices` to be reversed are found at\r\n * `facetStartIndex[facetIndex] <= i < facetStartIndex[facetIndex + 1]`.\r\n * @param facetStartIndex start indices of *consecutive* facets, e.g., an IndexedPolyface's _facetStart array.\r\n * See [[reverseIndices]].\r\n * @param indices the index array, e.g., pointIndex, normalIndex, etc.\r\n * @param preserveStart `true` to preserve the start index of each facet (e.g., facet [1,2,3,4] becomes [1,4,3,2]);\r\n * `false` to reverse all indices (e.g., facet [1,2,3,4] becomes [4,3,2,1]).\r\n */\r\n public static reverseIndicesSingleFacet<T>(\r\n facetIndex: number, facetStartIndex: number[], indices: T[] | undefined, preserveStart: boolean,\r\n ): boolean {\r\n if (!indices || indices.length === 0)\r\n return true; // empty case\r\n if (indices.length > 0) {\r\n if (facetStartIndex[facetStartIndex.length - 1] === indices.length\r\n && facetIndex >= 0 && facetIndex + 1 < facetStartIndex.length) {\r\n let index0 = facetStartIndex[facetIndex];\r\n let index1 = facetStartIndex[facetIndex + 1];\r\n if (preserveStart) { // leave \"index0\" as is so reversed facet starts at same vertex\r\n while (index1 > index0 + 2) {\r\n index1--;\r\n index0++;\r\n const a = indices[index0];\r\n indices[index0] = indices[index1];\r\n indices[index1] = a;\r\n }\r\n } else { // reverse all\r\n while (index1 > index0 + 1) {\r\n index1--;\r\n const a = indices[index0];\r\n indices[index0] = indices[index1];\r\n indices[index1] = a;\r\n index0++;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Reverse the indices for the specified facets in the index arrays (pointIndex, normalIndex, paramIndex, colorIndex,\r\n * and edgeVisible).\r\n * @param facetStartIndex start indices of *consecutive* facets to be reversed.\r\n * * Consecutive indices in this array define where a given facet is represented in each of the parallel index arrays.\r\n * * The indices for facet k are `facetStartIndex[k]` up to (but not including) `facetStartIndex[k + 1]`.\r\n * * This implies `facetStartIndex[k + 1]` is both the upper limit of facet k's indices, and the start index of facet k+1.\r\n * * For example, passing an IndexedPolyface's _facetStart array into this method reverses every facet.\r\n */\r\n public reverseIndices(facetStartIndex?: number[]): void {\r\n if (facetStartIndex && PolyfaceData.isValidFacetStartIndexArray(facetStartIndex)) {\r\n PolyfaceData.reverseIndices(facetStartIndex, this.pointIndex, true);\r\n if (this.normalIndex !== this.pointIndex)\r\n PolyfaceData.reverseIndices(facetStartIndex, this.normalIndex, true);\r\n if (this.paramIndex !== this.pointIndex)\r\n PolyfaceData.reverseIndices(facetStartIndex, this.paramIndex, true);\r\n if (this.colorIndex !== this.pointIndex)\r\n PolyfaceData.reverseIndices(facetStartIndex, this.colorIndex, true);\r\n PolyfaceData.reverseIndices(facetStartIndex, this.edgeVisible, false);\r\n }\r\n }\r\n /**\r\n * Reverse the indices for the specified facet in the index arrays (pointIndex, normalIndex, paramIndex, colorIndex,\r\n * and edgeVisible).\r\n * @param facetIndex index of the facet to reverse. The entries of each index array to be reversed are found at\r\n * `facetStartIndex[facetIndex] <= i < facetStartIndex[facetIndex + 1]`.\r\n * @param facetStartIndex start indices of *consecutive* facets, e.g., an IndexedPolyface's _facetStart array.\r\n * See [[reverseIndices]].\r\n */\r\n public reverseIndicesSingleFacet(facetIndex: number, facetStartIndex: number[]): void {\r\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.pointIndex, true);\r\n if (this.normalIndex !== this.pointIndex)\r\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.normalIndex, true);\r\n if (this.paramIndex !== this.pointIndex)\r\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.paramIndex, true);\r\n if (this.colorIndex !== this.pointIndex)\r\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.colorIndex, true);\r\n PolyfaceData.reverseIndicesSingleFacet(facetIndex, facetStartIndex, this.edgeVisible, false);\r\n }\r\n /** Scale all the normals by -1. */\r\n public reverseNormals() {\r\n if (this.normal)\r\n this.normal.scaleInPlace(-1.0);\r\n }\r\n}\r\n"]}
@@ -641,8 +641,8 @@ export declare class PolyfaceQuery {
641
641
  /**
642
642
  * Search facets for the first one that intersects the infinite line.
643
643
  * * To process _all_ intersections, callers can supply an `options.acceptIntersection` callback that always
644
- * returns `false`.
645
- * In this case, `intersectRay3d` will return `undefined`, but the callback will be invoked for each intersection.
644
+ * returns `false`. In this case, `intersectRay3d` will return `undefined`, but the callback will be invoked for
645
+ * each intersection.
646
646
  * * Example callback logic:
647
647
  * * Accept the first found facet that intersects the half-line specified by the ray: `return detail.a >= 0.0;`
648
648
  * * Collect all intersections: `myIntersections.push(detail.clone()); return false;` Then after `intersectRay3d`
@@ -1 +1 @@
1
- {"version":3,"file":"PolyfaceQuery.d.ts","sourceRoot":"","sources":["../../../src/polyface/PolyfaceQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PolyfaceQuery.d.ts","sourceRoot":"","sources":["../../../src/polyface/PolyfaceQuery.ts"],"names":[],"mappings":"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"}
@@ -1683,8 +1683,8 @@ export class PolyfaceQuery {
1683
1683
  /**
1684
1684
  * Search facets for the first one that intersects the infinite line.
1685
1685
  * * To process _all_ intersections, callers can supply an `options.acceptIntersection` callback that always
1686
- * returns `false`.
1687
- * In this case, `intersectRay3d` will return `undefined`, but the callback will be invoked for each intersection.
1686
+ * returns `false`. In this case, `intersectRay3d` will return `undefined`, but the callback will be invoked for
1687
+ * each intersection.
1688
1688
  * * Example callback logic:
1689
1689
  * * Accept the first found facet that intersects the half-line specified by the ray: `return detail.a >= 0.0;`
1690
1690
  * * Collect all intersections: `myIntersections.push(detail.clone()); return false;` Then after `intersectRay3d`
@@ -1702,6 +1702,7 @@ export class PolyfaceQuery {
1702
1702
  if (visitor instanceof Polyface)
1703
1703
  return PolyfaceQuery.intersectRay3d(visitor.createVisitor(0), ray, options);
1704
1704
  let detail;
1705
+ const tol = options ? [options.distanceTolerance, options.parameterTolerance] : undefined;
1705
1706
  visitor.setNumWrap(0);
1706
1707
  while (visitor.moveToNextFacet()) {
1707
1708
  const numEdges = visitor.pointCount; // #vertices = #edges since numWrap is zero
@@ -1713,7 +1714,7 @@ export class PolyfaceQuery {
1713
1714
  detail = this._workFacetDetail3 = TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
1714
1715
  }
1715
1716
  else {
1716
- const detailN = this._workPolyDetail = PolygonOps.intersectRay3d(vertices, ray, options?.distanceTolerance, this._workPolyDetail);
1717
+ const detailN = this._workPolyDetail = PolygonOps.intersectRay3d(vertices, ray, tol, this._workPolyDetail);
1717
1718
  if (PolygonOps.isConvex(vertices))
1718
1719
  detail = this._workFacetDetailC = ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
1719
1720
  else