@itwin/core-geometry 5.14.0-dev.1 → 5.14.0-dev.11

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 (234) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/lib/cjs/bspline/AkimaCurve3d.d.ts +18 -13
  3. package/lib/cjs/bspline/AkimaCurve3d.d.ts.map +1 -1
  4. package/lib/cjs/bspline/AkimaCurve3d.js +19 -16
  5. package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
  6. package/lib/cjs/bspline/BSplineCurve.d.ts +2 -1
  7. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  8. package/lib/cjs/bspline/BSplineCurve.js +3 -2
  9. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  10. package/lib/cjs/bspline/InterpolationCurve3d.d.ts +5 -1
  11. package/lib/cjs/bspline/InterpolationCurve3d.d.ts.map +1 -1
  12. package/lib/cjs/bspline/InterpolationCurve3d.js +11 -11
  13. package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
  14. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
  15. package/lib/cjs/clipping/ClipUtils.js +0 -2
  16. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  17. package/lib/cjs/curve/CoordinateXYZ.d.ts +2 -2
  18. package/lib/cjs/curve/CoordinateXYZ.d.ts.map +1 -1
  19. package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
  20. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +5 -5
  21. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  22. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +9 -23
  23. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  24. package/lib/cjs/curve/CurveCollection.d.ts +20 -4
  25. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  26. package/lib/cjs/curve/CurveCollection.js +39 -2
  27. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  28. package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
  29. package/lib/cjs/curve/CurveFactory.js +4 -5
  30. package/lib/cjs/curve/CurveFactory.js.map +1 -1
  31. package/lib/cjs/curve/CurveOps.d.ts.map +1 -1
  32. package/lib/cjs/curve/CurveOps.js.map +1 -1
  33. package/lib/cjs/curve/CurvePrimitive.d.ts +10 -3
  34. package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
  35. package/lib/cjs/curve/CurvePrimitive.js +1 -1
  36. package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
  37. package/lib/cjs/curve/CurveProcessor.d.ts +7 -7
  38. package/lib/cjs/curve/CurveProcessor.d.ts.map +1 -1
  39. package/lib/cjs/curve/CurveProcessor.js +19 -3
  40. package/lib/cjs/curve/CurveProcessor.js.map +1 -1
  41. package/lib/cjs/curve/GeometryQuery.d.ts +49 -4
  42. package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -1
  43. package/lib/cjs/curve/GeometryQuery.js +52 -0
  44. package/lib/cjs/curve/GeometryQuery.js.map +1 -1
  45. package/lib/cjs/curve/LineSegment3d.d.ts +1 -1
  46. package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -1
  47. package/lib/cjs/curve/LineSegment3d.js +1 -1
  48. package/lib/cjs/curve/LineSegment3d.js.map +1 -1
  49. package/lib/cjs/curve/Loop.d.ts +18 -2
  50. package/lib/cjs/curve/Loop.d.ts.map +1 -1
  51. package/lib/cjs/curve/Loop.js +26 -1
  52. package/lib/cjs/curve/Loop.js.map +1 -1
  53. package/lib/cjs/curve/ParityRegion.d.ts +7 -2
  54. package/lib/cjs/curve/ParityRegion.d.ts.map +1 -1
  55. package/lib/cjs/curve/ParityRegion.js +9 -8
  56. package/lib/cjs/curve/ParityRegion.js.map +1 -1
  57. package/lib/cjs/curve/Path.d.ts +8 -1
  58. package/lib/cjs/curve/Path.d.ts.map +1 -1
  59. package/lib/cjs/curve/Path.js +12 -0
  60. package/lib/cjs/curve/Path.js.map +1 -1
  61. package/lib/cjs/curve/ProxyCurve.d.ts +1 -1
  62. package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -1
  63. package/lib/cjs/curve/ProxyCurve.js +2 -3
  64. package/lib/cjs/curve/ProxyCurve.js.map +1 -1
  65. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts +36 -35
  66. package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  67. package/lib/cjs/curve/Query/PlanarSubdivision.js +4 -4
  68. package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
  69. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  70. package/lib/cjs/curve/RegionOps.js +3 -3
  71. package/lib/cjs/curve/RegionOps.js.map +1 -1
  72. package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
  73. package/lib/cjs/curve/UnionRegion.d.ts +9 -2
  74. package/lib/cjs/curve/UnionRegion.d.ts.map +1 -1
  75. package/lib/cjs/curve/UnionRegion.js +12 -0
  76. package/lib/cjs/curve/UnionRegion.js.map +1 -1
  77. package/lib/cjs/curve/internalContexts/CloneCurvesContext.d.ts +1 -0
  78. package/lib/cjs/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -1
  79. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js +3 -1
  80. package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  81. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.d.ts +1 -6
  82. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -1
  83. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js +15 -8
  84. package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  85. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +5 -2
  86. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  87. package/lib/cjs/curve/spiral/DirectSpiral3d.js +6 -3
  88. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  89. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +5 -2
  90. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  91. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +6 -3
  92. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  93. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +2 -0
  94. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  95. package/lib/cjs/geometry3d/Point3dVector3d.js +4 -0
  96. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  97. package/lib/cjs/geometry3d/Range.d.ts +2 -0
  98. package/lib/cjs/geometry3d/Range.d.ts.map +1 -1
  99. package/lib/cjs/geometry3d/Range.js +6 -0
  100. package/lib/cjs/geometry3d/Range.js.map +1 -1
  101. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  102. package/lib/cjs/polyface/PolyfaceQuery.js +4 -4
  103. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  104. package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
  105. package/lib/cjs/serialization/BGFBReader.js +5 -2
  106. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  107. package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
  108. package/lib/cjs/serialization/BGFBWriter.js +1 -2
  109. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  110. package/lib/cjs/serialization/IModelJsonSchema.d.ts +56 -41
  111. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  112. package/lib/cjs/serialization/IModelJsonSchema.js +16 -17
  113. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  114. package/lib/cjs/topology/Merging.d.ts +4 -2
  115. package/lib/cjs/topology/Merging.d.ts.map +1 -1
  116. package/lib/cjs/topology/Merging.js +23 -20
  117. package/lib/cjs/topology/Merging.js.map +1 -1
  118. package/lib/esm/bspline/AkimaCurve3d.d.ts +18 -13
  119. package/lib/esm/bspline/AkimaCurve3d.d.ts.map +1 -1
  120. package/lib/esm/bspline/AkimaCurve3d.js +19 -16
  121. package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
  122. package/lib/esm/bspline/BSplineCurve.d.ts +2 -1
  123. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  124. package/lib/esm/bspline/BSplineCurve.js +3 -2
  125. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  126. package/lib/esm/bspline/InterpolationCurve3d.d.ts +5 -1
  127. package/lib/esm/bspline/InterpolationCurve3d.d.ts.map +1 -1
  128. package/lib/esm/bspline/InterpolationCurve3d.js +11 -11
  129. package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
  130. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  131. package/lib/esm/clipping/ClipUtils.js +0 -2
  132. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  133. package/lib/esm/curve/CoordinateXYZ.d.ts +2 -2
  134. package/lib/esm/curve/CoordinateXYZ.d.ts.map +1 -1
  135. package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
  136. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +5 -5
  137. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  138. package/lib/esm/curve/CurveChainWithDistanceIndex.js +9 -23
  139. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  140. package/lib/esm/curve/CurveCollection.d.ts +20 -4
  141. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  142. package/lib/esm/curve/CurveCollection.js +39 -2
  143. package/lib/esm/curve/CurveCollection.js.map +1 -1
  144. package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
  145. package/lib/esm/curve/CurveFactory.js +4 -5
  146. package/lib/esm/curve/CurveFactory.js.map +1 -1
  147. package/lib/esm/curve/CurveOps.d.ts.map +1 -1
  148. package/lib/esm/curve/CurveOps.js.map +1 -1
  149. package/lib/esm/curve/CurvePrimitive.d.ts +10 -3
  150. package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
  151. package/lib/esm/curve/CurvePrimitive.js +1 -1
  152. package/lib/esm/curve/CurvePrimitive.js.map +1 -1
  153. package/lib/esm/curve/CurveProcessor.d.ts +7 -7
  154. package/lib/esm/curve/CurveProcessor.d.ts.map +1 -1
  155. package/lib/esm/curve/CurveProcessor.js +19 -3
  156. package/lib/esm/curve/CurveProcessor.js.map +1 -1
  157. package/lib/esm/curve/GeometryQuery.d.ts +49 -4
  158. package/lib/esm/curve/GeometryQuery.d.ts.map +1 -1
  159. package/lib/esm/curve/GeometryQuery.js +52 -0
  160. package/lib/esm/curve/GeometryQuery.js.map +1 -1
  161. package/lib/esm/curve/LineSegment3d.d.ts +1 -1
  162. package/lib/esm/curve/LineSegment3d.d.ts.map +1 -1
  163. package/lib/esm/curve/LineSegment3d.js +1 -1
  164. package/lib/esm/curve/LineSegment3d.js.map +1 -1
  165. package/lib/esm/curve/Loop.d.ts +18 -2
  166. package/lib/esm/curve/Loop.d.ts.map +1 -1
  167. package/lib/esm/curve/Loop.js +26 -1
  168. package/lib/esm/curve/Loop.js.map +1 -1
  169. package/lib/esm/curve/ParityRegion.d.ts +7 -2
  170. package/lib/esm/curve/ParityRegion.d.ts.map +1 -1
  171. package/lib/esm/curve/ParityRegion.js +9 -8
  172. package/lib/esm/curve/ParityRegion.js.map +1 -1
  173. package/lib/esm/curve/Path.d.ts +8 -1
  174. package/lib/esm/curve/Path.d.ts.map +1 -1
  175. package/lib/esm/curve/Path.js +12 -0
  176. package/lib/esm/curve/Path.js.map +1 -1
  177. package/lib/esm/curve/ProxyCurve.d.ts +1 -1
  178. package/lib/esm/curve/ProxyCurve.d.ts.map +1 -1
  179. package/lib/esm/curve/ProxyCurve.js +2 -3
  180. package/lib/esm/curve/ProxyCurve.js.map +1 -1
  181. package/lib/esm/curve/Query/PlanarSubdivision.d.ts +36 -35
  182. package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -1
  183. package/lib/esm/curve/Query/PlanarSubdivision.js +4 -4
  184. package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
  185. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  186. package/lib/esm/curve/RegionOps.js +3 -3
  187. package/lib/esm/curve/RegionOps.js.map +1 -1
  188. package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
  189. package/lib/esm/curve/UnionRegion.d.ts +9 -2
  190. package/lib/esm/curve/UnionRegion.d.ts.map +1 -1
  191. package/lib/esm/curve/UnionRegion.js +12 -0
  192. package/lib/esm/curve/UnionRegion.js.map +1 -1
  193. package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts +1 -0
  194. package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -1
  195. package/lib/esm/curve/internalContexts/CloneCurvesContext.js +3 -1
  196. package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
  197. package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts +1 -6
  198. package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -1
  199. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +15 -8
  200. package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
  201. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +5 -2
  202. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  203. package/lib/esm/curve/spiral/DirectSpiral3d.js +6 -3
  204. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  205. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +5 -2
  206. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  207. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +6 -3
  208. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  209. package/lib/esm/geometry3d/Point3dVector3d.d.ts +2 -0
  210. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  211. package/lib/esm/geometry3d/Point3dVector3d.js +4 -0
  212. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  213. package/lib/esm/geometry3d/Range.d.ts +2 -0
  214. package/lib/esm/geometry3d/Range.d.ts.map +1 -1
  215. package/lib/esm/geometry3d/Range.js +6 -0
  216. package/lib/esm/geometry3d/Range.js.map +1 -1
  217. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  218. package/lib/esm/polyface/PolyfaceQuery.js +4 -4
  219. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  220. package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
  221. package/lib/esm/serialization/BGFBReader.js +5 -2
  222. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  223. package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
  224. package/lib/esm/serialization/BGFBWriter.js +1 -2
  225. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  226. package/lib/esm/serialization/IModelJsonSchema.d.ts +56 -41
  227. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  228. package/lib/esm/serialization/IModelJsonSchema.js +16 -17
  229. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  230. package/lib/esm/topology/Merging.d.ts +4 -2
  231. package/lib/esm/topology/Merging.d.ts.map +1 -1
  232. package/lib/esm/topology/Merging.js +23 -20
  233. package/lib/esm/topology/Merging.js.map +1 -1
  234. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Loop.js","sourceRoot":"","sources":["../../../src/curve/Loop.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 Curve\r\n */\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { IndexedXYZCollection } from \"../geometry3d/IndexedXYZCollection\";\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { CurveChainWithDistanceIndex } from \"./CurveChainWithDistanceIndex\";\r\nimport { CurveChain } from \"./CurveCollection\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\nimport { RecursiveCurveProcessor } from \"./CurveProcessor\";\r\nimport { GeometryQuery } from \"./GeometryQuery\";\r\nimport { LineString3d } from \"./LineString3d\";\r\nimport { StrokeOptions } from \"./StrokeOptions\";\r\n\r\n/**\r\n * A `Loop` is a curve chain that is the boundary of a closed (planar) loop.\r\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\r\n * @public\r\n */\r\nexport class Loop extends CurveChain {\r\n /** String name for schema properties */\r\n public readonly curveCollectionType = \"loop\";\r\n /** Tag value that can be set to true for user code to mark inner and outer loops. */\r\n public override isInner: boolean = false;\r\n /** Test if `other` is a `Loop` */\r\n public isSameGeometryClass(other: GeometryQuery): boolean {\r\n return other instanceof Loop;\r\n }\r\n public constructor() {\r\n super();\r\n }\r\n /**\r\n * Create a loop from a variable length list of [[CurvePrimitive]]s.\r\n * * A significant gap between the end of one curve and the start of the next, or between chain start and end,\r\n * is not bridged and may cause unexpected behavior.\r\n * @param curves array of individual curve primitives, assumed to form a closed planar loop.\r\n */\r\n public static create(...curves: CurvePrimitive[]): Loop {\r\n const result = new Loop();\r\n for (const curve of curves) {\r\n if (curve instanceof CurveChainWithDistanceIndex)\r\n result.children.push(...curve.path.children);\r\n else\r\n result.children.push(curve);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Create a loop from an array of [[CurvePrimitive]]s.\r\n * * A significant gap between the end of one curve and the start of the next, or between chain start and end,\r\n * is not bridged and may cause unexpected behavior.\r\n * @param curves array of individual curve primitives, assumed to form a closed planar loop.\r\n */\r\n public static createArray(curves: CurvePrimitive[]): Loop {\r\n return this.create(...curves);\r\n }\r\n /**\r\n * Create a loop from an array of coplanar points.\r\n * @param points vertices of polygon, closure point optional.\r\n */\r\n public static createPolygon(points: IndexedXYZCollection | Point3d[]): Loop {\r\n const linestring = LineString3d.create(points);\r\n linestring.addClosurePoint();\r\n return Loop.create(linestring);\r\n }\r\n /** Create a loop with the stroked form of this loop. */\r\n public cloneStroked(options?: StrokeOptions): Loop {\r\n const strokes = LineString3d.create();\r\n for (const curve of this.children)\r\n curve.emitStrokes(strokes, options);\r\n // eliminate near-duplicate points between children\r\n strokes.removeDuplicatePoints();\r\n if (strokes.isPhysicallyClosed) {\r\n strokes.popPoint();\r\n strokes.addClosurePoint();\r\n }\r\n return Loop.create(strokes);\r\n }\r\n /** Return the boundary type (2) of a corresponding MicroStation CurveVector */\r\n public dgnBoundaryType(): number {\r\n /**\r\n * All \"Loop\" become \"outer\". TypeScript Loop object is equivalent to a native CurveVector with\r\n * boundaryType = BOUNDARY_TYPE_Outer. In other words, TypeScript has no flavor of Loop that\r\n * carries \"hole\" semantics.\r\n */\r\n return 2;\r\n }\r\n /** Invoke `processor.announceLoop(this, indexInParent)` */\r\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\r\n return processor.announceLoop(this, indexInParent);\r\n }\r\n /** Create a new `Loop` with no children */\r\n public cloneEmptyPeer(): Loop {\r\n const emptyClone = new Loop();\r\n emptyClone.isInner = this.isInner;\r\n return emptyClone;\r\n }\r\n /** Second step of double dispatch: call `handler.handleLoop(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleLoop(this);\r\n }\r\n}\r\n\r\n/**\r\n * Structure carrying a pair of loops with curve geometry.\r\n * @public\r\n */\r\nexport class LoopCurveLoopCurve {\r\n /** First loop */\r\n public loopA?: Loop;\r\n /** A curve (typically an edge of loopA) */\r\n public curveA?: CurvePrimitive;\r\n /** second loop */\r\n public loopB?: Loop;\r\n /** A curve (typically an edge of loopB) */\r\n public curveB?: CurvePrimitive;\r\n /** Constructor */\r\n public constructor(\r\n loopA: Loop | undefined, curveA: CurvePrimitive | undefined, loopB: Loop | undefined, curveB: CurvePrimitive | undefined,\r\n ) {\r\n this.loopA = loopA;\r\n this.curveA = curveA;\r\n this.loopB = loopB;\r\n this.curveB = curveB;\r\n }\r\n /** Set the loopA and curveA members */\r\n public setA(loop: Loop, curve: CurvePrimitive) {\r\n this.loopA = loop;\r\n this.curveA = curve;\r\n }\r\n /** Set the loopB and curveB members */\r\n public setB(loop: Loop, curve: CurvePrimitive) {\r\n this.loopB = loop;\r\n this.curveB = curve;\r\n }\r\n}\r\n\r\n/**\r\n * Carrier object for loops characterized by area sign\r\n * @public\r\n */\r\nexport interface SignedLoops {\r\n /** Array of loops that have positive area sign (i.e. counterclockwise loops). */\r\n positiveAreaLoops: Loop[];\r\n /** Array of loops that have negative area sign (i.e. clockwise loops). */\r\n negativeAreaLoops: Loop[];\r\n /** Slivers where there are coincident sections of input curves. */\r\n slivers: Loop[];\r\n /** Array indicating edges between loops */\r\n edges?: LoopCurveLoopCurve[];\r\n}\r\n"]}
1
+ {"version":3,"file":"Loop.js","sourceRoot":"","sources":["../../../src/curve/Loop.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 Curve\r\n */\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { IndexedXYZCollection } from \"../geometry3d/IndexedXYZCollection\";\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { CurveChainWithDistanceIndex } from \"./CurveChainWithDistanceIndex\";\r\nimport { CurveChain } from \"./CurveCollection\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\nimport { GeometryQuery } from \"./GeometryQuery\";\r\nimport { LineString3d } from \"./LineString3d\";\r\nimport { StrokeOptions } from \"./StrokeOptions\";\r\n\r\nimport type { RecursiveCurveProcessor } from \"./CurveProcessor\";\r\n\r\n/**\r\n * A `Loop` is a curve chain that is the boundary of a closed (planar) loop.\r\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\r\n * @public\r\n */\r\nexport class Loop extends CurveChain {\r\n /** String name for schema properties */\r\n public readonly curveCollectionType = \"loop\";\r\n /**\r\n * Flag for inner loop status (default value is `false`).\r\n * * Typical usage is to set to `true` on hole `Loop`s in a `ParityRegion` to distinguish them from the outer `Loop`.\r\n * * This property is only set by the user, and does not affect region processing.\r\n * * This property is propagated through [[clone]] and JSON/FlatBuffer de/serialization.\r\n * * For best de/serialization results, avoid setting to `false` on multiple `Loop`s of a `ParityRegion`.\r\n */\r\n public isInner: boolean = false;\r\n /** Test if `other` is a `Loop` */\r\n public isSameGeometryClass(other: GeometryQuery): boolean {\r\n return other instanceof Loop;\r\n }\r\n /** Construct an empty loop. */\r\n public constructor() {\r\n super();\r\n }\r\n /**\r\n * Create a loop from a variable length list of [[CurvePrimitive]]s.\r\n * * A significant gap between the end of one curve and the start of the next, or between chain start and end,\r\n * is not bridged and may cause unexpected behavior.\r\n * @param curves array of individual curve primitives, assumed to form a closed planar loop.\r\n */\r\n public static create(...curves: CurvePrimitive[]): Loop {\r\n const result = new Loop();\r\n for (const curve of curves) {\r\n if (curve instanceof CurveChainWithDistanceIndex)\r\n result.children.push(...curve.path.children);\r\n else\r\n result.children.push(curve);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Create a loop from an array of [[CurvePrimitive]]s.\r\n * * A significant gap between the end of one curve and the start of the next, or between chain start and end,\r\n * is not bridged and may cause unexpected behavior.\r\n * @param curves array of individual curve primitives, assumed to form a closed planar loop.\r\n */\r\n public static createArray(curves: CurvePrimitive[]): Loop {\r\n return this.create(...curves);\r\n }\r\n /**\r\n * Create a loop from an array of coplanar points.\r\n * @param points vertices of polygon, closure point optional.\r\n */\r\n public static createPolygon(points: IndexedXYZCollection | Point3d[]): Loop {\r\n const linestring = LineString3d.create(points);\r\n linestring.addClosurePoint();\r\n return Loop.create(linestring);\r\n }\r\n /** Create a loop with the stroked form of this loop. */\r\n public cloneStroked(options?: StrokeOptions): Loop {\r\n const strokes = LineString3d.create();\r\n for (const curve of this.children)\r\n curve.emitStrokes(strokes, options);\r\n // eliminate near-duplicate points between children\r\n strokes.removeDuplicatePoints();\r\n if (strokes.isPhysicallyClosed) {\r\n strokes.popPoint();\r\n strokes.addClosurePoint();\r\n }\r\n return Loop.create(strokes);\r\n }\r\n /** Return the boundary type (2) of a corresponding MicroStation CurveVector */\r\n public dgnBoundaryType(): number {\r\n /**\r\n * All \"Loop\" become \"outer\". TypeScript Loop object is equivalent to a native CurveVector with\r\n * boundaryType = BOUNDARY_TYPE_Outer. In other words, TypeScript has no flavor of Loop that\r\n * carries \"hole\" semantics.\r\n */\r\n return 2;\r\n }\r\n /** Invoke `processor.announceLoop(this, indexInParent)` */\r\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\r\n return processor.announceLoop(this, indexInParent);\r\n }\r\n /** Create a new `Loop` with no children */\r\n public cloneEmptyPeer(): Loop {\r\n const emptyClone = new Loop();\r\n emptyClone.isInner = this.isInner;\r\n return emptyClone;\r\n }\r\n /** Return a deep copy. */\r\n public override clone(): Loop {\r\n return super.clone() as Loop;\r\n }\r\n /** Create a deep copy of transformed curves. */\r\n public override cloneTransformed(transform: Transform): Loop {\r\n return super.cloneTransformed(transform) as Loop;\r\n }\r\n /** Create a deep copy with all linestrings broken down into multiple LineSegment3d. */\r\n public override cloneWithExpandedLineStrings(): Loop {\r\n return super.cloneWithExpandedLineStrings() as Loop;\r\n }\r\n /** Second step of double dispatch: call `handler.handleLoop(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleLoop(this);\r\n }\r\n /** Test for near equality */\r\n public override isAlmostEqual(other: GeometryQuery): boolean {\r\n if (!super.isAlmostEqual(other))\r\n return false;\r\n return this.isInner === (other as Loop).isInner;\r\n }\r\n}\r\n\r\n/**\r\n * Structure carrying a pair of loops with curve geometry.\r\n * @public\r\n */\r\nexport class LoopCurveLoopCurve {\r\n /** First loop */\r\n public loopA?: Loop;\r\n /** A curve (typically an edge of loopA) */\r\n public curveA?: CurvePrimitive;\r\n /** second loop */\r\n public loopB?: Loop;\r\n /** A curve (typically an edge of loopB) */\r\n public curveB?: CurvePrimitive;\r\n /** Constructor */\r\n public constructor(\r\n loopA: Loop | undefined, curveA: CurvePrimitive | undefined, loopB: Loop | undefined, curveB: CurvePrimitive | undefined,\r\n ) {\r\n this.loopA = loopA;\r\n this.curveA = curveA;\r\n this.loopB = loopB;\r\n this.curveB = curveB;\r\n }\r\n /** Set the loopA and curveA members */\r\n public setA(loop: Loop, curve: CurvePrimitive) {\r\n this.loopA = loop;\r\n this.curveA = curve;\r\n }\r\n /** Set the loopB and curveB members */\r\n public setB(loop: Loop, curve: CurvePrimitive) {\r\n this.loopB = loop;\r\n this.curveB = curve;\r\n }\r\n}\r\n\r\n/**\r\n * Carrier object for loops characterized by area sign\r\n * @public\r\n */\r\nexport interface SignedLoops {\r\n /** Array of loops that have positive area sign (i.e. counterclockwise loops). */\r\n positiveAreaLoops: Loop[];\r\n /** Array of loops that have negative area sign (i.e. clockwise loops). */\r\n negativeAreaLoops: Loop[];\r\n /** Slivers where there are coincident sections of input curves. */\r\n slivers: Loop[];\r\n /** Array indicating edges between loops */\r\n edges?: LoopCurveLoopCurve[];\r\n}\r\n"]}
@@ -2,12 +2,13 @@
2
2
  * @module Curve
3
3
  */
4
4
  import { GeometryHandler } from "../geometry3d/GeometryHandler";
5
- import { AnyCurve } from "./CurveTypes";
5
+ import { Transform } from "../geometry3d/Transform";
6
6
  import { CurveCollection } from "./CurveCollection";
7
- import { RecursiveCurveProcessor } from "./CurveProcessor";
7
+ import { AnyCurve } from "./CurveTypes";
8
8
  import { GeometryQuery } from "./GeometryQuery";
9
9
  import { Loop } from "./Loop";
10
10
  import { StrokeOptions } from "./StrokeOptions";
11
+ import type { RecursiveCurveProcessor } from "./CurveProcessor";
11
12
  /**
12
13
  * * A `ParityRegion` is a collection of `Loop` objects.
13
14
  * * The loops collectively define a planar region.
@@ -42,6 +43,10 @@ export declare class ParityRegion extends CurveCollection {
42
43
  announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent?: number): void;
43
44
  /** Return a deep copy. */
44
45
  clone(): ParityRegion;
46
+ /** Create a deep copy of transformed curves. */
47
+ cloneTransformed(transform: Transform): ParityRegion;
48
+ /** Create a deep copy with all linestrings broken down into multiple LineSegment3d. */
49
+ cloneWithExpandedLineStrings(): ParityRegion;
45
50
  /** Stroke these curves into a new ParityRegion. */
46
51
  cloneStroked(options?: StrokeOptions): ParityRegion;
47
52
  /** Create a new empty parity region. */
@@ -1 +1 @@
1
- {"version":3,"file":"ParityRegion.d.ts","sourceRoot":"","sources":["../../../src/curve/ParityRegion.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,eAAe;IAC/C,wCAAwC;IACxC,SAAgB,mBAAmB,kBAAkB;IACrD,uDAAuD;IAChD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAGzD,4CAA4C;IAC5C,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5B,uDAAuD;IACvD,IAAoB,QAAQ,IAAI,IAAI,EAAE,CAErC;IACD,oDAAoD;;IAKpD,wDAAwD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI;IAatD;;;;OAIG;WACW,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,GAAG,YAAY;IAO/E,uEAAuE;WACzD,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY;IAOnD,gFAAgF;IACzE,eAAe,IAAI,MAAM;IAGhC,mEAAmE;IAC5D,wBAAwB,CAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,GAAE,MAAW,GAAG,IAAI;IAGrG,0BAA0B;IACV,KAAK,IAAI,YAAY;IAUrC,mDAAmD;IAC5C,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY;IAU1D,wCAAwC;IACjC,cAAc,IAAI,YAAY;IAGrC;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO;IAOxD,8BAA8B;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAK5C,yEAAyE;IAClE,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;CAGhE"}
1
+ {"version":3,"file":"ParityRegion.d.ts","sourceRoot":"","sources":["../../../src/curve/ParityRegion.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAEhE;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,eAAe;IAC/C,wCAAwC;IACxC,SAAgB,mBAAmB,kBAAkB;IACrD,uDAAuD;IAChD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAGzD,4CAA4C;IAC5C,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5B,uDAAuD;IACvD,IAAoB,QAAQ,IAAI,IAAI,EAAE,CAErC;IACD,oDAAoD;;IAKpD,wDAAwD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI;IAatD;;;;OAIG;WACW,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,GAAG,YAAY;IAO/E,uEAAuE;WACzD,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY;IAOnD,gFAAgF;IACzE,eAAe,IAAI,MAAM;IAGhC,mEAAmE;IAC5D,wBAAwB,CAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,GAAE,MAAW,GAAG,IAAI;IAGrG,0BAA0B;IACV,KAAK,IAAI,YAAY;IAGrC,gDAAgD;IAChC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY;IAGpE,uFAAuF;IACvE,4BAA4B,IAAI,YAAY;IAG5D,mDAAmD;IAC5C,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY;IAU1D,wCAAwC;IACjC,cAAc,IAAI,YAAY;IAGrC;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO;IAOxD,8BAA8B;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAK5C,yEAAyE;IAClE,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;CAGhE"}
@@ -74,14 +74,15 @@ export class ParityRegion extends CurveCollection {
74
74
  }
75
75
  /** Return a deep copy. */
76
76
  clone() {
77
- const clone = new ParityRegion();
78
- let child;
79
- for (child of this.children) {
80
- const childClone = child.clone();
81
- if (childClone instanceof Loop)
82
- clone.children.push(childClone);
83
- }
84
- return clone;
77
+ return super.clone();
78
+ }
79
+ /** Create a deep copy of transformed curves. */
80
+ cloneTransformed(transform) {
81
+ return super.cloneTransformed(transform);
82
+ }
83
+ /** Create a deep copy with all linestrings broken down into multiple LineSegment3d. */
84
+ cloneWithExpandedLineStrings() {
85
+ return super.cloneWithExpandedLineStrings();
85
86
  }
86
87
  /** Stroke these curves into a new ParityRegion. */
87
88
  cloneStroked(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"ParityRegion.js","sourceRoot":"","sources":["../../../src/curve/ParityRegion.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 Curve\r\n */\r\n\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { AnyCurve } from \"./CurveTypes\";\r\nimport { CurveCollection } from \"./CurveCollection\";\r\nimport { RecursiveCurveProcessor } from \"./CurveProcessor\";\r\nimport { GeometryQuery } from \"./GeometryQuery\";\r\nimport { Loop } from \"./Loop\";\r\nimport { StrokeOptions } from \"./StrokeOptions\";\r\n\r\n/**\r\n * * A `ParityRegion` is a collection of `Loop` objects.\r\n * * The loops collectively define a planar region.\r\n * * A point is \"in\" the composite region if it is \"in\" an odd number of the loops.\r\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\r\n * @public\r\n */\r\nexport class ParityRegion extends CurveCollection {\r\n /** String name for schema properties */\r\n public readonly curveCollectionType = \"parityRegion\";\r\n /** Test if `other` is an instance of `ParityRegion` */\r\n public isSameGeometryClass(other: GeometryQuery): boolean {\r\n return other instanceof ParityRegion;\r\n }\r\n /** Array of loops in this parity region. */\r\n protected _children: Loop[];\r\n /** Return the array of loops in this parity region. */\r\n public override get children(): Loop[] {\r\n return this._children;\r\n }\r\n /** Construct parity region with empty loop array */\r\n public constructor() {\r\n super();\r\n this._children = [];\r\n }\r\n /** Add loops (recursively) to this region's children */\r\n public addLoops(data?: Loop | Loop[] | Loop[][]): void {\r\n if (data === undefined) {\r\n } else if (data instanceof Loop)\r\n this.children.push(data);\r\n else if (Array.isArray(data)) {\r\n for (const child of data) {\r\n if (child instanceof Loop)\r\n this.children.push(child);\r\n else if (Array.isArray(child))\r\n this.addLoops(child);\r\n }\r\n }\r\n }\r\n /**\r\n * Return a single loop or parity region with given loops.\r\n * * The returned structure CAPTURES the loops.\r\n * * The loops are NOT reorganized by hole analysis.\r\n */\r\n public static createLoops(data?: Loop | Loop[] | Loop[][]): Loop | ParityRegion {\r\n if (data instanceof Loop)\r\n return data;\r\n const result = new ParityRegion();\r\n result.addLoops(data);\r\n return result;\r\n }\r\n /** Create a parity region by capturing the given loops as children. */\r\n public static create(...data: Loop[]): ParityRegion {\r\n const result = new ParityRegion();\r\n for (const child of data) {\r\n result.children.push(child);\r\n }\r\n return result;\r\n }\r\n /** Return the boundary type (4) of a corresponding MicroStation CurveVector */\r\n public dgnBoundaryType(): number {\r\n return 4;\r\n }\r\n /** Invoke `processor.announceParityRegion(this, indexInParent)` */\r\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\r\n return processor.announceParityRegion(this, indexInParent);\r\n }\r\n /** Return a deep copy. */\r\n public override clone(): ParityRegion {\r\n const clone = new ParityRegion();\r\n let child;\r\n for (child of this.children) {\r\n const childClone = child.clone();\r\n if (childClone instanceof Loop)\r\n clone.children.push(childClone);\r\n }\r\n return clone;\r\n }\r\n /** Stroke these curves into a new ParityRegion. */\r\n public cloneStroked(options?: StrokeOptions): ParityRegion {\r\n const clone = new ParityRegion();\r\n let child;\r\n for (child of this.children) {\r\n const childStrokes = child.cloneStroked(options);\r\n if (childStrokes)\r\n clone.children.push(childStrokes);\r\n }\r\n return clone;\r\n }\r\n /** Create a new empty parity region. */\r\n public cloneEmptyPeer(): ParityRegion {\r\n return new ParityRegion();\r\n }\r\n /**\r\n * Add `child` to this parity region (by capturing it).\r\n * * Any child type other than `Loop` is ignored.\r\n */\r\n public tryAddChild(child: AnyCurve | undefined): boolean {\r\n if (child && child instanceof Loop) {\r\n this._children.push(child);\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** Get child `i` by index. */\r\n public getChild(i: number): Loop | undefined {\r\n if (i < this._children.length)\r\n return this._children[i];\r\n return undefined;\r\n }\r\n /** Second step of double dispatch: call `handler.handleRegion(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleParityRegion(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ParityRegion.js","sourceRoot":"","sources":["../../../src/curve/ParityRegion.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 Curve\r\n */\r\n\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { CurveCollection } from \"./CurveCollection\";\r\nimport { AnyCurve } from \"./CurveTypes\";\r\nimport { GeometryQuery } from \"./GeometryQuery\";\r\nimport { Loop } from \"./Loop\";\r\nimport { StrokeOptions } from \"./StrokeOptions\";\r\n\r\nimport type { RecursiveCurveProcessor } from \"./CurveProcessor\";\r\n\r\n/**\r\n * * A `ParityRegion` is a collection of `Loop` objects.\r\n * * The loops collectively define a planar region.\r\n * * A point is \"in\" the composite region if it is \"in\" an odd number of the loops.\r\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\r\n * @public\r\n */\r\nexport class ParityRegion extends CurveCollection {\r\n /** String name for schema properties */\r\n public readonly curveCollectionType = \"parityRegion\";\r\n /** Test if `other` is an instance of `ParityRegion` */\r\n public isSameGeometryClass(other: GeometryQuery): boolean {\r\n return other instanceof ParityRegion;\r\n }\r\n /** Array of loops in this parity region. */\r\n protected _children: Loop[];\r\n /** Return the array of loops in this parity region. */\r\n public override get children(): Loop[] {\r\n return this._children;\r\n }\r\n /** Construct parity region with empty loop array */\r\n public constructor() {\r\n super();\r\n this._children = [];\r\n }\r\n /** Add loops (recursively) to this region's children */\r\n public addLoops(data?: Loop | Loop[] | Loop[][]): void {\r\n if (data === undefined) {\r\n } else if (data instanceof Loop)\r\n this.children.push(data);\r\n else if (Array.isArray(data)) {\r\n for (const child of data) {\r\n if (child instanceof Loop)\r\n this.children.push(child);\r\n else if (Array.isArray(child))\r\n this.addLoops(child);\r\n }\r\n }\r\n }\r\n /**\r\n * Return a single loop or parity region with given loops.\r\n * * The returned structure CAPTURES the loops.\r\n * * The loops are NOT reorganized by hole analysis.\r\n */\r\n public static createLoops(data?: Loop | Loop[] | Loop[][]): Loop | ParityRegion {\r\n if (data instanceof Loop)\r\n return data;\r\n const result = new ParityRegion();\r\n result.addLoops(data);\r\n return result;\r\n }\r\n /** Create a parity region by capturing the given loops as children. */\r\n public static create(...data: Loop[]): ParityRegion {\r\n const result = new ParityRegion();\r\n for (const child of data) {\r\n result.children.push(child);\r\n }\r\n return result;\r\n }\r\n /** Return the boundary type (4) of a corresponding MicroStation CurveVector */\r\n public dgnBoundaryType(): number {\r\n return 4;\r\n }\r\n /** Invoke `processor.announceParityRegion(this, indexInParent)` */\r\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\r\n return processor.announceParityRegion(this, indexInParent);\r\n }\r\n /** Return a deep copy. */\r\n public override clone(): ParityRegion {\r\n return super.clone() as ParityRegion;\r\n }\r\n /** Create a deep copy of transformed curves. */\r\n public override cloneTransformed(transform: Transform): ParityRegion {\r\n return super.cloneTransformed(transform) as ParityRegion;\r\n }\r\n /** Create a deep copy with all linestrings broken down into multiple LineSegment3d. */\r\n public override cloneWithExpandedLineStrings(): ParityRegion {\r\n return super.cloneWithExpandedLineStrings() as ParityRegion;\r\n }\r\n /** Stroke these curves into a new ParityRegion. */\r\n public cloneStroked(options?: StrokeOptions): ParityRegion {\r\n const clone = new ParityRegion();\r\n let child;\r\n for (child of this.children) {\r\n const childStrokes = child.cloneStroked(options);\r\n if (childStrokes)\r\n clone.children.push(childStrokes);\r\n }\r\n return clone;\r\n }\r\n /** Create a new empty parity region. */\r\n public cloneEmptyPeer(): ParityRegion {\r\n return new ParityRegion();\r\n }\r\n /**\r\n * Add `child` to this parity region (by capturing it).\r\n * * Any child type other than `Loop` is ignored.\r\n */\r\n public tryAddChild(child: AnyCurve | undefined): boolean {\r\n if (child && child instanceof Loop) {\r\n this._children.push(child);\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** Get child `i` by index. */\r\n public getChild(i: number): Loop | undefined {\r\n if (i < this._children.length)\r\n return this._children[i];\r\n return undefined;\r\n }\r\n /** Second step of double dispatch: call `handler.handleRegion(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleParityRegion(this);\r\n }\r\n}\r\n"]}
@@ -3,11 +3,12 @@
3
3
  */
4
4
  import { GeometryHandler } from "../geometry3d/GeometryHandler";
5
5
  import { Point3d } from "../geometry3d/Point3dVector3d";
6
+ import { Transform } from "../geometry3d/Transform";
6
7
  import { CurveChain } from "./CurveCollection";
7
8
  import { CurvePrimitive } from "./CurvePrimitive";
8
- import { RecursiveCurveProcessor } from "./CurveProcessor";
9
9
  import { GeometryQuery } from "./GeometryQuery";
10
10
  import { StrokeOptions } from "./StrokeOptions";
11
+ import type { RecursiveCurveProcessor } from "./CurveProcessor";
11
12
  /**
12
13
  * * A `Path` object is a collection of curves that join head-to-tail to form a path.
13
14
  * * A `Path` object does not bound a planar region. Use `Loop` to indicate region bounding.
@@ -40,6 +41,12 @@ export declare class Path extends CurveChain {
40
41
  dgnBoundaryType(): number;
41
42
  /** Clone as a new `Path` with no primitives */
42
43
  cloneEmptyPeer(): Path;
44
+ /** Return a deep copy. */
45
+ clone(): Path;
46
+ /** Create a deep copy of transformed curves. */
47
+ cloneTransformed(transform: Transform): Path;
48
+ /** Create a deep copy with all linestrings broken down into multiple LineSegment3d. */
49
+ cloneWithExpandedLineStrings(): Path;
43
50
  /** Second step of double dispatch: call `handler.handlePath(this)` */
44
51
  dispatchToGeometryHandler(handler: GeometryHandler): any;
45
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../../src/curve/Path.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,IAAK,SAAQ,UAAU;IAClC,wCAAwC;IACxC,SAAgB,mBAAmB,UAAU;IAC7C,+CAA+C;IACxC,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAGzD,2DAA2D;IACpD,wBAAwB,CAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,GAAE,MAAW,GAAG,IAAI;IAGrG,+BAA+B;;IAI/B;;;;OAIG;WACW,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO,EAAE,CAAC,GAAG,IAAI;IAaxE;;;OAGG;WACW,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAGzD,oEAAoE;IAC7D,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAMlD,+EAA+E;IACxE,eAAe,IAAI,MAAM;IAGhC,+CAA+C;IACxC,cAAc,IAAI,IAAI;IAG7B,sEAAsE;IAC/D,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;CAGhE"}
1
+ {"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../../src/curve/Path.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAEhE;;;;;GAKG;AACH,qBAAa,IAAK,SAAQ,UAAU;IAClC,wCAAwC;IACxC,SAAgB,mBAAmB,UAAU;IAC7C,+CAA+C;IACxC,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAGzD,2DAA2D;IACpD,wBAAwB,CAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,GAAE,MAAW,GAAG,IAAI;IAGrG,+BAA+B;;IAI/B;;;;OAIG;WACW,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO,EAAE,CAAC,GAAG,IAAI;IAaxE;;;OAGG;WACW,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAGzD,oEAAoE;IAC7D,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAMlD,+EAA+E;IACxE,eAAe,IAAI,MAAM;IAGhC,+CAA+C;IACxC,cAAc,IAAI,IAAI;IAG7B,0BAA0B;IACV,KAAK,IAAI,IAAI;IAG7B,gDAAgD;IAChC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAG5D,uFAAuF;IACvE,4BAA4B,IAAI,IAAI;IAGpD,sEAAsE;IAC/D,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG;CAGhE"}
@@ -68,6 +68,18 @@ export class Path extends CurveChain {
68
68
  cloneEmptyPeer() {
69
69
  return new Path();
70
70
  }
71
+ /** Return a deep copy. */
72
+ clone() {
73
+ return super.clone();
74
+ }
75
+ /** Create a deep copy of transformed curves. */
76
+ cloneTransformed(transform) {
77
+ return super.cloneTransformed(transform);
78
+ }
79
+ /** Create a deep copy with all linestrings broken down into multiple LineSegment3d. */
80
+ cloneWithExpandedLineStrings() {
81
+ return super.cloneWithExpandedLineStrings();
82
+ }
71
83
  /** Second step of double dispatch: call `handler.handlePath(this)` */
72
84
  dispatchToGeometryHandler(handler) {
73
85
  return handler.handlePath(this);
@@ -1 +1 @@
1
- {"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../src/curve/Path.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAO/F,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;GAKG;AACH,MAAM,OAAO,IAAK,SAAQ,UAAU;IAClC,wCAAwC;IACxB,mBAAmB,GAAG,MAAM,CAAC;IAC7C,+CAA+C;IACxC,mBAAmB,CAAC,KAAoB;QAC7C,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;IACD,2DAA2D;IACpD,wBAAwB,CAAC,SAAkC,EAAE,gBAAwB,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IACD,+BAA+B;IAC/B;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,GAAG,MAAyC;QAC/D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,YAAY,2BAA2B;gBAC9C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC1C,IAAI,KAAK,YAAY,cAAc;gBACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC;gBACjF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,MAAwB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,oEAAoE;IAC7D,YAAY,CAAC,OAAuB;QACzC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAC/B,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,+EAA+E;IACxE,eAAe;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,+CAA+C;IACxC,cAAc;QACnB,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,sEAAsE;IAC/D,yBAAyB,CAAC,OAAwB;QACvD,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\n\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { CurveChainWithDistanceIndex } from \"./CurveChainWithDistanceIndex\";\r\nimport { CurveChain } from \"./CurveCollection\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\nimport { RecursiveCurveProcessor } from \"./CurveProcessor\";\r\nimport { GeometryQuery } from \"./GeometryQuery\";\r\nimport { LineString3d } from \"./LineString3d\";\r\nimport { StrokeOptions } from \"./StrokeOptions\";\r\n\r\n/**\r\n * * A `Path` object is a collection of curves that join head-to-tail to form a path.\r\n * * A `Path` object does not bound a planar region. Use `Loop` to indicate region bounding.\r\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\r\n * @public\r\n */\r\nexport class Path extends CurveChain {\r\n /** String name for schema properties */\r\n public readonly curveCollectionType = \"path\";\r\n /** Test if `other` is an instance of `Path` */\r\n public isSameGeometryClass(other: GeometryQuery): boolean {\r\n return other instanceof Path;\r\n }\r\n /** Invoke `processor.announcePath(this, indexInParent)` */\r\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\r\n return processor.announcePath(this, indexInParent);\r\n }\r\n /** Construct an empty path. */\r\n public constructor() {\r\n super();\r\n }\r\n /**\r\n * Create a path from a variable length list of curve primitives\r\n * * CurvePrimitive params are captured.\r\n * @param curves variable length list of individual curve primitives or point arrays.\r\n */\r\n public static create(...curves: Array<CurvePrimitive | Point3d[]>): Path {\r\n const result = new Path();\r\n for (const curve of curves) {\r\n if (curve instanceof CurveChainWithDistanceIndex)\r\n result.children.push(...curve.path.children);\r\n else if (curve instanceof CurvePrimitive)\r\n result.children.push(curve);\r\n else if (Array.isArray(curve) && curve.length > 0 && curve[0] instanceof Point3d) {\r\n result.children.push(LineString3d.create(curve));\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n * Create a path from an array of curve primitives.\r\n * @param curves array of individual curve primitives.\r\n */\r\n public static createArray(curves: CurvePrimitive[]): Path {\r\n return this.create(...curves);\r\n }\r\n /** Return a deep copy, with leaf-level curve primitives stroked. */\r\n public cloneStroked(options?: StrokeOptions): Path {\r\n const strokes = LineString3d.create();\r\n for (const curve of this.children)\r\n curve.emitStrokes(strokes, options);\r\n return Path.create(strokes);\r\n }\r\n /** Return the boundary type (1) of a corresponding MicroStation CurveVector */\r\n public dgnBoundaryType(): number {\r\n return 1;\r\n }\r\n /** Clone as a new `Path` with no primitives */\r\n public cloneEmptyPeer(): Path {\r\n return new Path();\r\n }\r\n /** Second step of double dispatch: call `handler.handlePath(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handlePath(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../src/curve/Path.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAO/F,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C;;;;;GAKG;AACH,MAAM,OAAO,IAAK,SAAQ,UAAU;IAClC,wCAAwC;IACxB,mBAAmB,GAAG,MAAM,CAAC;IAC7C,+CAA+C;IACxC,mBAAmB,CAAC,KAAoB;QAC7C,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;IACD,2DAA2D;IACpD,wBAAwB,CAAC,SAAkC,EAAE,gBAAwB,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IACD,+BAA+B;IAC/B;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,GAAG,MAAyC;QAC/D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,YAAY,2BAA2B;gBAC9C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC1C,IAAI,KAAK,YAAY,cAAc;gBACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC;gBACjF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,MAAwB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,oEAAoE;IAC7D,YAAY,CAAC,OAAuB;QACzC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAC/B,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,+EAA+E;IACxE,eAAe;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,+CAA+C;IACxC,cAAc;QACnB,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,0BAA0B;IACV,KAAK;QACnB,OAAO,KAAK,CAAC,KAAK,EAAU,CAAC;IAC/B,CAAC;IACD,gDAAgD;IAChC,gBAAgB,CAAC,SAAoB;QACnD,OAAO,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAS,CAAC;IACnD,CAAC;IACD,uFAAuF;IACvE,4BAA4B;QAC1C,OAAO,KAAK,CAAC,4BAA4B,EAAU,CAAC;IACtD,CAAC;IACD,sEAAsE;IAC/D,yBAAyB,CAAC,OAAwB;QACvD,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Curve\r\n */\r\n\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { Point3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { CurveChainWithDistanceIndex } from \"./CurveChainWithDistanceIndex\";\r\nimport { CurveChain } from \"./CurveCollection\";\r\nimport { CurvePrimitive } from \"./CurvePrimitive\";\r\nimport { GeometryQuery } from \"./GeometryQuery\";\r\nimport { LineString3d } from \"./LineString3d\";\r\nimport { StrokeOptions } from \"./StrokeOptions\";\r\n\r\nimport type { RecursiveCurveProcessor } from \"./CurveProcessor\";\r\n\r\n/**\r\n * * A `Path` object is a collection of curves that join head-to-tail to form a path.\r\n * * A `Path` object does not bound a planar region. Use `Loop` to indicate region bounding.\r\n * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.\r\n * @public\r\n */\r\nexport class Path extends CurveChain {\r\n /** String name for schema properties */\r\n public readonly curveCollectionType = \"path\";\r\n /** Test if `other` is an instance of `Path` */\r\n public isSameGeometryClass(other: GeometryQuery): boolean {\r\n return other instanceof Path;\r\n }\r\n /** Invoke `processor.announcePath(this, indexInParent)` */\r\n public announceToCurveProcessor(processor: RecursiveCurveProcessor, indexInParent: number = -1): void {\r\n return processor.announcePath(this, indexInParent);\r\n }\r\n /** Construct an empty path. */\r\n public constructor() {\r\n super();\r\n }\r\n /**\r\n * Create a path from a variable length list of curve primitives\r\n * * CurvePrimitive params are captured.\r\n * @param curves variable length list of individual curve primitives or point arrays.\r\n */\r\n public static create(...curves: Array<CurvePrimitive | Point3d[]>): Path {\r\n const result = new Path();\r\n for (const curve of curves) {\r\n if (curve instanceof CurveChainWithDistanceIndex)\r\n result.children.push(...curve.path.children);\r\n else if (curve instanceof CurvePrimitive)\r\n result.children.push(curve);\r\n else if (Array.isArray(curve) && curve.length > 0 && curve[0] instanceof Point3d) {\r\n result.children.push(LineString3d.create(curve));\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n * Create a path from an array of curve primitives.\r\n * @param curves array of individual curve primitives.\r\n */\r\n public static createArray(curves: CurvePrimitive[]): Path {\r\n return this.create(...curves);\r\n }\r\n /** Return a deep copy, with leaf-level curve primitives stroked. */\r\n public cloneStroked(options?: StrokeOptions): Path {\r\n const strokes = LineString3d.create();\r\n for (const curve of this.children)\r\n curve.emitStrokes(strokes, options);\r\n return Path.create(strokes);\r\n }\r\n /** Return the boundary type (1) of a corresponding MicroStation CurveVector */\r\n public dgnBoundaryType(): number {\r\n return 1;\r\n }\r\n /** Clone as a new `Path` with no primitives */\r\n public cloneEmptyPeer(): Path {\r\n return new Path();\r\n }\r\n /** Return a deep copy. */\r\n public override clone(): Path {\r\n return super.clone() as Path;\r\n }\r\n /** Create a deep copy of transformed curves. */\r\n public override cloneTransformed(transform: Transform): Path {\r\n return super.cloneTransformed(transform) as Path;\r\n }\r\n /** Create a deep copy with all linestrings broken down into multiple LineSegment3d. */\r\n public override cloneWithExpandedLineStrings(): Path {\r\n return super.cloneWithExpandedLineStrings() as Path;\r\n }\r\n /** Second step of double dispatch: call `handler.handlePath(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handlePath(this);\r\n }\r\n}\r\n"]}
@@ -40,7 +40,7 @@ export declare abstract class ProxyCurve extends CurvePrimitive {
40
40
  /** Return a deep clone. This override removes the undefined variant return. */
41
41
  abstract clone(): ProxyCurve;
42
42
  /** Return a transformed clone. */
43
- cloneTransformed(transform: Transform): ProxyCurve | undefined;
43
+ cloneTransformed(transform: Transform): ProxyCurve;
44
44
  /** Implement by proxyCurve. Subclasses may eventually override this default implementation. */
45
45
  clonePartialCurve(fractionA: number, fractionB: number): CurvePrimitive | undefined;
46
46
  /** Implement by proxyCurve */
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyCurve.d.ts","sourceRoot":"","sources":["../../../src/curve/ProxyCurve.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,8BAAsB,UAAW,SAAQ,cAAc;IAC9C,yBAAyB,CAAC,OAAO,EAAE,eAAe;IAGzD,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC;IACtC,kDAAkD;gBAC/B,UAAU,EAAE,cAAc;IAI7C,+CAA+C;IAC/C,IAAW,UAAU,IAAI,cAAc,CAEtC;IACD,8BAA8B;IACvB,4BAA4B,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;IAGpE,8BAA8B;IACvB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAG9E,+EAA+E;aACtD,KAAK,IAAI,UAAU;IAC5C,kCAAkC;IAClB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS;IAM9E,+FAA+F;IAC/E,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAGnG,8BAA8B;IACvB,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAGrE,8BAA8B;IACvB,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAGvE,8BAA8B;IACd,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAGvE,8BAA8B;IACvB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAGnE,8BAA8B;IACvB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;IAG5E,8BAA8B;IACvB,8BAA8B,CACnC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,yBAAyB,GACnD,yBAAyB,GAAG,SAAS;IAGxC,8BAA8B;IACvB,SAAS,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO;IAG9D,8BAA8B;IACvB,WAAW,IAAI,MAAM;IAG5B,8BAA8B;IACd,iBAAiB,CAC/B,uBAAuB,EAAE,MAAM,GAAG,aAAa,GAC9C,cAAc,GAAG,cAAc,EAAE,GAAG,SAAS;IAGhD,8BAA8B;IACd,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;CAGvG"}
1
+ {"version":3,"file":"ProxyCurve.d.ts","sourceRoot":"","sources":["../../../src/curve/ProxyCurve.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,8BAAsB,UAAW,SAAQ,cAAc;IAC9C,yBAAyB,CAAC,OAAO,EAAE,eAAe;IAGzD,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC;IACtC,kDAAkD;gBAC/B,UAAU,EAAE,cAAc;IAI7C,+CAA+C;IAC/C,IAAW,UAAU,IAAI,cAAc,CAEtC;IACD,8BAA8B;IACvB,4BAA4B,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;IAGpE,8BAA8B;IACvB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAG9E,+EAA+E;aACtD,KAAK,IAAI,UAAU;IAC5C,kCAAkC;IAClB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU;IAKlE,+FAA+F;IAC/E,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAGnG,8BAA8B;IACvB,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAGrE,8BAA8B;IACvB,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAGvE,8BAA8B;IACd,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAGvE,8BAA8B;IACvB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAGnE,8BAA8B;IACvB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;IAG5E,8BAA8B;IACvB,8BAA8B,CACnC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,yBAAyB,GACnD,yBAAyB,GAAG,SAAS;IAGxC,8BAA8B;IACvB,SAAS,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO;IAG9D,8BAA8B;IACvB,WAAW,IAAI,MAAM;IAG5B,8BAA8B;IACd,iBAAiB,CAC/B,uBAAuB,EAAE,MAAM,GAAG,aAAa,GAC9C,cAAc,GAAG,cAAc,EAAE,GAAG,SAAS;IAGhD,8BAA8B;IACd,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;CAGvG"}
@@ -45,9 +45,8 @@ export class ProxyCurve extends CurvePrimitive {
45
45
  /** Return a transformed clone. */
46
46
  cloneTransformed(transform) {
47
47
  const myClone = this.clone();
48
- if (myClone.tryTransformInPlace(transform))
49
- return myClone;
50
- return undefined;
48
+ myClone.tryTransformInPlace(transform);
49
+ return myClone;
51
50
  }
52
51
  /** Implement by proxyCurve. Subclasses may eventually override this default implementation. */
53
52
  clonePartialCurve(fractionA, fractionB) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyCurve.js","sourceRoot":"","sources":["../../../src/curve/ProxyCurve.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 Curve\r\n */\r\n\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\n\r\nimport type { GeometryHandler, IStrokeHandler } from \"../geometry3d/GeometryHandler\";\r\nimport type { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\r\nimport type { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\r\nimport type { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport type { Transform } from \"../geometry3d/Transform\";\r\nimport type { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport type { Range1d, Range3d } from \"../geometry3d/Range\";\r\nimport type { OffsetOptions } from \"./OffsetOptions\";\r\nimport type { LineString3d } from \"./LineString3d\";\r\nimport type { StrokeOptions } from \"./StrokeOptions\";\r\n\r\n/**\r\n * A ProxyCurve is expected to be used as a base class for curve types that use some existing curve (the proxy)\r\n * for evaluation and display but carry other defining data.\r\n * * The ProxyCurve implements all required CurvePrimitive methods by dispatching to the proxy.\r\n * * These methods presumably require support from the application class and are left abstract:\r\n * * clone\r\n * * curvePrimitiveType\r\n * * isSameCurvePrimitiveType\r\n * * isSameGeometryClass\r\n * * tryTransformInPlace\r\n * * reverseInPlace\r\n *\r\n * @public\r\n */\r\nexport abstract class ProxyCurve extends CurvePrimitive {\r\n public dispatchToGeometryHandler(handler: GeometryHandler) {\r\n return this._proxyCurve.dispatchToGeometryHandler(handler);\r\n }\r\n protected _proxyCurve: CurvePrimitive;\r\n /** Constructor CAPTURES the proxyCurve pointer */\r\n public constructor(proxyCurve: CurvePrimitive) {\r\n super();\r\n this._proxyCurve = proxyCurve;\r\n }\r\n /** Return the (pointer to) the proxy curve. */\r\n public get proxyCurve(): CurvePrimitive {\r\n return this._proxyCurve;\r\n }\r\n /** Implement by proxyCurve */\r\n public computeStrokeCountForOptions(options?: StrokeOptions): number {\r\n return this._proxyCurve.computeStrokeCountForOptions(options);\r\n }\r\n /** Implement by proxyCurve */\r\n public emitStrokableParts(dest: IStrokeHandler, options?: StrokeOptions): void {\r\n this._proxyCurve.emitStrokableParts(dest, options);\r\n }\r\n /** Return a deep clone. This override removes the undefined variant return. */\r\n public abstract override clone(): ProxyCurve;\r\n /** Return a transformed clone. */\r\n public override cloneTransformed(transform: Transform): ProxyCurve | undefined {\r\n const myClone = this.clone();\r\n if (myClone.tryTransformInPlace(transform))\r\n return myClone;\r\n return undefined;\r\n }\r\n /** Implement by proxyCurve. Subclasses may eventually override this default implementation. */\r\n public override clonePartialCurve(fractionA: number, fractionB: number): CurvePrimitive | undefined {\r\n return this._proxyCurve.clonePartialCurve(fractionA, fractionB);\r\n }\r\n /** Implement by proxyCurve */\r\n public emitStrokes(dest: LineString3d, options?: StrokeOptions): void {\r\n this._proxyCurve.emitStrokes(dest, options);\r\n }\r\n /** Implement by proxyCurve */\r\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\r\n this._proxyCurve.extendRange(rangeToExtend, transform);\r\n }\r\n /** Implement by proxyCurve */\r\n public override range(transform?: Transform, result?: Range3d): Range3d {\r\n return this._proxyCurve.range(transform, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public fractionToPoint(fraction: number, result?: Point3d): Point3d {\r\n return this._proxyCurve.fractionToPoint(fraction, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public fractionToPointAndDerivative(fraction: number, result?: Ray3d): Ray3d {\r\n return this._proxyCurve.fractionToPointAndDerivative(fraction, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public fractionToPointAnd2Derivatives(\r\n fraction: number, result?: Plane3dByOriginAndVectors,\r\n ): Plane3dByOriginAndVectors | undefined {\r\n return this._proxyCurve.fractionToPointAnd2Derivatives(fraction, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\r\n return this._proxyCurve.isInPlane(plane);\r\n }\r\n /** Implement by proxyCurve */\r\n public quickLength(): number {\r\n return this._proxyCurve.quickLength();\r\n }\r\n /** Implement by proxyCurve */\r\n public override constructOffsetXY(\r\n offsetDistanceOrOptions: number | OffsetOptions,\r\n ): CurvePrimitive | CurvePrimitive[] | undefined {\r\n return this._proxyCurve.constructOffsetXY(offsetDistanceOrOptions);\r\n }\r\n /** Implement by proxyCurve */\r\n public override projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): Range1d | undefined {\r\n return this._proxyCurve.projectedParameterRange(ray, lowHigh);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ProxyCurve.js","sourceRoot":"","sources":["../../../src/curve/ProxyCurve.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 Curve\r\n */\r\n\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\n\r\nimport type { GeometryHandler, IStrokeHandler } from \"../geometry3d/GeometryHandler\";\r\nimport type { Plane3dByOriginAndUnitNormal } from \"../geometry3d/Plane3dByOriginAndUnitNormal\";\r\nimport type { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\r\nimport type { Ray3d } from \"../geometry3d/Ray3d\";\r\nimport type { Transform } from \"../geometry3d/Transform\";\r\nimport type { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport type { Range1d, Range3d } from \"../geometry3d/Range\";\r\nimport type { OffsetOptions } from \"./OffsetOptions\";\r\nimport type { LineString3d } from \"./LineString3d\";\r\nimport type { StrokeOptions } from \"./StrokeOptions\";\r\n\r\n/**\r\n * A ProxyCurve is expected to be used as a base class for curve types that use some existing curve (the proxy)\r\n * for evaluation and display but carry other defining data.\r\n * * The ProxyCurve implements all required CurvePrimitive methods by dispatching to the proxy.\r\n * * These methods presumably require support from the application class and are left abstract:\r\n * * clone\r\n * * curvePrimitiveType\r\n * * isSameCurvePrimitiveType\r\n * * isSameGeometryClass\r\n * * tryTransformInPlace\r\n * * reverseInPlace\r\n *\r\n * @public\r\n */\r\nexport abstract class ProxyCurve extends CurvePrimitive {\r\n public dispatchToGeometryHandler(handler: GeometryHandler) {\r\n return this._proxyCurve.dispatchToGeometryHandler(handler);\r\n }\r\n protected _proxyCurve: CurvePrimitive;\r\n /** Constructor CAPTURES the proxyCurve pointer */\r\n public constructor(proxyCurve: CurvePrimitive) {\r\n super();\r\n this._proxyCurve = proxyCurve;\r\n }\r\n /** Return the (pointer to) the proxy curve. */\r\n public get proxyCurve(): CurvePrimitive {\r\n return this._proxyCurve;\r\n }\r\n /** Implement by proxyCurve */\r\n public computeStrokeCountForOptions(options?: StrokeOptions): number {\r\n return this._proxyCurve.computeStrokeCountForOptions(options);\r\n }\r\n /** Implement by proxyCurve */\r\n public emitStrokableParts(dest: IStrokeHandler, options?: StrokeOptions): void {\r\n this._proxyCurve.emitStrokableParts(dest, options);\r\n }\r\n /** Return a deep clone. This override removes the undefined variant return. */\r\n public abstract override clone(): ProxyCurve;\r\n /** Return a transformed clone. */\r\n public override cloneTransformed(transform: Transform): ProxyCurve {\r\n const myClone = this.clone();\r\n myClone.tryTransformInPlace(transform);\r\n return myClone;\r\n }\r\n /** Implement by proxyCurve. Subclasses may eventually override this default implementation. */\r\n public override clonePartialCurve(fractionA: number, fractionB: number): CurvePrimitive | undefined {\r\n return this._proxyCurve.clonePartialCurve(fractionA, fractionB);\r\n }\r\n /** Implement by proxyCurve */\r\n public emitStrokes(dest: LineString3d, options?: StrokeOptions): void {\r\n this._proxyCurve.emitStrokes(dest, options);\r\n }\r\n /** Implement by proxyCurve */\r\n public extendRange(rangeToExtend: Range3d, transform?: Transform): void {\r\n this._proxyCurve.extendRange(rangeToExtend, transform);\r\n }\r\n /** Implement by proxyCurve */\r\n public override range(transform?: Transform, result?: Range3d): Range3d {\r\n return this._proxyCurve.range(transform, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public fractionToPoint(fraction: number, result?: Point3d): Point3d {\r\n return this._proxyCurve.fractionToPoint(fraction, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public fractionToPointAndDerivative(fraction: number, result?: Ray3d): Ray3d {\r\n return this._proxyCurve.fractionToPointAndDerivative(fraction, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public fractionToPointAnd2Derivatives(\r\n fraction: number, result?: Plane3dByOriginAndVectors,\r\n ): Plane3dByOriginAndVectors | undefined {\r\n return this._proxyCurve.fractionToPointAnd2Derivatives(fraction, result);\r\n }\r\n /** Implement by proxyCurve */\r\n public isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean {\r\n return this._proxyCurve.isInPlane(plane);\r\n }\r\n /** Implement by proxyCurve */\r\n public quickLength(): number {\r\n return this._proxyCurve.quickLength();\r\n }\r\n /** Implement by proxyCurve */\r\n public override constructOffsetXY(\r\n offsetDistanceOrOptions: number | OffsetOptions,\r\n ): CurvePrimitive | CurvePrimitive[] | undefined {\r\n return this._proxyCurve.constructOffsetXY(offsetDistanceOrOptions);\r\n }\r\n /** Implement by proxyCurve */\r\n public override projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): Range1d | undefined {\r\n return this._proxyCurve.projectedParameterRange(ray, lowHigh);\r\n }\r\n}\r\n"]}
@@ -3,6 +3,39 @@ import { CurveLocationDetailPair } from "../CurveLocationDetail";
3
3
  import { CurvePrimitive } from "../CurvePrimitive";
4
4
  import { Loop, SignedLoops } from "../Loop";
5
5
  import { ParityRegion } from "../ParityRegion";
6
+ /** @packageDocumentation
7
+ * @module Curve
8
+ */
9
+ /**
10
+ * Options bundle for [[PlanarSubdivision.createLoopInFace]] and [[PlanarSubdivision.createLoopOrParityRegionInFace]].
11
+ * @internal
12
+ */
13
+ export interface CreateRegionInFaceOptions {
14
+ /**
15
+ * Optional callback invoked on each `edge` before its `curve` is added to `loop`.
16
+ * * Note that if a [[ParityRegion]] is being constructed, `curve` and `loop` may subsequently be reversed.
17
+ */
18
+ announceEdge?: (edge: HalfEdge, curve: CurvePrimitive, loop: Loop) => void;
19
+ /**
20
+ * Whether to consolidate adjacent curves in an output [[Loop]]. Default value is `false`.
21
+ * * If `announce` is defined, no compression is performed, as edges and curves would no longer be in 1-1 correspondence.
22
+ */
23
+ compress?: boolean;
24
+ /** Absolute xy-distance for confirming a returned Loop is closed. Default value is [[Geometry.smallMetricDistance]]. */
25
+ closureTol?: number;
26
+ /**
27
+ * Mask preset on bridge edges. Default value is `HalfEdgeMask.BRIDGE_EDGE`.
28
+ * * This mask is used to distinguish a split-washer type face, which can result in a [[ParityRegion]].
29
+ */
30
+ bridgeMask?: HalfEdgeMask;
31
+ /** Mask to use for visiting edges when creating a [[ParityRegion]] from a split-washer type face. Default value is `HalfEdgeMask.VISITED`. */
32
+ visitMask?: HalfEdgeMask;
33
+ /**
34
+ * Optional z-coordinate for the result region.
35
+ * * If undefined, graph z-coordinates are used, but this may result in a non-planar region if the graph is not planar!
36
+ */
37
+ z?: number;
38
+ }
6
39
  /**
7
40
  * @internal
8
41
  */
@@ -14,7 +47,7 @@ export declare class PlanarSubdivision {
14
47
  * @param allPairs array of curve-curve xy-intersections
15
48
  * @param mergeTolerance optional distance tolerance for clustering vertices. Default value is [[Geometry.smallMetricDistance]].
16
49
  */
17
- static assembleHalfEdgeGraph(primitives: CurvePrimitive[], allPairs: CurveLocationDetailPair[], mergeTolerance?: number): HalfEdgeGraph;
50
+ static assembleHalfEdgeGraph(primitives: CurvePrimitive[], allPairs: CurveLocationDetailPair[], mergeTolerance?: number, radianTolerance?: number): HalfEdgeGraph;
18
51
  /**
19
52
  * Filter for trivial curve fragment: fast computation if line segment; otherwise clip, flatten, and measure.
20
53
  * * Different metrics are employed for expedience.
@@ -50,7 +83,7 @@ export declare class PlanarSubdivision {
50
83
  * @param options bundle of options.
51
84
  * @returns the Loop, or `undefined` if it is not closed within xy-tolerance.
52
85
  */
53
- static createLoopInFace(face: HalfEdge | HalfEdge[], options?: PlanarSubdivision.CreateRegionInFaceOptions): Loop | undefined;
86
+ static createLoopInFace(face: HalfEdge | HalfEdge[], options?: CreateRegionInFaceOptions): Loop | undefined;
54
87
  /**
55
88
  * Create a [[Loop]] or [[ParityRegion]] for the given face.
56
89
  * * A ParityRegion is created for a split-washer type face by removing bridge edges.
@@ -58,43 +91,11 @@ export declare class PlanarSubdivision {
58
91
  * @param options bundle of options.
59
92
  * @returns the Loop or ParityRegion, or `undefined` if one could not be computed.
60
93
  */
61
- static createLoopOrParityRegionInFace(face: HalfEdge, options?: PlanarSubdivision.CreateRegionInFaceOptions): Loop | ParityRegion | undefined;
94
+ static createLoopOrParityRegionInFace(face: HalfEdge, options?: CreateRegionInFaceOptions): Loop | ParityRegion | undefined;
62
95
  /** Return true if there are only two edges in the face loop, and their start curvatures are the same. */
63
96
  private static isNullFace;
64
97
  /** Look across edge mates (possibly several) for a non-null mate face. */
65
98
  private static getNonNullEdgeMate;
66
99
  static collectSignedLoopSetsInHalfEdgeGraph(graph: HalfEdgeGraph, closureTol?: number, areaTol?: number): SignedLoops[];
67
100
  }
68
- /**
69
- * @internal
70
- */
71
- export declare namespace PlanarSubdivision {
72
- /** Options bundle for [[PlanarSubdivision.createLoopInFace]] and [[PlanarSubdivision.createLoopOrParityRegionInFace]]. */
73
- interface CreateRegionInFaceOptions {
74
- /**
75
- * Optional callback invoked on each `edge` before its `curve` is added to `loop`.
76
- * * Note that if a [[ParityRegion]] is being constructed, `curve` and `loop` may subsequently be reversed.
77
- */
78
- announceEdge?: (edge: HalfEdge, curve: CurvePrimitive, loop: Loop) => void;
79
- /**
80
- * Whether to consolidate adjacent curves in an output [[Loop]]. Default value is `false`.
81
- * * If `announce` is defined, no compression is performed, as edges and curves would no longer be in 1-1 correspondence.
82
- */
83
- compress?: boolean;
84
- /** Absolute xy-distance for confirming a returned Loop is closed. Default value is [[Geometry.smallMetricDistance]]. */
85
- closureTol?: number;
86
- /**
87
- * Mask preset on bridge edges. Default value is `HalfEdgeMask.BRIDGE_EDGE`.
88
- * * This mask is used to distinguish a split-washer type face, which can result in a [[ParityRegion]].
89
- */
90
- bridgeMask?: HalfEdgeMask;
91
- /** Mask to use for visiting edges when creating a [[ParityRegion]] from a split-washer type face. Default value is `HalfEdgeMask.VISITED`. */
92
- visitMask?: HalfEdgeMask;
93
- /**
94
- * Optional z-coordinate for the result region.
95
- * * If undefined, graph z-coordinates are used, but this may result in a non-planar region if the graph is not planar!
96
- */
97
- z?: number;
98
- }
99
- }
100
101
  //# sourceMappingURL=PlanarSubdivision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarSubdivision.d.ts","sourceRoot":"","sources":["../../../../src/curve/Query/PlanarSubdivision.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAI7E,OAAO,EAAuB,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,IAAI,EAAsB,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyE/C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;OAMG;WACW,qBAAqB,CACjC,UAAU,EAAE,cAAc,EAAE,EAC5B,QAAQ,EAAE,uBAAuB,EAAE,EACnC,cAAc,GAAE,MAAqC,GACpD,aAAa;IAoDhB;;;MAGE;IACF,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAW/B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA6B1B;;;;;;OAMG;WACW,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,MAAgB,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAe7H,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAUtC,kDAAkD;IAClD,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAYhC;;;;;OAKG;WACW,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,yBAAyB,GAAG,IAAI,GAAG,SAAS;IAsBpI;;;;;;OAMG;WACW,8BAA8B,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,yBAAyB,GAAG,IAAI,GAAG,YAAY,GAAG,SAAS;IAqCpJ,yGAAyG;IACzG,OAAO,CAAC,MAAM,CAAC,UAAU;IAWzB,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAWnB,oCAAoC,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,GAAE,MAAqC,EAAE,OAAO,GAAE,MAAgB,GAAG,WAAW,EAAE;CAkCtK;AAED;;EAEE;AACF,yBAAiB,iBAAiB,CAAC;IACjC,0HAA0H;IAC1H,UAAiB,yBAAyB;QACxC;;;WAGG;QACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;QAC3E;;;WAGG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,wHAAwH;QACxH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;;WAGG;QACH,UAAU,CAAC,EAAE,YAAY,CAAC;QAC1B,8IAA8I;QAC9I,SAAS,CAAC,EAAE,YAAY,CAAC;QACzB;;;WAGG;QACH,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ;CACF"}
1
+ {"version":3,"file":"PlanarSubdivision.d.ts","sourceRoot":"","sources":["../../../../src/curve/Query/PlanarSubdivision.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAI7E,OAAO,EAAuB,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,IAAI,EAAsB,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC3E;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wHAAwH;IACxH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,8IAA8I;IAC9I,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB;;;OAGG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAsED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;OAMG;WACW,qBAAqB,CACjC,UAAU,EAAE,cAAc,EAAE,EAC5B,QAAQ,EAAE,uBAAuB,EAAE,EACnC,cAAc,GAAE,MAAqC,EACrD,eAAe,GAAE,MAAmC,GACnD,aAAa;IAoDhB;;;MAGE;IACF,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAW/B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA6B1B;;;;;;OAMG;WACW,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,MAAgB,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM;IAe7H,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAUtC,kDAAkD;IAClD,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAYhC;;;;;OAKG;WACW,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS;IAsBlH;;;;;;OAMG;WACW,8BAA8B,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,IAAI,GAAG,YAAY,GAAG,SAAS;IAqClI,yGAAyG;IACzG,OAAO,CAAC,MAAM,CAAC,UAAU;IAWzB,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAWnB,oCAAoC,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,GAAE,MAAqC,EAAE,OAAO,GAAE,MAAgB,GAAG,WAAW,EAAE;CAkCtK"}
@@ -16,8 +16,8 @@ import { Loop, LoopCurveLoopCurve } from "../Loop";
16
16
  import { ParityRegion } from "../ParityRegion";
17
17
  import { RegionOps } from "../RegionOps";
18
18
  import { RegionGroupMember, RegionGroupOpType } from "../RegionOpsClassificationSweeps";
19
- /** @packageDocumentation
20
- * @module Curve
19
+ /**
20
+ * @internal
21
21
  */
22
22
  class MapCurvePrimitiveToCurveLocationDetailPairArray {
23
23
  primitiveToPair = new Map();
@@ -87,7 +87,7 @@ export class PlanarSubdivision {
87
87
  * @param allPairs array of curve-curve xy-intersections
88
88
  * @param mergeTolerance optional distance tolerance for clustering vertices. Default value is [[Geometry.smallMetricDistance]].
89
89
  */
90
- static assembleHalfEdgeGraph(primitives, allPairs, mergeTolerance = Geometry.smallMetricDistance) {
90
+ static assembleHalfEdgeGraph(primitives, allPairs, mergeTolerance = Geometry.smallMetricDistance, radianTolerance = Geometry.smallAngleRadians) {
91
91
  // map from key CurvePrimitive to CurveLocationDetailPair
92
92
  const detailByPrimitive = new MapCurvePrimitiveToCurveLocationDetailPairArray();
93
93
  for (const pair of allPairs)
@@ -135,7 +135,7 @@ export class PlanarSubdivision {
135
135
  this.addHalfEdge(graph, p, last.point, last.fraction, p.endPoint(), 1.0, mergeTolerance);
136
136
  }
137
137
  // every edge got its sortAngle defined by addHalfEdge
138
- HalfEdgeGraphMerge.clusterAndMergeXYTheta(graph, (he) => he.sortAngle ?? 0, mergeTolerance);
138
+ HalfEdgeGraphMerge.clusterAndMergeXYTheta(graph, (he) => he.sortAngle ?? 0, mergeTolerance, radianTolerance);
139
139
  return graph;
140
140
  }
141
141
  /**