@itwin/core-geometry 4.7.0-dev.8 → 4.7.0-dev.9

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 (445) 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.js.map +1 -1
  28. package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
  29. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  30. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  31. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  32. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  33. package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
  34. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  35. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  36. package/lib/cjs/curve/CurveOps.js.map +1 -1
  37. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  38. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  39. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  40. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  41. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  42. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  43. package/lib/cjs/curve/LineString3d.js.map +1 -1
  44. package/lib/cjs/curve/Loop.js.map +1 -1
  45. package/lib/cjs/curve/OffsetOptions.js.map +1 -1
  46. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  47. package/lib/cjs/curve/Path.js.map +1 -1
  48. package/lib/cjs/curve/PointString3d.js.map +1 -1
  49. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  50. package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  51. package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
  52. package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
  53. package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
  54. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  55. package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
  56. package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
  57. package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
  58. package/lib/cjs/curve/RegionOps.js.map +1 -1
  59. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  60. package/lib/cjs/curve/StrokeOptions.js.map +1 -1
  61. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  62. package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  63. package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  64. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  65. package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  66. package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  67. package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  68. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  69. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  70. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  71. package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
  72. package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  73. package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
  74. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  75. package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  76. package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  80. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  81. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  82. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  83. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  84. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  85. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  86. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  87. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  88. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  89. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  90. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  91. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  92. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  93. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  94. package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
  95. package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
  96. package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
  97. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  98. package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
  99. package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
  100. package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
  101. package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
  102. package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
  103. package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
  104. package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
  105. package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
  106. package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
  107. package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
  108. package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
  109. package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  110. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  111. package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
  112. package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
  113. package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  114. package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  115. package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
  116. package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
  117. package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
  118. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  119. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  120. package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
  121. package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
  122. package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  123. package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
  124. package/lib/cjs/geometry3d/Range.js.map +1 -1
  125. package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
  126. package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
  127. package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
  128. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  129. package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
  130. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  131. package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
  132. package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
  133. package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
  134. package/lib/cjs/geometry4d/Map4d.js.map +1 -1
  135. package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
  136. package/lib/cjs/geometry4d/MomentData.js.map +1 -1
  137. package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  138. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  139. package/lib/cjs/numerics/BandedSystem.js.map +1 -1
  140. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  141. package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
  142. package/lib/cjs/numerics/Complex.js.map +1 -1
  143. package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
  144. package/lib/cjs/numerics/Newton.js.map +1 -1
  145. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  146. package/lib/cjs/numerics/PolarData.js.map +1 -1
  147. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  148. package/lib/cjs/numerics/Quadrature.js.map +1 -1
  149. package/lib/cjs/numerics/Range1dArray.js.map +1 -1
  150. package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
  151. package/lib/cjs/numerics/UnionFind.js.map +1 -1
  152. package/lib/cjs/numerics/UsageSums.js.map +1 -1
  153. package/lib/cjs/polyface/AuxData.js.map +1 -1
  154. package/lib/cjs/polyface/BoxTopology.js.map +1 -1
  155. package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
  156. package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
  157. package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
  158. package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  159. package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
  160. package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  161. package/lib/cjs/polyface/Polyface.js.map +1 -1
  162. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  163. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  164. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  165. package/lib/cjs/polyface/PolyfaceQuery.d.ts +60 -60
  166. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  167. package/lib/cjs/polyface/PolyfaceQuery.js +79 -79
  168. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  169. package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
  170. package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  171. package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  172. package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  173. package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  174. package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  175. package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  176. package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
  177. package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
  178. package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  179. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  180. package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  181. package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  182. package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  183. package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  184. package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
  185. package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  186. package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
  187. package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
  188. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  189. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  190. package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  191. package/lib/cjs/serialization/DeepCompare.js.map +1 -1
  192. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  193. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  194. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
  195. package/lib/cjs/solid/Box.js.map +1 -1
  196. package/lib/cjs/solid/Cone.js.map +1 -1
  197. package/lib/cjs/solid/LinearSweep.js.map +1 -1
  198. package/lib/cjs/solid/RotationalSweep.js.map +1 -1
  199. package/lib/cjs/solid/RuledSweep.js.map +1 -1
  200. package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
  201. package/lib/cjs/solid/Sphere.js.map +1 -1
  202. package/lib/cjs/solid/SweepContour.js.map +1 -1
  203. package/lib/cjs/solid/TorusPipe.js.map +1 -1
  204. package/lib/cjs/topology/ChainMerge.js.map +1 -1
  205. package/lib/cjs/topology/Graph.js.map +1 -1
  206. package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  207. package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
  208. package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  209. package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
  210. package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
  211. package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  212. package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  213. package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
  214. package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
  215. package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
  216. package/lib/cjs/topology/MaskManager.js.map +1 -1
  217. package/lib/cjs/topology/Merging.js.map +1 -1
  218. package/lib/cjs/topology/RegularizeFace.js.map +1 -1
  219. package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
  220. package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
  221. package/lib/cjs/topology/Triangulation.js.map +1 -1
  222. package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
  223. package/lib/esm/Constant.js.map +1 -1
  224. package/lib/esm/Geometry.js.map +1 -1
  225. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  226. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  227. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  228. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  229. package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
  230. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  231. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  232. package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
  233. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  234. package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
  235. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  236. package/lib/esm/bspline/KnotVector.js.map +1 -1
  237. package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
  238. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  239. package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
  240. package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
  241. package/lib/esm/clipping/ClipPlane.js.map +1 -1
  242. package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
  243. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  244. package/lib/esm/clipping/ClipVector.js.map +1 -1
  245. package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
  246. package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
  247. package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
  248. package/lib/esm/core-geometry.js.map +1 -1
  249. package/lib/esm/curve/Arc3d.js.map +1 -1
  250. package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
  251. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  252. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  253. package/lib/esm/curve/CurveCollection.js.map +1 -1
  254. package/lib/esm/curve/CurveCurve.js.map +1 -1
  255. package/lib/esm/curve/CurveExtendMode.js.map +1 -1
  256. package/lib/esm/curve/CurveFactory.js.map +1 -1
  257. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  258. package/lib/esm/curve/CurveOps.js.map +1 -1
  259. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  260. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  261. package/lib/esm/curve/CurveTypes.js.map +1 -1
  262. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  263. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  264. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  265. package/lib/esm/curve/LineString3d.js.map +1 -1
  266. package/lib/esm/curve/Loop.js.map +1 -1
  267. package/lib/esm/curve/OffsetOptions.js.map +1 -1
  268. package/lib/esm/curve/ParityRegion.js.map +1 -1
  269. package/lib/esm/curve/Path.js.map +1 -1
  270. package/lib/esm/curve/PointString3d.js.map +1 -1
  271. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  272. package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
  273. package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
  274. package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
  275. package/lib/esm/curve/Query/InOutTests.js.map +1 -1
  276. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  277. package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
  278. package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
  279. package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
  280. package/lib/esm/curve/RegionOps.js.map +1 -1
  281. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  282. package/lib/esm/curve/StrokeOptions.js.map +1 -1
  283. package/lib/esm/curve/UnionRegion.js.map +1 -1
  284. package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
  285. package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
  286. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  287. package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
  288. package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
  289. package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
  290. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  291. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  292. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  293. package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
  294. package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
  295. package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
  296. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  297. package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
  298. package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
  299. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  300. package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
  301. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  302. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  303. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  304. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  305. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  306. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  307. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  308. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  309. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  310. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  311. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  312. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  313. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  314. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  315. package/lib/esm/geometry3d/Angle.js.map +1 -1
  316. package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
  317. package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
  318. package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
  319. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  320. package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
  321. package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
  322. package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
  323. package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
  324. package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
  325. package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
  326. package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
  327. package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
  328. package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
  329. package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
  330. package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
  331. package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
  332. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  333. package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
  334. package/lib/esm/geometry3d/Plane3d.js.map +1 -1
  335. package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
  336. package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
  337. package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
  338. package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
  339. package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
  340. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  341. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  342. package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
  343. package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
  344. package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
  345. package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
  346. package/lib/esm/geometry3d/Range.js.map +1 -1
  347. package/lib/esm/geometry3d/Ray2d.js.map +1 -1
  348. package/lib/esm/geometry3d/Ray3d.js.map +1 -1
  349. package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
  350. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  351. package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
  352. package/lib/esm/geometry3d/Transform.js.map +1 -1
  353. package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
  354. package/lib/esm/geometry3d/XYZProps.js.map +1 -1
  355. package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
  356. package/lib/esm/geometry4d/Map4d.js.map +1 -1
  357. package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
  358. package/lib/esm/geometry4d/MomentData.js.map +1 -1
  359. package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
  360. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  361. package/lib/esm/numerics/BandedSystem.js.map +1 -1
  362. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  363. package/lib/esm/numerics/ClusterableArray.js.map +1 -1
  364. package/lib/esm/numerics/Complex.js.map +1 -1
  365. package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
  366. package/lib/esm/numerics/Newton.js.map +1 -1
  367. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  368. package/lib/esm/numerics/PolarData.js.map +1 -1
  369. package/lib/esm/numerics/Polynomials.js.map +1 -1
  370. package/lib/esm/numerics/Quadrature.js.map +1 -1
  371. package/lib/esm/numerics/Range1dArray.js.map +1 -1
  372. package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
  373. package/lib/esm/numerics/UnionFind.js.map +1 -1
  374. package/lib/esm/numerics/UsageSums.js.map +1 -1
  375. package/lib/esm/polyface/AuxData.js.map +1 -1
  376. package/lib/esm/polyface/BoxTopology.js.map +1 -1
  377. package/lib/esm/polyface/FacetFaceData.js.map +1 -1
  378. package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
  379. package/lib/esm/polyface/FacetOrientation.js.map +1 -1
  380. package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
  381. package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
  382. package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
  383. package/lib/esm/polyface/Polyface.js.map +1 -1
  384. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  385. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  386. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  387. package/lib/esm/polyface/PolyfaceQuery.d.ts +60 -60
  388. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  389. package/lib/esm/polyface/PolyfaceQuery.js +79 -79
  390. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  391. package/lib/esm/polyface/RangeLengthData.js.map +1 -1
  392. package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
  393. package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
  394. package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
  395. package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
  396. package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
  397. package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
  398. package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
  399. package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
  400. package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
  401. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
  402. package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
  403. package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
  404. package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
  405. package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
  406. package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
  407. package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
  408. package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
  409. package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
  410. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  411. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  412. package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
  413. package/lib/esm/serialization/DeepCompare.js.map +1 -1
  414. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  415. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  416. package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
  417. package/lib/esm/solid/Box.js.map +1 -1
  418. package/lib/esm/solid/Cone.js.map +1 -1
  419. package/lib/esm/solid/LinearSweep.js.map +1 -1
  420. package/lib/esm/solid/RotationalSweep.js.map +1 -1
  421. package/lib/esm/solid/RuledSweep.js.map +1 -1
  422. package/lib/esm/solid/SolidPrimitive.js.map +1 -1
  423. package/lib/esm/solid/Sphere.js.map +1 -1
  424. package/lib/esm/solid/SweepContour.js.map +1 -1
  425. package/lib/esm/solid/TorusPipe.js.map +1 -1
  426. package/lib/esm/topology/ChainMerge.js.map +1 -1
  427. package/lib/esm/topology/Graph.js.map +1 -1
  428. package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
  429. package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
  430. package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
  431. package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
  432. package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
  433. package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
  434. package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
  435. package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
  436. package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
  437. package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
  438. package/lib/esm/topology/MaskManager.js.map +1 -1
  439. package/lib/esm/topology/Merging.js.map +1 -1
  440. package/lib/esm/topology/RegularizeFace.js.map +1 -1
  441. package/lib/esm/topology/SignedDataSummary.js.map +1 -1
  442. package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
  443. package/lib/esm/topology/Triangulation.js.map +1 -1
  444. package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
  445. package/package.json +3 -3
@@ -159,6 +159,18 @@ export declare enum DuplicateFacetClusterSelector {
159
159
  /** Retain one from any cluster with an odd number of faces. */
160
160
  SelectOneByParity = 3
161
161
  }
162
+ /**
163
+ * Announce the points on a drape panel.
164
+ * * The first two points in the array are always along the draped line segment.
165
+ * * The last two are always on the facet.
166
+ * * If there are 4 points, those two pairs are distinct, i.e. both segment points are to the same side of the facet.
167
+ * * If there are 3 points, those two pairs share an on-facet point.
168
+ * * The panel is ordered so the outward normal is to the right of the draped segment.
169
+ * @param indexAOnFacet index (in points) of the point that is the first facet point for moving forward along the linestring.
170
+ * @param indexBOnFacet index (in points) of the point that is the second facet point for moving forward along the linestring.
171
+ * @public
172
+ */
173
+ export type AnnounceDrapePanel = (linestring: GrowableXYZArray, segmentIndex: number, polyface: Polyface, facetIndex: number, points: Point3d[], indexAOnFacet: number, indexBOnFacet: number) => any;
162
174
  /**
163
175
  * PolyfaceQuery is a static class whose methods implement queries on a `Polyface` or `PolyfaceVisitor` provided as a
164
176
  * parameter to each method.
@@ -220,41 +232,39 @@ export declare class PolyfaceQuery {
220
232
  */
221
233
  static areFacetsConvex(source: Polyface | PolyfaceVisitor): boolean;
222
234
  /**
223
- * Test for convex volume by dihedral angle tests on all edges.
224
- * * This tests if all dihedral angles of the mesh are positive.
225
- * * In a closed solid, this is a strong test for overall mesh convexity with outward facing normals.
226
- * * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
227
- * * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
228
- * component, such as a pyramid with no underside.
229
- * * It is not a correct test if there are multiple, disjoint components.
230
- * * Take the above-mentioned pyramid with no underside.
231
- * * Within the same mesh, have a second pyramid placed to the side, still facing upward.
232
- * * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
235
+ * Compute a number summarizing the dihedral angles in the mesh.
236
+ * * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
237
+ * product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
233
238
  * @param source mesh.
234
239
  * @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
235
- * @returns true if all dihedral angles of the mesh are positive.
240
+ * See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
241
+ * connected components.
242
+ * * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
243
+ * * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
244
+ * has outward normals.
245
+ * * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
246
+ * has inward normals.
247
+ * * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
248
+ * be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
249
+ * `ignoreBoundaries` is false) adjacent to exactly one facet.
236
250
  */
237
- static isConvexByDihedralAngleCount(source: Polyface, ignoreBoundaries?: boolean): boolean;
238
- /**
239
- * Compute a number summarizing the dihedral angles in the mesh.
240
- * * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
241
- * product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
242
- * @param source mesh.
243
- * @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
244
- * See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
245
- * connected components.
246
- * * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
247
- * * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
248
- * has outward normals.
249
- * * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
250
- * has inward normals.
251
- * * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
252
- * be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
253
- * `ignoreBoundaries` is false) adjacent to exactly one facet.
254
- */
255
251
  static dihedralAngleSummary(source: Polyface, ignoreBoundaries?: boolean): number;
256
- /** Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume. */
257
- static isPolyfaceClosedByEdgePairing(source: Polyface): boolean;
252
+ /**
253
+ * Test for convex volume by dihedral angle tests on all edges.
254
+ * * This tests if all dihedral angles of the mesh are positive.
255
+ * * In a closed solid, this is a strong test for overall mesh convexity with outward facing normals.
256
+ * * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
257
+ * * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
258
+ * component, such as a pyramid with no underside.
259
+ * * It is not a correct test if there are multiple, disjoint components.
260
+ * * Take the above-mentioned pyramid with no underside.
261
+ * * Within the same mesh, have a second pyramid placed to the side, still facing upward.
262
+ * * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
263
+ * @param source mesh.
264
+ * @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
265
+ * @returns true if all dihedral angles of the mesh are positive.
266
+ */
267
+ static isConvexByDihedralAngleCount(source: Polyface, ignoreBoundaries?: boolean): boolean;
258
268
  /**
259
269
  * Test edges pairing in `source` mesh.
260
270
  * * For `allowSimpleBoundaries === false` true return means this is a closed 2-manifold surface.
@@ -264,6 +274,19 @@ export declare class PolyfaceQuery {
264
274
  * * Any edge with 2 adjacent facets in the same direction triggers a `false` return.
265
275
  */
266
276
  static isPolyfaceManifold(source: Polyface, allowSimpleBoundaries?: boolean): boolean;
277
+ /** Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume. */
278
+ static isPolyfaceClosedByEdgePairing(source: Polyface): boolean;
279
+ /**
280
+ * Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume.
281
+ * If not, extract the boundary edges as lines.
282
+ * @param source polyface or visitor.
283
+ * @param announceEdge function to be called with each boundary edge. The announcement is start and end points,
284
+ * start and end indices, and facet index.
285
+ * @param includeTypical true to announce typical boundary edges with a single adjacent facet.
286
+ * @param includeMismatch true to announce edges with more than 2 adjacent facets.
287
+ * @param includeNull true to announce edges with identical start and end vertex indices.
288
+ */
289
+ static announceBoundaryEdges(source: Polyface | PolyfaceVisitor | undefined, announceEdge: (pointA: Point3d, pointB: Point3d, indexA: number, indexB: number, facetIndex: number) => void, includeTypical?: boolean, includeMismatch?: boolean, includeNull?: boolean): void;
267
290
  /**
268
291
  * Construct a CurveCollection containing boundary edges.
269
292
  * * Each edge is a LineSegment3d.
@@ -282,17 +305,6 @@ export declare class PolyfaceQuery {
282
305
  * @param includeNull true to include edges with identical start and end vertex indices.
283
306
  */
284
307
  static collectBoundaryEdges(source: Polyface | PolyfaceVisitor, includeTypical?: boolean, includeMismatch?: boolean, includeNull?: boolean): AnyChain | undefined;
285
- /**
286
- * Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume.
287
- * If not, extract the boundary edges as lines.
288
- * @param source polyface or visitor.
289
- * @param announceEdge function to be called with each boundary edge. The announcement is start and end points,
290
- * start and end indices, and facet index.
291
- * @param includeTypical true to announce typical boundary edges with a single adjacent facet.
292
- * @param includeMismatch true to announce edges with more than 2 adjacent facets.
293
- * @param includeNull true to announce edges with identical start and end vertex indices.
294
- */
295
- static announceBoundaryEdges(source: Polyface | PolyfaceVisitor | undefined, announceEdge: (pointA: Point3d, pointB: Point3d, indexA: number, indexB: number, facetIndex: number) => void, includeTypical?: boolean, includeMismatch?: boolean, includeNull?: boolean): void;
296
308
  /**
297
309
  * Load all half edges from a mesh to an IndexedEdgeMatcher.
298
310
  * @param polyface a mesh or a visitor assumed to have numWrap === 1.
@@ -513,19 +525,19 @@ export declare class PolyfaceQuery {
513
525
  */
514
526
  private static compareFacetIndexAndVertexIndices;
515
527
  /**
516
- * Collect facet duplicates.
517
- * @param polyface the polyface.
518
- * @param includeSingletons if true, non-duplicated facets are included in the output.
528
+ * Announce facet duplicates.
519
529
  * @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
520
530
  * indices of a cluster of facets with the same vertex indices.
521
531
  */
522
- static collectDuplicateFacetIndices(polyface: Polyface, includeSingletons?: boolean): number[][];
532
+ static announceDuplicateFacetIndices(polyface: Polyface, announceCluster: (clusterFacetIndices: number[]) => void): void;
523
533
  /**
524
- * Announce facet duplicates.
534
+ * Collect facet duplicates.
535
+ * @param polyface the polyface.
536
+ * @param includeSingletons if true, non-duplicated facets are included in the output.
525
537
  * @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
526
538
  * indices of a cluster of facets with the same vertex indices.
527
539
  */
528
- static announceDuplicateFacetIndices(polyface: Polyface, announceCluster: (clusterFacetIndices: number[]) => void): void;
540
+ static collectDuplicateFacetIndices(polyface: Polyface, includeSingletons?: boolean): number[][];
529
541
  /**
530
542
  * Return a new facet set with a subset of facets in polyface.
531
543
  * @param source the polyface.
@@ -643,16 +655,4 @@ export declare class PolyfaceQuery {
643
655
  */
644
656
  static intersectRay3d(visitor: Polyface | PolyfaceVisitor, ray: Ray3d, options?: FacetIntersectOptions): FacetLocationDetail | undefined;
645
657
  }
646
- /**
647
- * Announce the points on a drape panel.
648
- * * The first two points in the array are always along the draped line segment.
649
- * * The last two are always on the facet.
650
- * * If there are 4 points, those two pairs are distinct, i.e. both segment points are to the same side of the facet.
651
- * * If there are 3 points, those two pairs share an on-facet point.
652
- * * The panel is ordered so the outward normal is to the right of the draped segment.
653
- * @param indexAOnFacet index (in points) of the point that is the first facet point for moving forward along the linestring.
654
- * @param indexBOnFacet index (in points) of the point that is the second facet point for moving forward along the linestring.
655
- * @public
656
- */
657
- export type AnnounceDrapePanel = (linestring: GrowableXYZArray, segmentIndex: number, polyface: Polyface, facetIndex: number, points: Point3d[], indexAOnFacet: number, indexBOnFacet: number) => any;
658
658
  //# sourceMappingURL=PolyfaceQuery.d.ts.map
@@ -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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"}
@@ -349,40 +349,22 @@ export class PolyfaceQuery {
349
349
  return true;
350
350
  }
351
351
  /**
352
- * Test for convex volume by dihedral angle tests on all edges.
353
- * * This tests if all dihedral angles of the mesh are positive.
354
- * * In a closed solid, this is a strong test for overall mesh convexity with outward facing normals.
355
- * * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
356
- * * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
357
- * component, such as a pyramid with no underside.
358
- * * It is not a correct test if there are multiple, disjoint components.
359
- * * Take the above-mentioned pyramid with no underside.
360
- * * Within the same mesh, have a second pyramid placed to the side, still facing upward.
361
- * * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
352
+ * Compute a number summarizing the dihedral angles in the mesh.
353
+ * * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
354
+ * product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
362
355
  * @param source mesh.
363
356
  * @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
364
- * @returns true if all dihedral angles of the mesh are positive.
357
+ * See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
358
+ * connected components.
359
+ * * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
360
+ * * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
361
+ * has outward normals.
362
+ * * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
363
+ * has inward normals.
364
+ * * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
365
+ * be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
366
+ * `ignoreBoundaries` is false) adjacent to exactly one facet.
365
367
  */
366
- static isConvexByDihedralAngleCount(source, ignoreBoundaries = false) {
367
- return this.dihedralAngleSummary(source, ignoreBoundaries) > 0;
368
- }
369
- /**
370
- * Compute a number summarizing the dihedral angles in the mesh.
371
- * * A dihedral angle is the signed angle between adjacent facets' normals. This angle is positive when the cross
372
- * product `normalA x normalB` has the same direction as facetA's traversal of the facets' shared edge.
373
- * @param source mesh.
374
- * @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
375
- * See [[isConvexByDihedralAngleCount]] for comments about passing true when there are multiple
376
- * connected components.
377
- * * Return `0` if all dihedral angles are zero (and `ignoreBoundaries === true`). The mesh is planar.
378
- * * Otherwise, return `1` if all dihedral angles are non-negative. The mesh probably encloses a convex volume and
379
- * has outward normals.
380
- * * Otherwise, return `-1` if all dihedral angles are non-positive. The mesh probably encloses a convex volume and
381
- * has inward normals.
382
- * * Otherwise, return `-2`. Also return `-2` if a non-manifold condition was detected, or a facet normal could not
383
- * be computed. A non-manifold condition is a positive-length edge adjacent to more than 2 facets or (if
384
- * `ignoreBoundaries` is false) adjacent to exactly one facet.
385
- */
386
368
  static dihedralAngleSummary(source, ignoreBoundaries = false) {
387
369
  // more info can be found at geometry/internaldocs/Polyface.md
388
370
  const edges = new IndexedEdgeMatcher();
@@ -438,9 +420,23 @@ export class PolyfaceQuery {
438
420
  return 0;
439
421
  return -2;
440
422
  }
441
- /** Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume. */
442
- static isPolyfaceClosedByEdgePairing(source) {
443
- return this.isPolyfaceManifold(source, false);
423
+ /**
424
+ * Test for convex volume by dihedral angle tests on all edges.
425
+ * * This tests if all dihedral angles of the mesh are positive.
426
+ * * In a closed solid, this is a strong test for overall mesh convexity with outward facing normals.
427
+ * * See [[dihedralAngleSummary]] for the definition of "dihedral angle".
428
+ * * With `ignoreBoundaries` true, this may be a useful test when all the facets are in a single edge-connected
429
+ * component, such as a pyramid with no underside.
430
+ * * It is not a correct test if there are multiple, disjoint components.
431
+ * * Take the above-mentioned pyramid with no underside.
432
+ * * Within the same mesh, have a second pyramid placed to the side, still facing upward.
433
+ * * The angles will pass the dihedral convexity test, but the composite thing surely is not convex.
434
+ * @param source mesh.
435
+ * @param ignoreBoundaries if `true` ignore simple boundary edges, i.e., allow unclosed meshes. Default is `false`.
436
+ * @returns true if all dihedral angles of the mesh are positive.
437
+ */
438
+ static isConvexByDihedralAngleCount(source, ignoreBoundaries = false) {
439
+ return this.dihedralAngleSummary(source, ignoreBoundaries) > 0;
444
440
  }
445
441
  /**
446
442
  * Test edges pairing in `source` mesh.
@@ -464,36 +460,9 @@ export class PolyfaceQuery {
464
460
  edges.sortAndCollectClusters(undefined, allowSimpleBoundaries ? undefined : badClusters, undefined, badClusters);
465
461
  return badClusters.length === 0;
466
462
  }
467
- /**
468
- * Construct a CurveCollection containing boundary edges.
469
- * * Each edge is a LineSegment3d.
470
- * @param source polyface or visitor.
471
- * @param includeTypical true to in include typical boundary edges with a single adjacent facet.
472
- * @param includeMismatch true to include edges with more than 2 adjacent facets.
473
- * @param includeNull true to include edges with identical start and end vertex indices.
474
- */
475
- static boundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
476
- const result = new BagOfCurves();
477
- const announceEdge = (pointA, pointB, _indexA, _indexB, _readIndex) => {
478
- result.tryAddChild(LineSegment3d.create(pointA, pointB));
479
- };
480
- PolyfaceQuery.announceBoundaryEdges(source, announceEdge, includeTypical, includeMismatch, includeNull);
481
- if (result.children.length === 0)
482
- return undefined;
483
- return result;
484
- }
485
- /**
486
- * Collect boundary edges.
487
- * * Return the edges as the simplest collection of chains of line segments.
488
- * @param source polyface or visitor.
489
- * @param includeTypical true to in include typical boundary edges with a single adjacent facet.
490
- * @param includeMismatch true to include edges with more than 2 adjacent facets.
491
- * @param includeNull true to include edges with identical start and end vertex indices.
492
- */
493
- static collectBoundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
494
- const collector = new MultiChainCollector(Geometry.smallMetricDistance, Geometry.smallMetricDistance);
495
- PolyfaceQuery.announceBoundaryEdges(source, (ptA, ptB) => collector.captureCurve(LineSegment3d.create(ptA, ptB)), includeTypical, includeMismatch, includeNull);
496
- return collector.grabResult(true);
463
+ /** Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume. */
464
+ static isPolyfaceClosedByEdgePairing(source) {
465
+ return this.isPolyfaceManifold(source, false);
497
466
  }
498
467
  /**
499
468
  * Test if the facets in `source` occur in perfectly mated pairs, as is required for a closed manifold volume.
@@ -544,6 +513,37 @@ export class PolyfaceQuery {
544
513
  }
545
514
  }
546
515
  }
516
+ /**
517
+ * Construct a CurveCollection containing boundary edges.
518
+ * * Each edge is a LineSegment3d.
519
+ * @param source polyface or visitor.
520
+ * @param includeTypical true to in include typical boundary edges with a single adjacent facet.
521
+ * @param includeMismatch true to include edges with more than 2 adjacent facets.
522
+ * @param includeNull true to include edges with identical start and end vertex indices.
523
+ */
524
+ static boundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
525
+ const result = new BagOfCurves();
526
+ const announceEdge = (pointA, pointB, _indexA, _indexB, _readIndex) => {
527
+ result.tryAddChild(LineSegment3d.create(pointA, pointB));
528
+ };
529
+ PolyfaceQuery.announceBoundaryEdges(source, announceEdge, includeTypical, includeMismatch, includeNull);
530
+ if (result.children.length === 0)
531
+ return undefined;
532
+ return result;
533
+ }
534
+ /**
535
+ * Collect boundary edges.
536
+ * * Return the edges as the simplest collection of chains of line segments.
537
+ * @param source polyface or visitor.
538
+ * @param includeTypical true to in include typical boundary edges with a single adjacent facet.
539
+ * @param includeMismatch true to include edges with more than 2 adjacent facets.
540
+ * @param includeNull true to include edges with identical start and end vertex indices.
541
+ */
542
+ static collectBoundaryEdges(source, includeTypical = true, includeMismatch = true, includeNull = true) {
543
+ const collector = new MultiChainCollector(Geometry.smallMetricDistance, Geometry.smallMetricDistance);
544
+ PolyfaceQuery.announceBoundaryEdges(source, (ptA, ptB) => collector.captureCurve(LineSegment3d.create(ptA, ptB)), includeTypical, includeMismatch, includeNull);
545
+ return collector.grabResult(true);
546
+ }
547
547
  /**
548
548
  * Load all half edges from a mesh to an IndexedEdgeMatcher.
549
549
  * @param polyface a mesh or a visitor assumed to have numWrap === 1.
@@ -1323,21 +1323,6 @@ export class PolyfaceQuery {
1323
1323
  }
1324
1324
  return 0;
1325
1325
  }
1326
- /**
1327
- * Collect facet duplicates.
1328
- * @param polyface the polyface.
1329
- * @param includeSingletons if true, non-duplicated facets are included in the output.
1330
- * @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
1331
- * indices of a cluster of facets with the same vertex indices.
1332
- */
1333
- static collectDuplicateFacetIndices(polyface, includeSingletons = false) {
1334
- const result = [];
1335
- this.announceDuplicateFacetIndices(polyface, (clusterFacetIndices) => {
1336
- if (includeSingletons || clusterFacetIndices.length > 1)
1337
- result.push(clusterFacetIndices.slice());
1338
- });
1339
- return result;
1340
- }
1341
1326
  /**
1342
1327
  * Announce facet duplicates.
1343
1328
  * @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
@@ -1385,6 +1370,21 @@ export class PolyfaceQuery {
1385
1370
  announceCluster(clusterArray);
1386
1371
  }
1387
1372
  }
1373
+ /**
1374
+ * Collect facet duplicates.
1375
+ * @param polyface the polyface.
1376
+ * @param includeSingletons if true, non-duplicated facets are included in the output.
1377
+ * @returns an array of arrays describing facet duplication. Each array `entry` in the output contains read
1378
+ * indices of a cluster of facets with the same vertex indices.
1379
+ */
1380
+ static collectDuplicateFacetIndices(polyface, includeSingletons = false) {
1381
+ const result = [];
1382
+ this.announceDuplicateFacetIndices(polyface, (clusterFacetIndices) => {
1383
+ if (includeSingletons || clusterFacetIndices.length > 1)
1384
+ result.push(clusterFacetIndices.slice());
1385
+ });
1386
+ return result;
1387
+ }
1388
1388
  /**
1389
1389
  * Return a new facet set with a subset of facets in polyface.
1390
1390
  * @param source the polyface.