@itwin/rpcinterface-full-stack-tests 4.1.0-dev.68 → 4.1.0-dev.69

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.
@@ -27248,7 +27248,7 @@ class Logger {
27248
27248
  * @param log The logger output function to use - defaults to Logger.logError
27249
27249
  * @param metaData Optional data for the message
27250
27250
  */
27251
- static logException(category, err, log = Logger.logError) {
27251
+ static logException(category, err, log = (_category, message) => Logger.logError(_category, message)) {
27252
27252
  log(category, Logger.getExceptionMessage(err), () => {
27253
27253
  return { ..._BentleyError__WEBPACK_IMPORTED_MODULE_0__.BentleyError.getErrorMetadata(err), exceptionType: err.constructor.name };
27254
27254
  });
@@ -29303,10 +29303,10 @@ class Tracing {
29303
29303
  static enableOpenTelemetry(tracer, api) {
29304
29304
  Tracing._tracer = tracer;
29305
29305
  Tracing._openTelemetry = api;
29306
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace);
29307
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo);
29308
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning);
29309
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError);
29306
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace(category, message, metaData));
29307
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo(category, message, metaData));
29308
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(category, message, metaData));
29309
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError(category, message, metaData));
29310
29310
  }
29311
29311
  static withOpenTelemetry(base, isError = false) {
29312
29312
  return (category, message, metaData) => {
@@ -35344,9 +35344,9 @@ class PropertyMetaData {
35344
35344
  case PrimitiveTypeCode.String:
35345
35345
  return jsonObj; // this works even for arrays or strings that are JSON because the parsed JSON is already the right type
35346
35346
  case PrimitiveTypeCode.Point2d:
35347
- return this.createValueOrArray(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.fromJSON, jsonObj);
35347
+ return this.createValueOrArray((obj) => _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.fromJSON(obj), jsonObj);
35348
35348
  case PrimitiveTypeCode.Point3d:
35349
- return this.createValueOrArray(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON, jsonObj);
35349
+ return this.createValueOrArray((obj) => _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(obj), jsonObj);
35350
35350
  }
35351
35351
  }
35352
35352
  if (this.isNavigation)
@@ -57788,7 +57788,7 @@ class RpcMarshaling {
57788
57788
  }
57789
57789
  marshalingTarget = serialized;
57790
57790
  chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
57791
- serialized.objects = JSON.stringify(value, WireFormat.marshal);
57791
+ serialized.objects = JSON.stringify(value, (_key, _value) => WireFormat.marshal(_key, _value));
57792
57792
  marshalingTarget = undefined;
57793
57793
  chunkThreshold = 0;
57794
57794
  return serialized;
@@ -57802,7 +57802,7 @@ class RpcMarshaling {
57802
57802
  chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
57803
57803
  let result;
57804
57804
  try {
57805
- result = JSON.parse(value.objects, WireFormat.unmarshal);
57805
+ result = JSON.parse(value.objects, (_key, _value) => WireFormat.unmarshal(_key, _value));
57806
57806
  }
57807
57807
  catch (error) {
57808
57808
  if (error instanceof SyntaxError)
@@ -59967,7 +59967,7 @@ class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__.R
59967
59967
  /** The RPC request class for this protocol. */
59968
59968
  this.requestType = _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_6__.WebAppRpcRequest;
59969
59969
  this.supportsStatusCategory = true;
59970
- this.events.addListener(_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__.WebAppRpcLogging.logProtocolEvent);
59970
+ this.events.addListener(async (event, object) => _WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__.WebAppRpcLogging.logProtocolEvent(event, object));
59971
59971
  }
59972
59972
  }
59973
59973
 
@@ -66494,13 +66494,13 @@ class ECClass extends SchemaItem_1.SchemaItem {
66494
66494
  const key = new SchemaKey_1.SchemaItemKey(targetClass, new SchemaKey_1.SchemaKey(schemaName));
66495
66495
  if (SchemaItem_1.SchemaItem.equalByKey(this, key))
66496
66496
  return true;
66497
- return this.traverseBaseClasses(SchemaItem_1.SchemaItem.equalByKey, key);
66497
+ return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), key);
66498
66498
  }
66499
66499
  else {
66500
66500
  (0, core_bentley_1.assert)(ECClass.isECClass(targetClass), "Expected targetClass to be of type ECClass");
66501
66501
  if (SchemaItem_1.SchemaItem.equalByKey(this, targetClass))
66502
66502
  return true;
66503
- return this.traverseBaseClasses(SchemaItem_1.SchemaItem.equalByKey, targetClass);
66503
+ return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);
66504
66504
  }
66505
66505
  }
66506
66506
  /**
@@ -66510,7 +66510,7 @@ class ECClass extends SchemaItem_1.SchemaItem {
66510
66510
  isSync(targetClass) {
66511
66511
  if (SchemaItem_1.SchemaItem.equalByKey(this, targetClass))
66512
66512
  return true;
66513
- return this.traverseBaseClassesSync(SchemaItem_1.SchemaItem.equalByKey, targetClass);
66513
+ return this.traverseBaseClassesSync((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);
66514
66514
  }
66515
66515
  /**
66516
66516
  * @internal
@@ -82519,7 +82519,7 @@ class IModelApp {
82519
82519
  * @note As of 4.x, iTwin.js requires WebGL 2. If the client does not support WebGL 2, the `status` field of the returned compatibility info will be [WebGLRenderCompatibilityStatus.CannotCreateContext]($webgl-compatibility).
82520
82520
  */
82521
82521
  static queryRenderCompatibility() {
82522
- return (0,_itwin_webgl_compatibility__WEBPACK_IMPORTED_MODULE_5__.queryRenderCompatibility)(true, _render_webgl_System__WEBPACK_IMPORTED_MODULE_21__.System.createContext);
82522
+ return (0,_itwin_webgl_compatibility__WEBPACK_IMPORTED_MODULE_5__.queryRenderCompatibility)(true, (canvas, useWebGL2, inputContextAttributes) => _render_webgl_System__WEBPACK_IMPORTED_MODULE_21__.System.createContext(canvas, useWebGL2, inputContextAttributes));
82523
82523
  }
82524
82524
  /**
82525
82525
  * This method must be called before any other `@itwin/core-frontend` methods are used.
@@ -82606,7 +82606,7 @@ class IModelApp {
82606
82606
  this.onBeforeShutdown.clear();
82607
82607
  if (false) {}
82608
82608
  this._wantEventLoop = false;
82609
- window.removeEventListener("resize", IModelApp.requestNextAnimation);
82609
+ window.removeEventListener("resize", () => IModelApp.requestNextAnimation());
82610
82610
  this.clearIntervalAnimation();
82611
82611
  [this.toolAdmin, this.viewManager, this.tileAdmin].forEach((sys) => sys.onShutDown());
82612
82612
  this.tools.shutdown();
@@ -82643,7 +82643,7 @@ class IModelApp {
82643
82643
  return;
82644
82644
  if (!IModelApp._animationRequested) {
82645
82645
  IModelApp._animationRequested = true;
82646
- requestAnimationFrame(IModelApp.eventLoop);
82646
+ requestAnimationFrame(() => IModelApp.eventLoop());
82647
82647
  }
82648
82648
  }
82649
82649
  /** @internal */
@@ -82665,7 +82665,7 @@ class IModelApp {
82665
82665
  static startEventLoop() {
82666
82666
  if (!IModelApp._wantEventLoop) {
82667
82667
  IModelApp._wantEventLoop = true;
82668
- window.addEventListener("resize", IModelApp.requestNextAnimation);
82668
+ window.addEventListener("resize", () => IModelApp.requestNextAnimation());
82669
82669
  IModelApp.requestIntervalAnimation();
82670
82670
  IModelApp.requestNextAnimation();
82671
82671
  }
@@ -82688,7 +82688,7 @@ class IModelApp {
82688
82688
  _tools_ToolAdmin__WEBPACK_IMPORTED_MODULE_33__.ToolAdmin.exceptionHandler(exception); // eslint-disable-line @typescript-eslint/no-floating-promises
82689
82689
  IModelApp._wantEventLoop = false;
82690
82690
  IModelApp._animationRequested = true; // unrecoverable after exception, don't request any further frames.
82691
- window.removeEventListener("resize", IModelApp.requestNextAnimation);
82691
+ window.removeEventListener("resize", () => IModelApp.requestNextAnimation());
82692
82692
  }
82693
82693
  }
82694
82694
  /** Get the user's access token for this IModelApp, or a blank string if none is available.
@@ -125801,7 +125801,7 @@ class IdMap {
125801
125801
  /** Mapping of textures by their key values. */
125802
125802
  this.textures = new Map();
125803
125803
  /** Mapping of textures using gradient symbology. */
125804
- this.gradients = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Dictionary(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.Gradient.Symb.compareSymb);
125804
+ this.gradients = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Dictionary((lhs, rhs) => _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.Gradient.Symb.compareSymb(lhs, rhs));
125805
125805
  /** Pending promises to create a texture from an ImageSource. This prevents us from decoding the same ImageSource multiple times */
125806
125806
  this.texturesFromImageSources = new Map();
125807
125807
  this._iModel = iModel;
@@ -140693,7 +140693,7 @@ class GltfReader {
140693
140693
  }
140694
140694
  }
140695
140695
  const uvs = draco.attributes.TEXCOORD_0?.value;
140696
- if (uvs && (uvs.length & 2) === 0)
140696
+ if (uvs && (uvs.length % 2) === 0)
140697
140697
  for (let i = 0; i < uvs.length; i += 2)
140698
140698
  mesh.uvParams.push(new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d(uvs[i], uvs[i + 1]));
140699
140699
  const batchIds = draco.attributes._BATCHID?.value;
@@ -173319,7 +173319,7 @@ __webpack_require__.r(__webpack_exports__);
173319
173319
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
173320
173320
  /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
173321
173321
  /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
173322
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
173322
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
173323
173323
  /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
173324
173324
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
173325
173325
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
@@ -173630,7 +173630,7 @@ class BSplineCurve3dBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_
173630
173630
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
173631
173631
  */
173632
173632
  constructOffsetXY(offsetDistanceOrOptions) {
173633
- const options = _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
173633
+ const options = _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
173634
173634
  const handler = new _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
173635
173635
  this.emitStrokableParts(handler, options.strokeOptions);
173636
173636
  return handler.claimResult();
@@ -175935,7 +175935,7 @@ class BSplineSurface3dH extends BSpline2dNd {
175935
175935
  /** Return a simple array of the control points. */
175936
175936
  copyPoints4d() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_6__.Point4dArray.unpackToPoint4dArray(this.coffs); }
175937
175937
  /** Return a simple array of the control points. */
175938
- copyPointsAndWeights(points, weights, formatter = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create) {
175938
+ copyPointsAndWeights(points, weights, formatter = (x, y, z) => _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z)) {
175939
175939
  _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_6__.Point4dArray.unpackFloat64ArrayToPointsAndWeights(this.coffs, points, weights, formatter);
175940
175940
  }
175941
175941
  /** unpack from xyzw xyzw ... to packed xyz, optionally unweighted
@@ -177146,7 +177146,7 @@ __webpack_require__.r(__webpack_exports__);
177146
177146
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
177147
177147
  /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
177148
177148
  /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
177149
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
177149
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
177150
177150
  /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
177151
177151
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
177152
177152
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
@@ -177362,7 +177362,7 @@ class BezierCurveBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__
177362
177362
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
177363
177363
  */
177364
177364
  constructOffsetXY(offsetDistanceOrOptions) {
177365
- const options = _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__.OffsetOptions.create(offsetDistanceOrOptions);
177365
+ const options = _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_7__.OffsetOptions.create(offsetDistanceOrOptions);
177366
177366
  const handler = new _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
177367
177367
  this.emitStrokableParts(handler, options.strokeOptions);
177368
177368
  return handler.claimResult();
@@ -183193,161 +183193,160 @@ class LineStringOffsetClipperContext {
183193
183193
  "use strict";
183194
183194
  __webpack_require__.r(__webpack_exports__);
183195
183195
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
183196
- /* harmony export */ AbstractNewtonIterator: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.AbstractNewtonIterator),
183197
- /* harmony export */ AkimaCurve3d: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__.AkimaCurve3d),
183198
- /* harmony export */ AkimaCurve3dOptions: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__.AkimaCurve3dOptions),
183199
- /* harmony export */ AnalyticRoots: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.AnalyticRoots),
183196
+ /* harmony export */ AbstractNewtonIterator: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.AbstractNewtonIterator),
183197
+ /* harmony export */ AkimaCurve3d: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__.AkimaCurve3d),
183198
+ /* harmony export */ AkimaCurve3dOptions: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__.AkimaCurve3dOptions),
183199
+ /* harmony export */ AnalyticRoots: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.AnalyticRoots),
183200
183200
  /* harmony export */ Angle: () => (/* reexport safe */ _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle),
183201
183201
  /* harmony export */ AngleSweep: () => (/* reexport safe */ _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep),
183202
- /* harmony export */ AnnotatedLineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__.AnnotatedLineString3d),
183203
- /* harmony export */ Arc3d: () => (/* reexport safe */ _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__.Arc3d),
183204
- /* harmony export */ AuxChannel: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannel),
183205
- /* harmony export */ AuxChannelData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannelData),
183206
- /* harmony export */ AuxChannelDataType: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannelDataType),
183207
- /* harmony export */ AxisIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisIndex),
183208
- /* harmony export */ AxisOrder: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisOrder),
183209
- /* harmony export */ AxisScaleSelect: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisScaleSelect),
183210
- /* harmony export */ BSpline1dNd: () => (/* reexport safe */ _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_105__.BSpline1dNd),
183211
- /* harmony export */ BSpline2dNd: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSpline2dNd),
183212
- /* harmony export */ BSplineCurve3d: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__.BSplineCurve3d),
183213
- /* harmony export */ BSplineCurve3dBase: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__.BSplineCurve3dBase),
183214
- /* harmony export */ BSplineCurve3dH: () => (/* reexport safe */ _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_106__.BSplineCurve3dH),
183215
- /* harmony export */ BSplineCurveOps: () => (/* reexport safe */ _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_104__.BSplineCurveOps),
183216
- /* harmony export */ BSplineSurface3d: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSplineSurface3d),
183217
- /* harmony export */ BSplineSurface3dH: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSplineSurface3dH),
183218
- /* harmony export */ BSplineWrapMode: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__.BSplineWrapMode),
183219
- /* harmony export */ BagOfCurves: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.BagOfCurves),
183202
+ /* harmony export */ AnnotatedLineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__.AnnotatedLineString3d),
183203
+ /* harmony export */ Arc3d: () => (/* reexport safe */ _curve_Arc3d__WEBPACK_IMPORTED_MODULE_60__.Arc3d),
183204
+ /* harmony export */ AuxChannel: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannel),
183205
+ /* harmony export */ AuxChannelData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannelData),
183206
+ /* harmony export */ AuxChannelDataType: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannelDataType),
183207
+ /* harmony export */ AxisIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisIndex),
183208
+ /* harmony export */ AxisOrder: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisOrder),
183209
+ /* harmony export */ AxisScaleSelect: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisScaleSelect),
183210
+ /* harmony export */ BSpline1dNd: () => (/* reexport safe */ _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_107__.BSpline1dNd),
183211
+ /* harmony export */ BSpline2dNd: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSpline2dNd),
183212
+ /* harmony export */ BSplineCurve3d: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__.BSplineCurve3d),
183213
+ /* harmony export */ BSplineCurve3dBase: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__.BSplineCurve3dBase),
183214
+ /* harmony export */ BSplineCurve3dH: () => (/* reexport safe */ _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_108__.BSplineCurve3dH),
183215
+ /* harmony export */ BSplineCurveOps: () => (/* reexport safe */ _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_106__.BSplineCurveOps),
183216
+ /* harmony export */ BSplineSurface3d: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSplineSurface3d),
183217
+ /* harmony export */ BSplineSurface3dH: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSplineSurface3dH),
183218
+ /* harmony export */ BSplineWrapMode: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__.BSplineWrapMode),
183219
+ /* harmony export */ BagOfCurves: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.BagOfCurves),
183220
183220
  /* harmony export */ BarycentricTriangle: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.BarycentricTriangle),
183221
- /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_127__.BentleyGeometryFlatBuffer),
183222
- /* harmony export */ Bezier1dNd: () => (/* reexport safe */ _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_99__.Bezier1dNd),
183223
- /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.BezierBezierIntersectionXYRRToRRD),
183224
- /* harmony export */ BezierCoffs: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.BezierCoffs),
183225
- /* harmony export */ BezierCurve3d: () => (/* reexport safe */ _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_101__.BezierCurve3d),
183226
- /* harmony export */ BezierCurve3dH: () => (/* reexport safe */ _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_102__.BezierCurve3dH),
183227
- /* harmony export */ BezierCurveBase: () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_100__.BezierCurveBase),
183228
- /* harmony export */ BezierPolynomialAlgebra: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.BezierPolynomialAlgebra),
183221
+ /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__.BentleyGeometryFlatBuffer),
183222
+ /* harmony export */ Bezier1dNd: () => (/* reexport safe */ _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_101__.Bezier1dNd),
183223
+ /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.BezierBezierIntersectionXYRRToRRD),
183224
+ /* harmony export */ BezierCoffs: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierCoffs),
183225
+ /* harmony export */ BezierCurve3d: () => (/* reexport safe */ _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_103__.BezierCurve3d),
183226
+ /* harmony export */ BezierCurve3dH: () => (/* reexport safe */ _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_104__.BezierCurve3dH),
183227
+ /* harmony export */ BezierCurveBase: () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_102__.BezierCurveBase),
183228
+ /* harmony export */ BezierPolynomialAlgebra: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierPolynomialAlgebra),
183229
183229
  /* harmony export */ BilinearPatch: () => (/* reexport safe */ _geometry3d_BilinearPatch__WEBPACK_IMPORTED_MODULE_4__.BilinearPatch),
183230
- /* harmony export */ BilinearPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.BilinearPolynomial),
183231
- /* harmony export */ BooleanClipFactory: () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_37__.BooleanClipFactory),
183232
- /* harmony export */ Box: () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_89__.Box),
183233
- /* harmony export */ BoxTopology: () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_111__.BoxTopology),
183234
- /* harmony export */ ClipMaskXYZRangePlanes: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipMaskXYZRangePlanes),
183235
- /* harmony export */ ClipPlane: () => (/* reexport safe */ _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_38__.ClipPlane),
183236
- /* harmony export */ ClipPlaneContainment: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipPlaneContainment),
183237
- /* harmony export */ ClipPrimitive: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipPrimitive),
183238
- /* harmony export */ ClipShape: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipShape),
183239
- /* harmony export */ ClipStatus: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipStatus),
183240
- /* harmony export */ ClipStepAction: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipStepAction),
183241
- /* harmony export */ ClipUtilities: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipUtilities),
183242
- /* harmony export */ ClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__.ClipVector),
183243
- /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__.ClippedPolyfaceBuilders),
183244
- /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_51__.ClusterableArray),
183245
- /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__.Complex),
183246
- /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_90__.Cone),
183247
- /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.ConsolidateAdjacentCurvePrimitivesOptions),
183248
- /* harmony export */ Constant: () => (/* reexport safe */ _Constant__WEBPACK_IMPORTED_MODULE_36__.Constant),
183249
- /* harmony export */ ConstructCurveBetweenCurves: () => (/* reexport safe */ _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__.ConstructCurveBetweenCurves),
183250
- /* harmony export */ ConvexClipPlaneSet: () => (/* reexport safe */ _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_39__.ConvexClipPlaneSet),
183251
- /* harmony export */ ConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.ConvexFacetLocationDetail),
183252
- /* harmony export */ ConvexPolygon2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__.ConvexPolygon2d),
183253
- /* harmony export */ CoordinateXYZ: () => (/* reexport safe */ _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_61__.CoordinateXYZ),
183254
- /* harmony export */ CurveChain: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.CurveChain),
183255
- /* harmony export */ CurveChainWireOffsetContext: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.CurveChainWireOffsetContext),
183256
- /* harmony export */ CurveChainWithDistanceIndex: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__.CurveChainWithDistanceIndex),
183257
- /* harmony export */ CurveCollection: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.CurveCollection),
183258
- /* harmony export */ CurveCurve: () => (/* reexport safe */ _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_65__.CurveCurve),
183259
- /* harmony export */ CurveCurveApproachType: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveCurveApproachType),
183260
- /* harmony export */ CurveCurveIntersectXY: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.CurveCurveIntersectXY),
183261
- /* harmony export */ CurveCurveIntersectXYZ: () => (/* reexport safe */ _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_67__.CurveCurveIntersectXYZ),
183262
- /* harmony export */ CurveExtendMode: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__.CurveExtendMode),
183263
- /* harmony export */ CurveExtendOptions: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__.CurveExtendOptions),
183264
- /* harmony export */ CurveFactory: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__.CurveFactory),
183265
- /* harmony export */ CurveIntervalRole: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveIntervalRole),
183266
- /* harmony export */ CurveLocationDetail: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveLocationDetail),
183267
- /* harmony export */ CurveLocationDetailArrayPair: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.CurveLocationDetailArrayPair),
183268
- /* harmony export */ CurveLocationDetailPair: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveLocationDetailPair),
183269
- /* harmony export */ CurvePrimitive: () => (/* reexport safe */ _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_70__.CurvePrimitive),
183270
- /* harmony export */ CurveSearchStatus: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveSearchStatus),
183230
+ /* harmony export */ BilinearPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.BilinearPolynomial),
183231
+ /* harmony export */ BooleanClipFactory: () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__.BooleanClipFactory),
183232
+ /* harmony export */ Box: () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_91__.Box),
183233
+ /* harmony export */ BoxTopology: () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_113__.BoxTopology),
183234
+ /* harmony export */ ClipMaskXYZRangePlanes: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipMaskXYZRangePlanes),
183235
+ /* harmony export */ ClipPlane: () => (/* reexport safe */ _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_39__.ClipPlane),
183236
+ /* harmony export */ ClipPlaneContainment: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipPlaneContainment),
183237
+ /* harmony export */ ClipPrimitive: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipPrimitive),
183238
+ /* harmony export */ ClipShape: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipShape),
183239
+ /* harmony export */ ClipStatus: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipStatus),
183240
+ /* harmony export */ ClipStepAction: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipStepAction),
183241
+ /* harmony export */ ClipUtilities: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipUtilities),
183242
+ /* harmony export */ ClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.ClipVector),
183243
+ /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.ClippedPolyfaceBuilders),
183244
+ /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__.ClusterableArray),
183245
+ /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__.Complex),
183246
+ /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_92__.Cone),
183247
+ /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.ConsolidateAdjacentCurvePrimitivesOptions),
183248
+ /* harmony export */ Constant: () => (/* reexport safe */ _Constant__WEBPACK_IMPORTED_MODULE_37__.Constant),
183249
+ /* harmony export */ ConstructCurveBetweenCurves: () => (/* reexport safe */ _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_61__.ConstructCurveBetweenCurves),
183250
+ /* harmony export */ ConvexClipPlaneSet: () => (/* reexport safe */ _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_40__.ConvexClipPlaneSet),
183251
+ /* harmony export */ ConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.ConvexFacetLocationDetail),
183252
+ /* harmony export */ ConvexPolygon2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_45__.ConvexPolygon2d),
183253
+ /* harmony export */ CoordinateXYZ: () => (/* reexport safe */ _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_62__.CoordinateXYZ),
183254
+ /* harmony export */ CurveChain: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.CurveChain),
183255
+ /* harmony export */ CurveChainWithDistanceIndex: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__.CurveChainWithDistanceIndex),
183256
+ /* harmony export */ CurveCollection: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.CurveCollection),
183257
+ /* harmony export */ CurveCurve: () => (/* reexport safe */ _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_66__.CurveCurve),
183258
+ /* harmony export */ CurveCurveApproachType: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveCurveApproachType),
183259
+ /* harmony export */ CurveCurveIntersectXY: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.CurveCurveIntersectXY),
183260
+ /* harmony export */ CurveCurveIntersectXYZ: () => (/* reexport safe */ _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_68__.CurveCurveIntersectXYZ),
183261
+ /* harmony export */ CurveExtendMode: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__.CurveExtendMode),
183262
+ /* harmony export */ CurveExtendOptions: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__.CurveExtendOptions),
183263
+ /* harmony export */ CurveFactory: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__.CurveFactory),
183264
+ /* harmony export */ CurveIntervalRole: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveIntervalRole),
183265
+ /* harmony export */ CurveLocationDetail: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveLocationDetail),
183266
+ /* harmony export */ CurveLocationDetailArrayPair: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.CurveLocationDetailArrayPair),
183267
+ /* harmony export */ CurveLocationDetailPair: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveLocationDetailPair),
183268
+ /* harmony export */ CurveOps: () => (/* reexport safe */ _curve_CurveOps__WEBPACK_IMPORTED_MODULE_71__.CurveOps),
183269
+ /* harmony export */ CurvePrimitive: () => (/* reexport safe */ _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_72__.CurvePrimitive),
183270
+ /* harmony export */ CurveSearchStatus: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveSearchStatus),
183271
183271
  /* harmony export */ CutLoop: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoop),
183272
183272
  /* harmony export */ CutLoopMergeContext: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoopMergeContext),
183273
- /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_125__.DeepCompare),
183274
- /* harmony export */ Degree2PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree2PowerPolynomial),
183275
- /* harmony export */ Degree3PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree3PowerPolynomial),
183276
- /* harmony export */ Degree4PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree4PowerPolynomial),
183277
- /* harmony export */ DirectSpiral3d: () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_86__.DirectSpiral3d),
183278
- /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.DuplicateFacetClusterSelector),
183273
+ /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__.DeepCompare),
183274
+ /* harmony export */ Degree2PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree2PowerPolynomial),
183275
+ /* harmony export */ Degree3PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree3PowerPolynomial),
183276
+ /* harmony export */ Degree4PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree4PowerPolynomial),
183277
+ /* harmony export */ DirectSpiral3d: () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_88__.DirectSpiral3d),
183278
+ /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.DuplicateFacetClusterSelector),
183279
183279
  /* harmony export */ Ellipsoid: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.Ellipsoid),
183280
183280
  /* harmony export */ EllipsoidPatch: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.EllipsoidPatch),
183281
- /* harmony export */ FacetFaceData: () => (/* reexport safe */ _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_112__.FacetFaceData),
183282
- /* harmony export */ FacetIntersectOptions: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.FacetIntersectOptions),
183281
+ /* harmony export */ FacetFaceData: () => (/* reexport safe */ _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_114__.FacetFaceData),
183282
+ /* harmony export */ FacetIntersectOptions: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.FacetIntersectOptions),
183283
183283
  /* harmony export */ FrameBuilder: () => (/* reexport safe */ _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_6__.FrameBuilder),
183284
- /* harmony export */ GaussMapper: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.GaussMapper),
183284
+ /* harmony export */ GaussMapper: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__.GaussMapper),
183285
183285
  /* harmony export */ GeodesicPathPoint: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathPoint),
183286
183286
  /* harmony export */ GeodesicPathSolver: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathSolver),
183287
- /* harmony export */ Geometry: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.Geometry),
183287
+ /* harmony export */ Geometry: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.Geometry),
183288
183288
  /* harmony export */ GeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.GeometryHandler),
183289
- /* harmony export */ GeometryQuery: () => (/* reexport safe */ _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_72__.GeometryQuery),
183289
+ /* harmony export */ GeometryQuery: () => (/* reexport safe */ _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_74__.GeometryQuery),
183290
183290
  /* harmony export */ GrowableBlockedArray: () => (/* reexport safe */ _geometry3d_GrowableBlockedArray__WEBPACK_IMPORTED_MODULE_9__.GrowableBlockedArray),
183291
183291
  /* harmony export */ GrowableFloat64Array: () => (/* reexport safe */ _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_10__.GrowableFloat64Array),
183292
183292
  /* harmony export */ GrowableXYArray: () => (/* reexport safe */ _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYArray),
183293
183293
  /* harmony export */ GrowableXYZArray: () => (/* reexport safe */ _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray),
183294
- /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdge),
183295
- /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdgeGraph),
183296
- /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdgeMask),
183297
- /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_124__.IModelJson),
183298
- /* harmony export */ ImplicitLineXY: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.ImplicitLineXY),
183294
+ /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdge),
183295
+ /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeGraph),
183296
+ /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeMask),
183297
+ /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__.IModelJson),
183298
+ /* harmony export */ ImplicitLineXY: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.ImplicitLineXY),
183299
183299
  /* harmony export */ IndexedCollectionInterval: () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedCollectionInterval),
183300
- /* harmony export */ IndexedPolyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__.IndexedPolyface),
183301
- /* harmony export */ IndexedPolyfaceSubsetVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyfaceSubsetVisitor),
183302
- /* harmony export */ IndexedPolyfaceVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyfaceVisitor),
183300
+ /* harmony export */ IndexedPolyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyface),
183301
+ /* harmony export */ IndexedPolyfaceSubsetVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.IndexedPolyfaceSubsetVisitor),
183302
+ /* harmony export */ IndexedPolyfaceVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.IndexedPolyfaceVisitor),
183303
183303
  /* harmony export */ IndexedReadWriteXYZCollection: () => (/* reexport safe */ _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_15__.IndexedReadWriteXYZCollection),
183304
183304
  /* harmony export */ IndexedXYCollection: () => (/* reexport safe */ _geometry3d_IndexedXYCollection__WEBPACK_IMPORTED_MODULE_14__.IndexedXYCollection),
183305
183305
  /* harmony export */ IndexedXYZCollection: () => (/* reexport safe */ _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_15__.IndexedXYZCollection),
183306
183306
  /* harmony export */ IndexedXYZCollectionInterval: () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedXYZCollectionInterval),
183307
183307
  /* harmony export */ IndexedXYZCollectionPolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.IndexedXYZCollectionPolygonOps),
183308
- /* harmony export */ IntegratedSpiral3d: () => (/* reexport safe */ _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_85__.IntegratedSpiral3d),
183309
- /* harmony export */ InterpolationCurve3d: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__.InterpolationCurve3d),
183310
- /* harmony export */ InterpolationCurve3dOptions: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__.InterpolationCurve3dOptions),
183308
+ /* harmony export */ IntegratedSpiral3d: () => (/* reexport safe */ _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_87__.IntegratedSpiral3d),
183309
+ /* harmony export */ InterpolationCurve3d: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__.InterpolationCurve3d),
183310
+ /* harmony export */ InterpolationCurve3dOptions: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__.InterpolationCurve3dOptions),
183311
183311
  /* harmony export */ InverseMatrixState: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.InverseMatrixState),
183312
- /* harmony export */ JointOptions: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.JointOptions),
183313
- /* harmony export */ KnotVector: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__.KnotVector),
183314
- /* harmony export */ LineSegment3d: () => (/* reexport safe */ _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_73__.LineSegment3d),
183315
- /* harmony export */ LineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__.LineString3d),
183316
- /* harmony export */ LinearSweep: () => (/* reexport safe */ _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_91__.LinearSweep),
183312
+ /* harmony export */ JointOptions: () => (/* reexport safe */ _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__.JointOptions),
183313
+ /* harmony export */ KnotVector: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__.KnotVector),
183314
+ /* harmony export */ LineSegment3d: () => (/* reexport safe */ _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_75__.LineSegment3d),
183315
+ /* harmony export */ LineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__.LineString3d),
183316
+ /* harmony export */ LinearSweep: () => (/* reexport safe */ _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_93__.LinearSweep),
183317
183317
  /* harmony export */ LongitudeLatitudeNumber: () => (/* reexport safe */ _geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_2__.LongitudeLatitudeNumber),
183318
- /* harmony export */ Loop: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_75__.Loop),
183319
- /* harmony export */ LoopCurveLoopCurve: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_75__.LoopCurveLoopCurve),
183320
- /* harmony export */ Map4d: () => (/* reexport safe */ _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_48__.Map4d),
183318
+ /* harmony export */ Loop: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_77__.Loop),
183319
+ /* harmony export */ LoopCurveLoopCurve: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_77__.LoopCurveLoopCurve),
183320
+ /* harmony export */ Map4d: () => (/* reexport safe */ _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_49__.Map4d),
183321
183321
  /* harmony export */ Matrix3d: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.Matrix3d),
183322
- /* harmony export */ Matrix4d: () => (/* reexport safe */ _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_47__.Matrix4d),
183323
- /* harmony export */ MiteredSweepOutputSelect: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__.MiteredSweepOutputSelect),
183324
- /* harmony export */ MomentData: () => (/* reexport safe */ _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_49__.MomentData),
183325
- /* harmony export */ MultiChainCollector: () => (/* reexport safe */ _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_128__.MultiChainCollector),
183326
- /* harmony export */ Newton1dUnbounded: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton1dUnbounded),
183327
- /* harmony export */ Newton1dUnboundedApproximateDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton1dUnboundedApproximateDerivative),
183328
- /* harmony export */ Newton2dUnboundedWithDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton2dUnboundedWithDerivative),
183329
- /* harmony export */ NewtonEvaluatorRRtoRRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRRtoRRD),
183330
- /* harmony export */ NewtonEvaluatorRtoR: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRtoR),
183331
- /* harmony export */ NewtonEvaluatorRtoRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRtoRD),
183332
- /* harmony export */ NonConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.NonConvexFacetLocationDetail),
183322
+ /* harmony export */ Matrix4d: () => (/* reexport safe */ _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_48__.Matrix4d),
183323
+ /* harmony export */ MiteredSweepOutputSelect: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__.MiteredSweepOutputSelect),
183324
+ /* harmony export */ MomentData: () => (/* reexport safe */ _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_50__.MomentData),
183325
+ /* harmony export */ Newton1dUnbounded: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton1dUnbounded),
183326
+ /* harmony export */ Newton1dUnboundedApproximateDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton1dUnboundedApproximateDerivative),
183327
+ /* harmony export */ Newton2dUnboundedWithDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton2dUnboundedWithDerivative),
183328
+ /* harmony export */ NewtonEvaluatorRRtoRRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRRtoRRD),
183329
+ /* harmony export */ NewtonEvaluatorRtoR: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRtoR),
183330
+ /* harmony export */ NewtonEvaluatorRtoRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRtoRD),
183331
+ /* harmony export */ NonConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.NonConvexFacetLocationDetail),
183333
183332
  /* harmony export */ NullGeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.NullGeometryHandler),
183334
183333
  /* harmony export */ NumberArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.NumberArray),
183335
- /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.OffsetMeshOptions),
183336
- /* harmony export */ OffsetOptions: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.OffsetOptions),
183337
- /* harmony export */ Order2Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order2Bezier),
183338
- /* harmony export */ Order3Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order3Bezier),
183339
- /* harmony export */ Order4Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order4Bezier),
183340
- /* harmony export */ Order5Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order5Bezier),
183334
+ /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.OffsetMeshOptions),
183335
+ /* harmony export */ OffsetOptions: () => (/* reexport safe */ _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__.OffsetOptions),
183336
+ /* harmony export */ Order2Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order2Bezier),
183337
+ /* harmony export */ Order3Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order3Bezier),
183338
+ /* harmony export */ Order4Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order4Bezier),
183339
+ /* harmony export */ Order5Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order5Bezier),
183341
183340
  /* harmony export */ OrderedRotationAngles: () => (/* reexport safe */ _geometry3d_OrderedRotationAngles__WEBPACK_IMPORTED_MODULE_17__.OrderedRotationAngles),
183342
183341
  /* harmony export */ PackedMatrix3dOps: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.PackedMatrix3dOps),
183343
- /* harmony export */ ParityRegion: () => (/* reexport safe */ _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_76__.ParityRegion),
183344
- /* harmony export */ PascalCoefficients: () => (/* reexport safe */ _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__.PascalCoefficients),
183345
- /* harmony export */ Path: () => (/* reexport safe */ _curve_Path__WEBPACK_IMPORTED_MODULE_77__.Path),
183346
- /* harmony export */ PathFragment: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__.PathFragment),
183342
+ /* harmony export */ ParityRegion: () => (/* reexport safe */ _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_79__.ParityRegion),
183343
+ /* harmony export */ PascalCoefficients: () => (/* reexport safe */ _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_55__.PascalCoefficients),
183344
+ /* harmony export */ Path: () => (/* reexport safe */ _curve_Path__WEBPACK_IMPORTED_MODULE_80__.Path),
183345
+ /* harmony export */ PathFragment: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__.PathFragment),
183347
183346
  /* harmony export */ Plane3d: () => (/* reexport safe */ _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_18__.Plane3d),
183348
183347
  /* harmony export */ Plane3dByOriginAndUnitNormal: () => (/* reexport safe */ _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_19__.Plane3dByOriginAndUnitNormal),
183349
183348
  /* harmony export */ Plane3dByOriginAndVectors: () => (/* reexport safe */ _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_20__.Plane3dByOriginAndVectors),
183350
- /* harmony export */ PlaneByOriginAndVectors4d: () => (/* reexport safe */ _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_45__.PlaneByOriginAndVectors4d),
183349
+ /* harmony export */ PlaneByOriginAndVectors4d: () => (/* reexport safe */ _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_46__.PlaneByOriginAndVectors4d),
183351
183350
  /* harmony export */ Point2d: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Point2d),
183352
183351
  /* harmony export */ Point2dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point2dArray),
183353
183352
  /* harmony export */ Point2dArrayCarrier: () => (/* reexport safe */ _geometry3d_Point2dArrayCarrier__WEBPACK_IMPORTED_MODULE_21__.Point2dArrayCarrier),
@@ -183355,81 +183354,80 @@ __webpack_require__.r(__webpack_exports__);
183355
183354
  /* harmony export */ Point3dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point3dArray),
183356
183355
  /* harmony export */ Point3dArrayCarrier: () => (/* reexport safe */ _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_25__.Point3dArrayCarrier),
183357
183356
  /* harmony export */ Point3dArrayPolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayPolygonOps),
183358
- /* harmony export */ Point4d: () => (/* reexport safe */ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_46__.Point4d),
183357
+ /* harmony export */ Point4d: () => (/* reexport safe */ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_47__.Point4d),
183359
183358
  /* harmony export */ Point4dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point4dArray),
183360
- /* harmony export */ PointString3d: () => (/* reexport safe */ _curve_PointString3d__WEBPACK_IMPORTED_MODULE_81__.PointString3d),
183361
- /* harmony export */ Polyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__.Polyface),
183362
- /* harmony export */ PolyfaceAuxData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.PolyfaceAuxData),
183363
- /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_116__.PolyfaceBuilder),
183364
- /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__.PolyfaceClip),
183365
- /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_117__.PolyfaceData),
183366
- /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.PolyfaceQuery),
183367
- /* harmony export */ PolygonLocation: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.PolygonLocation),
183359
+ /* harmony export */ PointString3d: () => (/* reexport safe */ _curve_PointString3d__WEBPACK_IMPORTED_MODULE_83__.PointString3d),
183360
+ /* harmony export */ Polyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.Polyface),
183361
+ /* harmony export */ PolyfaceAuxData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.PolyfaceAuxData),
183362
+ /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__.PolyfaceBuilder),
183363
+ /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.PolyfaceClip),
183364
+ /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__.PolyfaceData),
183365
+ /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.PolyfaceQuery),
183366
+ /* harmony export */ PolygonLocation: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.PolygonLocation),
183368
183367
  /* harmony export */ PolygonLocationDetail: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonLocationDetail),
183369
183368
  /* harmony export */ PolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonOps),
183370
- /* harmony export */ PolygonWireOffsetContext: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.PolygonWireOffsetContext),
183371
183369
  /* harmony export */ PolylineOps: () => (/* reexport safe */ _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_26__.PolylineOps),
183372
- /* harmony export */ PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.PowerPolynomial),
183373
- /* harmony export */ ProxyCurve: () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_82__.ProxyCurve),
183374
- /* harmony export */ Quadrature: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.Quadrature),
183370
+ /* harmony export */ PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.PowerPolynomial),
183371
+ /* harmony export */ ProxyCurve: () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_84__.ProxyCurve),
183372
+ /* harmony export */ Quadrature: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__.Quadrature),
183375
183373
  /* harmony export */ Range1d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range1d),
183376
- /* harmony export */ Range1dArray: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.Range1dArray),
183374
+ /* harmony export */ Range1dArray: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__.Range1dArray),
183377
183375
  /* harmony export */ Range2d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range2d),
183378
183376
  /* harmony export */ Range3d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d),
183379
183377
  /* harmony export */ RangeBase: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.RangeBase),
183380
- /* harmony export */ Ray2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__.Ray2d),
183381
- /* harmony export */ Ray3d: () => (/* reexport safe */ _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_29__.Ray3d),
183378
+ /* harmony export */ Ray2d: () => (/* reexport safe */ _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_29__.Ray2d),
183379
+ /* harmony export */ Ray3d: () => (/* reexport safe */ _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_30__.Ray3d),
183382
183380
  /* harmony export */ RecurseToCurvesGeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.RecurseToCurvesGeometryHandler),
183383
- /* harmony export */ RecursiveCurveProcessor: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__.RecursiveCurveProcessor),
183384
- /* harmony export */ RecursiveCurveProcessorWithStack: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__.RecursiveCurveProcessorWithStack),
183385
- /* harmony export */ RegionBinaryOpType: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__.RegionBinaryOpType),
183386
- /* harmony export */ RegionMomentsXY: () => (/* reexport safe */ _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_78__.RegionMomentsXY),
183387
- /* harmony export */ RegionOps: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__.RegionOps),
183388
- /* harmony export */ RotationalSweep: () => (/* reexport safe */ _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_92__.RotationalSweep),
183389
- /* harmony export */ RuledSweep: () => (/* reexport safe */ _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_93__.RuledSweep),
183390
- /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__.Sample),
183391
- /* harmony export */ Segment1d: () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_30__.Segment1d),
183392
- /* harmony export */ SimpleNewton: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.SimpleNewton),
183393
- /* harmony export */ SineCosinePolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SineCosinePolynomial),
183394
- /* harmony export */ SmallSystem: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SmallSystem),
183381
+ /* harmony export */ RecursiveCurveProcessor: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__.RecursiveCurveProcessor),
183382
+ /* harmony export */ RecursiveCurveProcessorWithStack: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__.RecursiveCurveProcessorWithStack),
183383
+ /* harmony export */ RegionBinaryOpType: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__.RegionBinaryOpType),
183384
+ /* harmony export */ RegionMomentsXY: () => (/* reexport safe */ _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_81__.RegionMomentsXY),
183385
+ /* harmony export */ RegionOps: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__.RegionOps),
183386
+ /* harmony export */ RotationalSweep: () => (/* reexport safe */ _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_94__.RotationalSweep),
183387
+ /* harmony export */ RuledSweep: () => (/* reexport safe */ _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_95__.RuledSweep),
183388
+ /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.Sample),
183389
+ /* harmony export */ Segment1d: () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__.Segment1d),
183390
+ /* harmony export */ SimpleNewton: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.SimpleNewton),
183391
+ /* harmony export */ SineCosinePolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SineCosinePolynomial),
183392
+ /* harmony export */ SmallSystem: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SmallSystem),
183395
183393
  /* harmony export */ SmoothTransformBetweenFrusta: () => (/* reexport safe */ _geometry3d_FrustumAnimation__WEBPACK_IMPORTED_MODULE_7__.SmoothTransformBetweenFrusta),
183396
- /* harmony export */ SolidPrimitive: () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_94__.SolidPrimitive),
183397
- /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_123__.SpacePolygonTriangulation),
183398
- /* harmony export */ Sphere: () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_95__.Sphere),
183399
- /* harmony export */ SphereImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SphereImplicit),
183400
- /* harmony export */ StandardViewIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.StandardViewIndex),
183401
- /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__.SteppedIndexFunctionFactory),
183402
- /* harmony export */ StringifiedClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__.StringifiedClipVector),
183403
- /* harmony export */ StrokeCountMap: () => (/* reexport safe */ _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_88__.StrokeCountMap),
183404
- /* harmony export */ StrokeOptions: () => (/* reexport safe */ _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_83__.StrokeOptions),
183405
- /* harmony export */ SweepContour: () => (/* reexport safe */ _solid_SweepContour__WEBPACK_IMPORTED_MODULE_96__.SweepContour),
183406
- /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.SweepLineStringToFacetsOptions),
183407
- /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__.TaggedNumericConstants),
183408
- /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__.TaggedNumericData),
183409
- /* harmony export */ TorusImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TorusImplicit),
183410
- /* harmony export */ TorusPipe: () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_97__.TorusPipe),
183411
- /* harmony export */ Transform: () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_31__.Transform),
183412
- /* harmony export */ TransitionSpiral3d: () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_84__.TransitionSpiral3d),
183413
- /* harmony export */ TriDiagonalSystem: () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__.TriDiagonalSystem),
183394
+ /* harmony export */ SolidPrimitive: () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_96__.SolidPrimitive),
183395
+ /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__.SpacePolygonTriangulation),
183396
+ /* harmony export */ Sphere: () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_97__.Sphere),
183397
+ /* harmony export */ SphereImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SphereImplicit),
183398
+ /* harmony export */ StandardViewIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.StandardViewIndex),
183399
+ /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.SteppedIndexFunctionFactory),
183400
+ /* harmony export */ StringifiedClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.StringifiedClipVector),
183401
+ /* harmony export */ StrokeCountMap: () => (/* reexport safe */ _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_90__.StrokeCountMap),
183402
+ /* harmony export */ StrokeOptions: () => (/* reexport safe */ _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_85__.StrokeOptions),
183403
+ /* harmony export */ SweepContour: () => (/* reexport safe */ _solid_SweepContour__WEBPACK_IMPORTED_MODULE_98__.SweepContour),
183404
+ /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.SweepLineStringToFacetsOptions),
183405
+ /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericConstants),
183406
+ /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericData),
183407
+ /* harmony export */ TorusImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TorusImplicit),
183408
+ /* harmony export */ TorusPipe: () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_99__.TorusPipe),
183409
+ /* harmony export */ Transform: () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__.Transform),
183410
+ /* harmony export */ TransitionSpiral3d: () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_86__.TransitionSpiral3d),
183411
+ /* harmony export */ TriDiagonalSystem: () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_59__.TriDiagonalSystem),
183414
183412
  /* harmony export */ TriangleLocationDetail: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.TriangleLocationDetail),
183415
- /* harmony export */ TriangularFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.TriangularFacetLocationDetail),
183416
- /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_122__.Triangulator),
183417
- /* harmony export */ TrigPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TrigPolynomial),
183418
- /* harmony export */ UVSelect: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.UVSelect),
183419
- /* harmony export */ UVSurfaceOps: () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_32__.UVSurfaceOps),
183420
- /* harmony export */ UnionOfConvexClipPlaneSets: () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_40__.UnionOfConvexClipPlaneSets),
183421
- /* harmony export */ UnionRegion: () => (/* reexport safe */ _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_87__.UnionRegion),
183422
- /* harmony export */ UnivariateBezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.UnivariateBezier),
183413
+ /* harmony export */ TriangularFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.TriangularFacetLocationDetail),
183414
+ /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__.Triangulator),
183415
+ /* harmony export */ TrigPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TrigPolynomial),
183416
+ /* harmony export */ UVSelect: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.UVSelect),
183417
+ /* harmony export */ UVSurfaceOps: () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__.UVSurfaceOps),
183418
+ /* harmony export */ UnionOfConvexClipPlaneSets: () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__.UnionOfConvexClipPlaneSets),
183419
+ /* harmony export */ UnionRegion: () => (/* reexport safe */ _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_89__.UnionRegion),
183420
+ /* harmony export */ UnivariateBezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.UnivariateBezier),
183423
183421
  /* harmony export */ Vector2d: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Vector2d),
183424
183422
  /* harmony export */ Vector3d: () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.Vector3d),
183425
183423
  /* harmony export */ Vector3dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Vector3dArray),
183426
- /* harmony export */ WeightStyle: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.WeightStyle),
183424
+ /* harmony export */ WeightStyle: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.WeightStyle),
183427
183425
  /* harmony export */ XY: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.XY),
183428
- /* harmony export */ XYAndZ: () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_33__.XYAndZ),
183426
+ /* harmony export */ XYAndZ: () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__.XYAndZ),
183429
183427
  /* harmony export */ XYZ: () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.XYZ),
183430
- /* harmony export */ YawPitchRollAngles: () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_34__.YawPitchRollAngles),
183431
- /* harmony export */ compareRange1dLexicalLowHigh: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.compareRange1dLexicalLowHigh),
183432
- /* harmony export */ interpolateColor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.interpolateColor)
183428
+ /* harmony export */ YawPitchRollAngles: () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__.YawPitchRollAngles),
183429
+ /* harmony export */ compareRange1dLexicalLowHigh: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__.compareRange1dLexicalLowHigh),
183430
+ /* harmony export */ interpolateColor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.interpolateColor)
183433
183431
  /* harmony export */ });
183434
183432
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
183435
183433
  /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
@@ -183460,106 +183458,107 @@ __webpack_require__.r(__webpack_exports__);
183460
183458
  /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
183461
183459
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
183462
183460
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
183463
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
183464
- /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
183465
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
183466
- /* harmony import */ var _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./geometry3d/UVSurfaceOps */ "../../core/geometry/lib/esm/geometry3d/UVSurfaceOps.js");
183467
- /* harmony import */ var _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./geometry3d/XYZProps */ "../../core/geometry/lib/esm/geometry3d/XYZProps.js");
183468
- /* harmony import */ var _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./geometry3d/YawPitchRollAngles */ "../../core/geometry/lib/esm/geometry3d/YawPitchRollAngles.js");
183469
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./Geometry */ "../../core/geometry/lib/esm/Geometry.js");
183470
- /* harmony import */ var _Constant__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Constant */ "../../core/geometry/lib/esm/Constant.js");
183471
- /* harmony import */ var _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./clipping/BooleanClipFactory */ "../../core/geometry/lib/esm/clipping/BooleanClipFactory.js");
183472
- /* harmony import */ var _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./clipping/ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
183473
- /* harmony import */ var _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./clipping/ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
183474
- /* harmony import */ var _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./clipping/UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
183475
- /* harmony import */ var _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./clipping/ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
183476
- /* harmony import */ var _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./clipping/ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
183477
- /* harmony import */ var _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./clipping/ClipUtils */ "../../core/geometry/lib/esm/clipping/ClipUtils.js");
183478
- /* harmony import */ var _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./numerics/ConvexPolygon2d */ "../../core/geometry/lib/esm/numerics/ConvexPolygon2d.js");
183479
- /* harmony import */ var _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./geometry4d/PlaneByOriginAndVectors4d */ "../../core/geometry/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js");
183480
- /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
183481
- /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
183482
- /* harmony import */ var _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./geometry4d/Map4d */ "../../core/geometry/lib/esm/geometry4d/Map4d.js");
183483
- /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
183484
- /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
183485
- /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
183486
- /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
183487
- /* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
183488
- /* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
183489
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
183490
- /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
183491
- /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
183492
- /* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
183493
- /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
183494
- /* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
183495
- /* harmony import */ var _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./curve/CoordinateXYZ */ "../../core/geometry/lib/esm/curve/CoordinateXYZ.js");
183496
- /* harmony import */ var _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./curve/CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
183497
- /* harmony import */ var _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./curve/CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
183498
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
183499
- /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
183500
- /* harmony import */ var _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXY.js");
183501
- /* harmony import */ var _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXYZ.js");
183502
- /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
183503
- /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
183504
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
183505
- /* harmony import */ var _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./curve/CurveProcessor */ "../../core/geometry/lib/esm/curve/CurveProcessor.js");
183506
- /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
183507
- /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
183508
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
183509
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
183510
- /* harmony import */ var _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./curve/ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
183511
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
183512
- /* harmony import */ var _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./curve/RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
183513
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
183514
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
183515
- /* harmony import */ var _curve_PointString3d__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./curve/PointString3d */ "../../core/geometry/lib/esm/curve/PointString3d.js");
183516
- /* harmony import */ var _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./curve/ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
183517
- /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
183518
- /* harmony import */ var _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./curve/spiral/TransitionSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/TransitionSpiral3d.js");
183519
- /* harmony import */ var _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./curve/spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
183520
- /* harmony import */ var _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./curve/spiral/DirectSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/DirectSpiral3d.js");
183521
- /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
183522
- /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
183523
- /* harmony import */ var _solid_Box__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./solid/Box */ "../../core/geometry/lib/esm/solid/Box.js");
183524
- /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
183525
- /* harmony import */ var _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./solid/LinearSweep */ "../../core/geometry/lib/esm/solid/LinearSweep.js");
183526
- /* harmony import */ var _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./solid/RotationalSweep */ "../../core/geometry/lib/esm/solid/RotationalSweep.js");
183527
- /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
183528
- /* harmony import */ var _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./solid/SolidPrimitive */ "../../core/geometry/lib/esm/solid/SolidPrimitive.js");
183529
- /* harmony import */ var _solid_Sphere__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./solid/Sphere */ "../../core/geometry/lib/esm/solid/Sphere.js");
183530
- /* harmony import */ var _solid_SweepContour__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./solid/SweepContour */ "../../core/geometry/lib/esm/solid/SweepContour.js");
183531
- /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
183532
- /* harmony import */ var _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./bspline/AkimaCurve3d */ "../../core/geometry/lib/esm/bspline/AkimaCurve3d.js");
183533
- /* harmony import */ var _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./bspline/Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
183534
- /* harmony import */ var _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./bspline/BezierCurveBase */ "../../core/geometry/lib/esm/bspline/BezierCurveBase.js");
183535
- /* harmony import */ var _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./bspline/BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
183536
- /* harmony import */ var _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./bspline/BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
183537
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
183538
- /* harmony import */ var _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./bspline/BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
183539
- /* harmony import */ var _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./bspline/BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
183540
- /* harmony import */ var _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./bspline/BSplineCurve3dH */ "../../core/geometry/lib/esm/bspline/BSplineCurve3dH.js");
183541
- /* harmony import */ var _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./bspline/BSplineSurface */ "../../core/geometry/lib/esm/bspline/BSplineSurface.js");
183542
- /* harmony import */ var _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./bspline/InterpolationCurve3d */ "../../core/geometry/lib/esm/bspline/InterpolationCurve3d.js");
183543
- /* harmony import */ var _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./bspline/KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
183544
- /* harmony import */ var _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./polyface/AuxData */ "../../core/geometry/lib/esm/polyface/AuxData.js");
183545
- /* harmony import */ var _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./polyface/BoxTopology */ "../../core/geometry/lib/esm/polyface/BoxTopology.js");
183546
- /* harmony import */ var _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./polyface/FacetFaceData */ "../../core/geometry/lib/esm/polyface/FacetFaceData.js");
183547
- /* harmony import */ var _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./polyface/Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
183548
- /* harmony import */ var _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./polyface/FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
183549
- /* harmony import */ var _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./polyface/IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
183550
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
183551
- /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
183552
- /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
183553
- /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
183554
- /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
183555
- /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
183556
- /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
183557
- /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
183558
- /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
183559
- /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
183560
- /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
183561
- /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
183562
- /* harmony import */ var _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./curve/internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
183461
+ /* harmony import */ var _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./geometry3d/Ray2d */ "../../core/geometry/lib/esm/geometry3d/Ray2d.js");
183462
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
183463
+ /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
183464
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
183465
+ /* harmony import */ var _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./geometry3d/UVSurfaceOps */ "../../core/geometry/lib/esm/geometry3d/UVSurfaceOps.js");
183466
+ /* harmony import */ var _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./geometry3d/XYZProps */ "../../core/geometry/lib/esm/geometry3d/XYZProps.js");
183467
+ /* harmony import */ var _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./geometry3d/YawPitchRollAngles */ "../../core/geometry/lib/esm/geometry3d/YawPitchRollAngles.js");
183468
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Geometry */ "../../core/geometry/lib/esm/Geometry.js");
183469
+ /* harmony import */ var _Constant__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./Constant */ "../../core/geometry/lib/esm/Constant.js");
183470
+ /* harmony import */ var _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./clipping/BooleanClipFactory */ "../../core/geometry/lib/esm/clipping/BooleanClipFactory.js");
183471
+ /* harmony import */ var _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./clipping/ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
183472
+ /* harmony import */ var _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./clipping/ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
183473
+ /* harmony import */ var _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./clipping/UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
183474
+ /* harmony import */ var _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./clipping/ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
183475
+ /* harmony import */ var _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./clipping/ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
183476
+ /* harmony import */ var _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./clipping/ClipUtils */ "../../core/geometry/lib/esm/clipping/ClipUtils.js");
183477
+ /* harmony import */ var _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./numerics/ConvexPolygon2d */ "../../core/geometry/lib/esm/numerics/ConvexPolygon2d.js");
183478
+ /* harmony import */ var _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./geometry4d/PlaneByOriginAndVectors4d */ "../../core/geometry/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js");
183479
+ /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
183480
+ /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
183481
+ /* harmony import */ var _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./geometry4d/Map4d */ "../../core/geometry/lib/esm/geometry4d/Map4d.js");
183482
+ /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
183483
+ /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
183484
+ /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
183485
+ /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
183486
+ /* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
183487
+ /* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
183488
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
183489
+ /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
183490
+ /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
183491
+ /* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
183492
+ /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
183493
+ /* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
183494
+ /* harmony import */ var _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./curve/CoordinateXYZ */ "../../core/geometry/lib/esm/curve/CoordinateXYZ.js");
183495
+ /* harmony import */ var _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./curve/CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
183496
+ /* harmony import */ var _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./curve/CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
183497
+ /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
183498
+ /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
183499
+ /* harmony import */ var _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXY.js");
183500
+ /* harmony import */ var _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXYZ.js");
183501
+ /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
183502
+ /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
183503
+ /* harmony import */ var _curve_CurveOps__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./curve/CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
183504
+ /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
183505
+ /* harmony import */ var _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./curve/CurveProcessor */ "../../core/geometry/lib/esm/curve/CurveProcessor.js");
183506
+ /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
183507
+ /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
183508
+ /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
183509
+ /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
183510
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
183511
+ /* harmony import */ var _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./curve/ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
183512
+ /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
183513
+ /* harmony import */ var _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./curve/RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
183514
+ /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
183515
+ /* harmony import */ var _curve_PointString3d__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./curve/PointString3d */ "../../core/geometry/lib/esm/curve/PointString3d.js");
183516
+ /* harmony import */ var _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./curve/ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
183517
+ /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
183518
+ /* harmony import */ var _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./curve/spiral/TransitionSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/TransitionSpiral3d.js");
183519
+ /* harmony import */ var _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./curve/spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
183520
+ /* harmony import */ var _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./curve/spiral/DirectSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/DirectSpiral3d.js");
183521
+ /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
183522
+ /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
183523
+ /* harmony import */ var _solid_Box__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./solid/Box */ "../../core/geometry/lib/esm/solid/Box.js");
183524
+ /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
183525
+ /* harmony import */ var _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./solid/LinearSweep */ "../../core/geometry/lib/esm/solid/LinearSweep.js");
183526
+ /* harmony import */ var _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./solid/RotationalSweep */ "../../core/geometry/lib/esm/solid/RotationalSweep.js");
183527
+ /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
183528
+ /* harmony import */ var _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./solid/SolidPrimitive */ "../../core/geometry/lib/esm/solid/SolidPrimitive.js");
183529
+ /* harmony import */ var _solid_Sphere__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./solid/Sphere */ "../../core/geometry/lib/esm/solid/Sphere.js");
183530
+ /* harmony import */ var _solid_SweepContour__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./solid/SweepContour */ "../../core/geometry/lib/esm/solid/SweepContour.js");
183531
+ /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
183532
+ /* harmony import */ var _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./bspline/AkimaCurve3d */ "../../core/geometry/lib/esm/bspline/AkimaCurve3d.js");
183533
+ /* harmony import */ var _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./bspline/Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
183534
+ /* harmony import */ var _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./bspline/BezierCurveBase */ "../../core/geometry/lib/esm/bspline/BezierCurveBase.js");
183535
+ /* harmony import */ var _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./bspline/BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
183536
+ /* harmony import */ var _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./bspline/BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
183537
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
183538
+ /* harmony import */ var _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./bspline/BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
183539
+ /* harmony import */ var _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./bspline/BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
183540
+ /* harmony import */ var _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./bspline/BSplineCurve3dH */ "../../core/geometry/lib/esm/bspline/BSplineCurve3dH.js");
183541
+ /* harmony import */ var _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./bspline/BSplineSurface */ "../../core/geometry/lib/esm/bspline/BSplineSurface.js");
183542
+ /* harmony import */ var _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./bspline/InterpolationCurve3d */ "../../core/geometry/lib/esm/bspline/InterpolationCurve3d.js");
183543
+ /* harmony import */ var _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./bspline/KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
183544
+ /* harmony import */ var _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./polyface/AuxData */ "../../core/geometry/lib/esm/polyface/AuxData.js");
183545
+ /* harmony import */ var _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./polyface/BoxTopology */ "../../core/geometry/lib/esm/polyface/BoxTopology.js");
183546
+ /* harmony import */ var _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./polyface/FacetFaceData */ "../../core/geometry/lib/esm/polyface/FacetFaceData.js");
183547
+ /* harmony import */ var _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./polyface/Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
183548
+ /* harmony import */ var _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./polyface/FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
183549
+ /* harmony import */ var _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./polyface/IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
183550
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
183551
+ /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
183552
+ /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
183553
+ /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
183554
+ /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
183555
+ /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
183556
+ /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
183557
+ /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
183558
+ /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
183559
+ /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
183560
+ /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
183561
+ /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
183563
183562
  /*---------------------------------------------------------------------------------------------
183564
183563
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
183565
183564
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -183810,7 +183809,7 @@ __webpack_require__.r(__webpack_exports__);
183810
183809
 
183811
183810
 
183812
183811
 
183813
- // temporary export for internal access pending exposure of this functionality via public API
183812
+
183814
183813
 
183815
183814
 
183816
183815
 
@@ -183841,8 +183840,8 @@ __webpack_require__.r(__webpack_exports__);
183841
183840
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
183842
183841
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
183843
183842
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
183844
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
183845
183843
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
183844
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
183846
183845
  /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
183847
183846
  /*---------------------------------------------------------------------------------------------
183848
183847
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -184775,7 +184774,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
184775
184774
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
184776
184775
  */
184777
184776
  constructOffsetXY(offsetDistanceOrOptions) {
184778
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__.OffsetOptions.create(offsetDistanceOrOptions);
184777
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_14__.OffsetOptions.create(offsetDistanceOrOptions);
184779
184778
  if (this.isCircular || options.preserveEllipticalArcs) {
184780
184779
  const arcXY = this.cloneAtZ();
184781
184780
  const sign = arcXY.sweep.sweepRadians * arcXY.matrixRef.coffs[8] >= 0.0 ? 1.0 : -1.0;
@@ -184825,199 +184824,6 @@ Arc3d.quadratureIntervalAngleDegrees = 10.0;
184825
184824
 
184826
184825
 
184827
184826
 
184828
- /***/ }),
184829
-
184830
- /***/ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js":
184831
- /*!******************************************************************!*\
184832
- !*** ../../core/geometry/lib/esm/curve/ChainCollectorContext.js ***!
184833
- \******************************************************************/
184834
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
184835
-
184836
- "use strict";
184837
- __webpack_require__.r(__webpack_exports__);
184838
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
184839
- /* harmony export */ ChainCollectorContext: () => (/* binding */ ChainCollectorContext)
184840
- /* harmony export */ });
184841
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
184842
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
184843
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
184844
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
184845
- /*---------------------------------------------------------------------------------------------
184846
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
184847
- * See LICENSE.md in the project root for license terms and full copyright notice.
184848
- *--------------------------------------------------------------------------------------------*/
184849
-
184850
-
184851
-
184852
-
184853
- /**
184854
- * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
184855
- * * The caller makes a sequence of calls to announce individual primitives.
184856
- * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`
184857
- * * (a) "simple chains" -- the caller has the curve primitives in order and just needs to have them monitored for coordinate breaks that indicate transition to a new chain.
184858
- * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.
184859
- * * (b) "mixed" primitives -- primitive order is NOT significant for chain assembly.
184860
- * * The collector needs to search all prior paths at both start and end, and consider connection to both the start and end of each new primitive.
184861
- * * The per-curve announcement is
184862
- * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
184863
- * * When all curves have been announced, the call to grab the paths option
184864
- * * formLoopsIfClosed
184865
- * * If true, convert closed paths to `Loop`, open paths to `Path`
184866
- * * If false, convert all paths (open or not) to `Path`
184867
- * * Usage pattern is
184868
- * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
184869
- * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`
184870
- * * end: ` result = context.grabResults (formLoopsIfClosed)`
184871
- * @internal
184872
- */
184873
- class ChainCollectorContext {
184874
- /**
184875
- * Push a new chain with an optional first primitive.
184876
- */
184877
- pushNewChain(primitive) {
184878
- const chain = [];
184879
- if (primitive)
184880
- chain.push(primitive);
184881
- this._chains.push(chain);
184882
- }
184883
- findOrCreateTailChain() {
184884
- if (this._chains.length === 0)
184885
- this.pushNewChain();
184886
- return this._chains[this._chains.length - 1];
184887
- }
184888
- findAnyChainToConnect(xyz) {
184889
- for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
184890
- const path = this._chains[chainIndexA];
184891
- this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);
184892
- if (this._xyzWork1.isAlmostEqual(xyz))
184893
- return { chainIndex: chainIndexA, atEnd: true };
184894
- this._xyzWork1 = path[0].startPoint(this._xyzWork1);
184895
- if (this._xyzWork1.isAlmostEqual(xyz))
184896
- return { chainIndex: chainIndexA, atEnd: false };
184897
- }
184898
- return undefined;
184899
- }
184900
- /** Initialize with an empty array of chains.
184901
- * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.
184902
- */
184903
- constructor(makeClones) {
184904
- this._chains = [];
184905
- this._makeClones = makeClones;
184906
- }
184907
- /** Announce a curve primitive
184908
- * * searchAllChains controls the extent of search for connecting points.
184909
- * * false ==> only consider connection to most recent chain.
184910
- * * true ==> search for any connection, reversing direction as needed.
184911
- * * Otherwise start a new chain.
184912
- */
184913
- announceCurvePrimitive(candidate, searchAllChains = false) {
184914
- if (candidate) {
184915
- if (this._makeClones) {
184916
- const candidate1 = candidate.clone();
184917
- if (!candidate1 || !(candidate1 instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive))
184918
- return;
184919
- this.transferMarkup(candidate, candidate1);
184920
- candidate = candidate1;
184921
- }
184922
- if (!searchAllChains) {
184923
- const activeChain = this.findOrCreateTailChain();
184924
- if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))
184925
- activeChain.push(candidate);
184926
- else
184927
- this.pushNewChain(candidate);
184928
- }
184929
- else {
184930
- this._xyzWork0 = candidate.startPoint(this._xyzWork0);
184931
- let connect = this.findAnyChainToConnect(this._xyzWork0);
184932
- if (connect) {
184933
- if (connect.atEnd) {
184934
- this._chains[connect.chainIndex].push(candidate);
184935
- }
184936
- else {
184937
- candidate.reverseInPlace();
184938
- this._chains[connect.chainIndex].splice(0, 0, candidate);
184939
- }
184940
- }
184941
- else {
184942
- this._xyzWork0 = candidate.endPoint(this._xyzWork0);
184943
- connect = this.findAnyChainToConnect(this._xyzWork0);
184944
- if (connect) { // START of new primitive ..
184945
- if (connect.atEnd) {
184946
- candidate.reverseInPlace();
184947
- this._chains[connect.chainIndex].push(candidate);
184948
- }
184949
- else {
184950
- this._chains[connect.chainIndex].splice(0, 0, candidate);
184951
- }
184952
- }
184953
- else {
184954
- this._chains.push([candidate]);
184955
- }
184956
- }
184957
- }
184958
- }
184959
- }
184960
- /** Transfer markup (e.g. startCut, endCut) from source to destination */
184961
- transferMarkup(source, dest) {
184962
- if (source && dest) {
184963
- dest.startCut = source.startCut;
184964
- dest.endCut = source.endCut;
184965
- }
184966
- }
184967
- /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
184968
- * * The input array is assumed to be connected appropriately to act as the curves of a Path.
184969
- * * When a path is created the curves array is CAPTURED.
184970
- */
184971
- promoteArrayToCurves(curves, makeLoopIfClosed) {
184972
- if (curves.length === 0)
184973
- return undefined;
184974
- if (makeLoopIfClosed) {
184975
- ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);
184976
- ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);
184977
- if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))
184978
- return _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop.createArray(curves);
184979
- }
184980
- if (curves.length === 1)
184981
- return curves[0];
184982
- return _Path__WEBPACK_IMPORTED_MODULE_2__.Path.createArray(curves);
184983
- }
184984
- /** Return the collected results, structured as the simplest possible type. */
184985
- grabResult(makeLoopIfClosed = false) {
184986
- const chains = this._chains;
184987
- if (chains.length === 0)
184988
- return undefined;
184989
- if (chains.length === 1)
184990
- return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
184991
- const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.BagOfCurves.create();
184992
- for (const chain of chains) {
184993
- const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
184994
- bag.tryAddChild(q);
184995
- }
184996
- return bag;
184997
- }
184998
- /** test if there is a break between primitiveA and primitiveB, due to any condition such as
184999
- * * primitiveA.endCut
185000
- * * primitiveB.startCut
185001
- * * physical gap between primitives.
185002
- */
185003
- static needBreakBetweenPrimitives(primitiveA, primitiveB, isXYOnly = false) {
185004
- if (primitiveA === undefined)
185005
- return true;
185006
- if (primitiveB === undefined)
185007
- return true;
185008
- if (primitiveA.endCut !== undefined)
185009
- return true;
185010
- if (primitiveB.startCut !== undefined)
185011
- return true;
185012
- ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);
185013
- ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);
185014
- return isXYOnly
185015
- ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)
185016
- : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);
185017
- }
185018
- }
185019
-
185020
-
185021
184827
  /***/ }),
185022
184828
 
185023
184829
  /***/ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js":
@@ -185265,7 +185071,7 @@ __webpack_require__.r(__webpack_exports__);
185265
185071
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
185266
185072
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
185267
185073
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
185268
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
185074
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
185269
185075
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
185270
185076
  /*---------------------------------------------------------------------------------------------
185271
185077
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -185954,7 +185760,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
185954
185760
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
185955
185761
  */
185956
185762
  constructOffsetXY(offsetDistanceOrOptions) {
185957
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
185763
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
185958
185764
  const offsets = [];
185959
185765
  for (const prim of this.collectCurvePrimitives(undefined, true, true)) {
185960
185766
  const offset = prim.constructOffsetXY(options);
@@ -186043,8 +185849,8 @@ __webpack_require__.r(__webpack_exports__);
186043
185849
  * same plane).
186044
185850
  * - `Loop` - A chain required to close from last to first so that a planar area is enclosed (so curves have to
186045
185851
  * be on the same plane).
186046
- * - `ParityRegion` -- a collection of coplanar `Loop`s, with "in/out" classification by parity rules.
186047
- * - `UnionRegion` -- a collection of coplanar `Loop`s, with "in/out" classification by union rules.
185852
+ * - `ParityRegion` -- a collection of coplanar `Loop`, with "in/out" classification by parity rules.
185853
+ * - `UnionRegion` -- a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
186048
185854
  * - `BagOfCurves` -- a collection of `AnyCurve` with no implied structure.
186049
185855
  *
186050
185856
  * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
@@ -189992,6 +189798,183 @@ class CurveLocationDetailPair {
189992
189798
  }
189993
189799
 
189994
189800
 
189801
+ /***/ }),
189802
+
189803
+ /***/ "../../core/geometry/lib/esm/curve/CurveOps.js":
189804
+ /*!*****************************************************!*\
189805
+ !*** ../../core/geometry/lib/esm/curve/CurveOps.js ***!
189806
+ \*****************************************************/
189807
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
189808
+
189809
+ "use strict";
189810
+ __webpack_require__.r(__webpack_exports__);
189811
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
189812
+ /* harmony export */ CurveOps: () => (/* binding */ CurveOps)
189813
+ /* harmony export */ });
189814
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
189815
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
189816
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
189817
+ /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
189818
+ /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
189819
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
189820
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
189821
+ /*---------------------------------------------------------------------------------------------
189822
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
189823
+ * See LICENSE.md in the project root for license terms and full copyright notice.
189824
+ *--------------------------------------------------------------------------------------------*/
189825
+ /** @packageDocumentation
189826
+ * @module Curve
189827
+ */
189828
+
189829
+
189830
+
189831
+
189832
+
189833
+
189834
+
189835
+ /**
189836
+ * Static methods for miscellaneous curve operations.
189837
+ * @public
189838
+ */
189839
+ class CurveOps {
189840
+ /** Recursively sum curve lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level. */
189841
+ static sumLengths(curves) {
189842
+ let mySum = 0;
189843
+ if (curves instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive) {
189844
+ mySum += curves.curveLength();
189845
+ }
189846
+ else if (curves instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_1__.CurveCollection) {
189847
+ mySum += curves.sumLengths();
189848
+ }
189849
+ else if (Array.isArray(curves)) {
189850
+ for (const data1 of curves)
189851
+ mySum += this.sumLengths(data1);
189852
+ }
189853
+ return mySum;
189854
+ }
189855
+ /** Recursively extend the range by each curve's range, allowing CurvePrimitive, CurveCollection, or array of such at any level. */
189856
+ static extendRange(range, curves) {
189857
+ if (Array.isArray(curves)) {
189858
+ for (const data1 of curves)
189859
+ this.extendRange(range, data1);
189860
+ }
189861
+ else {
189862
+ curves.extendRange(range);
189863
+ }
189864
+ return range;
189865
+ }
189866
+ /**
189867
+ * Construct a separate xy-offset for each input curve.
189868
+ * * For best offset results, the inputs should be parallel to the xy-plane.
189869
+ * @param curves input curve(s), z-coordinates ignored. Only [[ChainTypes]] are handled.
189870
+ * @param offset offset distance (positive to left of curve, negative to right)
189871
+ * @param result array to collect offset curves
189872
+ * @returns summed length of offset curves
189873
+ */
189874
+ static appendXYOffsets(curves, offset, result) {
189875
+ let summedLengths = 0;
189876
+ if (curves instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive) {
189877
+ const resultA = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(_Path__WEBPACK_IMPORTED_MODULE_3__.Path.create(curves), offset);
189878
+ if (resultA) {
189879
+ summedLengths += this.sumLengths(resultA);
189880
+ result.push(resultA);
189881
+ }
189882
+ }
189883
+ else if (curves instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop || curves instanceof _Path__WEBPACK_IMPORTED_MODULE_3__.Path) {
189884
+ const resultA = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offset);
189885
+ if (resultA) {
189886
+ summedLengths += this.sumLengths(resultA);
189887
+ result.push(resultA);
189888
+ }
189889
+ }
189890
+ else if (curves instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_1__.BagOfCurves) {
189891
+ for (const q of curves.children)
189892
+ summedLengths += this.appendXYOffsets(q, offset, result);
189893
+ }
189894
+ else if (Array.isArray(curves)) {
189895
+ for (const q of curves)
189896
+ summedLengths += this.appendXYOffsets(q, offset, result);
189897
+ }
189898
+ return summedLengths;
189899
+ }
189900
+ /**
189901
+ * Restructure curve fragments as Paths and Loops, and construct xy-offsets of the chains.
189902
+ * * If the inputs do not form Loop(s), the classification of offsets is suspect.
189903
+ * * For best offset results, the inputs should be parallel to the xy-plane.
189904
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
189905
+ * @param fragments fragments to be chained and offset
189906
+ * @param offsetDistance offset distance, applied to both sides of each fragment to produce inside and outside xy-offset curves.
189907
+ * @param gapTolerance distance to be treated as "effectively zero" when joining head-to-tail
189908
+ * @returns object with named chains, insideOffsets, outsideOffsets
189909
+ */
189910
+ static collectInsideAndOutsideXYOffsets(fragments, offsetDistance, gapTolerance) {
189911
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance);
189912
+ for (const s of fragments) {
189913
+ collector.captureCurve(s);
189914
+ }
189915
+ const chains = collector.grabResult(true);
189916
+ const myOffsetA = [];
189917
+ const myOffsetB = [];
189918
+ const offsetLengthA = CurveOps.appendXYOffsets(chains, offsetDistance, myOffsetA);
189919
+ const offsetLengthB = CurveOps.appendXYOffsets(chains, -offsetDistance, myOffsetB);
189920
+ if (offsetLengthA > offsetLengthB) {
189921
+ return { outsideOffsets: myOffsetA, insideOffsets: myOffsetB, chains };
189922
+ }
189923
+ else {
189924
+ return { insideOffsets: myOffsetA, outsideOffsets: myOffsetB, chains };
189925
+ }
189926
+ }
189927
+ /**
189928
+ * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
189929
+ * * The construction will remove "some" local effects of features smaller than the offset distance, but will not detect self intersection among widely separated edges.
189930
+ * @param curves base curves.
189931
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
189932
+ */
189933
+ static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
189934
+ return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
189935
+ }
189936
+ /**
189937
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
189938
+ * @param curve primitive to offset
189939
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
189940
+ */
189941
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
189942
+ return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions);
189943
+ }
189944
+ /**
189945
+ * Restructure curve fragments as Paths and Loops.
189946
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
189947
+ * @param fragments fragments to be chained
189948
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
189949
+ * @param planeTolerance tolerance for considering a closed chain to be planar. If undefined, only create Path. If defined, create Loops for closed chains within tolerance of a plane.
189950
+ * @returns chains, possibly wrapped in a [[BagOfCurves]].
189951
+ */
189952
+ static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance) {
189953
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance, planeTolerance);
189954
+ for (const s of fragments) {
189955
+ collector.captureCurve(s);
189956
+ }
189957
+ return collector.grabResult(true);
189958
+ }
189959
+ /**
189960
+ * Restructure curve fragments as Paths and Loops, to be stroked and passed into the callback.
189961
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
189962
+ * @param fragments fragments to be chained and stroked
189963
+ * @param announceChain callback to process each stroked Path and Loop
189964
+ * @param strokeOptions options for stroking the chains
189965
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail. Also used for removing duplicate points in the stroked chains.
189966
+ * @param planeTolerance tolerance for considering a closed chain to be planar. If undefined, only create Path. If defined, create Loops for closed chains within tolerance of a plane.
189967
+ */
189968
+ static collectChainsAsLineString3d(fragments, announceChain, strokeOptions, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance) {
189969
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance, planeTolerance);
189970
+ for (const s of fragments) {
189971
+ collector.captureCurve(s);
189972
+ }
189973
+ collector.announceChainsAsLineString3d(announceChain, strokeOptions);
189974
+ }
189975
+ }
189976
+
189977
+
189995
189978
  /***/ }),
189996
189979
 
189997
189980
  /***/ "../../core/geometry/lib/esm/curve/CurvePrimitive.js":
@@ -190884,7 +190867,7 @@ __webpack_require__.r(__webpack_exports__);
190884
190867
  * @public
190885
190868
  */
190886
190869
  class GeometryQuery {
190887
- /** Return the range of the entire (tree) GeometryQuery */
190870
+ /** Return the range of the entire GeometryQuery tree */
190888
190871
  range(transform, result) {
190889
190872
  if (result)
190890
190873
  result.setNull();
@@ -190932,7 +190915,7 @@ class GeometryQuery {
190932
190915
  return false;
190933
190916
  }
190934
190917
  /**
190935
- * Apply instance method isAlmostEqual if both are defined.
190918
+ * Apply instance method [[isAlmostEqual]] if both are defined.
190936
190919
  * * both undefined returns true
190937
190920
  * * single defined returns false
190938
190921
  */
@@ -190969,7 +190952,7 @@ __webpack_require__.r(__webpack_exports__);
190969
190952
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
190970
190953
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
190971
190954
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
190972
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
190955
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
190973
190956
  /*---------------------------------------------------------------------------------------------
190974
190957
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
190975
190958
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -191349,7 +191332,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
191349
191332
  const offsetVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Vector3d.createStartEnd(this._point0, this._point1);
191350
191333
  if (offsetVec.normalizeInPlace()) {
191351
191334
  offsetVec.rotate90CCWXY(offsetVec);
191352
- const offsetDist = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.getOffsetDistance(offsetDistanceOrOptions);
191335
+ const offsetDist = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.getOffsetDistance(offsetDistanceOrOptions);
191353
191336
  return LineSegment3d.create(this._point0.plusScaled(offsetVec, offsetDist), this._point1.plusScaled(offsetVec, offsetDist));
191354
191337
  }
191355
191338
  return undefined;
@@ -191398,8 +191381,8 @@ __webpack_require__.r(__webpack_exports__);
191398
191381
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
191399
191382
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
191400
191383
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
191401
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
191402
191384
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
191385
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
191403
191386
  /* harmony import */ var _Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
191404
191387
 
191405
191388
 
@@ -192737,7 +192720,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
192737
192720
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
192738
192721
  */
192739
192722
  constructOffsetXY(offsetDistanceOrOptions) {
192740
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
192723
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
192741
192724
  const offsets = [];
192742
192725
  for (const seg of this.collectCurvePrimitives(undefined, true, true)) {
192743
192726
  const offset = seg.constructOffsetXY(options);
@@ -192977,6 +192960,184 @@ class LoopCurveLoopCurve {
192977
192960
  }
192978
192961
 
192979
192962
 
192963
+ /***/ }),
192964
+
192965
+ /***/ "../../core/geometry/lib/esm/curve/OffsetOptions.js":
192966
+ /*!**********************************************************!*\
192967
+ !*** ../../core/geometry/lib/esm/curve/OffsetOptions.js ***!
192968
+ \**********************************************************/
192969
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
192970
+
192971
+ "use strict";
192972
+ __webpack_require__.r(__webpack_exports__);
192973
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
192974
+ /* harmony export */ JointOptions: () => (/* binding */ JointOptions),
192975
+ /* harmony export */ OffsetOptions: () => (/* binding */ OffsetOptions)
192976
+ /* harmony export */ });
192977
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
192978
+ /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
192979
+ /*---------------------------------------------------------------------------------------------
192980
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
192981
+ * See LICENSE.md in the project root for license terms and full copyright notice.
192982
+ *--------------------------------------------------------------------------------------------*/
192983
+ /** @packageDocumentation
192984
+ * @module Curve
192985
+ */
192986
+
192987
+
192988
+ /**
192989
+ * Control parameters for joint construction, used in offset construction methods such as [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].
192990
+ * * Define a "joint" as the common point between adjacent segments of the input curve.
192991
+ * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
192992
+ * the segments at the joint.
192993
+ * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
192994
+ * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
192995
+ * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
192996
+ * single intersection point (to create a sharp corner).
192997
+ * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
192998
+ * * lie outside the arc that would have been created by the first construction
192999
+ * * have uniform turn angle less than `options.maxChamferDegrees`
193000
+ * * touch the arc at their midpoint (except first and last edge).
193001
+ * @public
193002
+ */
193003
+ class JointOptions {
193004
+ /**
193005
+ * Construct JointOptions.
193006
+ * * leftOffsetDistance is required
193007
+ * * minArcDegrees and maxChamferDegrees are optional.
193008
+ */
193009
+ constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
193010
+ /**
193011
+ * Smallest arc to construct.
193012
+ * * If this control angle is 180 degrees or more, arcs are never created.
193013
+ */
193014
+ this.minArcDegrees = 180.0;
193015
+ /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
193016
+ this.maxChamferTurnDegrees = 90;
193017
+ /**
193018
+ * Whether to remove the internal turn angle upper bound for sharp corner construction.
193019
+ * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
193020
+ * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
193021
+ * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
193022
+ * up to `maxChamferTurnDegrees`.
193023
+ * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
193024
+ * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
193025
+ */
193026
+ this.allowSharpestCorners = false;
193027
+ /** Offset distance, positive to left of base curve. */
193028
+ this.leftOffsetDistance = 0;
193029
+ /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
193030
+ this.preserveEllipticalArcs = false;
193031
+ this.leftOffsetDistance = leftOffsetDistance;
193032
+ this.minArcDegrees = minArcDegrees;
193033
+ this.maxChamferTurnDegrees = maxChamferDegrees;
193034
+ this.preserveEllipticalArcs = preserveEllipticalArcs;
193035
+ this.allowSharpestCorners = allowSharpestCorners;
193036
+ }
193037
+ /** Return a deep clone. */
193038
+ clone() {
193039
+ return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
193040
+ }
193041
+ /** Copy values of input options */
193042
+ setFrom(other) {
193043
+ this.leftOffsetDistance = other.leftOffsetDistance;
193044
+ this.minArcDegrees = other.minArcDegrees;
193045
+ this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
193046
+ this.preserveEllipticalArcs = other.preserveEllipticalArcs;
193047
+ this.allowSharpestCorners = other.allowSharpestCorners;
193048
+ }
193049
+ /**
193050
+ * Parse a number or JointOptions up to JointOptions:
193051
+ * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
193052
+ * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
193053
+ * @param leftOffsetDistanceOrOptions
193054
+ */
193055
+ static create(leftOffsetDistanceOrOptions) {
193056
+ if (leftOffsetDistanceOrOptions instanceof JointOptions)
193057
+ return leftOffsetDistanceOrOptions;
193058
+ return new JointOptions(leftOffsetDistanceOrOptions);
193059
+ }
193060
+ /** Return true if the options indicate this amount of turn should be handled with an arc. */
193061
+ needArc(theta) {
193062
+ return Math.abs(theta.degrees) >= this.minArcDegrees;
193063
+ }
193064
+ /** Return the number of corners needed to chamfer the given turn angle. */
193065
+ numChamferPoints(theta) {
193066
+ const degrees = Math.abs(theta.degrees);
193067
+ const minStepDegreesClamp = 10;
193068
+ let maxStepDegreesClamp = 120;
193069
+ if (this.allowSharpestCorners) {
193070
+ maxStepDegreesClamp = this.maxChamferTurnDegrees;
193071
+ }
193072
+ const stepDegrees = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
193073
+ if (degrees <= stepDegrees)
193074
+ return 1;
193075
+ return Math.ceil(degrees / stepDegrees);
193076
+ }
193077
+ }
193078
+ /**
193079
+ * Options for offsetting a curve, used in offset construction methods such as [[CurvePrimitive.constructOffsetXY]], [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].
193080
+ * @public
193081
+ */
193082
+ class OffsetOptions {
193083
+ /** Options that are provided are captured. */
193084
+ constructor(offsetDistanceOrOptions, strokeOptions) {
193085
+ this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
193086
+ this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__.StrokeOptions.createForCurves();
193087
+ }
193088
+ get minArcDegrees() {
193089
+ return this.jointOptions.minArcDegrees;
193090
+ }
193091
+ set minArcDegrees(value) {
193092
+ this.jointOptions.minArcDegrees = value;
193093
+ }
193094
+ get maxChamferTurnDegrees() {
193095
+ return this.jointOptions.maxChamferTurnDegrees;
193096
+ }
193097
+ set maxChamferTurnDegrees(value) {
193098
+ this.jointOptions.maxChamferTurnDegrees = value;
193099
+ }
193100
+ get allowSharpestCorners() {
193101
+ return this.jointOptions.allowSharpestCorners;
193102
+ }
193103
+ set allowSharpestCorners(value) {
193104
+ this.jointOptions.allowSharpestCorners = value;
193105
+ }
193106
+ get leftOffsetDistance() {
193107
+ return this.jointOptions.leftOffsetDistance;
193108
+ }
193109
+ set leftOffsetDistance(value) {
193110
+ this.jointOptions.leftOffsetDistance = value;
193111
+ }
193112
+ get preserveEllipticalArcs() {
193113
+ return this.jointOptions.preserveEllipticalArcs;
193114
+ }
193115
+ set preserveEllipticalArcs(value) {
193116
+ this.jointOptions.preserveEllipticalArcs = value;
193117
+ }
193118
+ /**
193119
+ * Convert variant input into OffsetOptions.
193120
+ * * If a JointOptions is provided, it is captured.
193121
+ * * If an OffsetOptions is provided, a reference to it is returned.
193122
+ */
193123
+ static create(offsetDistanceOrOptions) {
193124
+ if (offsetDistanceOrOptions instanceof OffsetOptions)
193125
+ return offsetDistanceOrOptions;
193126
+ return new OffsetOptions(offsetDistanceOrOptions);
193127
+ }
193128
+ /** Convert variant input into offset distance */
193129
+ static getOffsetDistance(offsetDistanceOrOptions) {
193130
+ if (typeof offsetDistanceOrOptions === "number")
193131
+ return offsetDistanceOrOptions;
193132
+ return offsetDistanceOrOptions.leftOffsetDistance;
193133
+ }
193134
+ /** Return a deep clone. */
193135
+ clone() {
193136
+ return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
193137
+ }
193138
+ }
193139
+
193140
+
192980
193141
  /***/ }),
192981
193142
 
192982
193143
  /***/ "../../core/geometry/lib/esm/curve/ParityRegion.js":
@@ -195122,32 +195283,33 @@ __webpack_require__.r(__webpack_exports__);
195122
195283
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195123
195284
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
195124
195285
  /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
195125
- /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
195286
+ /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
195126
195287
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195127
- /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
195128
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
195129
- /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
195130
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
195288
+ /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
195289
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
195290
+ /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
195291
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
195131
195292
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
195132
195293
  /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
195133
195294
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
195134
195295
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
195135
195296
  /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
195136
- /* harmony import */ var _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ChainCollectorContext */ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js");
195137
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195138
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195139
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195297
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195298
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195299
+ /* harmony import */ var _CurveOps__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
195300
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195140
195301
  /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
195141
- /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
195142
- /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
195302
+ /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
195303
+ /* harmony import */ var _internalContexts_ChainCollectorContext__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./internalContexts/ChainCollectorContext */ "../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js");
195143
195304
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
195144
195305
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195145
195306
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
195307
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
195146
195308
  /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
195147
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
195148
- /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
195149
- /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
195150
- /* harmony import */ var _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Query/InOutTests */ "../../core/geometry/lib/esm/curve/Query/InOutTests.js");
195309
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
195310
+ /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
195311
+ /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
195312
+ /* harmony import */ var _Query_InOutTests__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Query/InOutTests */ "../../core/geometry/lib/esm/curve/Query/InOutTests.js");
195151
195313
  /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
195152
195314
  /* harmony import */ var _RegionMomentsXY__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
195153
195315
  /* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
@@ -195190,6 +195352,7 @@ __webpack_require__.r(__webpack_exports__);
195190
195352
 
195191
195353
 
195192
195354
 
195355
+
195193
195356
 
195194
195357
 
195195
195358
  /**
@@ -195468,8 +195631,6 @@ class RegionOps {
195468
195631
  * the xy-plane.
195469
195632
  * * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not
195470
195633
  * guarantee a simple area offset.
195471
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
195472
- * * See [[JointOptions]] class doc for offset construction rules.
195473
195634
  * @param points a single loop or path
195474
195635
  * @param wrap true to include wraparound
195475
195636
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or JointOptions
@@ -195483,14 +195644,13 @@ class RegionOps {
195483
195644
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
195484
195645
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
195485
195646
  * not detect self intersection among widely separated edges.
195486
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
195487
- * * See [[JointOptions]] class doc for offset construction rules.
195488
195647
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
195489
195648
  * @param curves base curves.
195490
195649
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
195491
195650
  */
195492
195651
  static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
195493
- return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
195652
+ const offsetOptions = _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__.OffsetOptions.create(offsetDistanceOrOptions);
195653
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.constructCurveXYOffset(curves, offsetOptions);
195494
195654
  }
195495
195655
  /**
195496
195656
  * Test if point (x,y) is IN, OUT or ON a region.
@@ -195500,7 +195660,7 @@ class RegionOps {
195500
195660
  * @param y y coordinate of point to test
195501
195661
  */
195502
195662
  static testPointInOnOutRegionXY(curves, x, y) {
195503
- return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
195663
+ return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_20__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
195504
195664
  }
195505
195665
  /**
195506
195666
  * Create curve collection of subtype determined by gaps between the input curves.
@@ -195524,11 +195684,11 @@ class RegionOps {
195524
195684
  maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));
195525
195685
  let collection;
195526
195686
  if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(maxGap)) {
195527
- collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_19__.Path.create();
195687
+ collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_21__.Path.create();
195528
195688
  isPath = true;
195529
195689
  }
195530
195690
  else {
195531
- collection = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.BagOfCurves.create();
195691
+ collection = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.BagOfCurves.create();
195532
195692
  }
195533
195693
  for (const c of curves)
195534
195694
  collection.tryAddChild(c);
@@ -195553,7 +195713,7 @@ class RegionOps {
195553
195713
  * @param cutterCurves input curves to intersect with `curvesToCut`
195554
195714
  */
195555
195715
  static cloneCurvesWithXYSplits(curvesToCut, cutterCurves) {
195556
- return _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__.CurveSplitContext.cloneCurvesWithXYSplits(curvesToCut, cutterCurves);
195716
+ return _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_23__.CurveSplitContext.cloneCurvesWithXYSplits(curvesToCut, cutterCurves);
195557
195717
  }
195558
195718
  /**
195559
195719
  * Create paths assembled from many curves.
@@ -195564,35 +195724,36 @@ class RegionOps {
195564
195724
  static splitToPathsBetweenBreaks(source, makeClones) {
195565
195725
  if (source === undefined)
195566
195726
  return undefined;
195567
- if (source instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive)
195727
+ if (source instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive)
195568
195728
  return source;
195569
195729
  // source is a collection . ..
195570
195730
  const primitives = source.collectCurvePrimitives();
195571
- const chainCollector = new _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__.ChainCollectorContext(makeClones);
195731
+ const chainCollector = new _internalContexts_ChainCollectorContext__WEBPACK_IMPORTED_MODULE_25__.ChainCollectorContext(makeClones);
195572
195732
  for (const primitive of primitives) {
195573
195733
  chainCollector.announceCurvePrimitive(primitive);
195574
195734
  }
195575
195735
  return chainCollector.grabResult();
195576
195736
  }
195577
195737
  /**
195578
- * Restructure curve fragments as chains, and construct (left and right) chain offsets in the xy-plane.
195579
- * * BEWARE that if the input is not a loop, the classification of outputs is suspect.
195580
- * @param fragments fragments to be chained, z-coordinates ignored
195581
- * @param offsetDistance offset distance
195582
- * @param gapTolerance absolute endpoint tolerance for computing chains
195738
+ * Restructure curve fragments as Paths and Loops, and construct xy-offsets of the chains.
195739
+ * * If the inputs do not form Loop(s), the classification of offsets is suspect.
195740
+ * * For best offset results, the inputs should be parallel to the xy-plane.
195741
+ * @param fragments fragments to be chained and offset
195742
+ * @param offsetDistance offset distance, applied to both sides of each fragment to produce inside and outside xy-offset curves.
195743
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
195583
195744
  * @returns object with named chains, insideOffsets, outsideOffsets
195584
195745
  */
195585
195746
  static collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance) {
195586
- return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance);
195747
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.collectInsideAndOutsideXYOffsets(fragments, offsetDistance, gapTolerance);
195587
195748
  }
195588
195749
  /**
195589
- * Restructure curve fragments as chains.
195750
+ * Restructure curve fragments as Paths and Loops.
195590
195751
  * @param fragments fragments to be chained
195591
- * @param gapTolerance absolute endpoint tolerance for computing chains
195592
- * @returns chains, possibly wrapped in BagOfCurves if there multiple chains
195752
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
195753
+ * @returns chains, possibly wrapped in a [[BagOfCurves]].
195593
195754
  */
195594
195755
  static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
195595
- return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectChains(fragments, gapTolerance);
195756
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.collectChains(fragments, gapTolerance);
195596
195757
  }
195597
195758
  /**
195598
195759
  * Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments
@@ -195604,17 +195765,17 @@ class RegionOps {
195604
195765
  const result = { insideParts: [], outsideParts: [], coincidentParts: [] };
195605
195766
  const pathWithIntersectionMarkup = RegionOps.cloneCurvesWithXYSplits(curvesToCut, region);
195606
195767
  const splitPaths = RegionOps.splitToPathsBetweenBreaks(pathWithIntersectionMarkup, true);
195607
- if (splitPaths instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection) {
195768
+ if (splitPaths instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection) {
195608
195769
  for (const child of splitPaths.children) {
195609
- const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(child);
195770
+ const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(child);
195610
195771
  if (pointOnChild) {
195611
195772
  const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);
195612
195773
  pushToInOnOutArrays(child, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);
195613
195774
  }
195614
195775
  }
195615
195776
  }
195616
- else if (splitPaths instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive) {
195617
- const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(splitPaths);
195777
+ else if (splitPaths instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive) {
195778
+ const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(splitPaths);
195618
195779
  if (pointOnChild) {
195619
195780
  const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);
195620
195781
  pushToInOnOutArrays(splitPaths, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);
@@ -195656,7 +195817,7 @@ class RegionOps {
195656
195817
  }
195657
195818
  else {
195658
195819
  dataToUse = _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray.create(data);
195659
- _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
195820
+ _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_26__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
195660
195821
  if (dataToUse.length < (requireClosurePoint ? 5 : 4))
195661
195822
  return undefined;
195662
195823
  }
@@ -195667,19 +195828,19 @@ class RegionOps {
195667
195828
  if (normalVector.normalizeInPlace()
195668
195829
  && vector12.isAlmostEqual(vector03)
195669
195830
  && vector01.isPerpendicularTo(vector03)) {
195670
- return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__.Transform.createOriginAndMatrixColumns(dataToUse.getPoint3dAtUncheckedPointIndex(0), vector01, vector03, normalVector);
195831
+ return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_27__.Transform.createOriginAndMatrixColumns(dataToUse.getPoint3dAtUncheckedPointIndex(0), vector01, vector03, normalVector);
195671
195832
  }
195672
195833
  }
195673
195834
  else if (Array.isArray(data)) {
195674
- return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayCarrier(data), requireClosurePoint);
195835
+ return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_28__.Point3dArrayCarrier(data), requireClosurePoint);
195675
195836
  }
195676
195837
  else if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
195677
195838
  return this.rectangleEdgeTransform(data.children[0].packedPoints, true);
195678
195839
  }
195679
- else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_19__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
195840
+ else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_21__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
195680
195841
  return this.rectangleEdgeTransform(data.children[0].packedPoints, requireClosurePoint);
195681
195842
  }
195682
- else if (data instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveChain) {
195843
+ else if (data instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveChain) {
195683
195844
  if (!data.checkForNonLinearPrimitives()) {
195684
195845
  // const linestring = LineString3d.create();
195685
195846
  const strokes = data.getPackedStrokes();
@@ -195703,7 +195864,7 @@ class RegionOps {
195703
195864
  * @param options options for tolerance and selective simplification.
195704
195865
  */
195705
195866
  static consolidateAdjacentPrimitives(curves, options) {
195706
- const context = new _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__.ConsolidateAdjacentCurvePrimitivesContext(options);
195867
+ const context = new _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_29__.ConsolidateAdjacentCurvePrimitivesContext(options);
195707
195868
  curves.dispatchToGeometryHandler(context);
195708
195869
  }
195709
195870
  /**
@@ -195722,13 +195883,13 @@ class RegionOps {
195722
195883
  const loopAndArea = [];
195723
195884
  for (const candidate of loops) {
195724
195885
  if (candidate instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop)
195725
- _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, candidate);
195886
+ _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.pushLoop(loopAndArea, candidate);
195726
195887
  else if (candidate instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
195727
195888
  const loop = _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(candidate);
195728
- _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, loop);
195889
+ _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.pushLoop(loopAndArea, loop);
195729
195890
  }
195730
195891
  }
195731
- return _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.sortAsAnyRegion(loopAndArea);
195892
+ return _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.sortAsAnyRegion(loopAndArea);
195732
195893
  }
195733
195894
  /**
195734
195895
  * Find all areas bounded by the unstructured, possibly intersecting curves.
@@ -195753,7 +195914,7 @@ class RegionOps {
195753
195914
  const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
195754
195915
  const range = this.curveArrayRange(primitives);
195755
195916
  const areaTol = this.computeXYAreaTolerance(range, tolerance);
195756
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_30__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
195917
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_31__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
195757
195918
  const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.assembleHalfEdgeGraph(primitives, intersections, tolerance);
195758
195919
  return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);
195759
195920
  }
@@ -195770,10 +195931,10 @@ class RegionOps {
195770
195931
  */
195771
195932
  static collectCurvePrimitives(candidates, collectorArray, smallestPossiblePrimitives = false, explodeLinestrings = false) {
195772
195933
  const results = collectorArray === undefined ? [] : collectorArray;
195773
- if (candidates instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive) {
195934
+ if (candidates instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive) {
195774
195935
  candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);
195775
195936
  }
195776
- else if (candidates instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection) {
195937
+ else if (candidates instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection) {
195777
195938
  candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);
195778
195939
  }
195779
195940
  else if (Array.isArray(candidates)) {
@@ -195811,12 +195972,12 @@ class RegionOps {
195811
195972
  * @param worldToLocal transform to apply to data before computing its range
195812
195973
  */
195813
195974
  static curveArrayRange(data, worldToLocal) {
195814
- const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__.Range3d.create();
195815
- if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
195975
+ const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_32__.Range3d.create();
195976
+ if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__.GeometryQuery)
195816
195977
  data.extendRange(range, worldToLocal);
195817
195978
  else if (Array.isArray(data)) {
195818
195979
  for (const c of data) {
195819
- if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
195980
+ if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__.GeometryQuery)
195820
195981
  c.extendRange(range, worldToLocal);
195821
195982
  else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__.Point3d)
195822
195983
  range.extendPoint(c, worldToLocal);
@@ -196123,7 +196284,7 @@ class RegionOpsFaceToFaceSearch {
196123
196284
  const baseMask = _topology_Graph__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeMask.BOUNDARY_EDGE | _topology_Graph__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeMask.PRIMARY_EDGE;
196124
196285
  const callbacks = RegionBooleanContext.create(opA, opB);
196125
196286
  callbacks.graph = graph;
196126
- callbacks.faceAreaFunction = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea;
196287
+ callbacks.faceAreaFunction = (node) => _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea(node);
196127
196288
  // Add all the members in groupA ..
196128
196289
  for (const data of dataA) {
196129
196290
  if (data.length > 2) {
@@ -196568,7 +196729,7 @@ class GraphComponent {
196568
196729
  }
196569
196730
  this.faceAreas.length = 0;
196570
196731
  if (!faceAreaFunction)
196571
- faceAreaFunction = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea;
196732
+ faceAreaFunction = (node) => _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea(node);
196572
196733
  for (const f of this.faces) {
196573
196734
  this.faceAreas.push(faceAreaFunction(f));
196574
196735
  }
@@ -197066,6 +197227,199 @@ class AppendPlaneIntersectionStrokeHandler extends _NewtonRtoRStrokeHandler__WEB
197066
197227
  }
197067
197228
 
197068
197229
 
197230
+ /***/ }),
197231
+
197232
+ /***/ "../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js":
197233
+ /*!***********************************************************************************!*\
197234
+ !*** ../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js ***!
197235
+ \***********************************************************************************/
197236
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
197237
+
197238
+ "use strict";
197239
+ __webpack_require__.r(__webpack_exports__);
197240
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
197241
+ /* harmony export */ ChainCollectorContext: () => (/* binding */ ChainCollectorContext)
197242
+ /* harmony export */ });
197243
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
197244
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
197245
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
197246
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
197247
+ /*---------------------------------------------------------------------------------------------
197248
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
197249
+ * See LICENSE.md in the project root for license terms and full copyright notice.
197250
+ *--------------------------------------------------------------------------------------------*/
197251
+
197252
+
197253
+
197254
+
197255
+ /**
197256
+ * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
197257
+ * * The caller makes a sequence of calls to announce individual primitives.
197258
+ * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`
197259
+ * * (a) "simple chains" -- the caller has the curve primitives in order and just needs to have them monitored for coordinate breaks that indicate transition to a new chain.
197260
+ * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.
197261
+ * * (b) "mixed" primitives -- primitive order is NOT significant for chain assembly.
197262
+ * * The collector needs to search all prior paths at both start and end, and consider connection to both the start and end of each new primitive.
197263
+ * * The per-curve announcement is
197264
+ * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
197265
+ * * When all curves have been announced, the call to grab the paths option
197266
+ * * formLoopsIfClosed
197267
+ * * If true, convert closed paths to `Loop`, open paths to `Path`
197268
+ * * If false, convert all paths (open or not) to `Path`
197269
+ * * Usage pattern is
197270
+ * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
197271
+ * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`
197272
+ * * end: ` result = context.grabResults (formLoopsIfClosed)`
197273
+ * @internal
197274
+ */
197275
+ class ChainCollectorContext {
197276
+ /**
197277
+ * Push a new chain with an optional first primitive.
197278
+ */
197279
+ pushNewChain(primitive) {
197280
+ const chain = [];
197281
+ if (primitive)
197282
+ chain.push(primitive);
197283
+ this._chains.push(chain);
197284
+ }
197285
+ findOrCreateTailChain() {
197286
+ if (this._chains.length === 0)
197287
+ this.pushNewChain();
197288
+ return this._chains[this._chains.length - 1];
197289
+ }
197290
+ findAnyChainToConnect(xyz) {
197291
+ for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
197292
+ const path = this._chains[chainIndexA];
197293
+ this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);
197294
+ if (this._xyzWork1.isAlmostEqual(xyz))
197295
+ return { chainIndex: chainIndexA, atEnd: true };
197296
+ this._xyzWork1 = path[0].startPoint(this._xyzWork1);
197297
+ if (this._xyzWork1.isAlmostEqual(xyz))
197298
+ return { chainIndex: chainIndexA, atEnd: false };
197299
+ }
197300
+ return undefined;
197301
+ }
197302
+ /** Initialize with an empty array of chains.
197303
+ * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.
197304
+ */
197305
+ constructor(makeClones) {
197306
+ this._chains = [];
197307
+ this._makeClones = makeClones;
197308
+ }
197309
+ /** Announce a curve primitive
197310
+ * * searchAllChains controls the extent of search for connecting points.
197311
+ * * false ==> only consider connection to most recent chain.
197312
+ * * true ==> search for any connection, reversing direction as needed.
197313
+ * * Otherwise start a new chain.
197314
+ */
197315
+ announceCurvePrimitive(candidate, searchAllChains = false) {
197316
+ if (candidate) {
197317
+ if (this._makeClones) {
197318
+ const candidate1 = candidate.clone();
197319
+ if (!candidate1 || !(candidate1 instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive))
197320
+ return;
197321
+ this.transferMarkup(candidate, candidate1);
197322
+ candidate = candidate1;
197323
+ }
197324
+ if (!searchAllChains) {
197325
+ const activeChain = this.findOrCreateTailChain();
197326
+ if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))
197327
+ activeChain.push(candidate);
197328
+ else
197329
+ this.pushNewChain(candidate);
197330
+ }
197331
+ else {
197332
+ this._xyzWork0 = candidate.startPoint(this._xyzWork0);
197333
+ let connect = this.findAnyChainToConnect(this._xyzWork0);
197334
+ if (connect) {
197335
+ if (connect.atEnd) {
197336
+ this._chains[connect.chainIndex].push(candidate);
197337
+ }
197338
+ else {
197339
+ candidate.reverseInPlace();
197340
+ this._chains[connect.chainIndex].splice(0, 0, candidate);
197341
+ }
197342
+ }
197343
+ else {
197344
+ this._xyzWork0 = candidate.endPoint(this._xyzWork0);
197345
+ connect = this.findAnyChainToConnect(this._xyzWork0);
197346
+ if (connect) { // START of new primitive ..
197347
+ if (connect.atEnd) {
197348
+ candidate.reverseInPlace();
197349
+ this._chains[connect.chainIndex].push(candidate);
197350
+ }
197351
+ else {
197352
+ this._chains[connect.chainIndex].splice(0, 0, candidate);
197353
+ }
197354
+ }
197355
+ else {
197356
+ this._chains.push([candidate]);
197357
+ }
197358
+ }
197359
+ }
197360
+ }
197361
+ }
197362
+ /** Transfer markup (e.g. startCut, endCut) from source to destination */
197363
+ transferMarkup(source, dest) {
197364
+ if (source && dest) {
197365
+ dest.startCut = source.startCut;
197366
+ dest.endCut = source.endCut;
197367
+ }
197368
+ }
197369
+ /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
197370
+ * * The input array is assumed to be connected appropriately to act as the curves of a Path.
197371
+ * * When a path is created the curves array is CAPTURED.
197372
+ */
197373
+ promoteArrayToCurves(curves, makeLoopIfClosed) {
197374
+ if (curves.length === 0)
197375
+ return undefined;
197376
+ if (makeLoopIfClosed) {
197377
+ ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);
197378
+ ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);
197379
+ if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))
197380
+ return _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop.createArray(curves);
197381
+ }
197382
+ if (curves.length === 1)
197383
+ return curves[0];
197384
+ return _Path__WEBPACK_IMPORTED_MODULE_2__.Path.createArray(curves);
197385
+ }
197386
+ /** Return the collected results, structured as the simplest possible type. */
197387
+ grabResult(makeLoopIfClosed = false) {
197388
+ const chains = this._chains;
197389
+ if (chains.length === 0)
197390
+ return undefined;
197391
+ if (chains.length === 1)
197392
+ return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
197393
+ const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.BagOfCurves.create();
197394
+ for (const chain of chains) {
197395
+ const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
197396
+ bag.tryAddChild(q);
197397
+ }
197398
+ return bag;
197399
+ }
197400
+ /** test if there is a break between primitiveA and primitiveB, due to any condition such as
197401
+ * * primitiveA.endCut
197402
+ * * primitiveB.startCut
197403
+ * * physical gap between primitives.
197404
+ */
197405
+ static needBreakBetweenPrimitives(primitiveA, primitiveB, isXYOnly = false) {
197406
+ if (primitiveA === undefined)
197407
+ return true;
197408
+ if (primitiveB === undefined)
197409
+ return true;
197410
+ if (primitiveA.endCut !== undefined)
197411
+ return true;
197412
+ if (primitiveB.startCut !== undefined)
197413
+ return true;
197414
+ ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);
197415
+ ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);
197416
+ return isXYOnly
197417
+ ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)
197418
+ : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);
197419
+ }
197420
+ }
197421
+
197422
+
197069
197423
  /***/ }),
197070
197424
 
197071
197425
  /***/ "../../core/geometry/lib/esm/curve/internalContexts/CloneCurvesContext.js":
@@ -197666,22 +198020,19 @@ class GapSearchContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.Recu
197666
198020
  "use strict";
197667
198021
  __webpack_require__.r(__webpack_exports__);
197668
198022
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
197669
- /* harmony export */ MultiChainCollector: () => (/* binding */ MultiChainCollector),
197670
- /* harmony export */ OffsetHelpers: () => (/* binding */ OffsetHelpers)
198023
+ /* harmony export */ MultiChainCollector: () => (/* binding */ MultiChainCollector)
197671
198024
  /* harmony export */ });
197672
- /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
197673
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
197674
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
197675
- /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
197676
- /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
197677
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
197678
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
197679
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
197680
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
197681
198025
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
197682
- /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
197683
- /* harmony import */ var _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
197684
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
198026
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
198027
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
198028
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
198029
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
198030
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
198031
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
198032
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
198033
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
198034
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
198035
+ /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
197685
198036
  /*---------------------------------------------------------------------------------------------
197686
198037
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
197687
198038
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -197700,38 +198051,36 @@ __webpack_require__.r(__webpack_exports__);
197700
198051
 
197701
198052
 
197702
198053
 
197703
-
197704
-
197705
198054
  /**
197706
198055
  * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
197707
198056
  * * The caller makes a sequence of calls to announce individual primitives.
197708
- * * This collector (unlike the simpler "ChainCollector") expects to have inputs arriving in random order, leaving multiple open chains in play at any time.
197709
- * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
197710
- * * When all curves have been announced, the call to grab the paths option restructures the various active chains into Path and Loop objects.
198057
+ * * This collector (unlike the simpler [[ChainCollectorContext]]) expects to have inputs arriving in random order, leaving multiple open chains in play at any time.
198058
+ * * When all curves have been announced, the call to `grabResults` restructures the various active chains into Paths (and optionally, Loops).
198059
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
197711
198060
  * * Usage pattern is
197712
- * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
197713
- * * many times
197714
- * * ` context.captureCurve (anyCurve, searchAllPaths)`
197715
- * * ` context.captureCurvePrimitive (primitive, searchAllPaths)`
197716
- * * end: ` result = context.grabResult (formLoopsIfClosed)`
198061
+ * * initialization: `context = new MultiChainCollector(gapTol, planeTol)`
198062
+ * * many times:
198063
+ * * `context.captureCurve(anyCurve)`
198064
+ * * `context.captureCurvePrimitive(primitive)`
198065
+ * * end: `result = context.grabResult(makeLoopIfClosed)`
197717
198066
  * @internal
197718
198067
  */
197719
198068
  class MultiChainCollector {
197720
198069
  /** Initialize with an empty array of chains.
197721
- * @param endPointShiftTolerance tolerance for calling endpoints identical
197722
- * @param planeTolerance tolerance for considering a loop to be planar. If undefined, only create Path. If defined, create Loop curves are if within tolerance of a plane.
198070
+ * @param gapTolerance tolerance for calling endpoints identical
198071
+ * @param planeTolerance tolerance for considering a closed chain to be planar. If undefined, only create Path. If defined, create Loops for closed chains within tolerance of a plane.
197723
198072
  */
197724
- constructor(endPointShiftTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
198073
+ constructor(gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
197725
198074
  this._chains = [];
197726
- this._endPointShiftTolerance = endPointShiftTolerance;
197727
- this._endPointHitTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
197728
- this._planarityTolerance = planeTolerance;
198075
+ this._gapTolerance = gapTolerance;
198076
+ this._snapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
198077
+ this._planeTolerance = planeTolerance;
197729
198078
  }
197730
198079
  /**
197731
198080
  * Find a chain (with index _other than_ exceptChainIndex) that starts or ends at xyz
197732
- * @param xyz
197733
- * @param tolerance
197734
- * @param exceptChainIndex index of chain to ignore. Send -1 to consider all chains.
198081
+ * @param xyz endpoint to check
198082
+ * @param tolerance absolute distance tolerance for equating endpoints
198083
+ * @param exceptChainIndex index of chain to ignore. Send -1 to consider all chains.
197735
198084
  */
197736
198085
  findAnyChainToConnect(xyz, tolerance, exceptChainIndex = -1) {
197737
198086
  for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
@@ -197751,31 +198100,91 @@ class MultiChainCollector {
197751
198100
  * Insert a single curve primitive into the active chains.
197752
198101
  * * The primitive is captured (not cloned)
197753
198102
  * * The primitive may be reversed in place
197754
- * @param candidate
198103
+ * @param candidate curve to add to the context
197755
198104
  */
197756
198105
  captureCurvePrimitive(candidate) {
197757
- if (this.attachPrimitiveToAnyChain(candidate, this._endPointHitTolerance))
197758
- return;
197759
- if (this.attachPrimitiveToAnyChain(candidate, this._endPointShiftTolerance))
198106
+ if (this._snapTolerance < this._gapTolerance) {
198107
+ if (this.attachPrimitiveToAnyChain(candidate, this._snapTolerance))
198108
+ return;
198109
+ }
198110
+ if (this.attachPrimitiveToAnyChain(candidate, this._gapTolerance))
197760
198111
  return;
197761
198112
  this._chains.push([candidate]);
197762
- return;
197763
198113
  }
197764
198114
  /**
197765
198115
  * Insert any curve into the collection.
197766
198116
  * * This recurses into Path, Loop, BagOfCurves etc
197767
- * * The all primitives are captured, and may be reversed in place.
197768
- * @param candidate
198117
+ * * All primitives are captured, and may be reversed in place.
198118
+ * @param candidate curve to add to the context
197769
198119
  */
197770
198120
  captureCurve(candidate) {
197771
- if (candidate instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
198121
+ if (candidate instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
197772
198122
  this.captureCurvePrimitive(candidate);
197773
- else if (candidate instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
198123
+ else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
197774
198124
  for (const c of candidate.children) {
197775
198125
  this.captureCurve(c);
197776
198126
  }
197777
198127
  }
197778
198128
  }
198129
+ /** If allowed by the geometry type, move an endpoint. */
198130
+ static simpleEndPointMove(curve, atEnd, to) {
198131
+ if (curve instanceof (_LineSegment3d__WEBPACK_IMPORTED_MODULE_3__.LineSegment3d)) {
198132
+ if (atEnd) {
198133
+ curve.point1Ref.setFrom(to);
198134
+ }
198135
+ else {
198136
+ curve.point0Ref.setFrom(to);
198137
+ }
198138
+ return true;
198139
+ }
198140
+ else if (curve instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d && curve.numPoints() > 0) {
198141
+ const i = atEnd ? curve.numPoints() - 1 : 0;
198142
+ curve.packedPoints.setAtCheckedPointIndex(i, to);
198143
+ return true;
198144
+ }
198145
+ return false;
198146
+ }
198147
+ /**
198148
+ * Try to move the end of curve0 and/or the start of curve1 to a common point.
198149
+ * * All z-coordinates are ignored.
198150
+ * @param curve0 first curve, assumed to end close to the start of curve1
198151
+ * @param curve1 second curve, assumed to start close to the end of curve0
198152
+ * @param gapTolerance max distance to move a curve start/end point
198153
+ * @returns whether curve start/end point(s) moved
198154
+ */
198155
+ static moveHeadOrTail(curve0, curve1, gapTolerance) {
198156
+ const xyz0 = curve0.endPoint();
198157
+ const xyz1 = curve1.startPoint();
198158
+ const minShift = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance * 0.001;
198159
+ const d01 = xyz0.distanceXY(xyz1);
198160
+ if (d01 < minShift)
198161
+ return false;
198162
+ // try lines and linestrings
198163
+ if (d01 < gapTolerance) {
198164
+ if (this.simpleEndPointMove(curve1, false, xyz0) || this.simpleEndPointMove(curve0, true, xyz1))
198165
+ return true;
198166
+ }
198167
+ // try other primitive types
198168
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_5__.CurveCurve.intersectionXYPairs(curve0, true, curve1, true);
198169
+ const shiftFactor = 5.0;
198170
+ for (const pair of intersections) {
198171
+ const detail0 = pair.detailA;
198172
+ const detail1 = pair.detailB;
198173
+ const distance0 = detail0.point.distanceXY(xyz0);
198174
+ const distance1 = detail1.point.distanceXY(xyz1);
198175
+ if (distance0 < shiftFactor * gapTolerance && distance1 < shiftFactor * gapTolerance) {
198176
+ if (curve0 instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d && curve1 instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d) {
198177
+ const radians0End = curve0.sweep.fractionToRadians(detail0.fraction);
198178
+ curve0.sweep.setStartEndRadians(curve0.sweep.startRadians, radians0End);
198179
+ const radians1Start = curve1.sweep.fractionToRadians(detail1.fraction);
198180
+ curve1.sweep.setStartEndRadians(radians1Start, curve1.sweep.endRadians);
198181
+ return true;
198182
+ }
198183
+ // TODO: other combinations of types
198184
+ }
198185
+ }
198186
+ return false;
198187
+ }
197779
198188
  /** Announce a curve primitive
197780
198189
  * * If a "nearby" connection is possible, insert the candidate in the chain and force endpoint match.
197781
198190
  * * Otherwise start a new chain.
@@ -197789,7 +198198,7 @@ class MultiChainCollector {
197789
198198
  const chain = this._chains[connect.chainIndex];
197790
198199
  const index0 = chain.length - 1;
197791
198200
  this._chains[connect.chainIndex].push(candidate);
197792
- OffsetHelpers.moveHeadOrTail(chain[index0], chain[index0 + 1], this._endPointShiftTolerance);
198201
+ MultiChainCollector.moveHeadOrTail(chain[index0], chain[index0 + 1], this._gapTolerance);
197793
198202
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
197794
198203
  return true;
197795
198204
  }
@@ -197797,7 +198206,7 @@ class MultiChainCollector {
197797
198206
  candidate.reverseInPlace();
197798
198207
  const chain = this._chains[connect.chainIndex];
197799
198208
  chain.splice(0, 0, candidate);
197800
- OffsetHelpers.moveHeadOrTail(chain[0], chain[1], this._endPointShiftTolerance);
198209
+ MultiChainCollector.moveHeadOrTail(chain[0], chain[1], this._gapTolerance);
197801
198210
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
197802
198211
  return true;
197803
198212
  }
@@ -197805,20 +198214,20 @@ class MultiChainCollector {
197805
198214
  else {
197806
198215
  this._xyzWork0 = candidate.endPoint(this._xyzWork0);
197807
198216
  connect = this.findAnyChainToConnect(this._xyzWork0, tolerance);
197808
- if (connect) { // START of new primitive ..
198217
+ if (connect) {
197809
198218
  if (connect.atEnd) {
197810
198219
  candidate.reverseInPlace();
197811
198220
  const chain = this._chains[connect.chainIndex];
197812
198221
  const index0 = chain.length - 1;
197813
198222
  this._chains[connect.chainIndex].push(candidate);
197814
- OffsetHelpers.moveHeadOrTail(chain[index0], chain[index0 + 1], this._endPointShiftTolerance);
198223
+ MultiChainCollector.moveHeadOrTail(chain[index0], chain[index0 + 1], this._gapTolerance);
197815
198224
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
197816
198225
  return true;
197817
198226
  }
197818
198227
  else {
197819
198228
  const chain = this._chains[connect.chainIndex];
197820
198229
  chain.splice(0, 0, candidate);
197821
- OffsetHelpers.moveHeadOrTail(chain[0], chain[1], this._endPointShiftTolerance);
198230
+ MultiChainCollector.moveHeadOrTail(chain[0], chain[1], this._gapTolerance);
197822
198231
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
197823
198232
  return true;
197824
198233
  }
@@ -197828,10 +198237,13 @@ class MultiChainCollector {
197828
198237
  return false;
197829
198238
  }
197830
198239
  /**
197831
- * * Move each primitive from chainB to the end of chainA.
197832
- * * clear chainB.
197833
- * * move the final chain to chainB index.
197834
- * * reduce the _chain.length by 1.
198240
+ * Merge two entries in the chain array.
198241
+ * * Move each primitive from chainB to the end of chainA.
198242
+ * * Clear chainB.
198243
+ * * Move the final chain to chainB index.
198244
+ * * Decrement the array length.
198245
+ * @param chainIndexA index of chainA
198246
+ * @param chainIndexB index of chainB
197835
198247
  */
197836
198248
  mergeChainsForwardForward(chainIndexA, chainIndexB) {
197837
198249
  const chainA = this._chains[chainIndexA];
@@ -197839,30 +198251,26 @@ class MultiChainCollector {
197839
198251
  for (const p of chainB) {
197840
198252
  chainA.push(p);
197841
198253
  }
197842
- // chainIndexB is unused.
197843
- chainB.length = 0;
198254
+ chainB.length = 0; // chainIndexB is unused
197844
198255
  const lastChainIndex = this._chains.length - 1;
197845
- if (chainIndexB !== lastChainIndex) {
198256
+ if (chainIndexB !== lastChainIndex)
197846
198257
  this._chains[chainIndexB] = this._chains[lastChainIndex];
197847
- this._chains.pop();
197848
- }
197849
- else {
197850
- this._chains.pop();
197851
- }
198258
+ this._chains.pop();
197852
198259
  }
198260
+ /** Reverse the curve chain in place. */
197853
198261
  reverseChain(chainIndex) {
197854
198262
  const chain = this._chains[chainIndex];
197855
198263
  chain.reverse();
197856
198264
  for (const p of chain)
197857
198265
  p.reverseInPlace();
197858
198266
  }
197859
- // see if the head or tail of chainIndex matches any existing chain. If so, merge
198267
+ /** See if the head or tail of chainIndex matches any existing chain. If so, merge the two chains. */
197860
198268
  searchAndMergeChainIndex(chainIndex, tolerance) {
197861
198269
  // ASSUME valid index of non-empty chain
197862
198270
  const chain = this._chains[chainIndex];
197863
198271
  const lastIndexInChain = chain.length - 1;
197864
198272
  this._xyzWork0 = chain[0].startPoint(this._xyzWork0);
197865
- // this start with any other chain ..
198273
+ // try start with any other chain
197866
198274
  let connect = this.findAnyChainToConnect(this._xyzWork0, tolerance, chainIndex);
197867
198275
  if (connect) {
197868
198276
  if (!connect.atEnd)
@@ -197880,9 +198288,11 @@ class MultiChainCollector {
197880
198288
  return;
197881
198289
  }
197882
198290
  }
197883
- /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
197884
- * * The input array is assumed to be connected appropriately to act as the curves of a Path.
197885
- * * When a path is created the curves array is CAPTURED.
198291
+ /**
198292
+ * Convert an array of curve primitives into the simplest possible strongly typed curve structure.
198293
+ * @param curves input array, assembled correctly into a single contiguous path, captured by returned object
198294
+ * @param makeLoopIfClosed whether to return a Loop from physically closed curves array, otherwise Path
198295
+ * @return Loop or Path if multiple curves; the primitive if only one curve; undefined if no curves
197886
198296
  */
197887
198297
  promoteArrayToCurves(curves, makeLoopIfClosed) {
197888
198298
  if (curves.length === 0)
@@ -197892,39 +198302,37 @@ class MultiChainCollector {
197892
198302
  const primitiveN = curves[curves.length - 1];
197893
198303
  MultiChainCollector._staticPointA = primitive0.startPoint(MultiChainCollector._staticPointA);
197894
198304
  MultiChainCollector._staticPointB = primitiveN.endPoint(MultiChainCollector._staticPointB);
197895
- const distanceAToB = MultiChainCollector._staticPointA.distance(MultiChainCollector._staticPointB);
197896
- if (distanceAToB < this._endPointShiftTolerance) {
197897
- // adjust for closure (and get the corrected coordinates)
197898
- OffsetHelpers.moveHeadOrTail(primitiveN, primitive0, this._endPointShiftTolerance);
198305
+ if (MultiChainCollector.moveHeadOrTail(primitiveN, primitive0, this._gapTolerance)) {
198306
+ // get the corrected coordinates
197899
198307
  MultiChainCollector._staticPointA = primitive0.startPoint(MultiChainCollector._staticPointA);
197900
198308
  MultiChainCollector._staticPointB = primitiveN.endPoint(MultiChainCollector._staticPointB);
197901
198309
  }
197902
- if (MultiChainCollector._staticPointA.isAlmostEqual(MultiChainCollector._staticPointB)) {
197903
- const localToWorld = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_3__.FrameBuilder.createRightHandedLocalToWorld(curves);
198310
+ if (MultiChainCollector._staticPointA.isAlmostEqual(MultiChainCollector._staticPointB, this._gapTolerance)) {
198311
+ const localToWorld = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_7__.FrameBuilder.createRightHandedLocalToWorld(curves);
197904
198312
  if (localToWorld) {
197905
198313
  const worldToLocal = localToWorld.inverse();
197906
198314
  if (worldToLocal) {
197907
- const range = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_4__.RegionOps.curveArrayRange(curves, worldToLocal);
197908
- if (this._planarityTolerance !== undefined && range.zLength() <= this._planarityTolerance) {
197909
- return _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createArray(curves);
198315
+ const range = _RegionOps__WEBPACK_IMPORTED_MODULE_8__.RegionOps.curveArrayRange(curves, worldToLocal);
198316
+ if (this._planeTolerance !== undefined && range.zLength() <= this._planeTolerance) {
198317
+ return _Loop__WEBPACK_IMPORTED_MODULE_9__.Loop.createArray(curves);
197910
198318
  }
197911
198319
  }
197912
198320
  }
197913
- return _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.createArray(curves);
198321
+ return _Path__WEBPACK_IMPORTED_MODULE_10__.Path.createArray(curves);
197914
198322
  }
197915
198323
  }
197916
198324
  if (curves.length === 1)
197917
198325
  return curves[0];
197918
- return _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.createArray(curves);
198326
+ return _Path__WEBPACK_IMPORTED_MODULE_10__.Path.createArray(curves);
197919
198327
  }
197920
- chainToLineString3d(curves) {
197921
- if (curves.length === 0)
198328
+ /** Stroke the curve chain to a line string, de-duplicate the points. */
198329
+ chainToLineString3d(chain, options) {
198330
+ if (chain.length === 0)
197922
198331
  return undefined;
197923
- const linestring = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.create();
197924
- for (const curve of curves) {
197925
- curve.emitStrokes(linestring);
197926
- linestring.removeDuplicatePoints();
197927
- }
198332
+ const linestring = _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d.create();
198333
+ for (const curve of chain)
198334
+ curve.emitStrokes(linestring, options);
198335
+ linestring.removeDuplicatePoints(this._gapTolerance);
197928
198336
  return linestring;
197929
198337
  }
197930
198338
  /** Return the collected results, structured as the simplest possible type. */
@@ -197934,7 +198342,7 @@ class MultiChainCollector {
197934
198342
  return undefined;
197935
198343
  if (chains.length === 1)
197936
198344
  return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
197937
- const bag = _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves.create();
198345
+ const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves.create();
197938
198346
  for (const chain of chains) {
197939
198347
  const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
197940
198348
  bag.tryAddChild(q);
@@ -197942,171 +198350,22 @@ class MultiChainCollector {
197942
198350
  return bag;
197943
198351
  }
197944
198352
  /** Return chains as individual calls to announceChain. */
197945
- announceChainsAsLineString3d(announceChain) {
198353
+ announceChainsAsLineString3d(announceChain, options) {
197946
198354
  const chains = this._chains;
197947
198355
  if (chains.length === 1) {
197948
- const ls = this.chainToLineString3d(chains[0]);
198356
+ const ls = this.chainToLineString3d(chains[0], options);
197949
198357
  if (ls)
197950
198358
  announceChain(ls);
197951
198359
  }
197952
198360
  else if (chains.length > 1) {
197953
198361
  for (const chain of chains) {
197954
- const ls = this.chainToLineString3d(chain);
198362
+ const ls = this.chainToLineString3d(chain, options);
197955
198363
  if (ls)
197956
198364
  announceChain(ls);
197957
198365
  }
197958
198366
  }
197959
198367
  }
197960
198368
  }
197961
- /**
197962
- * Static methods to assist offset sequences.
197963
- * @internal
197964
- */
197965
- class OffsetHelpers {
197966
- // recursively sum lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level.
197967
- static sumLengths(data) {
197968
- let mySum = 0;
197969
- if (data instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive) {
197970
- mySum += data.curveLength();
197971
- }
197972
- else if (data instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection) {
197973
- mySum += data.sumLengths();
197974
- }
197975
- else if (Array.isArray(data)) {
197976
- for (const data1 of data)
197977
- mySum += this.sumLengths(data1);
197978
- }
197979
- return mySum;
197980
- }
197981
- // recursively sum lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level.
197982
- static extendRange(range, data) {
197983
- if (data instanceof _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_8__.GeometryQuery) {
197984
- data.extendRange(range);
197985
- }
197986
- else if (Array.isArray(data)) {
197987
- for (const data1 of data)
197988
- this.extendRange(range, data1);
197989
- }
197990
- return range;
197991
- }
197992
- // construct (separately) the offsets of each entry of data (Path, Loop, BagOfCurve, or Array of those)
197993
- // push all offset geometry into the result array
197994
- // return summed length
197995
- static appendOffsets(data, offset, result) {
197996
- let summedLengths = 0;
197997
- if (data instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive) {
197998
- const resultA = _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.CurveChainWireOffsetContext.constructCurveXYOffset(_curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.create(data), offset);
197999
- if (resultA) {
198000
- summedLengths += this.sumLengths(resultA);
198001
- result.push(resultA);
198002
- }
198003
- }
198004
- else if (data instanceof _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop || data instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path) {
198005
- const resultA = _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.CurveChainWireOffsetContext.constructCurveXYOffset(data, offset);
198006
- if (resultA) {
198007
- summedLengths += this.sumLengths(resultA);
198008
- result.push(resultA);
198009
- }
198010
- }
198011
- else if (data instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves) {
198012
- for (const q of data.children)
198013
- summedLengths += this.appendOffsets(q, offset, result);
198014
- }
198015
- else if (Array.isArray(data)) {
198016
- for (const q of data)
198017
- summedLengths += this.appendOffsets(q, offset, result);
198018
- }
198019
- return summedLengths;
198020
- }
198021
- /**
198022
- * * Restructure curve fragments as chains and offsets
198023
- * * Return object with named chains, insideOffsets, outsideOffsets
198024
- * * BEWARE that if the input is not a loop the classification of outputs is suspect.
198025
- * @param fragments fragments to be chained
198026
- * @param offsetDistance offset distance.
198027
- */
198028
- static collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance) {
198029
- const collector = new MultiChainCollector(gapTolerance);
198030
- for (const s of fragments) {
198031
- collector.captureCurve(s);
198032
- }
198033
- const myChains = collector.grabResult(true);
198034
- const myOffsetA = [];
198035
- const myOffsetB = [];
198036
- const offsetLengthA = OffsetHelpers.appendOffsets(myChains, offsetDistance, myOffsetA);
198037
- const offsetLengthB = OffsetHelpers.appendOffsets(myChains, -offsetDistance, myOffsetB);
198038
- if (offsetLengthA > offsetLengthB) {
198039
- return { outsideOffsets: myOffsetA, insideOffsets: myOffsetB, chains: myChains };
198040
- }
198041
- else {
198042
- return { insideOffsets: myOffsetA, outsideOffsets: myOffsetB, chains: myChains };
198043
- }
198044
- }
198045
- /**
198046
- * * Restructure curve fragments as chains and offsets
198047
- * * BEWARE that if the input is not a loop the classification of outputs is suspect.
198048
- * @param fragments fragments to be chained
198049
- * @param gapTolerance distance to be treated as "effectively zero" when joining head-to-tail.
198050
- */
198051
- static collectChains(fragments, gapTolerance, planarTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
198052
- const collector = new MultiChainCollector(gapTolerance, planarTolerance);
198053
- for (const s of fragments) {
198054
- collector.captureCurve(s);
198055
- }
198056
- return collector.grabResult(true);
198057
- }
198058
- /** If allowed by the geometry type, move an endpoint.
198059
- *
198060
- */
198061
- static simpleEndPointMove(g, atEnd, to) {
198062
- if (g instanceof (_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_10__.LineSegment3d)) {
198063
- if (atEnd) {
198064
- g.point1Ref.setFrom(to);
198065
- }
198066
- else {
198067
- g.point0Ref.setFrom(to);
198068
- }
198069
- return true;
198070
- }
198071
- else if (g instanceof _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d && g.numPoints() > 0) {
198072
- const i = atEnd ? g.numPoints() - 1 : 0;
198073
- g.packedPoints.setAtCheckedPointIndex(i, to);
198074
- return true;
198075
- }
198076
- return false;
198077
- }
198078
- // Try to move move tail (end) of g0 and/or head (beginning) of g1 to a common point.
198079
- static moveHeadOrTail(g0, g1, maxShift) {
198080
- const xyz0 = g0.endPoint();
198081
- const xyz1 = g1.startPoint();
198082
- const minShift = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance * 0.001;
198083
- const d01 = xyz0.distanceXY(xyz1);
198084
- if (d01 < minShift)
198085
- return true;
198086
- if (this.simpleEndPointMove(g1, false, xyz0) || this.simpleEndPointMove(g0, true, xyz1))
198087
- return true;
198088
- // const detail1On0 = g0.closestPoint(xyz1);
198089
- // const detail0On1 = g1.closestPoint(xyz0);
198090
- const intersections = _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_11__.CurveCurve.intersectionXYPairs(g0, true, g1, true);
198091
- const shiftFactor = 5.0;
198092
- for (const pair of intersections) {
198093
- const detail0 = pair.detailA;
198094
- const detail1 = pair.detailB;
198095
- const distance0 = detail0.point.distanceXY(xyz0);
198096
- const distance1 = detail1.point.distanceXY(xyz1);
198097
- if (distance0 < shiftFactor * maxShift && distance1 < shiftFactor * maxShift) {
198098
- if (g0 instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__.Arc3d && g1 instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__.Arc3d) {
198099
- const radians0End = g0.sweep.fractionToRadians(detail0.fraction);
198100
- g0.sweep.setStartEndRadians(g0.sweep.startRadians, radians0End);
198101
- const radians1Start = g1.sweep.fractionToRadians(detail1.fraction);
198102
- g1.sweep.setStartEndRadians(radians1Start, g1.sweep.endRadians);
198103
- return true;
198104
- }
198105
- }
198106
- }
198107
- return false;
198108
- }
198109
- }
198110
198369
 
198111
198370
 
198112
198371
  /***/ }),
@@ -198351,24 +198610,22 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
198351
198610
  __webpack_require__.r(__webpack_exports__);
198352
198611
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
198353
198612
  /* harmony export */ CurveChainWireOffsetContext: () => (/* binding */ CurveChainWireOffsetContext),
198354
- /* harmony export */ JointOptions: () => (/* binding */ JointOptions),
198355
- /* harmony export */ OffsetOptions: () => (/* binding */ OffsetOptions),
198356
198613
  /* harmony export */ PolygonWireOffsetContext: () => (/* binding */ PolygonWireOffsetContext)
198357
198614
  /* harmony export */ });
198358
198615
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
198359
- /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
198360
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
198361
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
198362
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
198363
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
198364
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
198616
+ /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
198617
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
198618
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
198619
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
198620
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
198621
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
198365
198622
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
198366
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
198367
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
198623
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
198624
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
198368
198625
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
198626
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
198369
198627
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
198370
198628
  /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
198371
- /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
198372
198629
  /*---------------------------------------------------------------------------------------------
198373
198630
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
198374
198631
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -198404,157 +198661,6 @@ var JointMode;
198404
198661
  JointMode[JointMode["JustGeometry"] = 3] = "JustGeometry";
198405
198662
  JointMode[JointMode["Gap"] = 4] = "Gap";
198406
198663
  })(JointMode || (JointMode = {}));
198407
- /**
198408
- * Control parameters for joint construction.
198409
- * * Define a "joint" as the common point between adjacent segments of the input curve.
198410
- * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
198411
- * the segments at the joint.
198412
- * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
198413
- * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
198414
- * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
198415
- * single intersection point (to create a sharp corner).
198416
- * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
198417
- * * lie outside the arc that would have been created by the first construction
198418
- * * have uniform turn angle less than `options.maxChamferDegrees`
198419
- * * touch the arc at their midpoint (except first and last edge).
198420
- * @public
198421
- */
198422
- class JointOptions {
198423
- /**
198424
- * Construct JointOptions.
198425
- * * leftOffsetDistance is required
198426
- * * minArcDegrees and maxChamferDegrees are optional.
198427
- */
198428
- constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
198429
- /**
198430
- * Smallest arc to construct.
198431
- * * If this control angle is 180 degrees or more, arcs are never created.
198432
- */
198433
- this.minArcDegrees = 180.0;
198434
- /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
198435
- this.maxChamferTurnDegrees = 90;
198436
- /**
198437
- * Whether to remove the internal turn angle upper bound for sharp corner construction.
198438
- * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
198439
- * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
198440
- * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
198441
- * up to `maxChamferTurnDegrees`.
198442
- * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
198443
- * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
198444
- */
198445
- this.allowSharpestCorners = false;
198446
- /** Offset distance, positive to left of base curve. */
198447
- this.leftOffsetDistance = 0;
198448
- /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
198449
- this.preserveEllipticalArcs = false;
198450
- this.leftOffsetDistance = leftOffsetDistance;
198451
- this.minArcDegrees = minArcDegrees;
198452
- this.maxChamferTurnDegrees = maxChamferDegrees;
198453
- this.preserveEllipticalArcs = preserveEllipticalArcs;
198454
- this.allowSharpestCorners = allowSharpestCorners;
198455
- }
198456
- /** Return a deep clone. */
198457
- clone() {
198458
- return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
198459
- }
198460
- /** Copy values of input options */
198461
- setFrom(other) {
198462
- this.leftOffsetDistance = other.leftOffsetDistance;
198463
- this.minArcDegrees = other.minArcDegrees;
198464
- this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
198465
- this.preserveEllipticalArcs = other.preserveEllipticalArcs;
198466
- this.allowSharpestCorners = other.allowSharpestCorners;
198467
- }
198468
- /**
198469
- * Parse a number or JointOptions up to JointOptions:
198470
- * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
198471
- * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
198472
- * @param leftOffsetDistanceOrOptions
198473
- */
198474
- static create(leftOffsetDistanceOrOptions) {
198475
- if (leftOffsetDistanceOrOptions instanceof JointOptions)
198476
- return leftOffsetDistanceOrOptions;
198477
- return new JointOptions(leftOffsetDistanceOrOptions);
198478
- }
198479
- /** Return true if the options indicate this amount of turn should be handled with an arc. */
198480
- needArc(theta) {
198481
- return Math.abs(theta.degrees) >= this.minArcDegrees;
198482
- }
198483
- /** Return the number of corners needed to chamfer the given turn angle. */
198484
- numChamferPoints(theta) {
198485
- const degrees = Math.abs(theta.degrees);
198486
- const minStepDegreesClamp = 10;
198487
- let maxStepDegreesClamp = 120;
198488
- if (this.allowSharpestCorners) {
198489
- maxStepDegreesClamp = this.maxChamferTurnDegrees;
198490
- }
198491
- const stepDegrees = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
198492
- if (degrees <= stepDegrees)
198493
- return 1;
198494
- return Math.ceil(degrees / stepDegrees);
198495
- }
198496
- }
198497
- /**
198498
- * Options for offsetting a curve.
198499
- * @public
198500
- */
198501
- class OffsetOptions {
198502
- /** Options that are provided are captured. */
198503
- constructor(offsetDistanceOrOptions, strokeOptions) {
198504
- this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
198505
- this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__.StrokeOptions.createForCurves();
198506
- }
198507
- get minArcDegrees() {
198508
- return this.jointOptions.minArcDegrees;
198509
- }
198510
- set minArcDegrees(value) {
198511
- this.jointOptions.minArcDegrees = value;
198512
- }
198513
- get maxChamferTurnDegrees() {
198514
- return this.jointOptions.maxChamferTurnDegrees;
198515
- }
198516
- set maxChamferTurnDegrees(value) {
198517
- this.jointOptions.maxChamferTurnDegrees = value;
198518
- }
198519
- get allowSharpestCorners() {
198520
- return this.jointOptions.allowSharpestCorners;
198521
- }
198522
- set allowSharpestCorners(value) {
198523
- this.jointOptions.allowSharpestCorners = value;
198524
- }
198525
- get leftOffsetDistance() {
198526
- return this.jointOptions.leftOffsetDistance;
198527
- }
198528
- set leftOffsetDistance(value) {
198529
- this.jointOptions.leftOffsetDistance = value;
198530
- }
198531
- get preserveEllipticalArcs() {
198532
- return this.jointOptions.preserveEllipticalArcs;
198533
- }
198534
- set preserveEllipticalArcs(value) {
198535
- this.jointOptions.preserveEllipticalArcs = value;
198536
- }
198537
- /**
198538
- * Convert variant input into OffsetOptions.
198539
- * * If a JointOptions is provided, it is captured.
198540
- * * If an OffsetOptions is provided, a reference to it is returned.
198541
- */
198542
- static create(offsetDistanceOrOptions) {
198543
- if (offsetDistanceOrOptions instanceof OffsetOptions)
198544
- return offsetDistanceOrOptions;
198545
- return new OffsetOptions(offsetDistanceOrOptions);
198546
- }
198547
- /** Convert variant input into offset distance */
198548
- static getOffsetDistance(offsetDistanceOrOptions) {
198549
- if (typeof offsetDistanceOrOptions === "number")
198550
- return offsetDistanceOrOptions;
198551
- return offsetDistanceOrOptions.leftOffsetDistance;
198552
- }
198553
- /** Return a deep clone. */
198554
- clone() {
198555
- return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
198556
- }
198557
- }
198558
198664
  /**
198559
198665
  * Description of geometry around a joint.
198560
198666
  * @internal
@@ -198573,9 +198679,9 @@ class Joint {
198573
198679
  static constructArc(ray0, center, ray1) {
198574
198680
  if (center !== undefined && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(ray0.origin.distance(center), ray1.origin.distance(center))) {
198575
198681
  const angle = ray0.direction.angleToXY(ray1.direction);
198576
- const vector0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(center, ray0.origin);
198682
+ const vector0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(center, ray0.origin);
198577
198683
  const vector90 = vector0.rotate90CCWXY();
198578
- return _Arc3d__WEBPACK_IMPORTED_MODULE_3__.Arc3d.create(center, vector0, vector90, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_4__.AngleSweep.createStartEndRadians(0.0, angle.radians));
198684
+ return _Arc3d__WEBPACK_IMPORTED_MODULE_2__.Arc3d.create(center, vector0, vector90, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(0.0, angle.radians));
198579
198685
  }
198580
198686
  return undefined;
198581
198687
  }
@@ -198643,7 +198749,7 @@ class Joint {
198643
198749
  const pointA = destination[destination.length - 1].endPoint();
198644
198750
  const pointB = primitive.startPoint();
198645
198751
  if (!pointA.isAlmostEqual(pointB)) {
198646
- destination.push(_LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(pointA, pointB));
198752
+ destination.push(_LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(pointA, pointB));
198647
198753
  }
198648
198754
  }
198649
198755
  destination.push(primitive);
@@ -198651,7 +198757,7 @@ class Joint {
198651
198757
  }
198652
198758
  static adjustJointToPrimitives(joint) {
198653
198759
  const ls = joint.jointCurve;
198654
- if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d) {
198760
+ if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d) {
198655
198761
  if (joint.curve0) {
198656
198762
  const curvePoint = joint.curve0.endPoint();
198657
198763
  const jointPoint0 = ls.startPoint();
@@ -198719,8 +198825,8 @@ class Joint {
198719
198825
  if (this.curve0 && this.curve1) {
198720
198826
  const ray0 = this.curve0.fractionToPointAndDerivative(1.0);
198721
198827
  const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
198722
- const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
198723
- if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveCurveApproachType.Intersection) {
198828
+ const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
198829
+ if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__.CurveCurveApproachType.Intersection) {
198724
198830
  if (intersection.detailA.fraction >= 0.0 && intersection.detailB.fraction <= 0.0) {
198725
198831
  this.fraction0 = 1.0;
198726
198832
  this.fraction1 = 0.0;
@@ -198735,7 +198841,7 @@ class Joint {
198735
198841
  }
198736
198842
  const numChamferPoints = options.numChamferPoints(theta); // how many interior points in the linestring
198737
198843
  if (numChamferPoints <= 1) { // create sharp corner
198738
- this.jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create(ray0.origin, intersection.detailA.point, ray1.origin);
198844
+ this.jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create(ray0.origin, intersection.detailA.point, ray1.origin);
198739
198845
  return;
198740
198846
  }
198741
198847
  if (numChamferPoints > 1) { // create chamfer corner (a line string)
@@ -198745,7 +198851,7 @@ class Joint {
198745
198851
  const arc = Joint.constructArc(ray0, this.curve0.baseCurveEnd, ray1);
198746
198852
  if (arc !== undefined) {
198747
198853
  const radialFraction = 1 / Math.cos(halfStepRadians);
198748
- const jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create();
198854
+ const jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create();
198749
198855
  this.jointCurve = jointCurve;
198750
198856
  jointCurve.addPoint(ray0.origin); // possibly extend segment or line string
198751
198857
  for (let i = 0; i < numChamferPoints; i++) {
@@ -198760,7 +198866,7 @@ class Joint {
198760
198866
  }
198761
198867
  // if there is no intersection between the 2 ray lines, fill the gap by a line segment
198762
198868
  this.flexure = JointMode.Gap;
198763
- this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
198869
+ this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
198764
198870
  this.fraction0 = 1.0;
198765
198871
  this.fraction1 = 0.0;
198766
198872
  }
@@ -198802,11 +198908,11 @@ class Joint {
198802
198908
  this.fraction1 = 0.0;
198803
198909
  this.flexure = JointMode.Trim;
198804
198910
  }
198805
- else if (this.curve0 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d && this.curve1 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d) { // pair of lines
198911
+ else if (this.curve0 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d && this.curve1 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d) { // pair of lines
198806
198912
  const ray0 = this.curve0.fractionToPointAndDerivative(0.0);
198807
198913
  const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
198808
- const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
198809
- if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveCurveApproachType.Intersection) {
198914
+ const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
198915
+ if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__.CurveCurveApproachType.Intersection) {
198810
198916
  this.fraction0 = intersection.detailA.fraction;
198811
198917
  this.fraction1 = intersection.detailB.fraction;
198812
198918
  if (this.fraction0 >= 1.0 && this.fraction1 <= 0.0) { // need to extend
@@ -198817,14 +198923,14 @@ class Joint {
198817
198923
  }
198818
198924
  else if (this.fraction0 > 1.0 && this.fraction1 > 1.0) { // need to fill gap with a single line segment
198819
198925
  this.flexure = JointMode.Gap;
198820
- this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
198926
+ this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
198821
198927
  this.fraction0 = 1.0;
198822
198928
  this.fraction1 = 0.0;
198823
198929
  }
198824
198930
  }
198825
198931
  }
198826
198932
  else { // generic pair of curves
198827
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_9__.CurveCurve.intersectionXYPairs(this.curve0, false, this.curve1, false);
198933
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_8__.CurveCurve.intersectionXYPairs(this.curve0, false, this.curve1, false);
198828
198934
  const intersectionIndex = this.selectIntersectionIndexByFraction(1.0, 0.0, intersections);
198829
198935
  if (intersectionIndex >= 0) { // need to trim
198830
198936
  this.flexure = JointMode.Trim;
@@ -198935,10 +199041,10 @@ class PolygonWireOffsetContext {
198935
199041
  constructor() { }
198936
199042
  // Construct a single offset from base points
198937
199043
  static createOffsetSegment(basePointA, basePointB, distance) {
198938
- _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(basePointA, basePointB, this._unitAlong);
199044
+ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(basePointA, basePointB, this._unitAlong);
198939
199045
  if (this._unitAlong.normalizeInPlace()) {
198940
199046
  this._unitAlong.rotate90CCWXY(this._unitPerp);
198941
- const segment = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(basePointA.plusScaled(this._unitPerp, distance, this._offsetA), basePointB.plusScaled(this._unitPerp, distance, this._offsetB));
199047
+ const segment = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(basePointA.plusScaled(this._unitPerp, distance, this._offsetA), basePointB.plusScaled(this._unitPerp, distance, this._offsetB));
198942
199048
  CurveChainWireOffsetContext.applyBasePoints(segment, basePointA.clone(), basePointB.clone());
198943
199049
  return segment;
198944
199050
  }
@@ -198964,7 +199070,7 @@ class PolygonWireOffsetContext {
198964
199070
  wrap = false;
198965
199071
  }
198966
199072
  /** create raw offsets as a linked list (joint0) */
198967
- const options = JointOptions.create(leftOffsetDistanceOrOptions);
199073
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.JointOptions.create(leftOffsetDistanceOrOptions);
198968
199074
  const numPoints = points.length;
198969
199075
  let fragment0 = PolygonWireOffsetContext.createOffsetSegment(points[0], points[1], options.leftOffsetDistance);
198970
199076
  let joint0 = new Joint(undefined, fragment0, points[0]);
@@ -199000,7 +199106,7 @@ class PolygonWireOffsetContext {
199000
199106
  }
199001
199107
  // Joint.collectPrimitivesFromChain(joint0, result, numPoints);
199002
199108
  /** turn the Joint linked list into a CurveCollection (Loop or Path). trimming is done in collectStrokesFromChain */
199003
- const chain = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create();
199109
+ const chain = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create();
199004
199110
  Joint.collectStrokesFromChain(joint0, chain, numPoints);
199005
199111
  const n = chain.packedPoints.length;
199006
199112
  if (n > 1) {
@@ -199012,10 +199118,10 @@ class PolygonWireOffsetContext {
199012
199118
  return undefined;
199013
199119
  }
199014
199120
  }
199015
- PolygonWireOffsetContext._unitAlong = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create();
199016
- PolygonWireOffsetContext._unitPerp = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create();
199017
- PolygonWireOffsetContext._offsetA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
199018
- PolygonWireOffsetContext._offsetB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
199121
+ PolygonWireOffsetContext._unitAlong = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
199122
+ PolygonWireOffsetContext._unitPerp = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
199123
+ PolygonWireOffsetContext._offsetA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
199124
+ PolygonWireOffsetContext._offsetB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
199019
199125
 
199020
199126
  /**
199021
199127
  * Context for building a wire offset from a Path or Loop of CurvePrimitives
@@ -199041,41 +199147,39 @@ class CurveChainWireOffsetContext {
199041
199147
  return cp;
199042
199148
  }
199043
199149
  /**
199044
- * Create the offset of a single primitive as viewed in the xy-plane (ignoring z).
199045
- * * each primitive may be labeled (as an `any` object) with start or end point of base curve:
199150
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
199151
+ * * Each primitive may be labeled (as an `any` object) with start or end point of base curve:
199046
199152
  * * `(primitive as any).baseCurveStart: Point3d`
199047
199153
  * * `(primitive as any).baseCurveEnd: Point3d`
199048
- * @param g primitive to offset
199049
- * @param offsetDistanceOrOptions offset distance (positive to left of g), or options object
199154
+ * @param curve primitive to offset
199155
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
199050
199156
  */
199051
- static createSingleOffsetPrimitiveXY(g, offsetDistanceOrOptions) {
199052
- const offset = g.constructOffsetXY(offsetDistanceOrOptions);
199157
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
199158
+ const offset = curve.constructOffsetXY(offsetDistanceOrOptions);
199053
199159
  if (offset === undefined)
199054
199160
  return undefined;
199055
199161
  // decorate each offset with its base curve's endpoints
199056
199162
  if (Array.isArray(offset)) {
199057
- const basePrims = g.collectCurvePrimitives(undefined, true, true);
199163
+ const basePrims = curve.collectCurvePrimitives(undefined, true, true);
199058
199164
  if (basePrims.length !== offset.length)
199059
199165
  return undefined; // unexpected aggregate curve type!
199060
199166
  for (let i = 0; i < basePrims.length; ++i)
199061
199167
  this.applyBasePoints(offset[i], basePrims[i].startPoint(), basePrims[i].endPoint());
199062
199168
  return offset;
199063
199169
  }
199064
- return this.applyBasePoints(offset, g.startPoint(), g.endPoint());
199170
+ return this.applyBasePoints(offset, curve.startPoint(), curve.endPoint());
199065
199171
  }
199066
199172
  /**
199067
199173
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
199068
199174
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
199069
199175
  * not detect self intersection among widely separated edges.
199070
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
199071
- * * See [[JointOptions]] class doc for offset construction rules.
199072
199176
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
199073
199177
  * @param curves base curves.
199074
199178
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
199075
199179
  */
199076
199180
  static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
199077
199181
  const wrap = curves instanceof _Loop__WEBPACK_IMPORTED_MODULE_10__.Loop;
199078
- const offsetOptions = OffsetOptions.create(offsetDistanceOrOptions);
199182
+ const offsetOptions = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
199079
199183
  const simpleOffsets = [];
199080
199184
  /** traverse primitives (children of curves) and create simple offsets of each primitive as an array */
199081
199185
  for (const c of curves.children) {
@@ -200562,7 +200666,7 @@ class IntegratedSpiral3d extends _TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_0_
200562
200666
  static initWorkSpace() {
200563
200667
  IntegratedSpiral3d._gaussFraction = new Float64Array(5);
200564
200668
  IntegratedSpiral3d._gaussWeight = new Float64Array(5);
200565
- IntegratedSpiral3d._gaussMapper = _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_3__.Quadrature.setupGauss5;
200669
+ IntegratedSpiral3d._gaussMapper = (xA, xB, xMapped, wMapped) => _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_3__.Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
200566
200670
  }
200567
200671
  /** Evaluate and sum the gauss quadrature formulas to integrate cos(theta), sin(theta) fractional subset of a reference length.
200568
200672
  * (recall that theta is a nonlinear function of the fraction.)
@@ -201450,7 +201554,7 @@ __webpack_require__.r(__webpack_exports__);
201450
201554
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
201451
201555
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
201452
201556
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
201453
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
201557
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
201454
201558
  /*---------------------------------------------------------------------------------------------
201455
201559
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
201456
201560
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -201581,7 +201685,7 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Cu
201581
201685
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
201582
201686
  */
201583
201687
  constructOffsetXY(offsetDistanceOrOptions) {
201584
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__.OffsetOptions.create(offsetDistanceOrOptions);
201688
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_4__.OffsetOptions.create(offsetDistanceOrOptions);
201585
201689
  const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
201586
201690
  this.emitStrokableParts(handler, options.strokeOptions);
201587
201691
  return handler.claimResult();
@@ -201678,7 +201782,7 @@ class XYCurveEvaluator {
201678
201782
  static initWorkSpace() {
201679
201783
  XYCurveEvaluator._gaussX = new Float64Array(5);
201680
201784
  XYCurveEvaluator._gaussWeight = new Float64Array(5);
201681
- XYCurveEvaluator._gaussMapper = _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_4__.Quadrature.setupGauss5;
201785
+ XYCurveEvaluator._gaussMapper = (xA, xB, xMapped, wMapped) => _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_4__.Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
201682
201786
  }
201683
201787
  /**
201684
201788
  * Integrate between nominal fractions with default gauss rule.
@@ -205799,7 +205903,7 @@ class GrowableBlockedArray {
205799
205903
  return ia - ib; // so original order is maintained among duplicates !!!!
205800
205904
  }
205801
205905
  /** Return an array of block indices sorted per compareLexicalBlock function */
205802
- sortIndicesLexical(compareBlocks = GrowableBlockedArray.compareLexicalBlock) {
205906
+ sortIndicesLexical(compareBlocks = (dataArray, size, iA, iB) => GrowableBlockedArray.compareLexicalBlock(dataArray, size, iA, iB)) {
205803
205907
  const n = this._inUse;
205804
205908
  // let numCompare = 0;
205805
205909
  const result = new Uint32Array(n);
@@ -206070,7 +206174,7 @@ class GrowableFloat64Array {
206070
206174
  * * Uses insertion sort -- fine for small arrays (less than 30), slow for larger arrays
206071
206175
  * @param compareMethod comparison method
206072
206176
  */
206073
- sort(compareMethod = GrowableFloat64Array.compare) {
206177
+ sort(compareMethod = (a, b) => GrowableFloat64Array.compare(a, b)) {
206074
206178
  for (let i = 0; i < this._inUse; i++) {
206075
206179
  for (let j = i + 1; j < this._inUse; j++) {
206076
206180
  const tempI = this._data[i];
@@ -210183,7 +210287,7 @@ class Matrix3d {
210183
210287
  PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.coffs, result.coffs);
210184
210288
  if (this.inverseState === InverseMatrixState.inverseStored
210185
210289
  && other.inverseState === InverseMatrixState.inverseStored)
210186
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.inverseCoffs);
210290
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.inverseCoffs, this.inverseCoffs);
210187
210291
  else if (this.inverseState === InverseMatrixState.singular
210188
210292
  || other.inverseState === InverseMatrixState.singular)
210189
210293
  result.inverseState = InverseMatrixState.singular;
@@ -210201,7 +210305,7 @@ class Matrix3d {
210201
210305
  result = result ? result : new Matrix3d();
210202
210306
  PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.inverseCoffs, Matrix3d._productBuffer);
210203
210307
  if (this.inverseState === InverseMatrixState.inverseStored)
210204
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.coffs, this.inverseCoffs);
210308
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.coffs, this.inverseCoffs);
210205
210309
  else
210206
210310
  result.inverseState = InverseMatrixState.unknown;
210207
210311
  PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
@@ -210217,7 +210321,7 @@ class Matrix3d {
210217
210321
  result = result ? result : new Matrix3d();
210218
210322
  PackedMatrix3dOps.multiplyMatrixMatrix(this.inverseCoffs, other.coffs, Matrix3d._productBuffer);
210219
210323
  if (other.inverseState === InverseMatrixState.inverseStored)
210220
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.coffs);
210324
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.inverseCoffs, this.coffs);
210221
210325
  else
210222
210326
  result.inverseState = InverseMatrixState.unknown;
210223
210327
  PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
@@ -210235,7 +210339,7 @@ class Matrix3d {
210235
210339
  result = result ? result : new Matrix3d();
210236
210340
  PackedMatrix3dOps.multiplyMatrixMatrixTranspose(this.coffs, other.coffs, result.coffs);
210237
210341
  if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
210238
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixTransposeMatrix, other.inverseCoffs, this.inverseCoffs);
210342
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixTransposeMatrix(a, b, _result), other.inverseCoffs, this.inverseCoffs);
210239
210343
  else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
210240
210344
  result.inverseState = InverseMatrixState.singular;
210241
210345
  else
@@ -210254,7 +210358,7 @@ class Matrix3d {
210254
210358
  result = result ? result : new Matrix3d();
210255
210359
  PackedMatrix3dOps.multiplyMatrixTransposeMatrix(this.coffs, other.coffs, result.coffs);
210256
210360
  if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
210257
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrixTranspose, other.inverseCoffs, this.inverseCoffs);
210361
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrixTranspose(a, b, _result), other.inverseCoffs, this.inverseCoffs);
210258
210362
  else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
210259
210363
  result.inverseState = InverseMatrixState.singular;
210260
210364
  else
@@ -212580,16 +212684,16 @@ class Point2d extends XY {
212580
212684
  return Point2d.create(0, 0, result);
212581
212685
  }
212582
212686
  /**
212583
- * Starting at this point, move along vector by tangentFraction of the vector length, and then
212584
- * to the left by leftFraction of the perpendicular vector length.
212585
- * @param tangentFraction distance to move along the vector, as a fraction of vector
212586
- * @param leftFraction distance to move perpendicular to the vector, as a fraction of the rotated vector
212687
+ * Starting at this point, move along `vector` by `tangentFraction` of its length, and then
212688
+ * by `leftFraction` of its length along the left perpendicular.
212689
+ * @param tangentFraction distance to move along `vector`, as a fraction of its length
212690
+ * @param leftFraction distance to move perpendicular to `vector`, as a fraction of its length
212587
212691
  * @param vector the other vector
212588
212692
  */
212589
- addForwardLeft(tangentFraction, leftFraction, vector) {
212693
+ addForwardLeft(tangentFraction, leftFraction, vector, result) {
212590
212694
  const dx = vector.x;
212591
212695
  const dy = vector.y;
212592
- return Point2d.create(this.x + tangentFraction * dx - leftFraction * dy, this.y + tangentFraction * dy + leftFraction * dx);
212696
+ return Point2d.create(this.x + tangentFraction * dx - leftFraction * dy, this.y + tangentFraction * dy + leftFraction * dx, result);
212593
212697
  }
212594
212698
  /**
212595
212699
  * Interpolate at tangentFraction between this instance and point, and then Move by leftFraction
@@ -212773,11 +212877,10 @@ class Vector2d extends XY {
212773
212877
  return this.safeDivideOrNull(mag, result);
212774
212878
  }
212775
212879
  /**
212776
- * Return fractional projection of target vector onto this
212777
- * * It's returning the signed projection magnitude divided by the target magnitude. In other words,
212778
- * it's returning the length of the projection as a fraction of the target magnitude.
212880
+ * Return fractional length of the projection of the instance onto the target vector.
212779
212881
  * @param target the target vector
212780
- * @param defaultFraction the returned value in case magnitude square of target vector is very small
212882
+ * @param defaultFraction the returned value in case the magnitude of `target` is too small
212883
+ * @returns the signed length of the projection divided by the length of `target`
212781
212884
  */
212782
212885
  fractionOfProjectionToVector(target, defaultFraction) {
212783
212886
  /*
@@ -214175,24 +214278,24 @@ class Vector3d extends XYZ {
214175
214278
  return undefined;
214176
214279
  }
214177
214280
  /**
214178
- * Return fractional projection of this vector on the target vector.
214179
- * * It's returning the signed projection magnitude divided by the target magnitude.
214180
- * * To find the projection vector, scale the target vector by the value that this function is returning.
214281
+ * Return fractional length of the projection of the instance onto the target vector.
214282
+ * * To find the projection vector, scale the target vector by the return value.
214181
214283
  * * Math details can be found at docs/learning/geometry/PointVector.md
214182
214284
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/ProjectVectorOnVector
214183
214285
  * and https://www.itwinjs.org/sandbox/SaeedTorabi/ProjectVectorOnPlane
214184
214286
  * @param target the target vector
214185
- * @param defaultFraction the returned value in case magnitude square of target vector is very small
214287
+ * @param defaultFraction the returned value in case the magnitude of `target` is too small
214288
+ * @returns the signed length of the projection divided by the length of `target`
214186
214289
  * */
214187
214290
  fractionOfProjectionToVector(target, defaultFraction = 0) {
214188
214291
  /*
214189
214292
  * Projection vector is ((this.target)/||target||)(target/||target||) = ((this.target)/||target||^2)target
214190
214293
  * This function returns (this.target)/||target||^2
214191
214294
  */
214192
- const numerator = this.dotProduct(target);
214193
214295
  const denominator = target.magnitudeSquared();
214194
214296
  if (denominator < _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistanceSquared)
214195
214297
  return defaultFraction;
214298
+ const numerator = this.dotProduct(target);
214196
214299
  return numerator / denominator;
214197
214300
  }
214198
214301
  /**
@@ -215141,7 +215244,7 @@ class Point4dArray {
215141
215244
  }
215142
215245
  /** unpack from xyzw xyzw... array to array of Point3d and array of weight.
215143
215246
  */
215144
- static unpackFloat64ArrayToPointsAndWeights(data, points, weights, pointFormatter = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create) {
215247
+ static unpackFloat64ArrayToPointsAndWeights(data, points, weights, pointFormatter = (x, y, z) => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z)) {
215145
215248
  points.length = 0;
215146
215249
  weights.length = 0;
215147
215250
  for (let i = 0; i + 3 < data.length; i += 4) {
@@ -215594,7 +215697,7 @@ class Point3dArray {
215594
215697
  * @param data point data with various leaf forms such as `[1,2,3]`, `{x:1,y:2,z:3}`, `Point3d`
215595
215698
  */
215596
215699
  static cloneDeepJSONNumberArrays(data) {
215597
- const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector(this.xyzToArray);
215700
+ const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector((x, y, z) => this.xyzToArray(x, y, z));
215598
215701
  _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.VariantPointDataStream.streamXYZ(data, collector);
215599
215702
  return collector.claimResult();
215600
215703
  }
@@ -215639,7 +215742,7 @@ class Point3dArray {
215639
215742
  * @param data point data with various leaf forms such as `[1,2,3]`, `{x:1,y:2,z:3}`, `Point3d`
215640
215743
  */
215641
215744
  static cloneDeepXYZPoint3dArrays(data) {
215642
- const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create);
215745
+ const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector((x, y, z) => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z));
215643
215746
  _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.VariantPointDataStream.streamXYZ(data, collector);
215644
215747
  return collector.claimResult();
215645
215748
  }
@@ -215682,7 +215785,7 @@ class Point3dArray {
215682
215785
  let n = points.length;
215683
215786
  // Get deep copy
215684
215787
  const xy1 = points.slice(0, n);
215685
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
215788
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan(a, b));
215686
215789
  if (n < 3) {
215687
215790
  for (const p of xy1)
215688
215791
  hullPoints.push(p);
@@ -215707,7 +215810,7 @@ class Point3dArray {
215707
215810
  const i0 = hullPoints.length - 1;
215708
215811
  xy1.length = numInside;
215709
215812
  xy1.push(hullPoints[0]); // force first point to be reconsidered as final hull point.
215710
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
215813
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan(a, b));
215711
215814
  n = xy1.length;
215712
215815
  // xy1.back () is already on stack.
215713
215816
  hullPoints.push(xy1[n - 1]);
@@ -216198,7 +216301,7 @@ class CutLoopMergeContext {
216198
216301
  sortRay.direction.normalizeInPlace();
216199
216302
  for (const loop of this.inputLoops)
216200
216303
  loop.setSortCoordinates(sortRay);
216201
- this.inputLoops.sort(CutLoop.sortFunction);
216304
+ this.inputLoops.sort((loopA, loopB) => CutLoop.sortFunction(loopA, loopB));
216202
216305
  }
216203
216306
  }
216204
216307
  /**
@@ -216244,9 +216347,8 @@ class CutLoopMergeContext {
216244
216347
  }
216245
216348
  }
216246
216349
  }
216247
- /** Static class for operations that treat an array of points as a polygon (with area!) */
216248
216350
  /**
216249
- * Various (static method) computations for arrays of points interpreted as a polygon.
216351
+ * Various static methods to perform computations on an array of points interpreted as a polygon.
216250
216352
  * @public
216251
216353
  */
216252
216354
  class PolygonOps {
@@ -219672,6 +219774,163 @@ class Range2d extends RangeBase {
219672
219774
  }
219673
219775
 
219674
219776
 
219777
+ /***/ }),
219778
+
219779
+ /***/ "../../core/geometry/lib/esm/geometry3d/Ray2d.js":
219780
+ /*!*******************************************************!*\
219781
+ !*** ../../core/geometry/lib/esm/geometry3d/Ray2d.js ***!
219782
+ \*******************************************************/
219783
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
219784
+
219785
+ "use strict";
219786
+ __webpack_require__.r(__webpack_exports__);
219787
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
219788
+ /* harmony export */ Ray2d: () => (/* binding */ Ray2d)
219789
+ /* harmony export */ });
219790
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
219791
+ /*---------------------------------------------------------------------------------------------
219792
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
219793
+ * See LICENSE.md in the project root for license terms and full copyright notice.
219794
+ *--------------------------------------------------------------------------------------------*/
219795
+ /** @packageDocumentation
219796
+ * @module CartesianGeometry
219797
+ */
219798
+
219799
+ // cspell:word CCWXY, CWXY
219800
+ /**
219801
+ * Ray with xy origin and direction
219802
+ * @public
219803
+ */
219804
+ class Ray2d {
219805
+ constructor(origin, direction) {
219806
+ this._origin = origin;
219807
+ this._direction = direction;
219808
+ }
219809
+ /** Copy coordinates from origin and direction. */
219810
+ set(origin, direction) {
219811
+ this._origin.setFrom(origin);
219812
+ this._direction.setFrom(direction);
219813
+ }
219814
+ /**
219815
+ * Create from `origin` and `target` points.
219816
+ * @param origin ray origin, cloned
219817
+ * @param target end of ray direction vector. The direction vector is `target - origin`.
219818
+ * @param result optional pre-allocated object to return
219819
+ */
219820
+ static createOriginAndTarget(origin, target, result) {
219821
+ if (result) {
219822
+ result._origin.setFrom(origin);
219823
+ result._direction.set(target.x - origin.x, target.y - origin.y);
219824
+ return result;
219825
+ }
219826
+ return new Ray2d(origin.clone(), origin.vectorTo(target));
219827
+ }
219828
+ /**
219829
+ * Create by copying coordinates from `origin` and `direction`.
219830
+ * @param origin ray origin
219831
+ * @param direction ray direction
219832
+ * @param result optional pre-allocated object to return
219833
+ */
219834
+ static createOriginAndDirection(origin, direction, result) {
219835
+ if (result) {
219836
+ result.set(origin, direction);
219837
+ return result;
219838
+ }
219839
+ return new Ray2d(origin.clone(), direction.clone());
219840
+ }
219841
+ /** Create from captured `origin` and `direction`. */
219842
+ static createOriginAndDirectionCapture(origin, direction, result) {
219843
+ if (result) {
219844
+ result._origin = origin;
219845
+ result._direction = direction;
219846
+ return result;
219847
+ }
219848
+ return new Ray2d(origin, direction);
219849
+ }
219850
+ /** Get the reference to the ray origin. */
219851
+ get origin() { return this._origin; }
219852
+ /** Get the reference to the ray direction. */
219853
+ get direction() { return this._direction; }
219854
+ /**
219855
+ * Return a parallel ray to the left of this ray.
219856
+ * @param leftFraction distance between rays, as a fraction of the magnitude of this ray's direction vector
219857
+ */
219858
+ parallelRay(leftFraction, result) {
219859
+ if (result) {
219860
+ this._origin.addForwardLeft(0.0, leftFraction, this._direction, result._origin);
219861
+ result._direction.setFrom(this._direction);
219862
+ return result;
219863
+ }
219864
+ return new Ray2d(this._origin.addForwardLeft(0.0, leftFraction, this._direction), this._direction.clone());
219865
+ }
219866
+ /** Return a ray with cloned origin and with direction rotated 90 degrees counterclockwise */
219867
+ ccwPerpendicularRay(result) {
219868
+ if (result) {
219869
+ result._origin.setFrom(this._origin);
219870
+ this._direction.rotate90CCWXY(result._direction);
219871
+ return result;
219872
+ }
219873
+ return new Ray2d(this._origin.clone(), this._direction.rotate90CCWXY());
219874
+ }
219875
+ /** Return a ray with cloned origin and with direction rotated 90 degrees clockwise */
219876
+ cwPerpendicularRay(result) {
219877
+ if (result) {
219878
+ result._origin.setFrom(this._origin);
219879
+ this._direction.rotate90CWXY(result._direction);
219880
+ return result;
219881
+ }
219882
+ return new Ray2d(this._origin.clone(), this._direction.rotate90CWXY());
219883
+ }
219884
+ /**
219885
+ * Normalize the direction vector in place.
219886
+ * @param defaultX value to set `this.direction.x` if normalization fails. Default value 1.
219887
+ * @param defaultY value to set `this.direction.y` if normalization fails. Default value 0.
219888
+ * @returns whether normalization succeeded (i.e., direction is nonzero)
219889
+ */
219890
+ normalizeDirectionInPlace(defaultX = 1, defaultY = 0) {
219891
+ if (this._direction.normalize(this._direction))
219892
+ return true;
219893
+ this._direction.x = defaultX;
219894
+ this._direction.y = defaultY;
219895
+ return false;
219896
+ }
219897
+ /**
219898
+ * Intersect this ray with the unbounded line defined by the given points.
219899
+ * @param linePointA start of the line
219900
+ * @param linePointB end of the line
219901
+ * @returns object with named values:
219902
+ * * `hasIntersection`: whether the intersection exists.
219903
+ * * `fraction`: ray parameter of intersection, or 0.0 if `!hasIntersection`. If the instance is normalized, this is the signed distance along the ray to the intersection point.
219904
+ * * `cross`: the 2D cross product `this.direction x (linePointB - linePointA)`, useful for determining orientation of the line and ray.
219905
+ */
219906
+ intersectUnboundedLine(linePointA, linePointB) {
219907
+ const lineDirection = linePointA.vectorTo(linePointB);
219908
+ const vector0 = linePointA.vectorTo(this._origin);
219909
+ const h0 = vector0.crossProduct(lineDirection);
219910
+ const dHds = this._direction.crossProduct(lineDirection);
219911
+ // h = h0 + s * dh
219912
+ const ff = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-h0, dHds);
219913
+ const hasIntersection = ff !== undefined;
219914
+ return { hasIntersection, fraction: hasIntersection ? ff : 0.0, cross: dHds };
219915
+ }
219916
+ /** Return the ray fraction where the given point projects onto the ray. */
219917
+ projectionFraction(point) {
219918
+ return this._origin.vectorTo(point).fractionOfProjectionToVector(this._direction);
219919
+ }
219920
+ /** Return the ray fraction where the given point projects onto the perpendicular ray. */
219921
+ perpendicularProjectionFraction(point) {
219922
+ const uv = this._direction.crossProduct(this._origin.vectorTo(point));
219923
+ const uu = this._direction.magnitudeSquared();
219924
+ // Want zero returned if failure case, not undefined
219925
+ return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.safeDivideFraction(uv, uu, 0.0);
219926
+ }
219927
+ /** Compute and return origin plus scaled direction. */
219928
+ fractionToPoint(f, result) {
219929
+ return this._origin.plusScaled(this._direction, f, result);
219930
+ }
219931
+ }
219932
+
219933
+
219675
219934
  /***/ }),
219676
219935
 
219677
219936
  /***/ "../../core/geometry/lib/esm/geometry3d/Ray3d.js":
@@ -221355,7 +221614,7 @@ class Transform {
221355
221614
  const originY = this.origin.y;
221356
221615
  const originZ = this.origin.z;
221357
221616
  if (result) {
221358
- const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
221617
+ const n = Transform.matchArrayLengths(points, result, () => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero());
221359
221618
  for (let i = 0; i < n; i++)
221360
221619
  this._matrix.multiplyInverseXYZAsPoint3d(points[i].x - originX, points[i].y - originY, points[i].z - originZ, result[i]);
221361
221620
  return result;
@@ -221385,7 +221644,7 @@ class Transform {
221385
221644
  */
221386
221645
  multiplyPoint2dArray(points, result) {
221387
221646
  if (result) {
221388
- const n = Transform.matchArrayLengths(points, result, _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero);
221647
+ const n = Transform.matchArrayLengths(points, result, () => _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero());
221389
221648
  for (let i = 0; i < n; i++)
221390
221649
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, points[i], result[i]);
221391
221650
  return result;
@@ -221402,7 +221661,7 @@ class Transform {
221402
221661
  */
221403
221662
  multiplyPoint3dArray(points, result) {
221404
221663
  if (result) {
221405
- const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
221664
+ const n = Transform.matchArrayLengths(points, result, () => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero());
221406
221665
  for (let i = 0; i < n; i++)
221407
221666
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, points[i], result[i]);
221408
221667
  return result;
@@ -226158,12 +226417,12 @@ class Complex {
226158
226417
  "use strict";
226159
226418
  __webpack_require__.r(__webpack_exports__);
226160
226419
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
226161
- /* harmony export */ ConvexPolygon2d: () => (/* binding */ ConvexPolygon2d),
226162
- /* harmony export */ Ray2d: () => (/* binding */ Ray2d)
226420
+ /* harmony export */ ConvexPolygon2d: () => (/* binding */ ConvexPolygon2d)
226163
226421
  /* harmony export */ });
226164
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
226422
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
226165
226423
  /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
226166
226424
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
226425
+ /* harmony import */ var _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Ray2d */ "../../core/geometry/lib/esm/geometry3d/Ray2d.js");
226167
226426
  /*---------------------------------------------------------------------------------------------
226168
226427
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
226169
226428
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -226174,97 +226433,7 @@ __webpack_require__.r(__webpack_exports__);
226174
226433
 
226175
226434
 
226176
226435
 
226177
- /**
226178
- * Ray with xy origin and direction
226179
- * @internal
226180
- */
226181
- class Ray2d {
226182
- constructor(origin, direction) {
226183
- this._origin = origin;
226184
- this._direction = direction;
226185
- }
226186
- /** Create from 2d `origin` and `target`.
226187
- * * `target - origin` is the direction vector.
226188
- */
226189
- static createOriginAndTarget(origin, target) {
226190
- return new Ray2d(origin.clone(), origin.vectorTo(target));
226191
- }
226192
- /** Create from (clones of) `origin` point and `direction` vector */
226193
- static createOriginAndDirection(origin, direction) {
226194
- return new Ray2d(origin.clone(), direction.clone());
226195
- }
226196
- /** Capture `origin` and `direction` as ray member variables. */
226197
- static createOriginAndDirectionCapture(origin, direction) {
226198
- return new Ray2d(origin, direction);
226199
- }
226200
- /** Get the (REFERENCE TO) the ray origin. */
226201
- get origin() { return this._origin; }
226202
- /** Get the (REFERENCE TO) the ray direction. */
226203
- get direction() { return this._direction; }
226204
- /**
226205
- * Return a ray that is parallel at distance to the left, specified as fraction of the ray's direction vector.
226206
- */
226207
- parallelRay(leftFraction) {
226208
- return new Ray2d(this._origin.addForwardLeft(0.0, leftFraction, this._direction), this._direction);
226209
- }
226210
- /** Return a ray with same origin, direction rotated 90 degrees counterclockwise */
226211
- ccwPerpendicularRay() {
226212
- return new Ray2d(this._origin, this._direction.rotate90CCWXY());
226213
- }
226214
- /** Return a ray with same origin, direction rotated 90 degrees clockwise */
226215
- cwPerpendicularRay() {
226216
- return new Ray2d(this._origin, this._direction.rotate90CWXY());
226217
- }
226218
- /** Normalize the direction vector in place. */
226219
- normalizeDirectionInPlace(defaultX = 1, defaultY = 0) {
226220
- if (this._direction.normalize(this._direction)) {
226221
- return true;
226222
- }
226223
- else {
226224
- this._direction.x = defaultX;
226225
- this._direction.y = defaultY;
226226
- // magnitude = 0.0;
226227
- return false;
226228
- }
226229
- }
226230
- /**
226231
- * Intersect this ray (ASSUMED NORMALIZED) with unbounded line defined by points.
226232
- * (The normalization assumption affects test for parallel vectors.)
226233
- * Fraction and dHds passed as number[] to use by reference... Sticking to return of true and false in the case fraction is zero after
226234
- * a true safe divide
226235
- */
226236
- intersectUnboundedLine(linePointA, linePointB, fraction, dHds) {
226237
- const lineDirection = linePointA.vectorTo(linePointB);
226238
- const vector0 = linePointA.vectorTo(this._origin);
226239
- const h0 = vector0.crossProduct(lineDirection);
226240
- dHds[0] = this._direction.crossProduct(lineDirection);
226241
- // h = h0 + s * dh
226242
- const ff = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-h0, dHds[0]);
226243
- if (ff !== undefined) {
226244
- fraction[0] = ff;
226245
- return true;
226246
- }
226247
- else {
226248
- fraction[0] = 0.0;
226249
- return false;
226250
- }
226251
- }
226252
- /** return the ray fraction where point projects to the ray */
226253
- projectionFraction(point) {
226254
- return this._origin.vectorTo(point).fractionOfProjectionToVector(this._direction);
226255
- }
226256
- /** return the fraction of projection to the perpendicular ray */
226257
- perpendicularProjectionFraction(point) {
226258
- const uv = this._direction.crossProduct(this._origin.vectorTo(point));
226259
- const uu = this._direction.magnitudeSquared();
226260
- // Want zero returned if failure case, not undefined
226261
- return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.safeDivideFraction(uv, uu, 0.0);
226262
- }
226263
- /** Return point from origin plus a scaled vector */
226264
- fractionToPoint(f) {
226265
- return this._origin.plusScaled(this._direction, f);
226266
- }
226267
- }
226436
+
226268
226437
  /**
226269
226438
  * Convex hull of points in 2d.
226270
226439
  * @internal
@@ -226330,7 +226499,7 @@ class ConvexPolygon2d {
226330
226499
  const xy1 = this._hullPoints[i];
226331
226500
  const c = xy0.crossProductToPoints(xy1, xy);
226332
226501
  if (c < 0.0) {
226333
- const ray = Ray2d.createOriginAndTarget(xy0, xy1);
226502
+ const ray = _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_0__.Ray2d.createOriginAndTarget(xy0, xy1);
226334
226503
  const s = ray.projectionFraction(xy);
226335
226504
  let d = 0.0;
226336
226505
  if (s < 0.0)
@@ -226381,10 +226550,11 @@ class ConvexPolygon2d {
226381
226550
  return true;
226382
226551
  }
226383
226552
  /**
226384
- * Return 2 distances bounding the intersection of the ray with a convex hull.
226385
- * ASSUME (for tolerance) the ray has normalized direction vector.
226386
- * Both negative and positive distances along the ray are possible.
226387
- * Returns range with extremities if less than 3 points, distanceA > distanceB, or if cross product < 0
226553
+ * Return 2 distances bounding the intersection of the ray with this convex hull.
226554
+ * @param ray ray to clip to this convex polygon. ASSUME normalized direction vector, so that ray fractions are distances.
226555
+ * @returns intersection bounds as min and max distances along the ray (from its origin).
226556
+ * * Both negative and positive distances along the ray are possible.
226557
+ * * Range has extreme values if less than 3 points, distanceA > distanceB, or if cross product < 0.
226388
226558
  */
226389
226559
  clipRay(ray) {
226390
226560
  let distanceA = -Number.MAX_VALUE;
@@ -226394,16 +226564,15 @@ class ConvexPolygon2d {
226394
226564
  return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range1d.createNull();
226395
226565
  let xy0 = this._hullPoints[n - 1];
226396
226566
  for (const xy1 of this._hullPoints) {
226397
- const distance = [];
226398
- const dHds = [];
226399
- if (ray.intersectUnboundedLine(xy0, xy1, distance, dHds)) {
226400
- if (dHds[0] > 0.0) {
226401
- if (distance[0] < distanceB)
226402
- distanceB = distance[0];
226567
+ const { hasIntersection, fraction, cross } = ray.intersectUnboundedLine(xy0, xy1);
226568
+ if (hasIntersection) {
226569
+ if (cross > 0.0) {
226570
+ if (fraction < distanceB)
226571
+ distanceB = fraction;
226403
226572
  }
226404
226573
  else {
226405
- if (distance[0] > distanceA)
226406
- distanceA = distance[0];
226574
+ if (fraction > distanceA)
226575
+ distanceA = fraction;
226407
226576
  }
226408
226577
  if (distanceA > distanceB)
226409
226578
  return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range1d.createNull();
@@ -226446,7 +226615,7 @@ class ConvexPolygon2d {
226446
226615
  return undefined;
226447
226616
  // Get deep copy
226448
226617
  const xy1 = points.slice(0, n);
226449
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
226618
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.lexicalXYLessThan(a, b));
226450
226619
  hull.push(xy1[0]); // This is sure to stay
226451
226620
  hull.push(xy1[1]); // This one can be removed in loop.
226452
226621
  // First sweep creates upper hull
@@ -226895,7 +227064,6 @@ __webpack_require__.r(__webpack_exports__);
226895
227064
  /** @packageDocumentation
226896
227065
  * @module Numerics
226897
227066
  */
226898
- // import { Angle, AngleSweep, Geometry } from "../Geometry";
226899
227067
 
226900
227068
 
226901
227069
 
@@ -226904,7 +227072,6 @@ __webpack_require__.r(__webpack_exports__);
226904
227072
 
226905
227073
 
226906
227074
 
226907
- // import { Arc3d } from "../curve/Arc3d";
226908
227075
  // cspell:word Cardano
226909
227076
  // cspell:word CCminusSS
226910
227077
  /* eslint-disable @typescript-eslint/naming-convention */
@@ -228797,19 +228964,19 @@ class GaussMapper {
228797
228964
  numGaussPoints = 5;
228798
228965
  switch (numGaussPoints) {
228799
228966
  case 1:
228800
- this.mapXAndWFunction = Quadrature.setupGauss1;
228967
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss1(xA, xB, xMapped, wMapped);
228801
228968
  break;
228802
228969
  case 2:
228803
- this.mapXAndWFunction = Quadrature.setupGauss2;
228970
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss2(xA, xB, xMapped, wMapped);
228804
228971
  break;
228805
228972
  case 3:
228806
- this.mapXAndWFunction = Quadrature.setupGauss3;
228973
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss3(xA, xB, xMapped, wMapped);
228807
228974
  break;
228808
228975
  case 4:
228809
- this.mapXAndWFunction = Quadrature.setupGauss4;
228976
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss4(xA, xB, xMapped, wMapped);
228810
228977
  break;
228811
228978
  default:
228812
- this.mapXAndWFunction = Quadrature.setupGauss5;
228979
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
228813
228980
  break;
228814
228981
  }
228815
228982
  }
@@ -231285,7 +231452,7 @@ class IndexedEdgeMatcher {
231285
231452
  }
231286
231453
  /** Sort the edge index array. */
231287
231454
  sort() {
231288
- this.edges.sort(SortableEdge.lessThan);
231455
+ this.edges.sort((edgeA, edgeB) => SortableEdge.lessThan(edgeA, edgeB));
231289
231456
  }
231290
231457
  /** Create a single or compound SortableEdgeCluster in dest. */
231291
231458
  collectSortableEdgeCluster(index0, index1, dest) {
@@ -233668,7 +233835,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
233668
233835
  * * Rely on the builder's compress step to find common vertex coordinates
233669
233836
  * @internal
233670
233837
  */
233671
- addGraph(graph, needParams, acceptFaceFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior, isEdgeVisibleFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testMateMaskExterior) {
233838
+ addGraph(graph, needParams, acceptFaceFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior(node), isEdgeVisibleFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testMateMaskExterior(node)) {
233672
233839
  let index = 0;
233673
233840
  const needNormals = this._options.needNormals;
233674
233841
  let normalIndex = 0;
@@ -233718,7 +233885,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
233718
233885
  /** Create a polyface containing the faces of a HalfEdgeGraph, with test function to filter faces.
233719
233886
  * @internal
233720
233887
  */
233721
- static graphToPolyface(graph, options, acceptFaceFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior) {
233888
+ static graphToPolyface(graph, options, acceptFaceFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior(node)) {
233722
233889
  const builder = PolyfaceBuilder.create(options);
233723
233890
  builder.addGraph(graph, builder.options.needParams, acceptFaceFunction);
233724
233891
  builder.endFace();
@@ -235238,40 +235405,41 @@ __webpack_require__.r(__webpack_exports__);
235238
235405
  /* harmony export */ PolyfaceQuery: () => (/* binding */ PolyfaceQuery),
235239
235406
  /* harmony export */ SweepLineStringToFacetsOptions: () => (/* binding */ SweepLineStringToFacetsOptions)
235240
235407
  /* harmony export */ });
235241
- /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
235242
235408
  /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
235409
+ /* harmony import */ var _curve_CurveOps__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../curve/CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
235243
235410
  /* harmony import */ var _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../curve/internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
235244
235411
  /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
235245
235412
  /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
235246
235413
  /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
235247
- /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
235414
+ /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
235248
235415
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
235249
235416
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
235250
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
235417
+ /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
235418
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
235251
235419
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
235420
+ /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
235252
235421
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
235253
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
235422
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
235254
235423
  /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
235255
235424
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
235256
235425
  /* harmony import */ var _numerics_UnionFind__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../numerics/UnionFind */ "../../core/geometry/lib/esm/numerics/UnionFind.js");
235257
- /* harmony import */ var _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../topology/ChainMerge */ "../../core/geometry/lib/esm/topology/ChainMerge.js");
235258
- /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
235259
- /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
235260
- /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
235261
- /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
235426
+ /* harmony import */ var _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../topology/ChainMerge */ "../../core/geometry/lib/esm/topology/ChainMerge.js");
235427
+ /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
235428
+ /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
235429
+ /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
235430
+ /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
235431
+ /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
235432
+ /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
235433
+ /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
235262
235434
  /* harmony import */ var _IndexedEdgeMatcher__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./IndexedEdgeMatcher */ "../../core/geometry/lib/esm/polyface/IndexedEdgeMatcher.js");
235263
235435
  /* harmony import */ var _IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
235264
- /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
235436
+ /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
235437
+ /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
235265
235438
  /* harmony import */ var _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./multiclip/SweepLineStringToFacetContext */ "../../core/geometry/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js");
235266
- /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
235439
+ /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
235267
235440
  /* harmony import */ var _Polyface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
235268
235441
  /* harmony import */ var _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
235269
- /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
235270
- /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
235271
- /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
235272
- /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
235273
- /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
235274
- /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
235442
+ /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
235275
235443
  /*---------------------------------------------------------------------------------------------
235276
235444
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
235277
235445
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -235312,6 +235480,7 @@ __webpack_require__.r(__webpack_exports__);
235312
235480
 
235313
235481
 
235314
235482
 
235483
+
235315
235484
 
235316
235485
 
235317
235486
  /**
@@ -235945,18 +236114,18 @@ class PolyfaceQuery {
235945
236114
  edges.push(_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.create(pointA, pointB));
235946
236115
  edgeStrings.push([pointA.clone(), pointB.clone()]);
235947
236116
  });
235948
- const chains = _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_15__.OffsetHelpers.collectChains(edges, gapTolerance, planarityTolerance);
236117
+ const chains = _curve_CurveOps__WEBPACK_IMPORTED_MODULE_17__.CurveOps.collectChains(edges, gapTolerance, planarityTolerance);
235949
236118
  if (chains) {
235950
- const frameBuilder = new _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_17__.FrameBuilder();
236119
+ const frameBuilder = new _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_18__.FrameBuilder();
235951
236120
  frameBuilder.announce(chains);
235952
236121
  const frame = frameBuilder.getValidatedFrame(false);
235953
236122
  if (frame !== undefined) {
235954
236123
  const inverseFrame = frame.inverse();
235955
236124
  if (inverseFrame !== undefined) {
235956
236125
  inverseFrame.multiplyPoint3dArrayArrayInPlace(edgeStrings);
235957
- const graph = _topology_Merging__WEBPACK_IMPORTED_MODULE_18__.HalfEdgeGraphMerge.formGraphFromChains(edgeStrings, true, _topology_Graph__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeMask.BOUNDARY_EDGE);
236126
+ const graph = _topology_Merging__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeGraphMerge.formGraphFromChains(edgeStrings, true, _topology_Graph__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMask.BOUNDARY_EDGE);
235958
236127
  if (graph) {
235959
- _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeGraphSearch.collectConnectedComponentsWithExteriorParityMasks(graph, new _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMaskTester(_topology_Graph__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeMask.BOUNDARY_EDGE), _topology_Graph__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeMask.EXTERIOR);
236128
+ _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__.HalfEdgeGraphSearch.collectConnectedComponentsWithExteriorParityMasks(graph, new _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__.HalfEdgeMaskTester(_topology_Graph__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMask.BOUNDARY_EDGE), _topology_Graph__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMask.EXTERIOR);
235960
236129
  // this.purgeNullFaces(HalfEdgeMask.EXTERIOR);
235961
236130
  const polyface1 = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.graphToPolyface(graph);
235962
236131
  builder.addIndexedPolyface(polyface1, false, frame);
@@ -235969,14 +236138,14 @@ class PolyfaceQuery {
235969
236138
  }
235970
236139
  /**
235971
236140
  * Return a mesh with "some" holes filled in with new facets.
235972
- * * The candidates to be filled are all loops returned by boundaryChainsAsLineString3d
235973
- * * unclosed chains are rejected.
235974
- * * optionally also copy the original mesh, so the composite is a clone with holes filled.
236141
+ * * Candidate chains are computed by [[announceBoundaryChainsAsLineString3d]].
236142
+ * * Unclosed chains are rejected.
236143
+ * * Closed chains are triangulated and returned as a mesh.
235975
236144
  * * The options structure enforces restrictions on how complicated the hole filling can be:
235976
236145
  * * maxEdgesAroundHole -- holes with more edges are skipped
235977
236146
  * * maxPerimeter -- holes with larger summed edge lengths are skipped.
235978
236147
  * * upVector -- holes that do not have positive area along this view are skipped.
235979
- * * includeOriginalMesh -- includes the original mesh in the output mesh.
236148
+ * * includeOriginalMesh -- includes the original mesh in the output mesh, so the composite mesh is a clone with holes filled
235980
236149
  * @param mesh existing mesh
235981
236150
  * @param options options controlling the hole fill.
235982
236151
  * @param unfilledChains optional array to receive the points around holes that were not filled.
@@ -235995,11 +236164,11 @@ class PolyfaceQuery {
235995
236164
  rejected = true;
235996
236165
  else if (options.maxEdgesAroundHole !== undefined && points.length > options.maxEdgesAroundHole)
235997
236166
  rejected = true;
235998
- else if (options.maxPerimeter !== undefined && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_21__.Point3dArray.sumEdgeLengths(points, false) > options.maxPerimeter)
236167
+ else if (options.maxPerimeter !== undefined && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_22__.Point3dArray.sumEdgeLengths(points, false) > options.maxPerimeter)
235999
236168
  rejected = true;
236000
236169
  else if (options.upVector !== undefined && _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.sumTriangleAreasPerpendicularToUpVector(points, options.upVector) <= 0.0)
236001
236170
  rejected = true;
236002
- if (!rejected && _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_22__.SpacePolygonTriangulation.triangulateSimplestSpaceLoop(points, (_loop, triangles) => {
236171
+ if (!rejected && _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_23__.SpacePolygonTriangulation.triangulateSimplestSpaceLoop(points, (_loop, triangles) => {
236003
236172
  for (const t of triangles)
236004
236173
  builder.addPolygon(t);
236005
236174
  })) {
@@ -236025,7 +236194,7 @@ class PolyfaceQuery {
236025
236194
  }
236026
236195
  polyface.setNumWrap(0);
236027
236196
  const polyfaces = [];
236028
- const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
236197
+ const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
236029
236198
  options.needNormals = polyface.normal !== undefined;
236030
236199
  options.needParams = polyface.param !== undefined;
236031
236200
  options.needColors = polyface.color !== undefined;
@@ -236048,7 +236217,7 @@ class PolyfaceQuery {
236048
236217
  return this.cloneFiltered(source.createVisitor(0), filter);
236049
236218
  }
236050
236219
  source.setNumWrap(0);
236051
- const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
236220
+ const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
236052
236221
  options.needNormals = source.normal !== undefined;
236053
236222
  options.needParams = source.param !== undefined;
236054
236223
  options.needColors = source.color !== undefined;
@@ -236186,7 +236355,7 @@ class PolyfaceQuery {
236186
236355
  true, true, true); // accept all outputs
236187
236356
  let chainContext;
236188
236357
  if (options.assembleChains)
236189
- chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__.ChainMergeContext.create();
236358
+ chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
236190
236359
  const context = _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__.ClipSweptLineStringContext.create(linestringPoints, options.vectorToEye);
236191
236360
  if (context) {
236192
236361
  const visitor = polyface.createVisitor(0);
@@ -236238,7 +236407,7 @@ class PolyfaceQuery {
236238
236407
  * * Facets are ASSUMED to be convex and planar, and not overlap in the z direction.
236239
236408
  */
236240
236409
  static async asyncSweepLinestringToFacetsXYReturnChains(linestringPoints, polyface) {
236241
- const chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__.ChainMergeContext.create();
236410
+ const chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
236242
236411
  await Promise.resolve(this.asyncAnnounceSweepLinestringToConvexPolyfaceXY(linestringPoints, polyface, (_linestring, _segmentIndex, _polyface, _facetIndex, points, indexA, indexB) => {
236243
236412
  chainContext.addSegment(points[indexA], points[indexB]);
236244
236413
  }));
@@ -236254,7 +236423,7 @@ class PolyfaceQuery {
236254
236423
  if (polyface instanceof _Polyface__WEBPACK_IMPORTED_MODULE_6__.Polyface) {
236255
236424
  return this.collectRangeLengthData(polyface.createVisitor(0));
236256
236425
  }
236257
- const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_25__.RangeLengthData();
236426
+ const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__.RangeLengthData();
236258
236427
  // polyface is a visitor ...
236259
236428
  for (polyface.reset(); polyface.moveToNextFacet();)
236260
236429
  rangeData.accumulateGrowableXYZArrayRange(polyface.point);
@@ -236266,9 +236435,9 @@ class PolyfaceQuery {
236266
236435
  static cloneWithTVertexFixup(polyface) {
236267
236436
  const oldFacetVisitor = polyface.createVisitor(1); // This is to visit the existing facets.
236268
236437
  const newFacetVisitor = polyface.createVisitor(0); // This is to build the new facets.
236269
- const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_26__.XYPointBuckets.create(polyface.data.point, 30);
236438
+ const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__.XYPointBuckets.create(polyface.data.point, 30);
236270
236439
  const builder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create();
236271
- const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_27__.Range3d.createNull();
236440
+ const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d.createNull();
236272
236441
  const point0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
236273
236442
  const point1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
236274
236443
  const spacePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
@@ -236376,7 +236545,7 @@ class PolyfaceQuery {
236376
236545
  }
236377
236546
  facetIndexAndVertexIndices.push(entry);
236378
236547
  }
236379
- facetIndexAndVertexIndices.sort(this.compareFacetIndexAndVertexIndices);
236548
+ facetIndexAndVertexIndices.sort((arrayA, arrayB) => this.compareFacetIndexAndVertexIndices(arrayA, arrayB));
236380
236549
  let i0, i1;
236381
236550
  const n = facetIndexAndVertexIndices.length;
236382
236551
  const clusterArray = [];
@@ -236633,7 +236802,7 @@ class PolyfaceQuery {
236633
236802
  * @internal
236634
236803
  */
236635
236804
  static convertToHalfEdgeGraph(mesh) {
236636
- const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_28__.HalfEdgeGraphFromIndexedLoopsContext();
236805
+ const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__.HalfEdgeGraphFromIndexedLoopsContext();
236637
236806
  const visitor = mesh.createVisitor(0);
236638
236807
  for (visitor.reset(); visitor.moveToNextFacet();) {
236639
236808
  builder.insertLoop(visitor.pointIndex);
@@ -236654,14 +236823,14 @@ class PolyfaceQuery {
236654
236823
  * @param mesh
236655
236824
  */
236656
236825
  static reorientVertexOrderAroundFacetsForConsistentOrientation(mesh) {
236657
- return _FacetOrientation__WEBPACK_IMPORTED_MODULE_29__.FacetOrientationFixup.doFixup(mesh);
236826
+ return _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__.FacetOrientationFixup.doFixup(mesh);
236658
236827
  }
236659
236828
  /**
236660
236829
  * Set up indexed normals with one normal in the plane of each facet of the mesh.
236661
236830
  * @param polyface
236662
236831
  */
236663
236832
  static buildPerFaceNormals(polyface) {
236664
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
236833
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
236665
236834
  }
236666
236835
  /**
236667
236836
  * * At each vertex of the mesh
@@ -236674,7 +236843,7 @@ class PolyfaceQuery {
236674
236843
  * @param toleranceAngle averaging is done between normals up to this angle.
236675
236844
  */
236676
236845
  static buildAverageNormals(polyface, toleranceAngle = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(31.0)) {
236677
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
236846
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
236678
236847
  }
236679
236848
  /**
236680
236849
  * Offset the faces of the mesh.
@@ -236684,9 +236853,9 @@ class PolyfaceQuery {
236684
236853
  * @returns shifted mesh.
236685
236854
  */
236686
236855
  static cloneOffset(source, signedOffsetDistance, offsetOptions = OffsetMeshOptions.create()) {
236687
- const strokeOptions = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
236856
+ const strokeOptions = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
236688
236857
  const offsetBuilder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create(strokeOptions);
236689
- _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_31__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
236858
+ _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
236690
236859
  return offsetBuilder.claimPolyface();
236691
236860
  }
236692
236861
  /** Search facets for the first one that intersects the infinite line.
@@ -236710,17 +236879,17 @@ class PolyfaceQuery {
236710
236879
  const numEdges = visitor.pointCount; // #vertices = #edges since numWrap is zero
236711
236880
  const vertices = visitor.point;
236712
236881
  if (3 === numEdges) {
236713
- const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_32__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
236882
+ const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
236714
236883
  const detail3 = this._workTriDetail = tri.intersectRay3d(ray, this._workTriDetail);
236715
236884
  tri.snapLocationToEdge(detail3, options?.distanceTolerance, options?.parameterTolerance);
236716
- detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
236885
+ detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
236717
236886
  }
236718
236887
  else {
236719
236888
  const detailN = this._workPolyDetail = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.intersectRay3d(vertices, ray, options?.distanceTolerance, this._workPolyDetail);
236720
236889
  if (_geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.isConvex(vertices))
236721
- detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
236890
+ detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
236722
236891
  else
236723
- detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
236892
+ detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
236724
236893
  }
236725
236894
  if (detail.isInsideOrOn) { // set optional caches, process the intersection
236726
236895
  if (options?.needNormal && visitor.normal)
@@ -236957,7 +237126,7 @@ class TaggedNumericData {
236957
237126
  if (this.tagB !== other.tagB)
236958
237127
  return false;
236959
237128
  return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.exactEqualNumberArrays(this.intData, other.intData)
236960
- && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.almostEqualArrays(this.doubleData, other.doubleData, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber);
237129
+ && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.almostEqualArrays(this.doubleData, other.doubleData, (a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(a, b));
236961
237130
  }
236962
237131
  static areAlmostEqual(dataA, dataB) {
236963
237132
  if (dataA === undefined && dataB === undefined)
@@ -237217,7 +237386,7 @@ class BuildAverageNormalsContext {
237217
237386
  }
237218
237387
  }
237219
237388
  // Sort by the vertex index so all the sectors around each vertex are clustered . .
237220
- sectors.sort(SectorData.cbVertexSort);
237389
+ sectors.sort((left, right) => SectorData.cbVertexSort(left, right));
237221
237390
  // Walk the sectors around each vertex . ..
237222
237391
  // For each unassigned sector
237223
237392
  // walk to further sectors of the same vertex with near-parallel normals, accumulating average normal.
@@ -237250,7 +237419,7 @@ class BuildAverageNormalsContext {
237250
237419
  }
237251
237420
  }
237252
237421
  // Resort by original sector index.
237253
- sectors.sort(SectorData.cbSectorSort);
237422
+ sectors.sort((left, right) => SectorData.cbSectorSort(left, right));
237254
237423
  // normalize the sums and emplace in the facets . . .
237255
237424
  polyface.data.normalIndex = [];
237256
237425
  polyface.data.normal = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArray(sectors.length);
@@ -248979,9 +249148,7 @@ var IModelJson;
248979
249148
  return _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_10__.CoordinateXYZ.create(point);
248980
249149
  return undefined;
248981
249150
  }
248982
- /** Parse TransitionSpiral content (right side) to TransitionSpiral3d
248983
- * @alpha
248984
- */
249151
+ /** Parse TransitionSpiral content (right side) to TransitionSpiral3d. */
248985
249152
  static parseTransitionSpiral(data) {
248986
249153
  const axes = Reader.parseOrientation(data, true);
248987
249154
  const origin = Reader.parsePoint3dProperty(data, "origin");
@@ -249619,10 +249786,7 @@ var IModelJson;
249619
249786
  }
249620
249787
  data.xyVectors = [vectorU.toJSON(), vectorV.toJSON()];
249621
249788
  }
249622
- /**
249623
- * parse properties of a TransitionSpiral.
249624
- * @alpha
249625
- */
249789
+ /** Parse properties of a TransitionSpiral. */
249626
249790
  handleTransitionSpiral(data) {
249627
249791
  // TODO: HANDLE NONRIGID TRANSFORM !!
249628
249792
  // the spiral may have indication of how it was defined. If so, use defined/undefined state of the original data
@@ -252512,7 +252676,7 @@ class ChainMergeContext {
252512
252676
  p.sortData = this.primarySortKey(p);
252513
252677
  }
252514
252678
  const sortArray = this._graph.allHalfEdges.slice();
252515
- sortArray.sort(ChainMergeContext.nodeCompareSortData);
252679
+ sortArray.sort((nodeA, nodeB) => ChainMergeContext.nodeCompareSortData(nodeA, nodeB));
252516
252680
  const xyzTolerance = this._options.tolerance;
252517
252681
  // A node is unvisited if it is its own vertex successor !!!
252518
252682
  // otherwise the node has already been twisted into a base vertex.
@@ -254254,7 +254418,7 @@ class HalfEdgeGraphSearch {
254254
254418
  * @param collectAllNodes flag to pass to the SignedDataSummary constructor to control collection of nodes.
254255
254419
  * @param areaFunction function to all to obtain area (or other numeric value)
254256
254420
  */
254257
- static collectFaceAreaSummary(source, collectAllNodes = false, areaFunction = HalfEdgeGraphSearch.signedFaceArea) {
254421
+ static collectFaceAreaSummary(source, collectAllNodes = false, areaFunction = (node) => HalfEdgeGraphSearch.signedFaceArea(node)) {
254258
254422
  const result = new _SignedDataSummary__WEBPACK_IMPORTED_MODULE_0__.SignedDataSummary(collectAllNodes);
254259
254423
  let allFaces;
254260
254424
  if (source instanceof _Graph__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraph)
@@ -255507,7 +255671,7 @@ __webpack_require__.r(__webpack_exports__);
255507
255671
  * @internal
255508
255672
  */
255509
255673
  class HalfEdgePriorityQueueWithPartnerArray {
255510
- constructor(compare = _Merging__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraphOps.compareNodesYXUp) {
255674
+ constructor(compare = (a, b) => _Merging__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraphOps.compareNodesYXUp(a, b)) {
255511
255675
  this.priorityQueue = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.PriorityQueue(compare);
255512
255676
  this.activeEdges = [];
255513
255677
  }
@@ -256736,7 +256900,7 @@ class RegularizationContext {
256736
256900
  }
256737
256901
  downwardConnectionFromBottomPeak(node) {
256738
256902
  let connectTo;
256739
- const upFunction = _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp;
256903
+ const upFunction = (a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b);
256740
256904
  const upEdgeBase = this.findTopVisibleEdge(node, this.upEdges, 1.0);
256741
256905
  const downEdgeBase = this.findTopVisibleEdge(node, this.downEdges, -1.0);
256742
256906
  connectTo = this.updateMaxNode(connectTo, upEdgeBase, upFunction);
@@ -256789,7 +256953,7 @@ class RegularizationContext {
256789
256953
  */
256790
256954
  runRegularization(upSweep = true, downSweep = true) {
256791
256955
  if (upSweep) {
256792
- this.bottomPeaks.sort(_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp);
256956
+ this.bottomPeaks.sort((a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b));
256793
256957
  for (const bottomPeak of this.bottomPeaks) {
256794
256958
  // GeometryCoreTestIO.consoleLog("SEARCH", bottomPeak.id, [bottomPeak.x, bottomPeak.y]);
256795
256959
  if (!_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.isDownPeak(bottomPeak))
@@ -256806,7 +256970,7 @@ class RegularizationContext {
256806
256970
  this.negateXY();
256807
256971
  // swap the various p and down seeds ....
256808
256972
  this.swapArrays();
256809
- this.bottomPeaks.sort(_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp);
256973
+ this.bottomPeaks.sort((a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b));
256810
256974
  for (const bottomPeak of this.bottomPeaks) {
256811
256975
  if (!_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.isDownPeak(bottomPeak))
256812
256976
  continue;
@@ -257749,7 +257913,7 @@ class Triangulator {
257749
257913
  *
257750
257914
  */
257751
257915
  static spliceLeftMostNodesOfHoles(graph, outerNode, leftMostHoleLoopNode) {
257752
- leftMostHoleLoopNode.sort(Triangulator.compareX);
257916
+ leftMostHoleLoopNode.sort((a, b) => Triangulator.compareX(a, b));
257753
257917
  let numFail = 0;
257754
257918
  // process holes from left to right
257755
257919
  for (const holeStart of leftMostHoleLoopNode) {
@@ -278819,7 +278983,7 @@ class TestContext {
278819
278983
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
278820
278984
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
278821
278985
  await core_frontend_1.NoRenderApp.startup({
278822
- applicationVersion: "4.1.0-dev.68",
278986
+ applicationVersion: "4.1.0-dev.69",
278823
278987
  applicationId: this.settings.gprid,
278824
278988
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
278825
278989
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -281527,7 +281691,7 @@ class Content {
281527
281691
  if (!json)
281528
281692
  return undefined;
281529
281693
  if (typeof json === "string")
281530
- return JSON.parse(json, Content.reviver);
281694
+ return JSON.parse(json, (key, value) => Content.reviver(key, value));
281531
281695
  const descriptor = _Descriptor__WEBPACK_IMPORTED_MODULE_0__.Descriptor.fromJSON(json.descriptor);
281532
281696
  if (!descriptor)
281533
281697
  return undefined;
@@ -282758,7 +282922,7 @@ class Item {
282758
282922
  if (!json)
282759
282923
  return undefined;
282760
282924
  if (typeof json === "string")
282761
- return JSON.parse(json, Item.reviver);
282925
+ return JSON.parse(json, (key, value) => Item.reviver(key, value));
282762
282926
  const item = Object.create(Item.prototype);
282763
282927
  const { labelDefinition, ...baseJson } = json;
282764
282928
  return Object.assign(item, baseJson, {
@@ -287804,7 +287968,7 @@ class SelectionScopesManager {
287804
287968
  const batchIds = (0 === batchIndex && ids.length <= batchEnd) ? ids : ids.slice(batchStart, batchEnd);
287805
287969
  batchKeyPromises.push(this._rpcRequestsHandler.computeSelection({ imodel: imodel.getRpcProps(), elementIds: batchIds, scope: scopeProps }));
287806
287970
  }
287807
- const batchKeys = (await Promise.all(batchKeyPromises)).map(_itwin_presentation_common__WEBPACK_IMPORTED_MODULE_0__.KeySet.fromJSON);
287971
+ const batchKeys = (await Promise.all(batchKeyPromises)).map((json) => _itwin_presentation_common__WEBPACK_IMPORTED_MODULE_0__.KeySet.fromJSON(json));
287808
287972
  batchKeys.forEach((bk) => keys.add(bk));
287809
287973
  return keys;
287810
287974
  }
@@ -288749,8 +288913,7 @@ const isStageLauncher = (item) => {
288749
288913
  class BackstageItemUtilities {
288750
288914
  }
288751
288915
  /** Creates a stage launcher backstage item */
288752
- BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemPriority, label, subtitle, icon, overrides // eslint-disable-line deprecation/deprecation
288753
- ) => ({
288916
+ BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemPriority, label, subtitle, icon, overrides) => ({
288754
288917
  groupPriority,
288755
288918
  icon,
288756
288919
  internalData: overrides?.internalData,
@@ -288762,8 +288925,7 @@ BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemP
288762
288925
  ...overrides,
288763
288926
  });
288764
288927
  /** Creates an action backstage item */
288765
- BackstageItemUtilities.createActionItem = (itemId, groupPriority, itemPriority, execute, label, subtitle, icon, overrides // eslint-disable-line deprecation/deprecation
288766
- ) => ({
288928
+ BackstageItemUtilities.createActionItem = (itemId, groupPriority, itemPriority, execute, label, subtitle, icon, overrides) => ({
288767
288929
  execute,
288768
288930
  groupPriority,
288769
288931
  icon,
@@ -298193,7 +298355,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
298193
298355
  /***/ ((module) => {
298194
298356
 
298195
298357
  "use strict";
298196
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.68","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-eslintrc -c \\"./node_modules/@itwin/eslint-plugin/dist/configs/extension-exports-config.js\\" \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.1.0-dev.68","@itwin/core-bentley":"workspace:^4.1.0-dev.68","@itwin/core-common":"workspace:^4.1.0-dev.68","@itwin/core-geometry":"workspace:^4.1.0-dev.68","@itwin/core-orbitgt":"workspace:^4.1.0-dev.68","@itwin/core-quantity":"workspace:^4.1.0-dev.68"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.36","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.36.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.0.0","@itwin/object-storage-core":"^2.0.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
298358
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.69","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.1.0-dev.69","@itwin/core-bentley":"workspace:^4.1.0-dev.69","@itwin/core-common":"workspace:^4.1.0-dev.69","@itwin/core-geometry":"workspace:^4.1.0-dev.69","@itwin/core-orbitgt":"workspace:^4.1.0-dev.69","@itwin/core-quantity":"workspace:^4.1.0-dev.69"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.0.0","@itwin/object-storage-core":"^2.0.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
298197
298359
 
298198
298360
  /***/ }),
298199
298361