@itwin/ecschema-rpcinterface-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.
@@ -24503,7 +24503,7 @@ class Logger {
24503
24503
  * @param log The logger output function to use - defaults to Logger.logError
24504
24504
  * @param metaData Optional data for the message
24505
24505
  */
24506
- static logException(category, err, log = Logger.logError) {
24506
+ static logException(category, err, log = (_category, message) => Logger.logError(_category, message)) {
24507
24507
  log(category, Logger.getExceptionMessage(err), () => {
24508
24508
  return { ..._BentleyError__WEBPACK_IMPORTED_MODULE_0__.BentleyError.getErrorMetadata(err), exceptionType: err.constructor.name };
24509
24509
  });
@@ -26558,10 +26558,10 @@ class Tracing {
26558
26558
  static enableOpenTelemetry(tracer, api) {
26559
26559
  Tracing._tracer = tracer;
26560
26560
  Tracing._openTelemetry = api;
26561
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace);
26562
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo);
26563
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning);
26564
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError);
26561
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace(category, message, metaData));
26562
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo(category, message, metaData));
26563
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(category, message, metaData));
26564
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError(category, message, metaData));
26565
26565
  }
26566
26566
  static withOpenTelemetry(base, isError = false) {
26567
26567
  return (category, message, metaData) => {
@@ -32599,9 +32599,9 @@ class PropertyMetaData {
32599
32599
  case PrimitiveTypeCode.String:
32600
32600
  return jsonObj; // this works even for arrays or strings that are JSON because the parsed JSON is already the right type
32601
32601
  case PrimitiveTypeCode.Point2d:
32602
- return this.createValueOrArray(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.fromJSON, jsonObj);
32602
+ return this.createValueOrArray((obj) => _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.fromJSON(obj), jsonObj);
32603
32603
  case PrimitiveTypeCode.Point3d:
32604
- return this.createValueOrArray(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON, jsonObj);
32604
+ return this.createValueOrArray((obj) => _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(obj), jsonObj);
32605
32605
  }
32606
32606
  }
32607
32607
  if (this.isNavigation)
@@ -55043,7 +55043,7 @@ class RpcMarshaling {
55043
55043
  }
55044
55044
  marshalingTarget = serialized;
55045
55045
  chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
55046
- serialized.objects = JSON.stringify(value, WireFormat.marshal);
55046
+ serialized.objects = JSON.stringify(value, (_key, _value) => WireFormat.marshal(_key, _value));
55047
55047
  marshalingTarget = undefined;
55048
55048
  chunkThreshold = 0;
55049
55049
  return serialized;
@@ -55057,7 +55057,7 @@ class RpcMarshaling {
55057
55057
  chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
55058
55058
  let result;
55059
55059
  try {
55060
- result = JSON.parse(value.objects, WireFormat.unmarshal);
55060
+ result = JSON.parse(value.objects, (_key, _value) => WireFormat.unmarshal(_key, _value));
55061
55061
  }
55062
55062
  catch (error) {
55063
55063
  if (error instanceof SyntaxError)
@@ -57222,7 +57222,7 @@ class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__.R
57222
57222
  /** The RPC request class for this protocol. */
57223
57223
  this.requestType = _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_6__.WebAppRpcRequest;
57224
57224
  this.supportsStatusCategory = true;
57225
- this.events.addListener(_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__.WebAppRpcLogging.logProtocolEvent);
57225
+ this.events.addListener(async (event, object) => _WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__.WebAppRpcLogging.logProtocolEvent(event, object));
57226
57226
  }
57227
57227
  }
57228
57228
 
@@ -63749,13 +63749,13 @@ class ECClass extends SchemaItem_1.SchemaItem {
63749
63749
  const key = new SchemaKey_1.SchemaItemKey(targetClass, new SchemaKey_1.SchemaKey(schemaName));
63750
63750
  if (SchemaItem_1.SchemaItem.equalByKey(this, key))
63751
63751
  return true;
63752
- return this.traverseBaseClasses(SchemaItem_1.SchemaItem.equalByKey, key);
63752
+ return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), key);
63753
63753
  }
63754
63754
  else {
63755
63755
  (0, core_bentley_1.assert)(ECClass.isECClass(targetClass), "Expected targetClass to be of type ECClass");
63756
63756
  if (SchemaItem_1.SchemaItem.equalByKey(this, targetClass))
63757
63757
  return true;
63758
- return this.traverseBaseClasses(SchemaItem_1.SchemaItem.equalByKey, targetClass);
63758
+ return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);
63759
63759
  }
63760
63760
  }
63761
63761
  /**
@@ -63765,7 +63765,7 @@ class ECClass extends SchemaItem_1.SchemaItem {
63765
63765
  isSync(targetClass) {
63766
63766
  if (SchemaItem_1.SchemaItem.equalByKey(this, targetClass))
63767
63767
  return true;
63768
- return this.traverseBaseClassesSync(SchemaItem_1.SchemaItem.equalByKey, targetClass);
63768
+ return this.traverseBaseClassesSync((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);
63769
63769
  }
63770
63770
  /**
63771
63771
  * @internal
@@ -79943,7 +79943,7 @@ class IModelApp {
79943
79943
  * @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).
79944
79944
  */
79945
79945
  static queryRenderCompatibility() {
79946
- return (0,_itwin_webgl_compatibility__WEBPACK_IMPORTED_MODULE_5__.queryRenderCompatibility)(true, _render_webgl_System__WEBPACK_IMPORTED_MODULE_21__.System.createContext);
79946
+ 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));
79947
79947
  }
79948
79948
  /**
79949
79949
  * This method must be called before any other `@itwin/core-frontend` methods are used.
@@ -80030,7 +80030,7 @@ class IModelApp {
80030
80030
  this.onBeforeShutdown.clear();
80031
80031
  if (false) {}
80032
80032
  this._wantEventLoop = false;
80033
- window.removeEventListener("resize", IModelApp.requestNextAnimation);
80033
+ window.removeEventListener("resize", () => IModelApp.requestNextAnimation());
80034
80034
  this.clearIntervalAnimation();
80035
80035
  [this.toolAdmin, this.viewManager, this.tileAdmin].forEach((sys) => sys.onShutDown());
80036
80036
  this.tools.shutdown();
@@ -80067,7 +80067,7 @@ class IModelApp {
80067
80067
  return;
80068
80068
  if (!IModelApp._animationRequested) {
80069
80069
  IModelApp._animationRequested = true;
80070
- requestAnimationFrame(IModelApp.eventLoop);
80070
+ requestAnimationFrame(() => IModelApp.eventLoop());
80071
80071
  }
80072
80072
  }
80073
80073
  /** @internal */
@@ -80089,7 +80089,7 @@ class IModelApp {
80089
80089
  static startEventLoop() {
80090
80090
  if (!IModelApp._wantEventLoop) {
80091
80091
  IModelApp._wantEventLoop = true;
80092
- window.addEventListener("resize", IModelApp.requestNextAnimation);
80092
+ window.addEventListener("resize", () => IModelApp.requestNextAnimation());
80093
80093
  IModelApp.requestIntervalAnimation();
80094
80094
  IModelApp.requestNextAnimation();
80095
80095
  }
@@ -80112,7 +80112,7 @@ class IModelApp {
80112
80112
  _tools_ToolAdmin__WEBPACK_IMPORTED_MODULE_33__.ToolAdmin.exceptionHandler(exception); // eslint-disable-line @typescript-eslint/no-floating-promises
80113
80113
  IModelApp._wantEventLoop = false;
80114
80114
  IModelApp._animationRequested = true; // unrecoverable after exception, don't request any further frames.
80115
- window.removeEventListener("resize", IModelApp.requestNextAnimation);
80115
+ window.removeEventListener("resize", () => IModelApp.requestNextAnimation());
80116
80116
  }
80117
80117
  }
80118
80118
  /** Get the user's access token for this IModelApp, or a blank string if none is available.
@@ -123225,7 +123225,7 @@ class IdMap {
123225
123225
  /** Mapping of textures by their key values. */
123226
123226
  this.textures = new Map();
123227
123227
  /** Mapping of textures using gradient symbology. */
123228
- this.gradients = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Dictionary(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.Gradient.Symb.compareSymb);
123228
+ 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));
123229
123229
  /** Pending promises to create a texture from an ImageSource. This prevents us from decoding the same ImageSource multiple times */
123230
123230
  this.texturesFromImageSources = new Map();
123231
123231
  this._iModel = iModel;
@@ -138117,7 +138117,7 @@ class GltfReader {
138117
138117
  }
138118
138118
  }
138119
138119
  const uvs = draco.attributes.TEXCOORD_0?.value;
138120
- if (uvs && (uvs.length & 2) === 0)
138120
+ if (uvs && (uvs.length % 2) === 0)
138121
138121
  for (let i = 0; i < uvs.length; i += 2)
138122
138122
  mesh.uvParams.push(new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d(uvs[i], uvs[i + 1]));
138123
138123
  const batchIds = draco.attributes._BATCHID?.value;
@@ -170743,7 +170743,7 @@ __webpack_require__.r(__webpack_exports__);
170743
170743
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
170744
170744
  /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
170745
170745
  /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
170746
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
170746
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
170747
170747
  /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
170748
170748
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
170749
170749
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
@@ -171054,7 +171054,7 @@ class BSplineCurve3dBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_
171054
171054
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
171055
171055
  */
171056
171056
  constructOffsetXY(offsetDistanceOrOptions) {
171057
- const options = _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
171057
+ const options = _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
171058
171058
  const handler = new _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
171059
171059
  this.emitStrokableParts(handler, options.strokeOptions);
171060
171060
  return handler.claimResult();
@@ -173359,7 +173359,7 @@ class BSplineSurface3dH extends BSpline2dNd {
173359
173359
  /** Return a simple array of the control points. */
173360
173360
  copyPoints4d() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_6__.Point4dArray.unpackToPoint4dArray(this.coffs); }
173361
173361
  /** Return a simple array of the control points. */
173362
- copyPointsAndWeights(points, weights, formatter = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create) {
173362
+ copyPointsAndWeights(points, weights, formatter = (x, y, z) => _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z)) {
173363
173363
  _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_6__.Point4dArray.unpackFloat64ArrayToPointsAndWeights(this.coffs, points, weights, formatter);
173364
173364
  }
173365
173365
  /** unpack from xyzw xyzw ... to packed xyz, optionally unweighted
@@ -174570,7 +174570,7 @@ __webpack_require__.r(__webpack_exports__);
174570
174570
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
174571
174571
  /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
174572
174572
  /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
174573
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
174573
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
174574
174574
  /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
174575
174575
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
174576
174576
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
@@ -174786,7 +174786,7 @@ class BezierCurveBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__
174786
174786
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
174787
174787
  */
174788
174788
  constructOffsetXY(offsetDistanceOrOptions) {
174789
- const options = _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__.OffsetOptions.create(offsetDistanceOrOptions);
174789
+ const options = _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_7__.OffsetOptions.create(offsetDistanceOrOptions);
174790
174790
  const handler = new _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
174791
174791
  this.emitStrokableParts(handler, options.strokeOptions);
174792
174792
  return handler.claimResult();
@@ -180617,161 +180617,160 @@ class LineStringOffsetClipperContext {
180617
180617
  "use strict";
180618
180618
  __webpack_require__.r(__webpack_exports__);
180619
180619
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
180620
- /* harmony export */ AbstractNewtonIterator: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.AbstractNewtonIterator),
180621
- /* harmony export */ AkimaCurve3d: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__.AkimaCurve3d),
180622
- /* harmony export */ AkimaCurve3dOptions: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__.AkimaCurve3dOptions),
180623
- /* harmony export */ AnalyticRoots: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.AnalyticRoots),
180620
+ /* harmony export */ AbstractNewtonIterator: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.AbstractNewtonIterator),
180621
+ /* harmony export */ AkimaCurve3d: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__.AkimaCurve3d),
180622
+ /* harmony export */ AkimaCurve3dOptions: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__.AkimaCurve3dOptions),
180623
+ /* harmony export */ AnalyticRoots: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.AnalyticRoots),
180624
180624
  /* harmony export */ Angle: () => (/* reexport safe */ _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle),
180625
180625
  /* harmony export */ AngleSweep: () => (/* reexport safe */ _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep),
180626
- /* harmony export */ AnnotatedLineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__.AnnotatedLineString3d),
180627
- /* harmony export */ Arc3d: () => (/* reexport safe */ _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__.Arc3d),
180628
- /* harmony export */ AuxChannel: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannel),
180629
- /* harmony export */ AuxChannelData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannelData),
180630
- /* harmony export */ AuxChannelDataType: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannelDataType),
180631
- /* harmony export */ AxisIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisIndex),
180632
- /* harmony export */ AxisOrder: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisOrder),
180633
- /* harmony export */ AxisScaleSelect: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisScaleSelect),
180634
- /* harmony export */ BSpline1dNd: () => (/* reexport safe */ _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_105__.BSpline1dNd),
180635
- /* harmony export */ BSpline2dNd: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSpline2dNd),
180636
- /* harmony export */ BSplineCurve3d: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__.BSplineCurve3d),
180637
- /* harmony export */ BSplineCurve3dBase: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__.BSplineCurve3dBase),
180638
- /* harmony export */ BSplineCurve3dH: () => (/* reexport safe */ _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_106__.BSplineCurve3dH),
180639
- /* harmony export */ BSplineCurveOps: () => (/* reexport safe */ _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_104__.BSplineCurveOps),
180640
- /* harmony export */ BSplineSurface3d: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSplineSurface3d),
180641
- /* harmony export */ BSplineSurface3dH: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSplineSurface3dH),
180642
- /* harmony export */ BSplineWrapMode: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__.BSplineWrapMode),
180643
- /* harmony export */ BagOfCurves: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.BagOfCurves),
180626
+ /* harmony export */ AnnotatedLineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__.AnnotatedLineString3d),
180627
+ /* harmony export */ Arc3d: () => (/* reexport safe */ _curve_Arc3d__WEBPACK_IMPORTED_MODULE_60__.Arc3d),
180628
+ /* harmony export */ AuxChannel: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannel),
180629
+ /* harmony export */ AuxChannelData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannelData),
180630
+ /* harmony export */ AuxChannelDataType: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannelDataType),
180631
+ /* harmony export */ AxisIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisIndex),
180632
+ /* harmony export */ AxisOrder: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisOrder),
180633
+ /* harmony export */ AxisScaleSelect: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisScaleSelect),
180634
+ /* harmony export */ BSpline1dNd: () => (/* reexport safe */ _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_107__.BSpline1dNd),
180635
+ /* harmony export */ BSpline2dNd: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSpline2dNd),
180636
+ /* harmony export */ BSplineCurve3d: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__.BSplineCurve3d),
180637
+ /* harmony export */ BSplineCurve3dBase: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__.BSplineCurve3dBase),
180638
+ /* harmony export */ BSplineCurve3dH: () => (/* reexport safe */ _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_108__.BSplineCurve3dH),
180639
+ /* harmony export */ BSplineCurveOps: () => (/* reexport safe */ _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_106__.BSplineCurveOps),
180640
+ /* harmony export */ BSplineSurface3d: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSplineSurface3d),
180641
+ /* harmony export */ BSplineSurface3dH: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSplineSurface3dH),
180642
+ /* harmony export */ BSplineWrapMode: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__.BSplineWrapMode),
180643
+ /* harmony export */ BagOfCurves: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.BagOfCurves),
180644
180644
  /* harmony export */ BarycentricTriangle: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.BarycentricTriangle),
180645
- /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_127__.BentleyGeometryFlatBuffer),
180646
- /* harmony export */ Bezier1dNd: () => (/* reexport safe */ _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_99__.Bezier1dNd),
180647
- /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.BezierBezierIntersectionXYRRToRRD),
180648
- /* harmony export */ BezierCoffs: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.BezierCoffs),
180649
- /* harmony export */ BezierCurve3d: () => (/* reexport safe */ _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_101__.BezierCurve3d),
180650
- /* harmony export */ BezierCurve3dH: () => (/* reexport safe */ _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_102__.BezierCurve3dH),
180651
- /* harmony export */ BezierCurveBase: () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_100__.BezierCurveBase),
180652
- /* harmony export */ BezierPolynomialAlgebra: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.BezierPolynomialAlgebra),
180645
+ /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__.BentleyGeometryFlatBuffer),
180646
+ /* harmony export */ Bezier1dNd: () => (/* reexport safe */ _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_101__.Bezier1dNd),
180647
+ /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.BezierBezierIntersectionXYRRToRRD),
180648
+ /* harmony export */ BezierCoffs: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierCoffs),
180649
+ /* harmony export */ BezierCurve3d: () => (/* reexport safe */ _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_103__.BezierCurve3d),
180650
+ /* harmony export */ BezierCurve3dH: () => (/* reexport safe */ _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_104__.BezierCurve3dH),
180651
+ /* harmony export */ BezierCurveBase: () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_102__.BezierCurveBase),
180652
+ /* harmony export */ BezierPolynomialAlgebra: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierPolynomialAlgebra),
180653
180653
  /* harmony export */ BilinearPatch: () => (/* reexport safe */ _geometry3d_BilinearPatch__WEBPACK_IMPORTED_MODULE_4__.BilinearPatch),
180654
- /* harmony export */ BilinearPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.BilinearPolynomial),
180655
- /* harmony export */ BooleanClipFactory: () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_37__.BooleanClipFactory),
180656
- /* harmony export */ Box: () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_89__.Box),
180657
- /* harmony export */ BoxTopology: () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_111__.BoxTopology),
180658
- /* harmony export */ ClipMaskXYZRangePlanes: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipMaskXYZRangePlanes),
180659
- /* harmony export */ ClipPlane: () => (/* reexport safe */ _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_38__.ClipPlane),
180660
- /* harmony export */ ClipPlaneContainment: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipPlaneContainment),
180661
- /* harmony export */ ClipPrimitive: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipPrimitive),
180662
- /* harmony export */ ClipShape: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipShape),
180663
- /* harmony export */ ClipStatus: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipStatus),
180664
- /* harmony export */ ClipStepAction: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipStepAction),
180665
- /* harmony export */ ClipUtilities: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipUtilities),
180666
- /* harmony export */ ClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__.ClipVector),
180667
- /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__.ClippedPolyfaceBuilders),
180668
- /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_51__.ClusterableArray),
180669
- /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__.Complex),
180670
- /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_90__.Cone),
180671
- /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.ConsolidateAdjacentCurvePrimitivesOptions),
180672
- /* harmony export */ Constant: () => (/* reexport safe */ _Constant__WEBPACK_IMPORTED_MODULE_36__.Constant),
180673
- /* harmony export */ ConstructCurveBetweenCurves: () => (/* reexport safe */ _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__.ConstructCurveBetweenCurves),
180674
- /* harmony export */ ConvexClipPlaneSet: () => (/* reexport safe */ _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_39__.ConvexClipPlaneSet),
180675
- /* harmony export */ ConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.ConvexFacetLocationDetail),
180676
- /* harmony export */ ConvexPolygon2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__.ConvexPolygon2d),
180677
- /* harmony export */ CoordinateXYZ: () => (/* reexport safe */ _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_61__.CoordinateXYZ),
180678
- /* harmony export */ CurveChain: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.CurveChain),
180679
- /* harmony export */ CurveChainWireOffsetContext: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.CurveChainWireOffsetContext),
180680
- /* harmony export */ CurveChainWithDistanceIndex: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__.CurveChainWithDistanceIndex),
180681
- /* harmony export */ CurveCollection: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.CurveCollection),
180682
- /* harmony export */ CurveCurve: () => (/* reexport safe */ _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_65__.CurveCurve),
180683
- /* harmony export */ CurveCurveApproachType: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveCurveApproachType),
180684
- /* harmony export */ CurveCurveIntersectXY: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.CurveCurveIntersectXY),
180685
- /* harmony export */ CurveCurveIntersectXYZ: () => (/* reexport safe */ _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_67__.CurveCurveIntersectXYZ),
180686
- /* harmony export */ CurveExtendMode: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__.CurveExtendMode),
180687
- /* harmony export */ CurveExtendOptions: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__.CurveExtendOptions),
180688
- /* harmony export */ CurveFactory: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__.CurveFactory),
180689
- /* harmony export */ CurveIntervalRole: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveIntervalRole),
180690
- /* harmony export */ CurveLocationDetail: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveLocationDetail),
180691
- /* harmony export */ CurveLocationDetailArrayPair: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.CurveLocationDetailArrayPair),
180692
- /* harmony export */ CurveLocationDetailPair: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveLocationDetailPair),
180693
- /* harmony export */ CurvePrimitive: () => (/* reexport safe */ _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_70__.CurvePrimitive),
180694
- /* harmony export */ CurveSearchStatus: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveSearchStatus),
180654
+ /* harmony export */ BilinearPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.BilinearPolynomial),
180655
+ /* harmony export */ BooleanClipFactory: () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__.BooleanClipFactory),
180656
+ /* harmony export */ Box: () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_91__.Box),
180657
+ /* harmony export */ BoxTopology: () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_113__.BoxTopology),
180658
+ /* harmony export */ ClipMaskXYZRangePlanes: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipMaskXYZRangePlanes),
180659
+ /* harmony export */ ClipPlane: () => (/* reexport safe */ _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_39__.ClipPlane),
180660
+ /* harmony export */ ClipPlaneContainment: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipPlaneContainment),
180661
+ /* harmony export */ ClipPrimitive: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipPrimitive),
180662
+ /* harmony export */ ClipShape: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipShape),
180663
+ /* harmony export */ ClipStatus: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipStatus),
180664
+ /* harmony export */ ClipStepAction: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipStepAction),
180665
+ /* harmony export */ ClipUtilities: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipUtilities),
180666
+ /* harmony export */ ClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.ClipVector),
180667
+ /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.ClippedPolyfaceBuilders),
180668
+ /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__.ClusterableArray),
180669
+ /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__.Complex),
180670
+ /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_92__.Cone),
180671
+ /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.ConsolidateAdjacentCurvePrimitivesOptions),
180672
+ /* harmony export */ Constant: () => (/* reexport safe */ _Constant__WEBPACK_IMPORTED_MODULE_37__.Constant),
180673
+ /* harmony export */ ConstructCurveBetweenCurves: () => (/* reexport safe */ _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_61__.ConstructCurveBetweenCurves),
180674
+ /* harmony export */ ConvexClipPlaneSet: () => (/* reexport safe */ _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_40__.ConvexClipPlaneSet),
180675
+ /* harmony export */ ConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.ConvexFacetLocationDetail),
180676
+ /* harmony export */ ConvexPolygon2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_45__.ConvexPolygon2d),
180677
+ /* harmony export */ CoordinateXYZ: () => (/* reexport safe */ _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_62__.CoordinateXYZ),
180678
+ /* harmony export */ CurveChain: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.CurveChain),
180679
+ /* harmony export */ CurveChainWithDistanceIndex: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__.CurveChainWithDistanceIndex),
180680
+ /* harmony export */ CurveCollection: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.CurveCollection),
180681
+ /* harmony export */ CurveCurve: () => (/* reexport safe */ _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_66__.CurveCurve),
180682
+ /* harmony export */ CurveCurveApproachType: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveCurveApproachType),
180683
+ /* harmony export */ CurveCurveIntersectXY: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.CurveCurveIntersectXY),
180684
+ /* harmony export */ CurveCurveIntersectXYZ: () => (/* reexport safe */ _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_68__.CurveCurveIntersectXYZ),
180685
+ /* harmony export */ CurveExtendMode: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__.CurveExtendMode),
180686
+ /* harmony export */ CurveExtendOptions: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__.CurveExtendOptions),
180687
+ /* harmony export */ CurveFactory: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__.CurveFactory),
180688
+ /* harmony export */ CurveIntervalRole: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveIntervalRole),
180689
+ /* harmony export */ CurveLocationDetail: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveLocationDetail),
180690
+ /* harmony export */ CurveLocationDetailArrayPair: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.CurveLocationDetailArrayPair),
180691
+ /* harmony export */ CurveLocationDetailPair: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveLocationDetailPair),
180692
+ /* harmony export */ CurveOps: () => (/* reexport safe */ _curve_CurveOps__WEBPACK_IMPORTED_MODULE_71__.CurveOps),
180693
+ /* harmony export */ CurvePrimitive: () => (/* reexport safe */ _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_72__.CurvePrimitive),
180694
+ /* harmony export */ CurveSearchStatus: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveSearchStatus),
180695
180695
  /* harmony export */ CutLoop: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoop),
180696
180696
  /* harmony export */ CutLoopMergeContext: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoopMergeContext),
180697
- /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_125__.DeepCompare),
180698
- /* harmony export */ Degree2PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree2PowerPolynomial),
180699
- /* harmony export */ Degree3PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree3PowerPolynomial),
180700
- /* harmony export */ Degree4PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree4PowerPolynomial),
180701
- /* harmony export */ DirectSpiral3d: () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_86__.DirectSpiral3d),
180702
- /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.DuplicateFacetClusterSelector),
180697
+ /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__.DeepCompare),
180698
+ /* harmony export */ Degree2PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree2PowerPolynomial),
180699
+ /* harmony export */ Degree3PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree3PowerPolynomial),
180700
+ /* harmony export */ Degree4PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree4PowerPolynomial),
180701
+ /* harmony export */ DirectSpiral3d: () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_88__.DirectSpiral3d),
180702
+ /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.DuplicateFacetClusterSelector),
180703
180703
  /* harmony export */ Ellipsoid: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.Ellipsoid),
180704
180704
  /* harmony export */ EllipsoidPatch: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.EllipsoidPatch),
180705
- /* harmony export */ FacetFaceData: () => (/* reexport safe */ _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_112__.FacetFaceData),
180706
- /* harmony export */ FacetIntersectOptions: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.FacetIntersectOptions),
180705
+ /* harmony export */ FacetFaceData: () => (/* reexport safe */ _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_114__.FacetFaceData),
180706
+ /* harmony export */ FacetIntersectOptions: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.FacetIntersectOptions),
180707
180707
  /* harmony export */ FrameBuilder: () => (/* reexport safe */ _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_6__.FrameBuilder),
180708
- /* harmony export */ GaussMapper: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.GaussMapper),
180708
+ /* harmony export */ GaussMapper: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__.GaussMapper),
180709
180709
  /* harmony export */ GeodesicPathPoint: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathPoint),
180710
180710
  /* harmony export */ GeodesicPathSolver: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathSolver),
180711
- /* harmony export */ Geometry: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.Geometry),
180711
+ /* harmony export */ Geometry: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.Geometry),
180712
180712
  /* harmony export */ GeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.GeometryHandler),
180713
- /* harmony export */ GeometryQuery: () => (/* reexport safe */ _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_72__.GeometryQuery),
180713
+ /* harmony export */ GeometryQuery: () => (/* reexport safe */ _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_74__.GeometryQuery),
180714
180714
  /* harmony export */ GrowableBlockedArray: () => (/* reexport safe */ _geometry3d_GrowableBlockedArray__WEBPACK_IMPORTED_MODULE_9__.GrowableBlockedArray),
180715
180715
  /* harmony export */ GrowableFloat64Array: () => (/* reexport safe */ _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_10__.GrowableFloat64Array),
180716
180716
  /* harmony export */ GrowableXYArray: () => (/* reexport safe */ _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYArray),
180717
180717
  /* harmony export */ GrowableXYZArray: () => (/* reexport safe */ _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray),
180718
- /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdge),
180719
- /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdgeGraph),
180720
- /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdgeMask),
180721
- /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_124__.IModelJson),
180722
- /* harmony export */ ImplicitLineXY: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.ImplicitLineXY),
180718
+ /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdge),
180719
+ /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeGraph),
180720
+ /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeMask),
180721
+ /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__.IModelJson),
180722
+ /* harmony export */ ImplicitLineXY: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.ImplicitLineXY),
180723
180723
  /* harmony export */ IndexedCollectionInterval: () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedCollectionInterval),
180724
- /* harmony export */ IndexedPolyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__.IndexedPolyface),
180725
- /* harmony export */ IndexedPolyfaceSubsetVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyfaceSubsetVisitor),
180726
- /* harmony export */ IndexedPolyfaceVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyfaceVisitor),
180724
+ /* harmony export */ IndexedPolyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyface),
180725
+ /* harmony export */ IndexedPolyfaceSubsetVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.IndexedPolyfaceSubsetVisitor),
180726
+ /* harmony export */ IndexedPolyfaceVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.IndexedPolyfaceVisitor),
180727
180727
  /* harmony export */ IndexedReadWriteXYZCollection: () => (/* reexport safe */ _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_15__.IndexedReadWriteXYZCollection),
180728
180728
  /* harmony export */ IndexedXYCollection: () => (/* reexport safe */ _geometry3d_IndexedXYCollection__WEBPACK_IMPORTED_MODULE_14__.IndexedXYCollection),
180729
180729
  /* harmony export */ IndexedXYZCollection: () => (/* reexport safe */ _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_15__.IndexedXYZCollection),
180730
180730
  /* harmony export */ IndexedXYZCollectionInterval: () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedXYZCollectionInterval),
180731
180731
  /* harmony export */ IndexedXYZCollectionPolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.IndexedXYZCollectionPolygonOps),
180732
- /* harmony export */ IntegratedSpiral3d: () => (/* reexport safe */ _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_85__.IntegratedSpiral3d),
180733
- /* harmony export */ InterpolationCurve3d: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__.InterpolationCurve3d),
180734
- /* harmony export */ InterpolationCurve3dOptions: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__.InterpolationCurve3dOptions),
180732
+ /* harmony export */ IntegratedSpiral3d: () => (/* reexport safe */ _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_87__.IntegratedSpiral3d),
180733
+ /* harmony export */ InterpolationCurve3d: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__.InterpolationCurve3d),
180734
+ /* harmony export */ InterpolationCurve3dOptions: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__.InterpolationCurve3dOptions),
180735
180735
  /* harmony export */ InverseMatrixState: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.InverseMatrixState),
180736
- /* harmony export */ JointOptions: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.JointOptions),
180737
- /* harmony export */ KnotVector: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__.KnotVector),
180738
- /* harmony export */ LineSegment3d: () => (/* reexport safe */ _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_73__.LineSegment3d),
180739
- /* harmony export */ LineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__.LineString3d),
180740
- /* harmony export */ LinearSweep: () => (/* reexport safe */ _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_91__.LinearSweep),
180736
+ /* harmony export */ JointOptions: () => (/* reexport safe */ _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__.JointOptions),
180737
+ /* harmony export */ KnotVector: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__.KnotVector),
180738
+ /* harmony export */ LineSegment3d: () => (/* reexport safe */ _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_75__.LineSegment3d),
180739
+ /* harmony export */ LineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__.LineString3d),
180740
+ /* harmony export */ LinearSweep: () => (/* reexport safe */ _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_93__.LinearSweep),
180741
180741
  /* harmony export */ LongitudeLatitudeNumber: () => (/* reexport safe */ _geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_2__.LongitudeLatitudeNumber),
180742
- /* harmony export */ Loop: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_75__.Loop),
180743
- /* harmony export */ LoopCurveLoopCurve: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_75__.LoopCurveLoopCurve),
180744
- /* harmony export */ Map4d: () => (/* reexport safe */ _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_48__.Map4d),
180742
+ /* harmony export */ Loop: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_77__.Loop),
180743
+ /* harmony export */ LoopCurveLoopCurve: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_77__.LoopCurveLoopCurve),
180744
+ /* harmony export */ Map4d: () => (/* reexport safe */ _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_49__.Map4d),
180745
180745
  /* harmony export */ Matrix3d: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.Matrix3d),
180746
- /* harmony export */ Matrix4d: () => (/* reexport safe */ _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_47__.Matrix4d),
180747
- /* harmony export */ MiteredSweepOutputSelect: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__.MiteredSweepOutputSelect),
180748
- /* harmony export */ MomentData: () => (/* reexport safe */ _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_49__.MomentData),
180749
- /* harmony export */ MultiChainCollector: () => (/* reexport safe */ _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_128__.MultiChainCollector),
180750
- /* harmony export */ Newton1dUnbounded: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton1dUnbounded),
180751
- /* harmony export */ Newton1dUnboundedApproximateDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton1dUnboundedApproximateDerivative),
180752
- /* harmony export */ Newton2dUnboundedWithDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton2dUnboundedWithDerivative),
180753
- /* harmony export */ NewtonEvaluatorRRtoRRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRRtoRRD),
180754
- /* harmony export */ NewtonEvaluatorRtoR: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRtoR),
180755
- /* harmony export */ NewtonEvaluatorRtoRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRtoRD),
180756
- /* harmony export */ NonConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.NonConvexFacetLocationDetail),
180746
+ /* harmony export */ Matrix4d: () => (/* reexport safe */ _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_48__.Matrix4d),
180747
+ /* harmony export */ MiteredSweepOutputSelect: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__.MiteredSweepOutputSelect),
180748
+ /* harmony export */ MomentData: () => (/* reexport safe */ _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_50__.MomentData),
180749
+ /* harmony export */ Newton1dUnbounded: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton1dUnbounded),
180750
+ /* harmony export */ Newton1dUnboundedApproximateDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton1dUnboundedApproximateDerivative),
180751
+ /* harmony export */ Newton2dUnboundedWithDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton2dUnboundedWithDerivative),
180752
+ /* harmony export */ NewtonEvaluatorRRtoRRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRRtoRRD),
180753
+ /* harmony export */ NewtonEvaluatorRtoR: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRtoR),
180754
+ /* harmony export */ NewtonEvaluatorRtoRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRtoRD),
180755
+ /* harmony export */ NonConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.NonConvexFacetLocationDetail),
180757
180756
  /* harmony export */ NullGeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.NullGeometryHandler),
180758
180757
  /* harmony export */ NumberArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.NumberArray),
180759
- /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.OffsetMeshOptions),
180760
- /* harmony export */ OffsetOptions: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.OffsetOptions),
180761
- /* harmony export */ Order2Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order2Bezier),
180762
- /* harmony export */ Order3Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order3Bezier),
180763
- /* harmony export */ Order4Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order4Bezier),
180764
- /* harmony export */ Order5Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order5Bezier),
180758
+ /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.OffsetMeshOptions),
180759
+ /* harmony export */ OffsetOptions: () => (/* reexport safe */ _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__.OffsetOptions),
180760
+ /* harmony export */ Order2Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order2Bezier),
180761
+ /* harmony export */ Order3Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order3Bezier),
180762
+ /* harmony export */ Order4Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order4Bezier),
180763
+ /* harmony export */ Order5Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order5Bezier),
180765
180764
  /* harmony export */ OrderedRotationAngles: () => (/* reexport safe */ _geometry3d_OrderedRotationAngles__WEBPACK_IMPORTED_MODULE_17__.OrderedRotationAngles),
180766
180765
  /* harmony export */ PackedMatrix3dOps: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.PackedMatrix3dOps),
180767
- /* harmony export */ ParityRegion: () => (/* reexport safe */ _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_76__.ParityRegion),
180768
- /* harmony export */ PascalCoefficients: () => (/* reexport safe */ _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__.PascalCoefficients),
180769
- /* harmony export */ Path: () => (/* reexport safe */ _curve_Path__WEBPACK_IMPORTED_MODULE_77__.Path),
180770
- /* harmony export */ PathFragment: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__.PathFragment),
180766
+ /* harmony export */ ParityRegion: () => (/* reexport safe */ _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_79__.ParityRegion),
180767
+ /* harmony export */ PascalCoefficients: () => (/* reexport safe */ _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_55__.PascalCoefficients),
180768
+ /* harmony export */ Path: () => (/* reexport safe */ _curve_Path__WEBPACK_IMPORTED_MODULE_80__.Path),
180769
+ /* harmony export */ PathFragment: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__.PathFragment),
180771
180770
  /* harmony export */ Plane3d: () => (/* reexport safe */ _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_18__.Plane3d),
180772
180771
  /* harmony export */ Plane3dByOriginAndUnitNormal: () => (/* reexport safe */ _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_19__.Plane3dByOriginAndUnitNormal),
180773
180772
  /* harmony export */ Plane3dByOriginAndVectors: () => (/* reexport safe */ _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_20__.Plane3dByOriginAndVectors),
180774
- /* harmony export */ PlaneByOriginAndVectors4d: () => (/* reexport safe */ _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_45__.PlaneByOriginAndVectors4d),
180773
+ /* harmony export */ PlaneByOriginAndVectors4d: () => (/* reexport safe */ _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_46__.PlaneByOriginAndVectors4d),
180775
180774
  /* harmony export */ Point2d: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Point2d),
180776
180775
  /* harmony export */ Point2dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point2dArray),
180777
180776
  /* harmony export */ Point2dArrayCarrier: () => (/* reexport safe */ _geometry3d_Point2dArrayCarrier__WEBPACK_IMPORTED_MODULE_21__.Point2dArrayCarrier),
@@ -180779,81 +180778,80 @@ __webpack_require__.r(__webpack_exports__);
180779
180778
  /* harmony export */ Point3dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point3dArray),
180780
180779
  /* harmony export */ Point3dArrayCarrier: () => (/* reexport safe */ _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_25__.Point3dArrayCarrier),
180781
180780
  /* harmony export */ Point3dArrayPolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayPolygonOps),
180782
- /* harmony export */ Point4d: () => (/* reexport safe */ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_46__.Point4d),
180781
+ /* harmony export */ Point4d: () => (/* reexport safe */ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_47__.Point4d),
180783
180782
  /* harmony export */ Point4dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point4dArray),
180784
- /* harmony export */ PointString3d: () => (/* reexport safe */ _curve_PointString3d__WEBPACK_IMPORTED_MODULE_81__.PointString3d),
180785
- /* harmony export */ Polyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__.Polyface),
180786
- /* harmony export */ PolyfaceAuxData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.PolyfaceAuxData),
180787
- /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_116__.PolyfaceBuilder),
180788
- /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__.PolyfaceClip),
180789
- /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_117__.PolyfaceData),
180790
- /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.PolyfaceQuery),
180791
- /* harmony export */ PolygonLocation: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.PolygonLocation),
180783
+ /* harmony export */ PointString3d: () => (/* reexport safe */ _curve_PointString3d__WEBPACK_IMPORTED_MODULE_83__.PointString3d),
180784
+ /* harmony export */ Polyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.Polyface),
180785
+ /* harmony export */ PolyfaceAuxData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.PolyfaceAuxData),
180786
+ /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__.PolyfaceBuilder),
180787
+ /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.PolyfaceClip),
180788
+ /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__.PolyfaceData),
180789
+ /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.PolyfaceQuery),
180790
+ /* harmony export */ PolygonLocation: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.PolygonLocation),
180792
180791
  /* harmony export */ PolygonLocationDetail: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonLocationDetail),
180793
180792
  /* harmony export */ PolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonOps),
180794
- /* harmony export */ PolygonWireOffsetContext: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.PolygonWireOffsetContext),
180795
180793
  /* harmony export */ PolylineOps: () => (/* reexport safe */ _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_26__.PolylineOps),
180796
- /* harmony export */ PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.PowerPolynomial),
180797
- /* harmony export */ ProxyCurve: () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_82__.ProxyCurve),
180798
- /* harmony export */ Quadrature: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.Quadrature),
180794
+ /* harmony export */ PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.PowerPolynomial),
180795
+ /* harmony export */ ProxyCurve: () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_84__.ProxyCurve),
180796
+ /* harmony export */ Quadrature: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__.Quadrature),
180799
180797
  /* harmony export */ Range1d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range1d),
180800
- /* harmony export */ Range1dArray: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.Range1dArray),
180798
+ /* harmony export */ Range1dArray: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__.Range1dArray),
180801
180799
  /* harmony export */ Range2d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range2d),
180802
180800
  /* harmony export */ Range3d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d),
180803
180801
  /* harmony export */ RangeBase: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.RangeBase),
180804
- /* harmony export */ Ray2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__.Ray2d),
180805
- /* harmony export */ Ray3d: () => (/* reexport safe */ _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_29__.Ray3d),
180802
+ /* harmony export */ Ray2d: () => (/* reexport safe */ _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_29__.Ray2d),
180803
+ /* harmony export */ Ray3d: () => (/* reexport safe */ _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_30__.Ray3d),
180806
180804
  /* harmony export */ RecurseToCurvesGeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.RecurseToCurvesGeometryHandler),
180807
- /* harmony export */ RecursiveCurveProcessor: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__.RecursiveCurveProcessor),
180808
- /* harmony export */ RecursiveCurveProcessorWithStack: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__.RecursiveCurveProcessorWithStack),
180809
- /* harmony export */ RegionBinaryOpType: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__.RegionBinaryOpType),
180810
- /* harmony export */ RegionMomentsXY: () => (/* reexport safe */ _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_78__.RegionMomentsXY),
180811
- /* harmony export */ RegionOps: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__.RegionOps),
180812
- /* harmony export */ RotationalSweep: () => (/* reexport safe */ _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_92__.RotationalSweep),
180813
- /* harmony export */ RuledSweep: () => (/* reexport safe */ _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_93__.RuledSweep),
180814
- /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__.Sample),
180815
- /* harmony export */ Segment1d: () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_30__.Segment1d),
180816
- /* harmony export */ SimpleNewton: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.SimpleNewton),
180817
- /* harmony export */ SineCosinePolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SineCosinePolynomial),
180818
- /* harmony export */ SmallSystem: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SmallSystem),
180805
+ /* harmony export */ RecursiveCurveProcessor: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__.RecursiveCurveProcessor),
180806
+ /* harmony export */ RecursiveCurveProcessorWithStack: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__.RecursiveCurveProcessorWithStack),
180807
+ /* harmony export */ RegionBinaryOpType: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__.RegionBinaryOpType),
180808
+ /* harmony export */ RegionMomentsXY: () => (/* reexport safe */ _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_81__.RegionMomentsXY),
180809
+ /* harmony export */ RegionOps: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__.RegionOps),
180810
+ /* harmony export */ RotationalSweep: () => (/* reexport safe */ _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_94__.RotationalSweep),
180811
+ /* harmony export */ RuledSweep: () => (/* reexport safe */ _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_95__.RuledSweep),
180812
+ /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.Sample),
180813
+ /* harmony export */ Segment1d: () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__.Segment1d),
180814
+ /* harmony export */ SimpleNewton: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.SimpleNewton),
180815
+ /* harmony export */ SineCosinePolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SineCosinePolynomial),
180816
+ /* harmony export */ SmallSystem: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SmallSystem),
180819
180817
  /* harmony export */ SmoothTransformBetweenFrusta: () => (/* reexport safe */ _geometry3d_FrustumAnimation__WEBPACK_IMPORTED_MODULE_7__.SmoothTransformBetweenFrusta),
180820
- /* harmony export */ SolidPrimitive: () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_94__.SolidPrimitive),
180821
- /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_123__.SpacePolygonTriangulation),
180822
- /* harmony export */ Sphere: () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_95__.Sphere),
180823
- /* harmony export */ SphereImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SphereImplicit),
180824
- /* harmony export */ StandardViewIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.StandardViewIndex),
180825
- /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__.SteppedIndexFunctionFactory),
180826
- /* harmony export */ StringifiedClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__.StringifiedClipVector),
180827
- /* harmony export */ StrokeCountMap: () => (/* reexport safe */ _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_88__.StrokeCountMap),
180828
- /* harmony export */ StrokeOptions: () => (/* reexport safe */ _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_83__.StrokeOptions),
180829
- /* harmony export */ SweepContour: () => (/* reexport safe */ _solid_SweepContour__WEBPACK_IMPORTED_MODULE_96__.SweepContour),
180830
- /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.SweepLineStringToFacetsOptions),
180831
- /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__.TaggedNumericConstants),
180832
- /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__.TaggedNumericData),
180833
- /* harmony export */ TorusImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TorusImplicit),
180834
- /* harmony export */ TorusPipe: () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_97__.TorusPipe),
180835
- /* harmony export */ Transform: () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_31__.Transform),
180836
- /* harmony export */ TransitionSpiral3d: () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_84__.TransitionSpiral3d),
180837
- /* harmony export */ TriDiagonalSystem: () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__.TriDiagonalSystem),
180818
+ /* harmony export */ SolidPrimitive: () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_96__.SolidPrimitive),
180819
+ /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__.SpacePolygonTriangulation),
180820
+ /* harmony export */ Sphere: () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_97__.Sphere),
180821
+ /* harmony export */ SphereImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SphereImplicit),
180822
+ /* harmony export */ StandardViewIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.StandardViewIndex),
180823
+ /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.SteppedIndexFunctionFactory),
180824
+ /* harmony export */ StringifiedClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.StringifiedClipVector),
180825
+ /* harmony export */ StrokeCountMap: () => (/* reexport safe */ _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_90__.StrokeCountMap),
180826
+ /* harmony export */ StrokeOptions: () => (/* reexport safe */ _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_85__.StrokeOptions),
180827
+ /* harmony export */ SweepContour: () => (/* reexport safe */ _solid_SweepContour__WEBPACK_IMPORTED_MODULE_98__.SweepContour),
180828
+ /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.SweepLineStringToFacetsOptions),
180829
+ /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericConstants),
180830
+ /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericData),
180831
+ /* harmony export */ TorusImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TorusImplicit),
180832
+ /* harmony export */ TorusPipe: () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_99__.TorusPipe),
180833
+ /* harmony export */ Transform: () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__.Transform),
180834
+ /* harmony export */ TransitionSpiral3d: () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_86__.TransitionSpiral3d),
180835
+ /* harmony export */ TriDiagonalSystem: () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_59__.TriDiagonalSystem),
180838
180836
  /* harmony export */ TriangleLocationDetail: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.TriangleLocationDetail),
180839
- /* harmony export */ TriangularFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.TriangularFacetLocationDetail),
180840
- /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_122__.Triangulator),
180841
- /* harmony export */ TrigPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TrigPolynomial),
180842
- /* harmony export */ UVSelect: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.UVSelect),
180843
- /* harmony export */ UVSurfaceOps: () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_32__.UVSurfaceOps),
180844
- /* harmony export */ UnionOfConvexClipPlaneSets: () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_40__.UnionOfConvexClipPlaneSets),
180845
- /* harmony export */ UnionRegion: () => (/* reexport safe */ _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_87__.UnionRegion),
180846
- /* harmony export */ UnivariateBezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.UnivariateBezier),
180837
+ /* harmony export */ TriangularFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.TriangularFacetLocationDetail),
180838
+ /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__.Triangulator),
180839
+ /* harmony export */ TrigPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TrigPolynomial),
180840
+ /* harmony export */ UVSelect: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.UVSelect),
180841
+ /* harmony export */ UVSurfaceOps: () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__.UVSurfaceOps),
180842
+ /* harmony export */ UnionOfConvexClipPlaneSets: () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__.UnionOfConvexClipPlaneSets),
180843
+ /* harmony export */ UnionRegion: () => (/* reexport safe */ _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_89__.UnionRegion),
180844
+ /* harmony export */ UnivariateBezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.UnivariateBezier),
180847
180845
  /* harmony export */ Vector2d: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Vector2d),
180848
180846
  /* harmony export */ Vector3d: () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.Vector3d),
180849
180847
  /* harmony export */ Vector3dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Vector3dArray),
180850
- /* harmony export */ WeightStyle: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.WeightStyle),
180848
+ /* harmony export */ WeightStyle: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.WeightStyle),
180851
180849
  /* harmony export */ XY: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.XY),
180852
- /* harmony export */ XYAndZ: () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_33__.XYAndZ),
180850
+ /* harmony export */ XYAndZ: () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__.XYAndZ),
180853
180851
  /* harmony export */ XYZ: () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.XYZ),
180854
- /* harmony export */ YawPitchRollAngles: () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_34__.YawPitchRollAngles),
180855
- /* harmony export */ compareRange1dLexicalLowHigh: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.compareRange1dLexicalLowHigh),
180856
- /* harmony export */ interpolateColor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.interpolateColor)
180852
+ /* harmony export */ YawPitchRollAngles: () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__.YawPitchRollAngles),
180853
+ /* harmony export */ compareRange1dLexicalLowHigh: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__.compareRange1dLexicalLowHigh),
180854
+ /* harmony export */ interpolateColor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.interpolateColor)
180857
180855
  /* harmony export */ });
180858
180856
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
180859
180857
  /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
@@ -180884,106 +180882,107 @@ __webpack_require__.r(__webpack_exports__);
180884
180882
  /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
180885
180883
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
180886
180884
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
180887
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
180888
- /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
180889
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
180890
- /* harmony import */ var _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./geometry3d/UVSurfaceOps */ "../../core/geometry/lib/esm/geometry3d/UVSurfaceOps.js");
180891
- /* harmony import */ var _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./geometry3d/XYZProps */ "../../core/geometry/lib/esm/geometry3d/XYZProps.js");
180892
- /* harmony import */ var _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./geometry3d/YawPitchRollAngles */ "../../core/geometry/lib/esm/geometry3d/YawPitchRollAngles.js");
180893
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./Geometry */ "../../core/geometry/lib/esm/Geometry.js");
180894
- /* harmony import */ var _Constant__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Constant */ "../../core/geometry/lib/esm/Constant.js");
180895
- /* harmony import */ var _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./clipping/BooleanClipFactory */ "../../core/geometry/lib/esm/clipping/BooleanClipFactory.js");
180896
- /* harmony import */ var _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./clipping/ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
180897
- /* harmony import */ var _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./clipping/ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
180898
- /* harmony import */ var _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./clipping/UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
180899
- /* harmony import */ var _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./clipping/ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
180900
- /* harmony import */ var _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./clipping/ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
180901
- /* harmony import */ var _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./clipping/ClipUtils */ "../../core/geometry/lib/esm/clipping/ClipUtils.js");
180902
- /* harmony import */ var _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./numerics/ConvexPolygon2d */ "../../core/geometry/lib/esm/numerics/ConvexPolygon2d.js");
180903
- /* harmony import */ var _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./geometry4d/PlaneByOriginAndVectors4d */ "../../core/geometry/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js");
180904
- /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
180905
- /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
180906
- /* harmony import */ var _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./geometry4d/Map4d */ "../../core/geometry/lib/esm/geometry4d/Map4d.js");
180907
- /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
180908
- /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
180909
- /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
180910
- /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
180911
- /* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
180912
- /* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
180913
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
180914
- /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
180915
- /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
180916
- /* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
180917
- /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
180918
- /* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
180919
- /* harmony import */ var _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./curve/CoordinateXYZ */ "../../core/geometry/lib/esm/curve/CoordinateXYZ.js");
180920
- /* harmony import */ var _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./curve/CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
180921
- /* harmony import */ var _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./curve/CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
180922
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
180923
- /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
180924
- /* harmony import */ var _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXY.js");
180925
- /* harmony import */ var _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXYZ.js");
180926
- /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
180927
- /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
180928
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
180929
- /* harmony import */ var _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./curve/CurveProcessor */ "../../core/geometry/lib/esm/curve/CurveProcessor.js");
180930
- /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
180931
- /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
180932
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
180933
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
180934
- /* harmony import */ var _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./curve/ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
180935
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
180936
- /* harmony import */ var _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./curve/RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
180937
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
180938
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
180939
- /* harmony import */ var _curve_PointString3d__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./curve/PointString3d */ "../../core/geometry/lib/esm/curve/PointString3d.js");
180940
- /* harmony import */ var _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./curve/ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
180941
- /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
180942
- /* harmony import */ var _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./curve/spiral/TransitionSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/TransitionSpiral3d.js");
180943
- /* harmony import */ var _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./curve/spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
180944
- /* harmony import */ var _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./curve/spiral/DirectSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/DirectSpiral3d.js");
180945
- /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
180946
- /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
180947
- /* harmony import */ var _solid_Box__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./solid/Box */ "../../core/geometry/lib/esm/solid/Box.js");
180948
- /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
180949
- /* harmony import */ var _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./solid/LinearSweep */ "../../core/geometry/lib/esm/solid/LinearSweep.js");
180950
- /* harmony import */ var _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./solid/RotationalSweep */ "../../core/geometry/lib/esm/solid/RotationalSweep.js");
180951
- /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
180952
- /* harmony import */ var _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./solid/SolidPrimitive */ "../../core/geometry/lib/esm/solid/SolidPrimitive.js");
180953
- /* harmony import */ var _solid_Sphere__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./solid/Sphere */ "../../core/geometry/lib/esm/solid/Sphere.js");
180954
- /* harmony import */ var _solid_SweepContour__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./solid/SweepContour */ "../../core/geometry/lib/esm/solid/SweepContour.js");
180955
- /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
180956
- /* harmony import */ var _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./bspline/AkimaCurve3d */ "../../core/geometry/lib/esm/bspline/AkimaCurve3d.js");
180957
- /* harmony import */ var _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./bspline/Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
180958
- /* harmony import */ var _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./bspline/BezierCurveBase */ "../../core/geometry/lib/esm/bspline/BezierCurveBase.js");
180959
- /* harmony import */ var _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./bspline/BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
180960
- /* harmony import */ var _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./bspline/BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
180961
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
180962
- /* harmony import */ var _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./bspline/BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
180963
- /* harmony import */ var _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./bspline/BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
180964
- /* harmony import */ var _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./bspline/BSplineCurve3dH */ "../../core/geometry/lib/esm/bspline/BSplineCurve3dH.js");
180965
- /* harmony import */ var _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./bspline/BSplineSurface */ "../../core/geometry/lib/esm/bspline/BSplineSurface.js");
180966
- /* harmony import */ var _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./bspline/InterpolationCurve3d */ "../../core/geometry/lib/esm/bspline/InterpolationCurve3d.js");
180967
- /* harmony import */ var _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./bspline/KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
180968
- /* harmony import */ var _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./polyface/AuxData */ "../../core/geometry/lib/esm/polyface/AuxData.js");
180969
- /* harmony import */ var _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./polyface/BoxTopology */ "../../core/geometry/lib/esm/polyface/BoxTopology.js");
180970
- /* harmony import */ var _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./polyface/FacetFaceData */ "../../core/geometry/lib/esm/polyface/FacetFaceData.js");
180971
- /* harmony import */ var _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./polyface/Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
180972
- /* harmony import */ var _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./polyface/FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
180973
- /* harmony import */ var _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./polyface/IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
180974
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
180975
- /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
180976
- /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
180977
- /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
180978
- /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
180979
- /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
180980
- /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
180981
- /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
180982
- /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
180983
- /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
180984
- /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
180985
- /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
180986
- /* harmony import */ var _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./curve/internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
180885
+ /* harmony import */ var _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./geometry3d/Ray2d */ "../../core/geometry/lib/esm/geometry3d/Ray2d.js");
180886
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
180887
+ /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
180888
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
180889
+ /* harmony import */ var _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./geometry3d/UVSurfaceOps */ "../../core/geometry/lib/esm/geometry3d/UVSurfaceOps.js");
180890
+ /* harmony import */ var _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./geometry3d/XYZProps */ "../../core/geometry/lib/esm/geometry3d/XYZProps.js");
180891
+ /* harmony import */ var _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./geometry3d/YawPitchRollAngles */ "../../core/geometry/lib/esm/geometry3d/YawPitchRollAngles.js");
180892
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Geometry */ "../../core/geometry/lib/esm/Geometry.js");
180893
+ /* harmony import */ var _Constant__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./Constant */ "../../core/geometry/lib/esm/Constant.js");
180894
+ /* harmony import */ var _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./clipping/BooleanClipFactory */ "../../core/geometry/lib/esm/clipping/BooleanClipFactory.js");
180895
+ /* harmony import */ var _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./clipping/ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
180896
+ /* harmony import */ var _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./clipping/ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
180897
+ /* harmony import */ var _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./clipping/UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
180898
+ /* harmony import */ var _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./clipping/ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
180899
+ /* harmony import */ var _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./clipping/ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
180900
+ /* harmony import */ var _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./clipping/ClipUtils */ "../../core/geometry/lib/esm/clipping/ClipUtils.js");
180901
+ /* harmony import */ var _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./numerics/ConvexPolygon2d */ "../../core/geometry/lib/esm/numerics/ConvexPolygon2d.js");
180902
+ /* harmony import */ var _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./geometry4d/PlaneByOriginAndVectors4d */ "../../core/geometry/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js");
180903
+ /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
180904
+ /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
180905
+ /* harmony import */ var _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./geometry4d/Map4d */ "../../core/geometry/lib/esm/geometry4d/Map4d.js");
180906
+ /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
180907
+ /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
180908
+ /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
180909
+ /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
180910
+ /* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
180911
+ /* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
180912
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
180913
+ /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
180914
+ /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
180915
+ /* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
180916
+ /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
180917
+ /* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
180918
+ /* harmony import */ var _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./curve/CoordinateXYZ */ "../../core/geometry/lib/esm/curve/CoordinateXYZ.js");
180919
+ /* harmony import */ var _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./curve/CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
180920
+ /* harmony import */ var _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./curve/CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
180921
+ /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
180922
+ /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
180923
+ /* harmony import */ var _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXY.js");
180924
+ /* harmony import */ var _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXYZ.js");
180925
+ /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
180926
+ /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
180927
+ /* harmony import */ var _curve_CurveOps__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./curve/CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
180928
+ /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
180929
+ /* harmony import */ var _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./curve/CurveProcessor */ "../../core/geometry/lib/esm/curve/CurveProcessor.js");
180930
+ /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
180931
+ /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
180932
+ /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
180933
+ /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
180934
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
180935
+ /* harmony import */ var _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./curve/ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
180936
+ /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
180937
+ /* harmony import */ var _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./curve/RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
180938
+ /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
180939
+ /* harmony import */ var _curve_PointString3d__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./curve/PointString3d */ "../../core/geometry/lib/esm/curve/PointString3d.js");
180940
+ /* harmony import */ var _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./curve/ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
180941
+ /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
180942
+ /* harmony import */ var _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./curve/spiral/TransitionSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/TransitionSpiral3d.js");
180943
+ /* harmony import */ var _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./curve/spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
180944
+ /* harmony import */ var _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./curve/spiral/DirectSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/DirectSpiral3d.js");
180945
+ /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
180946
+ /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
180947
+ /* harmony import */ var _solid_Box__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./solid/Box */ "../../core/geometry/lib/esm/solid/Box.js");
180948
+ /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
180949
+ /* harmony import */ var _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./solid/LinearSweep */ "../../core/geometry/lib/esm/solid/LinearSweep.js");
180950
+ /* harmony import */ var _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./solid/RotationalSweep */ "../../core/geometry/lib/esm/solid/RotationalSweep.js");
180951
+ /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
180952
+ /* harmony import */ var _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./solid/SolidPrimitive */ "../../core/geometry/lib/esm/solid/SolidPrimitive.js");
180953
+ /* harmony import */ var _solid_Sphere__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./solid/Sphere */ "../../core/geometry/lib/esm/solid/Sphere.js");
180954
+ /* harmony import */ var _solid_SweepContour__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./solid/SweepContour */ "../../core/geometry/lib/esm/solid/SweepContour.js");
180955
+ /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
180956
+ /* harmony import */ var _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./bspline/AkimaCurve3d */ "../../core/geometry/lib/esm/bspline/AkimaCurve3d.js");
180957
+ /* harmony import */ var _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./bspline/Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
180958
+ /* harmony import */ var _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./bspline/BezierCurveBase */ "../../core/geometry/lib/esm/bspline/BezierCurveBase.js");
180959
+ /* harmony import */ var _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./bspline/BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
180960
+ /* harmony import */ var _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./bspline/BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
180961
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
180962
+ /* harmony import */ var _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./bspline/BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
180963
+ /* harmony import */ var _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./bspline/BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
180964
+ /* harmony import */ var _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./bspline/BSplineCurve3dH */ "../../core/geometry/lib/esm/bspline/BSplineCurve3dH.js");
180965
+ /* harmony import */ var _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./bspline/BSplineSurface */ "../../core/geometry/lib/esm/bspline/BSplineSurface.js");
180966
+ /* harmony import */ var _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./bspline/InterpolationCurve3d */ "../../core/geometry/lib/esm/bspline/InterpolationCurve3d.js");
180967
+ /* harmony import */ var _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./bspline/KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
180968
+ /* harmony import */ var _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./polyface/AuxData */ "../../core/geometry/lib/esm/polyface/AuxData.js");
180969
+ /* harmony import */ var _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./polyface/BoxTopology */ "../../core/geometry/lib/esm/polyface/BoxTopology.js");
180970
+ /* harmony import */ var _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./polyface/FacetFaceData */ "../../core/geometry/lib/esm/polyface/FacetFaceData.js");
180971
+ /* harmony import */ var _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./polyface/Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
180972
+ /* harmony import */ var _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./polyface/FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
180973
+ /* harmony import */ var _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./polyface/IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
180974
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
180975
+ /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
180976
+ /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
180977
+ /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
180978
+ /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
180979
+ /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
180980
+ /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
180981
+ /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
180982
+ /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
180983
+ /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
180984
+ /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
180985
+ /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
180987
180986
  /*---------------------------------------------------------------------------------------------
180988
180987
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
180989
180988
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -181234,7 +181233,7 @@ __webpack_require__.r(__webpack_exports__);
181234
181233
 
181235
181234
 
181236
181235
 
181237
- // temporary export for internal access pending exposure of this functionality via public API
181236
+
181238
181237
 
181239
181238
 
181240
181239
 
@@ -181265,8 +181264,8 @@ __webpack_require__.r(__webpack_exports__);
181265
181264
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
181266
181265
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
181267
181266
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
181268
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
181269
181267
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
181268
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
181270
181269
  /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
181271
181270
  /*---------------------------------------------------------------------------------------------
181272
181271
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -182199,7 +182198,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
182199
182198
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
182200
182199
  */
182201
182200
  constructOffsetXY(offsetDistanceOrOptions) {
182202
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__.OffsetOptions.create(offsetDistanceOrOptions);
182201
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_14__.OffsetOptions.create(offsetDistanceOrOptions);
182203
182202
  if (this.isCircular || options.preserveEllipticalArcs) {
182204
182203
  const arcXY = this.cloneAtZ();
182205
182204
  const sign = arcXY.sweep.sweepRadians * arcXY.matrixRef.coffs[8] >= 0.0 ? 1.0 : -1.0;
@@ -182249,199 +182248,6 @@ Arc3d.quadratureIntervalAngleDegrees = 10.0;
182249
182248
 
182250
182249
 
182251
182250
 
182252
- /***/ }),
182253
-
182254
- /***/ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js":
182255
- /*!******************************************************************!*\
182256
- !*** ../../core/geometry/lib/esm/curve/ChainCollectorContext.js ***!
182257
- \******************************************************************/
182258
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
182259
-
182260
- "use strict";
182261
- __webpack_require__.r(__webpack_exports__);
182262
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
182263
- /* harmony export */ ChainCollectorContext: () => (/* binding */ ChainCollectorContext)
182264
- /* harmony export */ });
182265
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
182266
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
182267
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
182268
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
182269
- /*---------------------------------------------------------------------------------------------
182270
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
182271
- * See LICENSE.md in the project root for license terms and full copyright notice.
182272
- *--------------------------------------------------------------------------------------------*/
182273
-
182274
-
182275
-
182276
-
182277
- /**
182278
- * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
182279
- * * The caller makes a sequence of calls to announce individual primitives.
182280
- * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`
182281
- * * (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.
182282
- * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.
182283
- * * (b) "mixed" primitives -- primitive order is NOT significant for chain assembly.
182284
- * * 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.
182285
- * * The per-curve announcement is
182286
- * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
182287
- * * When all curves have been announced, the call to grab the paths option
182288
- * * formLoopsIfClosed
182289
- * * If true, convert closed paths to `Loop`, open paths to `Path`
182290
- * * If false, convert all paths (open or not) to `Path`
182291
- * * Usage pattern is
182292
- * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
182293
- * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`
182294
- * * end: ` result = context.grabResults (formLoopsIfClosed)`
182295
- * @internal
182296
- */
182297
- class ChainCollectorContext {
182298
- /**
182299
- * Push a new chain with an optional first primitive.
182300
- */
182301
- pushNewChain(primitive) {
182302
- const chain = [];
182303
- if (primitive)
182304
- chain.push(primitive);
182305
- this._chains.push(chain);
182306
- }
182307
- findOrCreateTailChain() {
182308
- if (this._chains.length === 0)
182309
- this.pushNewChain();
182310
- return this._chains[this._chains.length - 1];
182311
- }
182312
- findAnyChainToConnect(xyz) {
182313
- for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
182314
- const path = this._chains[chainIndexA];
182315
- this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);
182316
- if (this._xyzWork1.isAlmostEqual(xyz))
182317
- return { chainIndex: chainIndexA, atEnd: true };
182318
- this._xyzWork1 = path[0].startPoint(this._xyzWork1);
182319
- if (this._xyzWork1.isAlmostEqual(xyz))
182320
- return { chainIndex: chainIndexA, atEnd: false };
182321
- }
182322
- return undefined;
182323
- }
182324
- /** Initialize with an empty array of chains.
182325
- * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.
182326
- */
182327
- constructor(makeClones) {
182328
- this._chains = [];
182329
- this._makeClones = makeClones;
182330
- }
182331
- /** Announce a curve primitive
182332
- * * searchAllChains controls the extent of search for connecting points.
182333
- * * false ==> only consider connection to most recent chain.
182334
- * * true ==> search for any connection, reversing direction as needed.
182335
- * * Otherwise start a new chain.
182336
- */
182337
- announceCurvePrimitive(candidate, searchAllChains = false) {
182338
- if (candidate) {
182339
- if (this._makeClones) {
182340
- const candidate1 = candidate.clone();
182341
- if (!candidate1 || !(candidate1 instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive))
182342
- return;
182343
- this.transferMarkup(candidate, candidate1);
182344
- candidate = candidate1;
182345
- }
182346
- if (!searchAllChains) {
182347
- const activeChain = this.findOrCreateTailChain();
182348
- if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))
182349
- activeChain.push(candidate);
182350
- else
182351
- this.pushNewChain(candidate);
182352
- }
182353
- else {
182354
- this._xyzWork0 = candidate.startPoint(this._xyzWork0);
182355
- let connect = this.findAnyChainToConnect(this._xyzWork0);
182356
- if (connect) {
182357
- if (connect.atEnd) {
182358
- this._chains[connect.chainIndex].push(candidate);
182359
- }
182360
- else {
182361
- candidate.reverseInPlace();
182362
- this._chains[connect.chainIndex].splice(0, 0, candidate);
182363
- }
182364
- }
182365
- else {
182366
- this._xyzWork0 = candidate.endPoint(this._xyzWork0);
182367
- connect = this.findAnyChainToConnect(this._xyzWork0);
182368
- if (connect) { // START of new primitive ..
182369
- if (connect.atEnd) {
182370
- candidate.reverseInPlace();
182371
- this._chains[connect.chainIndex].push(candidate);
182372
- }
182373
- else {
182374
- this._chains[connect.chainIndex].splice(0, 0, candidate);
182375
- }
182376
- }
182377
- else {
182378
- this._chains.push([candidate]);
182379
- }
182380
- }
182381
- }
182382
- }
182383
- }
182384
- /** Transfer markup (e.g. startCut, endCut) from source to destination */
182385
- transferMarkup(source, dest) {
182386
- if (source && dest) {
182387
- dest.startCut = source.startCut;
182388
- dest.endCut = source.endCut;
182389
- }
182390
- }
182391
- /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
182392
- * * The input array is assumed to be connected appropriately to act as the curves of a Path.
182393
- * * When a path is created the curves array is CAPTURED.
182394
- */
182395
- promoteArrayToCurves(curves, makeLoopIfClosed) {
182396
- if (curves.length === 0)
182397
- return undefined;
182398
- if (makeLoopIfClosed) {
182399
- ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);
182400
- ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);
182401
- if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))
182402
- return _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop.createArray(curves);
182403
- }
182404
- if (curves.length === 1)
182405
- return curves[0];
182406
- return _Path__WEBPACK_IMPORTED_MODULE_2__.Path.createArray(curves);
182407
- }
182408
- /** Return the collected results, structured as the simplest possible type. */
182409
- grabResult(makeLoopIfClosed = false) {
182410
- const chains = this._chains;
182411
- if (chains.length === 0)
182412
- return undefined;
182413
- if (chains.length === 1)
182414
- return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
182415
- const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.BagOfCurves.create();
182416
- for (const chain of chains) {
182417
- const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
182418
- bag.tryAddChild(q);
182419
- }
182420
- return bag;
182421
- }
182422
- /** test if there is a break between primitiveA and primitiveB, due to any condition such as
182423
- * * primitiveA.endCut
182424
- * * primitiveB.startCut
182425
- * * physical gap between primitives.
182426
- */
182427
- static needBreakBetweenPrimitives(primitiveA, primitiveB, isXYOnly = false) {
182428
- if (primitiveA === undefined)
182429
- return true;
182430
- if (primitiveB === undefined)
182431
- return true;
182432
- if (primitiveA.endCut !== undefined)
182433
- return true;
182434
- if (primitiveB.startCut !== undefined)
182435
- return true;
182436
- ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);
182437
- ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);
182438
- return isXYOnly
182439
- ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)
182440
- : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);
182441
- }
182442
- }
182443
-
182444
-
182445
182251
  /***/ }),
182446
182252
 
182447
182253
  /***/ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js":
@@ -182689,7 +182495,7 @@ __webpack_require__.r(__webpack_exports__);
182689
182495
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
182690
182496
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
182691
182497
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
182692
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
182498
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
182693
182499
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
182694
182500
  /*---------------------------------------------------------------------------------------------
182695
182501
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -183378,7 +183184,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
183378
183184
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
183379
183185
  */
183380
183186
  constructOffsetXY(offsetDistanceOrOptions) {
183381
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
183187
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
183382
183188
  const offsets = [];
183383
183189
  for (const prim of this.collectCurvePrimitives(undefined, true, true)) {
183384
183190
  const offset = prim.constructOffsetXY(options);
@@ -183467,8 +183273,8 @@ __webpack_require__.r(__webpack_exports__);
183467
183273
  * same plane).
183468
183274
  * - `Loop` - A chain required to close from last to first so that a planar area is enclosed (so curves have to
183469
183275
  * be on the same plane).
183470
- * - `ParityRegion` -- a collection of coplanar `Loop`s, with "in/out" classification by parity rules.
183471
- * - `UnionRegion` -- a collection of coplanar `Loop`s, with "in/out" classification by union rules.
183276
+ * - `ParityRegion` -- a collection of coplanar `Loop`, with "in/out" classification by parity rules.
183277
+ * - `UnionRegion` -- a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
183472
183278
  * - `BagOfCurves` -- a collection of `AnyCurve` with no implied structure.
183473
183279
  *
183474
183280
  * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
@@ -187416,6 +187222,183 @@ class CurveLocationDetailPair {
187416
187222
  }
187417
187223
 
187418
187224
 
187225
+ /***/ }),
187226
+
187227
+ /***/ "../../core/geometry/lib/esm/curve/CurveOps.js":
187228
+ /*!*****************************************************!*\
187229
+ !*** ../../core/geometry/lib/esm/curve/CurveOps.js ***!
187230
+ \*****************************************************/
187231
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
187232
+
187233
+ "use strict";
187234
+ __webpack_require__.r(__webpack_exports__);
187235
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
187236
+ /* harmony export */ CurveOps: () => (/* binding */ CurveOps)
187237
+ /* harmony export */ });
187238
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
187239
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
187240
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
187241
+ /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
187242
+ /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
187243
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
187244
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
187245
+ /*---------------------------------------------------------------------------------------------
187246
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
187247
+ * See LICENSE.md in the project root for license terms and full copyright notice.
187248
+ *--------------------------------------------------------------------------------------------*/
187249
+ /** @packageDocumentation
187250
+ * @module Curve
187251
+ */
187252
+
187253
+
187254
+
187255
+
187256
+
187257
+
187258
+
187259
+ /**
187260
+ * Static methods for miscellaneous curve operations.
187261
+ * @public
187262
+ */
187263
+ class CurveOps {
187264
+ /** Recursively sum curve lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level. */
187265
+ static sumLengths(curves) {
187266
+ let mySum = 0;
187267
+ if (curves instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive) {
187268
+ mySum += curves.curveLength();
187269
+ }
187270
+ else if (curves instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_1__.CurveCollection) {
187271
+ mySum += curves.sumLengths();
187272
+ }
187273
+ else if (Array.isArray(curves)) {
187274
+ for (const data1 of curves)
187275
+ mySum += this.sumLengths(data1);
187276
+ }
187277
+ return mySum;
187278
+ }
187279
+ /** Recursively extend the range by each curve's range, allowing CurvePrimitive, CurveCollection, or array of such at any level. */
187280
+ static extendRange(range, curves) {
187281
+ if (Array.isArray(curves)) {
187282
+ for (const data1 of curves)
187283
+ this.extendRange(range, data1);
187284
+ }
187285
+ else {
187286
+ curves.extendRange(range);
187287
+ }
187288
+ return range;
187289
+ }
187290
+ /**
187291
+ * Construct a separate xy-offset for each input curve.
187292
+ * * For best offset results, the inputs should be parallel to the xy-plane.
187293
+ * @param curves input curve(s), z-coordinates ignored. Only [[ChainTypes]] are handled.
187294
+ * @param offset offset distance (positive to left of curve, negative to right)
187295
+ * @param result array to collect offset curves
187296
+ * @returns summed length of offset curves
187297
+ */
187298
+ static appendXYOffsets(curves, offset, result) {
187299
+ let summedLengths = 0;
187300
+ if (curves instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive) {
187301
+ const resultA = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(_Path__WEBPACK_IMPORTED_MODULE_3__.Path.create(curves), offset);
187302
+ if (resultA) {
187303
+ summedLengths += this.sumLengths(resultA);
187304
+ result.push(resultA);
187305
+ }
187306
+ }
187307
+ else if (curves instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop || curves instanceof _Path__WEBPACK_IMPORTED_MODULE_3__.Path) {
187308
+ const resultA = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offset);
187309
+ if (resultA) {
187310
+ summedLengths += this.sumLengths(resultA);
187311
+ result.push(resultA);
187312
+ }
187313
+ }
187314
+ else if (curves instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_1__.BagOfCurves) {
187315
+ for (const q of curves.children)
187316
+ summedLengths += this.appendXYOffsets(q, offset, result);
187317
+ }
187318
+ else if (Array.isArray(curves)) {
187319
+ for (const q of curves)
187320
+ summedLengths += this.appendXYOffsets(q, offset, result);
187321
+ }
187322
+ return summedLengths;
187323
+ }
187324
+ /**
187325
+ * Restructure curve fragments as Paths and Loops, and construct xy-offsets of the chains.
187326
+ * * If the inputs do not form Loop(s), the classification of offsets is suspect.
187327
+ * * For best offset results, the inputs should be parallel to the xy-plane.
187328
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
187329
+ * @param fragments fragments to be chained and offset
187330
+ * @param offsetDistance offset distance, applied to both sides of each fragment to produce inside and outside xy-offset curves.
187331
+ * @param gapTolerance distance to be treated as "effectively zero" when joining head-to-tail
187332
+ * @returns object with named chains, insideOffsets, outsideOffsets
187333
+ */
187334
+ static collectInsideAndOutsideXYOffsets(fragments, offsetDistance, gapTolerance) {
187335
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance);
187336
+ for (const s of fragments) {
187337
+ collector.captureCurve(s);
187338
+ }
187339
+ const chains = collector.grabResult(true);
187340
+ const myOffsetA = [];
187341
+ const myOffsetB = [];
187342
+ const offsetLengthA = CurveOps.appendXYOffsets(chains, offsetDistance, myOffsetA);
187343
+ const offsetLengthB = CurveOps.appendXYOffsets(chains, -offsetDistance, myOffsetB);
187344
+ if (offsetLengthA > offsetLengthB) {
187345
+ return { outsideOffsets: myOffsetA, insideOffsets: myOffsetB, chains };
187346
+ }
187347
+ else {
187348
+ return { insideOffsets: myOffsetA, outsideOffsets: myOffsetB, chains };
187349
+ }
187350
+ }
187351
+ /**
187352
+ * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
187353
+ * * The construction will remove "some" local effects of features smaller than the offset distance, but will not detect self intersection among widely separated edges.
187354
+ * @param curves base curves.
187355
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
187356
+ */
187357
+ static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
187358
+ return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
187359
+ }
187360
+ /**
187361
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
187362
+ * @param curve primitive to offset
187363
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
187364
+ */
187365
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
187366
+ return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions);
187367
+ }
187368
+ /**
187369
+ * Restructure curve fragments as Paths and Loops.
187370
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
187371
+ * @param fragments fragments to be chained
187372
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
187373
+ * @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.
187374
+ * @returns chains, possibly wrapped in a [[BagOfCurves]].
187375
+ */
187376
+ static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance) {
187377
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance, planeTolerance);
187378
+ for (const s of fragments) {
187379
+ collector.captureCurve(s);
187380
+ }
187381
+ return collector.grabResult(true);
187382
+ }
187383
+ /**
187384
+ * Restructure curve fragments as Paths and Loops, to be stroked and passed into the callback.
187385
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
187386
+ * @param fragments fragments to be chained and stroked
187387
+ * @param announceChain callback to process each stroked Path and Loop
187388
+ * @param strokeOptions options for stroking the chains
187389
+ * @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.
187390
+ * @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.
187391
+ */
187392
+ static collectChainsAsLineString3d(fragments, announceChain, strokeOptions, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance) {
187393
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance, planeTolerance);
187394
+ for (const s of fragments) {
187395
+ collector.captureCurve(s);
187396
+ }
187397
+ collector.announceChainsAsLineString3d(announceChain, strokeOptions);
187398
+ }
187399
+ }
187400
+
187401
+
187419
187402
  /***/ }),
187420
187403
 
187421
187404
  /***/ "../../core/geometry/lib/esm/curve/CurvePrimitive.js":
@@ -188308,7 +188291,7 @@ __webpack_require__.r(__webpack_exports__);
188308
188291
  * @public
188309
188292
  */
188310
188293
  class GeometryQuery {
188311
- /** Return the range of the entire (tree) GeometryQuery */
188294
+ /** Return the range of the entire GeometryQuery tree */
188312
188295
  range(transform, result) {
188313
188296
  if (result)
188314
188297
  result.setNull();
@@ -188356,7 +188339,7 @@ class GeometryQuery {
188356
188339
  return false;
188357
188340
  }
188358
188341
  /**
188359
- * Apply instance method isAlmostEqual if both are defined.
188342
+ * Apply instance method [[isAlmostEqual]] if both are defined.
188360
188343
  * * both undefined returns true
188361
188344
  * * single defined returns false
188362
188345
  */
@@ -188393,7 +188376,7 @@ __webpack_require__.r(__webpack_exports__);
188393
188376
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
188394
188377
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
188395
188378
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
188396
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
188379
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
188397
188380
  /*---------------------------------------------------------------------------------------------
188398
188381
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
188399
188382
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -188773,7 +188756,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
188773
188756
  const offsetVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Vector3d.createStartEnd(this._point0, this._point1);
188774
188757
  if (offsetVec.normalizeInPlace()) {
188775
188758
  offsetVec.rotate90CCWXY(offsetVec);
188776
- const offsetDist = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.getOffsetDistance(offsetDistanceOrOptions);
188759
+ const offsetDist = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.getOffsetDistance(offsetDistanceOrOptions);
188777
188760
  return LineSegment3d.create(this._point0.plusScaled(offsetVec, offsetDist), this._point1.plusScaled(offsetVec, offsetDist));
188778
188761
  }
188779
188762
  return undefined;
@@ -188822,8 +188805,8 @@ __webpack_require__.r(__webpack_exports__);
188822
188805
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
188823
188806
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
188824
188807
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
188825
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
188826
188808
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
188809
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
188827
188810
  /* harmony import */ var _Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
188828
188811
 
188829
188812
 
@@ -190161,7 +190144,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
190161
190144
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
190162
190145
  */
190163
190146
  constructOffsetXY(offsetDistanceOrOptions) {
190164
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
190147
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
190165
190148
  const offsets = [];
190166
190149
  for (const seg of this.collectCurvePrimitives(undefined, true, true)) {
190167
190150
  const offset = seg.constructOffsetXY(options);
@@ -190401,6 +190384,184 @@ class LoopCurveLoopCurve {
190401
190384
  }
190402
190385
 
190403
190386
 
190387
+ /***/ }),
190388
+
190389
+ /***/ "../../core/geometry/lib/esm/curve/OffsetOptions.js":
190390
+ /*!**********************************************************!*\
190391
+ !*** ../../core/geometry/lib/esm/curve/OffsetOptions.js ***!
190392
+ \**********************************************************/
190393
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
190394
+
190395
+ "use strict";
190396
+ __webpack_require__.r(__webpack_exports__);
190397
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
190398
+ /* harmony export */ JointOptions: () => (/* binding */ JointOptions),
190399
+ /* harmony export */ OffsetOptions: () => (/* binding */ OffsetOptions)
190400
+ /* harmony export */ });
190401
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
190402
+ /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
190403
+ /*---------------------------------------------------------------------------------------------
190404
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
190405
+ * See LICENSE.md in the project root for license terms and full copyright notice.
190406
+ *--------------------------------------------------------------------------------------------*/
190407
+ /** @packageDocumentation
190408
+ * @module Curve
190409
+ */
190410
+
190411
+
190412
+ /**
190413
+ * Control parameters for joint construction, used in offset construction methods such as [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].
190414
+ * * Define a "joint" as the common point between adjacent segments of the input curve.
190415
+ * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
190416
+ * the segments at the joint.
190417
+ * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
190418
+ * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
190419
+ * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
190420
+ * single intersection point (to create a sharp corner).
190421
+ * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
190422
+ * * lie outside the arc that would have been created by the first construction
190423
+ * * have uniform turn angle less than `options.maxChamferDegrees`
190424
+ * * touch the arc at their midpoint (except first and last edge).
190425
+ * @public
190426
+ */
190427
+ class JointOptions {
190428
+ /**
190429
+ * Construct JointOptions.
190430
+ * * leftOffsetDistance is required
190431
+ * * minArcDegrees and maxChamferDegrees are optional.
190432
+ */
190433
+ constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
190434
+ /**
190435
+ * Smallest arc to construct.
190436
+ * * If this control angle is 180 degrees or more, arcs are never created.
190437
+ */
190438
+ this.minArcDegrees = 180.0;
190439
+ /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
190440
+ this.maxChamferTurnDegrees = 90;
190441
+ /**
190442
+ * Whether to remove the internal turn angle upper bound for sharp corner construction.
190443
+ * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
190444
+ * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
190445
+ * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
190446
+ * up to `maxChamferTurnDegrees`.
190447
+ * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
190448
+ * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
190449
+ */
190450
+ this.allowSharpestCorners = false;
190451
+ /** Offset distance, positive to left of base curve. */
190452
+ this.leftOffsetDistance = 0;
190453
+ /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
190454
+ this.preserveEllipticalArcs = false;
190455
+ this.leftOffsetDistance = leftOffsetDistance;
190456
+ this.minArcDegrees = minArcDegrees;
190457
+ this.maxChamferTurnDegrees = maxChamferDegrees;
190458
+ this.preserveEllipticalArcs = preserveEllipticalArcs;
190459
+ this.allowSharpestCorners = allowSharpestCorners;
190460
+ }
190461
+ /** Return a deep clone. */
190462
+ clone() {
190463
+ return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
190464
+ }
190465
+ /** Copy values of input options */
190466
+ setFrom(other) {
190467
+ this.leftOffsetDistance = other.leftOffsetDistance;
190468
+ this.minArcDegrees = other.minArcDegrees;
190469
+ this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
190470
+ this.preserveEllipticalArcs = other.preserveEllipticalArcs;
190471
+ this.allowSharpestCorners = other.allowSharpestCorners;
190472
+ }
190473
+ /**
190474
+ * Parse a number or JointOptions up to JointOptions:
190475
+ * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
190476
+ * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
190477
+ * @param leftOffsetDistanceOrOptions
190478
+ */
190479
+ static create(leftOffsetDistanceOrOptions) {
190480
+ if (leftOffsetDistanceOrOptions instanceof JointOptions)
190481
+ return leftOffsetDistanceOrOptions;
190482
+ return new JointOptions(leftOffsetDistanceOrOptions);
190483
+ }
190484
+ /** Return true if the options indicate this amount of turn should be handled with an arc. */
190485
+ needArc(theta) {
190486
+ return Math.abs(theta.degrees) >= this.minArcDegrees;
190487
+ }
190488
+ /** Return the number of corners needed to chamfer the given turn angle. */
190489
+ numChamferPoints(theta) {
190490
+ const degrees = Math.abs(theta.degrees);
190491
+ const minStepDegreesClamp = 10;
190492
+ let maxStepDegreesClamp = 120;
190493
+ if (this.allowSharpestCorners) {
190494
+ maxStepDegreesClamp = this.maxChamferTurnDegrees;
190495
+ }
190496
+ const stepDegrees = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
190497
+ if (degrees <= stepDegrees)
190498
+ return 1;
190499
+ return Math.ceil(degrees / stepDegrees);
190500
+ }
190501
+ }
190502
+ /**
190503
+ * Options for offsetting a curve, used in offset construction methods such as [[CurvePrimitive.constructOffsetXY]], [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].
190504
+ * @public
190505
+ */
190506
+ class OffsetOptions {
190507
+ /** Options that are provided are captured. */
190508
+ constructor(offsetDistanceOrOptions, strokeOptions) {
190509
+ this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
190510
+ this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__.StrokeOptions.createForCurves();
190511
+ }
190512
+ get minArcDegrees() {
190513
+ return this.jointOptions.minArcDegrees;
190514
+ }
190515
+ set minArcDegrees(value) {
190516
+ this.jointOptions.minArcDegrees = value;
190517
+ }
190518
+ get maxChamferTurnDegrees() {
190519
+ return this.jointOptions.maxChamferTurnDegrees;
190520
+ }
190521
+ set maxChamferTurnDegrees(value) {
190522
+ this.jointOptions.maxChamferTurnDegrees = value;
190523
+ }
190524
+ get allowSharpestCorners() {
190525
+ return this.jointOptions.allowSharpestCorners;
190526
+ }
190527
+ set allowSharpestCorners(value) {
190528
+ this.jointOptions.allowSharpestCorners = value;
190529
+ }
190530
+ get leftOffsetDistance() {
190531
+ return this.jointOptions.leftOffsetDistance;
190532
+ }
190533
+ set leftOffsetDistance(value) {
190534
+ this.jointOptions.leftOffsetDistance = value;
190535
+ }
190536
+ get preserveEllipticalArcs() {
190537
+ return this.jointOptions.preserveEllipticalArcs;
190538
+ }
190539
+ set preserveEllipticalArcs(value) {
190540
+ this.jointOptions.preserveEllipticalArcs = value;
190541
+ }
190542
+ /**
190543
+ * Convert variant input into OffsetOptions.
190544
+ * * If a JointOptions is provided, it is captured.
190545
+ * * If an OffsetOptions is provided, a reference to it is returned.
190546
+ */
190547
+ static create(offsetDistanceOrOptions) {
190548
+ if (offsetDistanceOrOptions instanceof OffsetOptions)
190549
+ return offsetDistanceOrOptions;
190550
+ return new OffsetOptions(offsetDistanceOrOptions);
190551
+ }
190552
+ /** Convert variant input into offset distance */
190553
+ static getOffsetDistance(offsetDistanceOrOptions) {
190554
+ if (typeof offsetDistanceOrOptions === "number")
190555
+ return offsetDistanceOrOptions;
190556
+ return offsetDistanceOrOptions.leftOffsetDistance;
190557
+ }
190558
+ /** Return a deep clone. */
190559
+ clone() {
190560
+ return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
190561
+ }
190562
+ }
190563
+
190564
+
190404
190565
  /***/ }),
190405
190566
 
190406
190567
  /***/ "../../core/geometry/lib/esm/curve/ParityRegion.js":
@@ -192546,32 +192707,33 @@ __webpack_require__.r(__webpack_exports__);
192546
192707
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
192547
192708
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
192548
192709
  /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
192549
- /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
192710
+ /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
192550
192711
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
192551
- /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
192552
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
192553
- /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
192554
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
192712
+ /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
192713
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
192714
+ /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
192715
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
192555
192716
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
192556
192717
  /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
192557
192718
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
192558
192719
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
192559
192720
  /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
192560
- /* harmony import */ var _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ChainCollectorContext */ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js");
192561
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
192562
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
192563
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
192721
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
192722
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
192723
+ /* harmony import */ var _CurveOps__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
192724
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
192564
192725
  /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
192565
- /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
192566
- /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
192726
+ /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
192727
+ /* harmony import */ var _internalContexts_ChainCollectorContext__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./internalContexts/ChainCollectorContext */ "../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js");
192567
192728
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
192568
192729
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
192569
192730
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
192731
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
192570
192732
  /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
192571
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
192572
- /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
192573
- /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
192574
- /* harmony import */ var _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Query/InOutTests */ "../../core/geometry/lib/esm/curve/Query/InOutTests.js");
192733
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
192734
+ /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
192735
+ /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
192736
+ /* harmony import */ var _Query_InOutTests__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Query/InOutTests */ "../../core/geometry/lib/esm/curve/Query/InOutTests.js");
192575
192737
  /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
192576
192738
  /* harmony import */ var _RegionMomentsXY__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
192577
192739
  /* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
@@ -192614,6 +192776,7 @@ __webpack_require__.r(__webpack_exports__);
192614
192776
 
192615
192777
 
192616
192778
 
192779
+
192617
192780
 
192618
192781
 
192619
192782
  /**
@@ -192892,8 +193055,6 @@ class RegionOps {
192892
193055
  * the xy-plane.
192893
193056
  * * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not
192894
193057
  * guarantee a simple area offset.
192895
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
192896
- * * See [[JointOptions]] class doc for offset construction rules.
192897
193058
  * @param points a single loop or path
192898
193059
  * @param wrap true to include wraparound
192899
193060
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or JointOptions
@@ -192907,14 +193068,13 @@ class RegionOps {
192907
193068
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
192908
193069
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
192909
193070
  * not detect self intersection among widely separated edges.
192910
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
192911
- * * See [[JointOptions]] class doc for offset construction rules.
192912
193071
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
192913
193072
  * @param curves base curves.
192914
193073
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
192915
193074
  */
192916
193075
  static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
192917
- return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
193076
+ const offsetOptions = _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__.OffsetOptions.create(offsetDistanceOrOptions);
193077
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.constructCurveXYOffset(curves, offsetOptions);
192918
193078
  }
192919
193079
  /**
192920
193080
  * Test if point (x,y) is IN, OUT or ON a region.
@@ -192924,7 +193084,7 @@ class RegionOps {
192924
193084
  * @param y y coordinate of point to test
192925
193085
  */
192926
193086
  static testPointInOnOutRegionXY(curves, x, y) {
192927
- return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
193087
+ return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_20__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
192928
193088
  }
192929
193089
  /**
192930
193090
  * Create curve collection of subtype determined by gaps between the input curves.
@@ -192948,11 +193108,11 @@ class RegionOps {
192948
193108
  maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));
192949
193109
  let collection;
192950
193110
  if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(maxGap)) {
192951
- collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_19__.Path.create();
193111
+ collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_21__.Path.create();
192952
193112
  isPath = true;
192953
193113
  }
192954
193114
  else {
192955
- collection = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.BagOfCurves.create();
193115
+ collection = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.BagOfCurves.create();
192956
193116
  }
192957
193117
  for (const c of curves)
192958
193118
  collection.tryAddChild(c);
@@ -192977,7 +193137,7 @@ class RegionOps {
192977
193137
  * @param cutterCurves input curves to intersect with `curvesToCut`
192978
193138
  */
192979
193139
  static cloneCurvesWithXYSplits(curvesToCut, cutterCurves) {
192980
- return _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__.CurveSplitContext.cloneCurvesWithXYSplits(curvesToCut, cutterCurves);
193140
+ return _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_23__.CurveSplitContext.cloneCurvesWithXYSplits(curvesToCut, cutterCurves);
192981
193141
  }
192982
193142
  /**
192983
193143
  * Create paths assembled from many curves.
@@ -192988,35 +193148,36 @@ class RegionOps {
192988
193148
  static splitToPathsBetweenBreaks(source, makeClones) {
192989
193149
  if (source === undefined)
192990
193150
  return undefined;
192991
- if (source instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive)
193151
+ if (source instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive)
192992
193152
  return source;
192993
193153
  // source is a collection . ..
192994
193154
  const primitives = source.collectCurvePrimitives();
192995
- const chainCollector = new _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__.ChainCollectorContext(makeClones);
193155
+ const chainCollector = new _internalContexts_ChainCollectorContext__WEBPACK_IMPORTED_MODULE_25__.ChainCollectorContext(makeClones);
192996
193156
  for (const primitive of primitives) {
192997
193157
  chainCollector.announceCurvePrimitive(primitive);
192998
193158
  }
192999
193159
  return chainCollector.grabResult();
193000
193160
  }
193001
193161
  /**
193002
- * Restructure curve fragments as chains, and construct (left and right) chain offsets in the xy-plane.
193003
- * * BEWARE that if the input is not a loop, the classification of outputs is suspect.
193004
- * @param fragments fragments to be chained, z-coordinates ignored
193005
- * @param offsetDistance offset distance
193006
- * @param gapTolerance absolute endpoint tolerance for computing chains
193162
+ * Restructure curve fragments as Paths and Loops, and construct xy-offsets of the chains.
193163
+ * * If the inputs do not form Loop(s), the classification of offsets is suspect.
193164
+ * * For best offset results, the inputs should be parallel to the xy-plane.
193165
+ * @param fragments fragments to be chained and offset
193166
+ * @param offsetDistance offset distance, applied to both sides of each fragment to produce inside and outside xy-offset curves.
193167
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
193007
193168
  * @returns object with named chains, insideOffsets, outsideOffsets
193008
193169
  */
193009
193170
  static collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance) {
193010
- return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance);
193171
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.collectInsideAndOutsideXYOffsets(fragments, offsetDistance, gapTolerance);
193011
193172
  }
193012
193173
  /**
193013
- * Restructure curve fragments as chains.
193174
+ * Restructure curve fragments as Paths and Loops.
193014
193175
  * @param fragments fragments to be chained
193015
- * @param gapTolerance absolute endpoint tolerance for computing chains
193016
- * @returns chains, possibly wrapped in BagOfCurves if there multiple chains
193176
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
193177
+ * @returns chains, possibly wrapped in a [[BagOfCurves]].
193017
193178
  */
193018
193179
  static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
193019
- return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectChains(fragments, gapTolerance);
193180
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.collectChains(fragments, gapTolerance);
193020
193181
  }
193021
193182
  /**
193022
193183
  * Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments
@@ -193028,17 +193189,17 @@ class RegionOps {
193028
193189
  const result = { insideParts: [], outsideParts: [], coincidentParts: [] };
193029
193190
  const pathWithIntersectionMarkup = RegionOps.cloneCurvesWithXYSplits(curvesToCut, region);
193030
193191
  const splitPaths = RegionOps.splitToPathsBetweenBreaks(pathWithIntersectionMarkup, true);
193031
- if (splitPaths instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection) {
193192
+ if (splitPaths instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection) {
193032
193193
  for (const child of splitPaths.children) {
193033
- const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(child);
193194
+ const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(child);
193034
193195
  if (pointOnChild) {
193035
193196
  const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);
193036
193197
  pushToInOnOutArrays(child, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);
193037
193198
  }
193038
193199
  }
193039
193200
  }
193040
- else if (splitPaths instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive) {
193041
- const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(splitPaths);
193201
+ else if (splitPaths instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive) {
193202
+ const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(splitPaths);
193042
193203
  if (pointOnChild) {
193043
193204
  const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);
193044
193205
  pushToInOnOutArrays(splitPaths, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);
@@ -193080,7 +193241,7 @@ class RegionOps {
193080
193241
  }
193081
193242
  else {
193082
193243
  dataToUse = _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray.create(data);
193083
- _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
193244
+ _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_26__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
193084
193245
  if (dataToUse.length < (requireClosurePoint ? 5 : 4))
193085
193246
  return undefined;
193086
193247
  }
@@ -193091,19 +193252,19 @@ class RegionOps {
193091
193252
  if (normalVector.normalizeInPlace()
193092
193253
  && vector12.isAlmostEqual(vector03)
193093
193254
  && vector01.isPerpendicularTo(vector03)) {
193094
- return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__.Transform.createOriginAndMatrixColumns(dataToUse.getPoint3dAtUncheckedPointIndex(0), vector01, vector03, normalVector);
193255
+ return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_27__.Transform.createOriginAndMatrixColumns(dataToUse.getPoint3dAtUncheckedPointIndex(0), vector01, vector03, normalVector);
193095
193256
  }
193096
193257
  }
193097
193258
  else if (Array.isArray(data)) {
193098
- return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayCarrier(data), requireClosurePoint);
193259
+ return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_28__.Point3dArrayCarrier(data), requireClosurePoint);
193099
193260
  }
193100
193261
  else if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
193101
193262
  return this.rectangleEdgeTransform(data.children[0].packedPoints, true);
193102
193263
  }
193103
- else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_19__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
193264
+ else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_21__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
193104
193265
  return this.rectangleEdgeTransform(data.children[0].packedPoints, requireClosurePoint);
193105
193266
  }
193106
- else if (data instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveChain) {
193267
+ else if (data instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveChain) {
193107
193268
  if (!data.checkForNonLinearPrimitives()) {
193108
193269
  // const linestring = LineString3d.create();
193109
193270
  const strokes = data.getPackedStrokes();
@@ -193127,7 +193288,7 @@ class RegionOps {
193127
193288
  * @param options options for tolerance and selective simplification.
193128
193289
  */
193129
193290
  static consolidateAdjacentPrimitives(curves, options) {
193130
- const context = new _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__.ConsolidateAdjacentCurvePrimitivesContext(options);
193291
+ const context = new _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_29__.ConsolidateAdjacentCurvePrimitivesContext(options);
193131
193292
  curves.dispatchToGeometryHandler(context);
193132
193293
  }
193133
193294
  /**
@@ -193146,13 +193307,13 @@ class RegionOps {
193146
193307
  const loopAndArea = [];
193147
193308
  for (const candidate of loops) {
193148
193309
  if (candidate instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop)
193149
- _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, candidate);
193310
+ _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.pushLoop(loopAndArea, candidate);
193150
193311
  else if (candidate instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
193151
193312
  const loop = _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(candidate);
193152
- _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, loop);
193313
+ _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.pushLoop(loopAndArea, loop);
193153
193314
  }
193154
193315
  }
193155
- return _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.sortAsAnyRegion(loopAndArea);
193316
+ return _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.sortAsAnyRegion(loopAndArea);
193156
193317
  }
193157
193318
  /**
193158
193319
  * Find all areas bounded by the unstructured, possibly intersecting curves.
@@ -193177,7 +193338,7 @@ class RegionOps {
193177
193338
  const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
193178
193339
  const range = this.curveArrayRange(primitives);
193179
193340
  const areaTol = this.computeXYAreaTolerance(range, tolerance);
193180
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_30__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
193341
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_31__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
193181
193342
  const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.assembleHalfEdgeGraph(primitives, intersections, tolerance);
193182
193343
  return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);
193183
193344
  }
@@ -193194,10 +193355,10 @@ class RegionOps {
193194
193355
  */
193195
193356
  static collectCurvePrimitives(candidates, collectorArray, smallestPossiblePrimitives = false, explodeLinestrings = false) {
193196
193357
  const results = collectorArray === undefined ? [] : collectorArray;
193197
- if (candidates instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive) {
193358
+ if (candidates instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive) {
193198
193359
  candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);
193199
193360
  }
193200
- else if (candidates instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection) {
193361
+ else if (candidates instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection) {
193201
193362
  candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);
193202
193363
  }
193203
193364
  else if (Array.isArray(candidates)) {
@@ -193235,12 +193396,12 @@ class RegionOps {
193235
193396
  * @param worldToLocal transform to apply to data before computing its range
193236
193397
  */
193237
193398
  static curveArrayRange(data, worldToLocal) {
193238
- const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__.Range3d.create();
193239
- if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
193399
+ const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_32__.Range3d.create();
193400
+ if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__.GeometryQuery)
193240
193401
  data.extendRange(range, worldToLocal);
193241
193402
  else if (Array.isArray(data)) {
193242
193403
  for (const c of data) {
193243
- if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
193404
+ if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__.GeometryQuery)
193244
193405
  c.extendRange(range, worldToLocal);
193245
193406
  else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__.Point3d)
193246
193407
  range.extendPoint(c, worldToLocal);
@@ -193547,7 +193708,7 @@ class RegionOpsFaceToFaceSearch {
193547
193708
  const baseMask = _topology_Graph__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeMask.BOUNDARY_EDGE | _topology_Graph__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeMask.PRIMARY_EDGE;
193548
193709
  const callbacks = RegionBooleanContext.create(opA, opB);
193549
193710
  callbacks.graph = graph;
193550
- callbacks.faceAreaFunction = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea;
193711
+ callbacks.faceAreaFunction = (node) => _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea(node);
193551
193712
  // Add all the members in groupA ..
193552
193713
  for (const data of dataA) {
193553
193714
  if (data.length > 2) {
@@ -193992,7 +194153,7 @@ class GraphComponent {
193992
194153
  }
193993
194154
  this.faceAreas.length = 0;
193994
194155
  if (!faceAreaFunction)
193995
- faceAreaFunction = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea;
194156
+ faceAreaFunction = (node) => _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea(node);
193996
194157
  for (const f of this.faces) {
193997
194158
  this.faceAreas.push(faceAreaFunction(f));
193998
194159
  }
@@ -194490,6 +194651,199 @@ class AppendPlaneIntersectionStrokeHandler extends _NewtonRtoRStrokeHandler__WEB
194490
194651
  }
194491
194652
 
194492
194653
 
194654
+ /***/ }),
194655
+
194656
+ /***/ "../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js":
194657
+ /*!***********************************************************************************!*\
194658
+ !*** ../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js ***!
194659
+ \***********************************************************************************/
194660
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
194661
+
194662
+ "use strict";
194663
+ __webpack_require__.r(__webpack_exports__);
194664
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
194665
+ /* harmony export */ ChainCollectorContext: () => (/* binding */ ChainCollectorContext)
194666
+ /* harmony export */ });
194667
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
194668
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
194669
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
194670
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
194671
+ /*---------------------------------------------------------------------------------------------
194672
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
194673
+ * See LICENSE.md in the project root for license terms and full copyright notice.
194674
+ *--------------------------------------------------------------------------------------------*/
194675
+
194676
+
194677
+
194678
+
194679
+ /**
194680
+ * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
194681
+ * * The caller makes a sequence of calls to announce individual primitives.
194682
+ * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`
194683
+ * * (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.
194684
+ * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.
194685
+ * * (b) "mixed" primitives -- primitive order is NOT significant for chain assembly.
194686
+ * * 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.
194687
+ * * The per-curve announcement is
194688
+ * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
194689
+ * * When all curves have been announced, the call to grab the paths option
194690
+ * * formLoopsIfClosed
194691
+ * * If true, convert closed paths to `Loop`, open paths to `Path`
194692
+ * * If false, convert all paths (open or not) to `Path`
194693
+ * * Usage pattern is
194694
+ * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
194695
+ * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`
194696
+ * * end: ` result = context.grabResults (formLoopsIfClosed)`
194697
+ * @internal
194698
+ */
194699
+ class ChainCollectorContext {
194700
+ /**
194701
+ * Push a new chain with an optional first primitive.
194702
+ */
194703
+ pushNewChain(primitive) {
194704
+ const chain = [];
194705
+ if (primitive)
194706
+ chain.push(primitive);
194707
+ this._chains.push(chain);
194708
+ }
194709
+ findOrCreateTailChain() {
194710
+ if (this._chains.length === 0)
194711
+ this.pushNewChain();
194712
+ return this._chains[this._chains.length - 1];
194713
+ }
194714
+ findAnyChainToConnect(xyz) {
194715
+ for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
194716
+ const path = this._chains[chainIndexA];
194717
+ this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);
194718
+ if (this._xyzWork1.isAlmostEqual(xyz))
194719
+ return { chainIndex: chainIndexA, atEnd: true };
194720
+ this._xyzWork1 = path[0].startPoint(this._xyzWork1);
194721
+ if (this._xyzWork1.isAlmostEqual(xyz))
194722
+ return { chainIndex: chainIndexA, atEnd: false };
194723
+ }
194724
+ return undefined;
194725
+ }
194726
+ /** Initialize with an empty array of chains.
194727
+ * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.
194728
+ */
194729
+ constructor(makeClones) {
194730
+ this._chains = [];
194731
+ this._makeClones = makeClones;
194732
+ }
194733
+ /** Announce a curve primitive
194734
+ * * searchAllChains controls the extent of search for connecting points.
194735
+ * * false ==> only consider connection to most recent chain.
194736
+ * * true ==> search for any connection, reversing direction as needed.
194737
+ * * Otherwise start a new chain.
194738
+ */
194739
+ announceCurvePrimitive(candidate, searchAllChains = false) {
194740
+ if (candidate) {
194741
+ if (this._makeClones) {
194742
+ const candidate1 = candidate.clone();
194743
+ if (!candidate1 || !(candidate1 instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive))
194744
+ return;
194745
+ this.transferMarkup(candidate, candidate1);
194746
+ candidate = candidate1;
194747
+ }
194748
+ if (!searchAllChains) {
194749
+ const activeChain = this.findOrCreateTailChain();
194750
+ if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))
194751
+ activeChain.push(candidate);
194752
+ else
194753
+ this.pushNewChain(candidate);
194754
+ }
194755
+ else {
194756
+ this._xyzWork0 = candidate.startPoint(this._xyzWork0);
194757
+ let connect = this.findAnyChainToConnect(this._xyzWork0);
194758
+ if (connect) {
194759
+ if (connect.atEnd) {
194760
+ this._chains[connect.chainIndex].push(candidate);
194761
+ }
194762
+ else {
194763
+ candidate.reverseInPlace();
194764
+ this._chains[connect.chainIndex].splice(0, 0, candidate);
194765
+ }
194766
+ }
194767
+ else {
194768
+ this._xyzWork0 = candidate.endPoint(this._xyzWork0);
194769
+ connect = this.findAnyChainToConnect(this._xyzWork0);
194770
+ if (connect) { // START of new primitive ..
194771
+ if (connect.atEnd) {
194772
+ candidate.reverseInPlace();
194773
+ this._chains[connect.chainIndex].push(candidate);
194774
+ }
194775
+ else {
194776
+ this._chains[connect.chainIndex].splice(0, 0, candidate);
194777
+ }
194778
+ }
194779
+ else {
194780
+ this._chains.push([candidate]);
194781
+ }
194782
+ }
194783
+ }
194784
+ }
194785
+ }
194786
+ /** Transfer markup (e.g. startCut, endCut) from source to destination */
194787
+ transferMarkup(source, dest) {
194788
+ if (source && dest) {
194789
+ dest.startCut = source.startCut;
194790
+ dest.endCut = source.endCut;
194791
+ }
194792
+ }
194793
+ /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
194794
+ * * The input array is assumed to be connected appropriately to act as the curves of a Path.
194795
+ * * When a path is created the curves array is CAPTURED.
194796
+ */
194797
+ promoteArrayToCurves(curves, makeLoopIfClosed) {
194798
+ if (curves.length === 0)
194799
+ return undefined;
194800
+ if (makeLoopIfClosed) {
194801
+ ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);
194802
+ ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);
194803
+ if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))
194804
+ return _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop.createArray(curves);
194805
+ }
194806
+ if (curves.length === 1)
194807
+ return curves[0];
194808
+ return _Path__WEBPACK_IMPORTED_MODULE_2__.Path.createArray(curves);
194809
+ }
194810
+ /** Return the collected results, structured as the simplest possible type. */
194811
+ grabResult(makeLoopIfClosed = false) {
194812
+ const chains = this._chains;
194813
+ if (chains.length === 0)
194814
+ return undefined;
194815
+ if (chains.length === 1)
194816
+ return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
194817
+ const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.BagOfCurves.create();
194818
+ for (const chain of chains) {
194819
+ const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
194820
+ bag.tryAddChild(q);
194821
+ }
194822
+ return bag;
194823
+ }
194824
+ /** test if there is a break between primitiveA and primitiveB, due to any condition such as
194825
+ * * primitiveA.endCut
194826
+ * * primitiveB.startCut
194827
+ * * physical gap between primitives.
194828
+ */
194829
+ static needBreakBetweenPrimitives(primitiveA, primitiveB, isXYOnly = false) {
194830
+ if (primitiveA === undefined)
194831
+ return true;
194832
+ if (primitiveB === undefined)
194833
+ return true;
194834
+ if (primitiveA.endCut !== undefined)
194835
+ return true;
194836
+ if (primitiveB.startCut !== undefined)
194837
+ return true;
194838
+ ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);
194839
+ ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);
194840
+ return isXYOnly
194841
+ ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)
194842
+ : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);
194843
+ }
194844
+ }
194845
+
194846
+
194493
194847
  /***/ }),
194494
194848
 
194495
194849
  /***/ "../../core/geometry/lib/esm/curve/internalContexts/CloneCurvesContext.js":
@@ -195090,22 +195444,19 @@ class GapSearchContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.Recu
195090
195444
  "use strict";
195091
195445
  __webpack_require__.r(__webpack_exports__);
195092
195446
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
195093
- /* harmony export */ MultiChainCollector: () => (/* binding */ MultiChainCollector),
195094
- /* harmony export */ OffsetHelpers: () => (/* binding */ OffsetHelpers)
195447
+ /* harmony export */ MultiChainCollector: () => (/* binding */ MultiChainCollector)
195095
195448
  /* harmony export */ });
195096
- /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195097
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195098
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195099
- /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
195100
- /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195101
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195102
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
195103
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
195104
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
195105
195449
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195106
- /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195107
- /* harmony import */ var _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
195108
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
195450
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
195451
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195452
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195453
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195454
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195455
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195456
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195457
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
195458
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
195459
+ /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
195109
195460
  /*---------------------------------------------------------------------------------------------
195110
195461
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195111
195462
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -195124,38 +195475,36 @@ __webpack_require__.r(__webpack_exports__);
195124
195475
 
195125
195476
 
195126
195477
 
195127
-
195128
-
195129
195478
  /**
195130
195479
  * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
195131
195480
  * * The caller makes a sequence of calls to announce individual primitives.
195132
- * * This collector (unlike the simpler "ChainCollector") expects to have inputs arriving in random order, leaving multiple open chains in play at any time.
195133
- * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
195134
- * * When all curves have been announced, the call to grab the paths option restructures the various active chains into Path and Loop objects.
195481
+ * * This collector (unlike the simpler [[ChainCollectorContext]]) expects to have inputs arriving in random order, leaving multiple open chains in play at any time.
195482
+ * * When all curves have been announced, the call to `grabResults` restructures the various active chains into Paths (and optionally, Loops).
195483
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
195135
195484
  * * Usage pattern is
195136
- * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
195137
- * * many times
195138
- * * ` context.captureCurve (anyCurve, searchAllPaths)`
195139
- * * ` context.captureCurvePrimitive (primitive, searchAllPaths)`
195140
- * * end: ` result = context.grabResult (formLoopsIfClosed)`
195485
+ * * initialization: `context = new MultiChainCollector(gapTol, planeTol)`
195486
+ * * many times:
195487
+ * * `context.captureCurve(anyCurve)`
195488
+ * * `context.captureCurvePrimitive(primitive)`
195489
+ * * end: `result = context.grabResult(makeLoopIfClosed)`
195141
195490
  * @internal
195142
195491
  */
195143
195492
  class MultiChainCollector {
195144
195493
  /** Initialize with an empty array of chains.
195145
- * @param endPointShiftTolerance tolerance for calling endpoints identical
195146
- * @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.
195494
+ * @param gapTolerance tolerance for calling endpoints identical
195495
+ * @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.
195147
195496
  */
195148
- constructor(endPointShiftTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
195497
+ constructor(gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
195149
195498
  this._chains = [];
195150
- this._endPointShiftTolerance = endPointShiftTolerance;
195151
- this._endPointHitTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
195152
- this._planarityTolerance = planeTolerance;
195499
+ this._gapTolerance = gapTolerance;
195500
+ this._snapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
195501
+ this._planeTolerance = planeTolerance;
195153
195502
  }
195154
195503
  /**
195155
195504
  * Find a chain (with index _other than_ exceptChainIndex) that starts or ends at xyz
195156
- * @param xyz
195157
- * @param tolerance
195158
- * @param exceptChainIndex index of chain to ignore. Send -1 to consider all chains.
195505
+ * @param xyz endpoint to check
195506
+ * @param tolerance absolute distance tolerance for equating endpoints
195507
+ * @param exceptChainIndex index of chain to ignore. Send -1 to consider all chains.
195159
195508
  */
195160
195509
  findAnyChainToConnect(xyz, tolerance, exceptChainIndex = -1) {
195161
195510
  for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
@@ -195175,31 +195524,91 @@ class MultiChainCollector {
195175
195524
  * Insert a single curve primitive into the active chains.
195176
195525
  * * The primitive is captured (not cloned)
195177
195526
  * * The primitive may be reversed in place
195178
- * @param candidate
195527
+ * @param candidate curve to add to the context
195179
195528
  */
195180
195529
  captureCurvePrimitive(candidate) {
195181
- if (this.attachPrimitiveToAnyChain(candidate, this._endPointHitTolerance))
195182
- return;
195183
- if (this.attachPrimitiveToAnyChain(candidate, this._endPointShiftTolerance))
195530
+ if (this._snapTolerance < this._gapTolerance) {
195531
+ if (this.attachPrimitiveToAnyChain(candidate, this._snapTolerance))
195532
+ return;
195533
+ }
195534
+ if (this.attachPrimitiveToAnyChain(candidate, this._gapTolerance))
195184
195535
  return;
195185
195536
  this._chains.push([candidate]);
195186
- return;
195187
195537
  }
195188
195538
  /**
195189
195539
  * Insert any curve into the collection.
195190
195540
  * * This recurses into Path, Loop, BagOfCurves etc
195191
- * * The all primitives are captured, and may be reversed in place.
195192
- * @param candidate
195541
+ * * All primitives are captured, and may be reversed in place.
195542
+ * @param candidate curve to add to the context
195193
195543
  */
195194
195544
  captureCurve(candidate) {
195195
- if (candidate instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
195545
+ if (candidate instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
195196
195546
  this.captureCurvePrimitive(candidate);
195197
- else if (candidate instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
195547
+ else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
195198
195548
  for (const c of candidate.children) {
195199
195549
  this.captureCurve(c);
195200
195550
  }
195201
195551
  }
195202
195552
  }
195553
+ /** If allowed by the geometry type, move an endpoint. */
195554
+ static simpleEndPointMove(curve, atEnd, to) {
195555
+ if (curve instanceof (_LineSegment3d__WEBPACK_IMPORTED_MODULE_3__.LineSegment3d)) {
195556
+ if (atEnd) {
195557
+ curve.point1Ref.setFrom(to);
195558
+ }
195559
+ else {
195560
+ curve.point0Ref.setFrom(to);
195561
+ }
195562
+ return true;
195563
+ }
195564
+ else if (curve instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d && curve.numPoints() > 0) {
195565
+ const i = atEnd ? curve.numPoints() - 1 : 0;
195566
+ curve.packedPoints.setAtCheckedPointIndex(i, to);
195567
+ return true;
195568
+ }
195569
+ return false;
195570
+ }
195571
+ /**
195572
+ * Try to move the end of curve0 and/or the start of curve1 to a common point.
195573
+ * * All z-coordinates are ignored.
195574
+ * @param curve0 first curve, assumed to end close to the start of curve1
195575
+ * @param curve1 second curve, assumed to start close to the end of curve0
195576
+ * @param gapTolerance max distance to move a curve start/end point
195577
+ * @returns whether curve start/end point(s) moved
195578
+ */
195579
+ static moveHeadOrTail(curve0, curve1, gapTolerance) {
195580
+ const xyz0 = curve0.endPoint();
195581
+ const xyz1 = curve1.startPoint();
195582
+ const minShift = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance * 0.001;
195583
+ const d01 = xyz0.distanceXY(xyz1);
195584
+ if (d01 < minShift)
195585
+ return false;
195586
+ // try lines and linestrings
195587
+ if (d01 < gapTolerance) {
195588
+ if (this.simpleEndPointMove(curve1, false, xyz0) || this.simpleEndPointMove(curve0, true, xyz1))
195589
+ return true;
195590
+ }
195591
+ // try other primitive types
195592
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_5__.CurveCurve.intersectionXYPairs(curve0, true, curve1, true);
195593
+ const shiftFactor = 5.0;
195594
+ for (const pair of intersections) {
195595
+ const detail0 = pair.detailA;
195596
+ const detail1 = pair.detailB;
195597
+ const distance0 = detail0.point.distanceXY(xyz0);
195598
+ const distance1 = detail1.point.distanceXY(xyz1);
195599
+ if (distance0 < shiftFactor * gapTolerance && distance1 < shiftFactor * gapTolerance) {
195600
+ if (curve0 instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d && curve1 instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d) {
195601
+ const radians0End = curve0.sweep.fractionToRadians(detail0.fraction);
195602
+ curve0.sweep.setStartEndRadians(curve0.sweep.startRadians, radians0End);
195603
+ const radians1Start = curve1.sweep.fractionToRadians(detail1.fraction);
195604
+ curve1.sweep.setStartEndRadians(radians1Start, curve1.sweep.endRadians);
195605
+ return true;
195606
+ }
195607
+ // TODO: other combinations of types
195608
+ }
195609
+ }
195610
+ return false;
195611
+ }
195203
195612
  /** Announce a curve primitive
195204
195613
  * * If a "nearby" connection is possible, insert the candidate in the chain and force endpoint match.
195205
195614
  * * Otherwise start a new chain.
@@ -195213,7 +195622,7 @@ class MultiChainCollector {
195213
195622
  const chain = this._chains[connect.chainIndex];
195214
195623
  const index0 = chain.length - 1;
195215
195624
  this._chains[connect.chainIndex].push(candidate);
195216
- OffsetHelpers.moveHeadOrTail(chain[index0], chain[index0 + 1], this._endPointShiftTolerance);
195625
+ MultiChainCollector.moveHeadOrTail(chain[index0], chain[index0 + 1], this._gapTolerance);
195217
195626
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195218
195627
  return true;
195219
195628
  }
@@ -195221,7 +195630,7 @@ class MultiChainCollector {
195221
195630
  candidate.reverseInPlace();
195222
195631
  const chain = this._chains[connect.chainIndex];
195223
195632
  chain.splice(0, 0, candidate);
195224
- OffsetHelpers.moveHeadOrTail(chain[0], chain[1], this._endPointShiftTolerance);
195633
+ MultiChainCollector.moveHeadOrTail(chain[0], chain[1], this._gapTolerance);
195225
195634
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195226
195635
  return true;
195227
195636
  }
@@ -195229,20 +195638,20 @@ class MultiChainCollector {
195229
195638
  else {
195230
195639
  this._xyzWork0 = candidate.endPoint(this._xyzWork0);
195231
195640
  connect = this.findAnyChainToConnect(this._xyzWork0, tolerance);
195232
- if (connect) { // START of new primitive ..
195641
+ if (connect) {
195233
195642
  if (connect.atEnd) {
195234
195643
  candidate.reverseInPlace();
195235
195644
  const chain = this._chains[connect.chainIndex];
195236
195645
  const index0 = chain.length - 1;
195237
195646
  this._chains[connect.chainIndex].push(candidate);
195238
- OffsetHelpers.moveHeadOrTail(chain[index0], chain[index0 + 1], this._endPointShiftTolerance);
195647
+ MultiChainCollector.moveHeadOrTail(chain[index0], chain[index0 + 1], this._gapTolerance);
195239
195648
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195240
195649
  return true;
195241
195650
  }
195242
195651
  else {
195243
195652
  const chain = this._chains[connect.chainIndex];
195244
195653
  chain.splice(0, 0, candidate);
195245
- OffsetHelpers.moveHeadOrTail(chain[0], chain[1], this._endPointShiftTolerance);
195654
+ MultiChainCollector.moveHeadOrTail(chain[0], chain[1], this._gapTolerance);
195246
195655
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195247
195656
  return true;
195248
195657
  }
@@ -195252,10 +195661,13 @@ class MultiChainCollector {
195252
195661
  return false;
195253
195662
  }
195254
195663
  /**
195255
- * * Move each primitive from chainB to the end of chainA.
195256
- * * clear chainB.
195257
- * * move the final chain to chainB index.
195258
- * * reduce the _chain.length by 1.
195664
+ * Merge two entries in the chain array.
195665
+ * * Move each primitive from chainB to the end of chainA.
195666
+ * * Clear chainB.
195667
+ * * Move the final chain to chainB index.
195668
+ * * Decrement the array length.
195669
+ * @param chainIndexA index of chainA
195670
+ * @param chainIndexB index of chainB
195259
195671
  */
195260
195672
  mergeChainsForwardForward(chainIndexA, chainIndexB) {
195261
195673
  const chainA = this._chains[chainIndexA];
@@ -195263,30 +195675,26 @@ class MultiChainCollector {
195263
195675
  for (const p of chainB) {
195264
195676
  chainA.push(p);
195265
195677
  }
195266
- // chainIndexB is unused.
195267
- chainB.length = 0;
195678
+ chainB.length = 0; // chainIndexB is unused
195268
195679
  const lastChainIndex = this._chains.length - 1;
195269
- if (chainIndexB !== lastChainIndex) {
195680
+ if (chainIndexB !== lastChainIndex)
195270
195681
  this._chains[chainIndexB] = this._chains[lastChainIndex];
195271
- this._chains.pop();
195272
- }
195273
- else {
195274
- this._chains.pop();
195275
- }
195682
+ this._chains.pop();
195276
195683
  }
195684
+ /** Reverse the curve chain in place. */
195277
195685
  reverseChain(chainIndex) {
195278
195686
  const chain = this._chains[chainIndex];
195279
195687
  chain.reverse();
195280
195688
  for (const p of chain)
195281
195689
  p.reverseInPlace();
195282
195690
  }
195283
- // see if the head or tail of chainIndex matches any existing chain. If so, merge
195691
+ /** See if the head or tail of chainIndex matches any existing chain. If so, merge the two chains. */
195284
195692
  searchAndMergeChainIndex(chainIndex, tolerance) {
195285
195693
  // ASSUME valid index of non-empty chain
195286
195694
  const chain = this._chains[chainIndex];
195287
195695
  const lastIndexInChain = chain.length - 1;
195288
195696
  this._xyzWork0 = chain[0].startPoint(this._xyzWork0);
195289
- // this start with any other chain ..
195697
+ // try start with any other chain
195290
195698
  let connect = this.findAnyChainToConnect(this._xyzWork0, tolerance, chainIndex);
195291
195699
  if (connect) {
195292
195700
  if (!connect.atEnd)
@@ -195304,9 +195712,11 @@ class MultiChainCollector {
195304
195712
  return;
195305
195713
  }
195306
195714
  }
195307
- /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
195308
- * * The input array is assumed to be connected appropriately to act as the curves of a Path.
195309
- * * When a path is created the curves array is CAPTURED.
195715
+ /**
195716
+ * Convert an array of curve primitives into the simplest possible strongly typed curve structure.
195717
+ * @param curves input array, assembled correctly into a single contiguous path, captured by returned object
195718
+ * @param makeLoopIfClosed whether to return a Loop from physically closed curves array, otherwise Path
195719
+ * @return Loop or Path if multiple curves; the primitive if only one curve; undefined if no curves
195310
195720
  */
195311
195721
  promoteArrayToCurves(curves, makeLoopIfClosed) {
195312
195722
  if (curves.length === 0)
@@ -195316,39 +195726,37 @@ class MultiChainCollector {
195316
195726
  const primitiveN = curves[curves.length - 1];
195317
195727
  MultiChainCollector._staticPointA = primitive0.startPoint(MultiChainCollector._staticPointA);
195318
195728
  MultiChainCollector._staticPointB = primitiveN.endPoint(MultiChainCollector._staticPointB);
195319
- const distanceAToB = MultiChainCollector._staticPointA.distance(MultiChainCollector._staticPointB);
195320
- if (distanceAToB < this._endPointShiftTolerance) {
195321
- // adjust for closure (and get the corrected coordinates)
195322
- OffsetHelpers.moveHeadOrTail(primitiveN, primitive0, this._endPointShiftTolerance);
195729
+ if (MultiChainCollector.moveHeadOrTail(primitiveN, primitive0, this._gapTolerance)) {
195730
+ // get the corrected coordinates
195323
195731
  MultiChainCollector._staticPointA = primitive0.startPoint(MultiChainCollector._staticPointA);
195324
195732
  MultiChainCollector._staticPointB = primitiveN.endPoint(MultiChainCollector._staticPointB);
195325
195733
  }
195326
- if (MultiChainCollector._staticPointA.isAlmostEqual(MultiChainCollector._staticPointB)) {
195327
- const localToWorld = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_3__.FrameBuilder.createRightHandedLocalToWorld(curves);
195734
+ if (MultiChainCollector._staticPointA.isAlmostEqual(MultiChainCollector._staticPointB, this._gapTolerance)) {
195735
+ const localToWorld = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_7__.FrameBuilder.createRightHandedLocalToWorld(curves);
195328
195736
  if (localToWorld) {
195329
195737
  const worldToLocal = localToWorld.inverse();
195330
195738
  if (worldToLocal) {
195331
- const range = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_4__.RegionOps.curveArrayRange(curves, worldToLocal);
195332
- if (this._planarityTolerance !== undefined && range.zLength() <= this._planarityTolerance) {
195333
- return _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createArray(curves);
195739
+ const range = _RegionOps__WEBPACK_IMPORTED_MODULE_8__.RegionOps.curveArrayRange(curves, worldToLocal);
195740
+ if (this._planeTolerance !== undefined && range.zLength() <= this._planeTolerance) {
195741
+ return _Loop__WEBPACK_IMPORTED_MODULE_9__.Loop.createArray(curves);
195334
195742
  }
195335
195743
  }
195336
195744
  }
195337
- return _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.createArray(curves);
195745
+ return _Path__WEBPACK_IMPORTED_MODULE_10__.Path.createArray(curves);
195338
195746
  }
195339
195747
  }
195340
195748
  if (curves.length === 1)
195341
195749
  return curves[0];
195342
- return _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.createArray(curves);
195750
+ return _Path__WEBPACK_IMPORTED_MODULE_10__.Path.createArray(curves);
195343
195751
  }
195344
- chainToLineString3d(curves) {
195345
- if (curves.length === 0)
195752
+ /** Stroke the curve chain to a line string, de-duplicate the points. */
195753
+ chainToLineString3d(chain, options) {
195754
+ if (chain.length === 0)
195346
195755
  return undefined;
195347
- const linestring = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.create();
195348
- for (const curve of curves) {
195349
- curve.emitStrokes(linestring);
195350
- linestring.removeDuplicatePoints();
195351
- }
195756
+ const linestring = _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d.create();
195757
+ for (const curve of chain)
195758
+ curve.emitStrokes(linestring, options);
195759
+ linestring.removeDuplicatePoints(this._gapTolerance);
195352
195760
  return linestring;
195353
195761
  }
195354
195762
  /** Return the collected results, structured as the simplest possible type. */
@@ -195358,7 +195766,7 @@ class MultiChainCollector {
195358
195766
  return undefined;
195359
195767
  if (chains.length === 1)
195360
195768
  return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
195361
- const bag = _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves.create();
195769
+ const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves.create();
195362
195770
  for (const chain of chains) {
195363
195771
  const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
195364
195772
  bag.tryAddChild(q);
@@ -195366,171 +195774,22 @@ class MultiChainCollector {
195366
195774
  return bag;
195367
195775
  }
195368
195776
  /** Return chains as individual calls to announceChain. */
195369
- announceChainsAsLineString3d(announceChain) {
195777
+ announceChainsAsLineString3d(announceChain, options) {
195370
195778
  const chains = this._chains;
195371
195779
  if (chains.length === 1) {
195372
- const ls = this.chainToLineString3d(chains[0]);
195780
+ const ls = this.chainToLineString3d(chains[0], options);
195373
195781
  if (ls)
195374
195782
  announceChain(ls);
195375
195783
  }
195376
195784
  else if (chains.length > 1) {
195377
195785
  for (const chain of chains) {
195378
- const ls = this.chainToLineString3d(chain);
195786
+ const ls = this.chainToLineString3d(chain, options);
195379
195787
  if (ls)
195380
195788
  announceChain(ls);
195381
195789
  }
195382
195790
  }
195383
195791
  }
195384
195792
  }
195385
- /**
195386
- * Static methods to assist offset sequences.
195387
- * @internal
195388
- */
195389
- class OffsetHelpers {
195390
- // recursively sum lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level.
195391
- static sumLengths(data) {
195392
- let mySum = 0;
195393
- if (data instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive) {
195394
- mySum += data.curveLength();
195395
- }
195396
- else if (data instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection) {
195397
- mySum += data.sumLengths();
195398
- }
195399
- else if (Array.isArray(data)) {
195400
- for (const data1 of data)
195401
- mySum += this.sumLengths(data1);
195402
- }
195403
- return mySum;
195404
- }
195405
- // recursively sum lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level.
195406
- static extendRange(range, data) {
195407
- if (data instanceof _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_8__.GeometryQuery) {
195408
- data.extendRange(range);
195409
- }
195410
- else if (Array.isArray(data)) {
195411
- for (const data1 of data)
195412
- this.extendRange(range, data1);
195413
- }
195414
- return range;
195415
- }
195416
- // construct (separately) the offsets of each entry of data (Path, Loop, BagOfCurve, or Array of those)
195417
- // push all offset geometry into the result array
195418
- // return summed length
195419
- static appendOffsets(data, offset, result) {
195420
- let summedLengths = 0;
195421
- if (data instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive) {
195422
- const resultA = _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.CurveChainWireOffsetContext.constructCurveXYOffset(_curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.create(data), offset);
195423
- if (resultA) {
195424
- summedLengths += this.sumLengths(resultA);
195425
- result.push(resultA);
195426
- }
195427
- }
195428
- else if (data instanceof _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop || data instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path) {
195429
- const resultA = _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.CurveChainWireOffsetContext.constructCurveXYOffset(data, offset);
195430
- if (resultA) {
195431
- summedLengths += this.sumLengths(resultA);
195432
- result.push(resultA);
195433
- }
195434
- }
195435
- else if (data instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves) {
195436
- for (const q of data.children)
195437
- summedLengths += this.appendOffsets(q, offset, result);
195438
- }
195439
- else if (Array.isArray(data)) {
195440
- for (const q of data)
195441
- summedLengths += this.appendOffsets(q, offset, result);
195442
- }
195443
- return summedLengths;
195444
- }
195445
- /**
195446
- * * Restructure curve fragments as chains and offsets
195447
- * * Return object with named chains, insideOffsets, outsideOffsets
195448
- * * BEWARE that if the input is not a loop the classification of outputs is suspect.
195449
- * @param fragments fragments to be chained
195450
- * @param offsetDistance offset distance.
195451
- */
195452
- static collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance) {
195453
- const collector = new MultiChainCollector(gapTolerance);
195454
- for (const s of fragments) {
195455
- collector.captureCurve(s);
195456
- }
195457
- const myChains = collector.grabResult(true);
195458
- const myOffsetA = [];
195459
- const myOffsetB = [];
195460
- const offsetLengthA = OffsetHelpers.appendOffsets(myChains, offsetDistance, myOffsetA);
195461
- const offsetLengthB = OffsetHelpers.appendOffsets(myChains, -offsetDistance, myOffsetB);
195462
- if (offsetLengthA > offsetLengthB) {
195463
- return { outsideOffsets: myOffsetA, insideOffsets: myOffsetB, chains: myChains };
195464
- }
195465
- else {
195466
- return { insideOffsets: myOffsetA, outsideOffsets: myOffsetB, chains: myChains };
195467
- }
195468
- }
195469
- /**
195470
- * * Restructure curve fragments as chains and offsets
195471
- * * BEWARE that if the input is not a loop the classification of outputs is suspect.
195472
- * @param fragments fragments to be chained
195473
- * @param gapTolerance distance to be treated as "effectively zero" when joining head-to-tail.
195474
- */
195475
- static collectChains(fragments, gapTolerance, planarTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
195476
- const collector = new MultiChainCollector(gapTolerance, planarTolerance);
195477
- for (const s of fragments) {
195478
- collector.captureCurve(s);
195479
- }
195480
- return collector.grabResult(true);
195481
- }
195482
- /** If allowed by the geometry type, move an endpoint.
195483
- *
195484
- */
195485
- static simpleEndPointMove(g, atEnd, to) {
195486
- if (g instanceof (_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_10__.LineSegment3d)) {
195487
- if (atEnd) {
195488
- g.point1Ref.setFrom(to);
195489
- }
195490
- else {
195491
- g.point0Ref.setFrom(to);
195492
- }
195493
- return true;
195494
- }
195495
- else if (g instanceof _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d && g.numPoints() > 0) {
195496
- const i = atEnd ? g.numPoints() - 1 : 0;
195497
- g.packedPoints.setAtCheckedPointIndex(i, to);
195498
- return true;
195499
- }
195500
- return false;
195501
- }
195502
- // Try to move move tail (end) of g0 and/or head (beginning) of g1 to a common point.
195503
- static moveHeadOrTail(g0, g1, maxShift) {
195504
- const xyz0 = g0.endPoint();
195505
- const xyz1 = g1.startPoint();
195506
- const minShift = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance * 0.001;
195507
- const d01 = xyz0.distanceXY(xyz1);
195508
- if (d01 < minShift)
195509
- return true;
195510
- if (this.simpleEndPointMove(g1, false, xyz0) || this.simpleEndPointMove(g0, true, xyz1))
195511
- return true;
195512
- // const detail1On0 = g0.closestPoint(xyz1);
195513
- // const detail0On1 = g1.closestPoint(xyz0);
195514
- const intersections = _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_11__.CurveCurve.intersectionXYPairs(g0, true, g1, true);
195515
- const shiftFactor = 5.0;
195516
- for (const pair of intersections) {
195517
- const detail0 = pair.detailA;
195518
- const detail1 = pair.detailB;
195519
- const distance0 = detail0.point.distanceXY(xyz0);
195520
- const distance1 = detail1.point.distanceXY(xyz1);
195521
- if (distance0 < shiftFactor * maxShift && distance1 < shiftFactor * maxShift) {
195522
- if (g0 instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__.Arc3d && g1 instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__.Arc3d) {
195523
- const radians0End = g0.sweep.fractionToRadians(detail0.fraction);
195524
- g0.sweep.setStartEndRadians(g0.sweep.startRadians, radians0End);
195525
- const radians1Start = g1.sweep.fractionToRadians(detail1.fraction);
195526
- g1.sweep.setStartEndRadians(radians1Start, g1.sweep.endRadians);
195527
- return true;
195528
- }
195529
- }
195530
- }
195531
- return false;
195532
- }
195533
- }
195534
195793
 
195535
195794
 
195536
195795
  /***/ }),
@@ -195775,24 +196034,22 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
195775
196034
  __webpack_require__.r(__webpack_exports__);
195776
196035
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
195777
196036
  /* harmony export */ CurveChainWireOffsetContext: () => (/* binding */ CurveChainWireOffsetContext),
195778
- /* harmony export */ JointOptions: () => (/* binding */ JointOptions),
195779
- /* harmony export */ OffsetOptions: () => (/* binding */ OffsetOptions),
195780
196037
  /* harmony export */ PolygonWireOffsetContext: () => (/* binding */ PolygonWireOffsetContext)
195781
196038
  /* harmony export */ });
195782
196039
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195783
- /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
195784
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195785
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
195786
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195787
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195788
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
196040
+ /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
196041
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
196042
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
196043
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
196044
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
196045
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
195789
196046
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195790
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195791
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
196047
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
196048
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195792
196049
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
196050
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
195793
196051
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
195794
196052
  /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
195795
- /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
195796
196053
  /*---------------------------------------------------------------------------------------------
195797
196054
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195798
196055
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -195828,157 +196085,6 @@ var JointMode;
195828
196085
  JointMode[JointMode["JustGeometry"] = 3] = "JustGeometry";
195829
196086
  JointMode[JointMode["Gap"] = 4] = "Gap";
195830
196087
  })(JointMode || (JointMode = {}));
195831
- /**
195832
- * Control parameters for joint construction.
195833
- * * Define a "joint" as the common point between adjacent segments of the input curve.
195834
- * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
195835
- * the segments at the joint.
195836
- * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
195837
- * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
195838
- * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
195839
- * single intersection point (to create a sharp corner).
195840
- * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
195841
- * * lie outside the arc that would have been created by the first construction
195842
- * * have uniform turn angle less than `options.maxChamferDegrees`
195843
- * * touch the arc at their midpoint (except first and last edge).
195844
- * @public
195845
- */
195846
- class JointOptions {
195847
- /**
195848
- * Construct JointOptions.
195849
- * * leftOffsetDistance is required
195850
- * * minArcDegrees and maxChamferDegrees are optional.
195851
- */
195852
- constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
195853
- /**
195854
- * Smallest arc to construct.
195855
- * * If this control angle is 180 degrees or more, arcs are never created.
195856
- */
195857
- this.minArcDegrees = 180.0;
195858
- /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
195859
- this.maxChamferTurnDegrees = 90;
195860
- /**
195861
- * Whether to remove the internal turn angle upper bound for sharp corner construction.
195862
- * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
195863
- * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
195864
- * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
195865
- * up to `maxChamferTurnDegrees`.
195866
- * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
195867
- * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
195868
- */
195869
- this.allowSharpestCorners = false;
195870
- /** Offset distance, positive to left of base curve. */
195871
- this.leftOffsetDistance = 0;
195872
- /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
195873
- this.preserveEllipticalArcs = false;
195874
- this.leftOffsetDistance = leftOffsetDistance;
195875
- this.minArcDegrees = minArcDegrees;
195876
- this.maxChamferTurnDegrees = maxChamferDegrees;
195877
- this.preserveEllipticalArcs = preserveEllipticalArcs;
195878
- this.allowSharpestCorners = allowSharpestCorners;
195879
- }
195880
- /** Return a deep clone. */
195881
- clone() {
195882
- return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
195883
- }
195884
- /** Copy values of input options */
195885
- setFrom(other) {
195886
- this.leftOffsetDistance = other.leftOffsetDistance;
195887
- this.minArcDegrees = other.minArcDegrees;
195888
- this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
195889
- this.preserveEllipticalArcs = other.preserveEllipticalArcs;
195890
- this.allowSharpestCorners = other.allowSharpestCorners;
195891
- }
195892
- /**
195893
- * Parse a number or JointOptions up to JointOptions:
195894
- * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
195895
- * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
195896
- * @param leftOffsetDistanceOrOptions
195897
- */
195898
- static create(leftOffsetDistanceOrOptions) {
195899
- if (leftOffsetDistanceOrOptions instanceof JointOptions)
195900
- return leftOffsetDistanceOrOptions;
195901
- return new JointOptions(leftOffsetDistanceOrOptions);
195902
- }
195903
- /** Return true if the options indicate this amount of turn should be handled with an arc. */
195904
- needArc(theta) {
195905
- return Math.abs(theta.degrees) >= this.minArcDegrees;
195906
- }
195907
- /** Return the number of corners needed to chamfer the given turn angle. */
195908
- numChamferPoints(theta) {
195909
- const degrees = Math.abs(theta.degrees);
195910
- const minStepDegreesClamp = 10;
195911
- let maxStepDegreesClamp = 120;
195912
- if (this.allowSharpestCorners) {
195913
- maxStepDegreesClamp = this.maxChamferTurnDegrees;
195914
- }
195915
- const stepDegrees = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
195916
- if (degrees <= stepDegrees)
195917
- return 1;
195918
- return Math.ceil(degrees / stepDegrees);
195919
- }
195920
- }
195921
- /**
195922
- * Options for offsetting a curve.
195923
- * @public
195924
- */
195925
- class OffsetOptions {
195926
- /** Options that are provided are captured. */
195927
- constructor(offsetDistanceOrOptions, strokeOptions) {
195928
- this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
195929
- this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__.StrokeOptions.createForCurves();
195930
- }
195931
- get minArcDegrees() {
195932
- return this.jointOptions.minArcDegrees;
195933
- }
195934
- set minArcDegrees(value) {
195935
- this.jointOptions.minArcDegrees = value;
195936
- }
195937
- get maxChamferTurnDegrees() {
195938
- return this.jointOptions.maxChamferTurnDegrees;
195939
- }
195940
- set maxChamferTurnDegrees(value) {
195941
- this.jointOptions.maxChamferTurnDegrees = value;
195942
- }
195943
- get allowSharpestCorners() {
195944
- return this.jointOptions.allowSharpestCorners;
195945
- }
195946
- set allowSharpestCorners(value) {
195947
- this.jointOptions.allowSharpestCorners = value;
195948
- }
195949
- get leftOffsetDistance() {
195950
- return this.jointOptions.leftOffsetDistance;
195951
- }
195952
- set leftOffsetDistance(value) {
195953
- this.jointOptions.leftOffsetDistance = value;
195954
- }
195955
- get preserveEllipticalArcs() {
195956
- return this.jointOptions.preserveEllipticalArcs;
195957
- }
195958
- set preserveEllipticalArcs(value) {
195959
- this.jointOptions.preserveEllipticalArcs = value;
195960
- }
195961
- /**
195962
- * Convert variant input into OffsetOptions.
195963
- * * If a JointOptions is provided, it is captured.
195964
- * * If an OffsetOptions is provided, a reference to it is returned.
195965
- */
195966
- static create(offsetDistanceOrOptions) {
195967
- if (offsetDistanceOrOptions instanceof OffsetOptions)
195968
- return offsetDistanceOrOptions;
195969
- return new OffsetOptions(offsetDistanceOrOptions);
195970
- }
195971
- /** Convert variant input into offset distance */
195972
- static getOffsetDistance(offsetDistanceOrOptions) {
195973
- if (typeof offsetDistanceOrOptions === "number")
195974
- return offsetDistanceOrOptions;
195975
- return offsetDistanceOrOptions.leftOffsetDistance;
195976
- }
195977
- /** Return a deep clone. */
195978
- clone() {
195979
- return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
195980
- }
195981
- }
195982
196088
  /**
195983
196089
  * Description of geometry around a joint.
195984
196090
  * @internal
@@ -195997,9 +196103,9 @@ class Joint {
195997
196103
  static constructArc(ray0, center, ray1) {
195998
196104
  if (center !== undefined && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(ray0.origin.distance(center), ray1.origin.distance(center))) {
195999
196105
  const angle = ray0.direction.angleToXY(ray1.direction);
196000
- const vector0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(center, ray0.origin);
196106
+ const vector0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(center, ray0.origin);
196001
196107
  const vector90 = vector0.rotate90CCWXY();
196002
- return _Arc3d__WEBPACK_IMPORTED_MODULE_3__.Arc3d.create(center, vector0, vector90, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_4__.AngleSweep.createStartEndRadians(0.0, angle.radians));
196108
+ return _Arc3d__WEBPACK_IMPORTED_MODULE_2__.Arc3d.create(center, vector0, vector90, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(0.0, angle.radians));
196003
196109
  }
196004
196110
  return undefined;
196005
196111
  }
@@ -196067,7 +196173,7 @@ class Joint {
196067
196173
  const pointA = destination[destination.length - 1].endPoint();
196068
196174
  const pointB = primitive.startPoint();
196069
196175
  if (!pointA.isAlmostEqual(pointB)) {
196070
- destination.push(_LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(pointA, pointB));
196176
+ destination.push(_LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(pointA, pointB));
196071
196177
  }
196072
196178
  }
196073
196179
  destination.push(primitive);
@@ -196075,7 +196181,7 @@ class Joint {
196075
196181
  }
196076
196182
  static adjustJointToPrimitives(joint) {
196077
196183
  const ls = joint.jointCurve;
196078
- if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d) {
196184
+ if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d) {
196079
196185
  if (joint.curve0) {
196080
196186
  const curvePoint = joint.curve0.endPoint();
196081
196187
  const jointPoint0 = ls.startPoint();
@@ -196143,8 +196249,8 @@ class Joint {
196143
196249
  if (this.curve0 && this.curve1) {
196144
196250
  const ray0 = this.curve0.fractionToPointAndDerivative(1.0);
196145
196251
  const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
196146
- const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196147
- if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveCurveApproachType.Intersection) {
196252
+ const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196253
+ if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__.CurveCurveApproachType.Intersection) {
196148
196254
  if (intersection.detailA.fraction >= 0.0 && intersection.detailB.fraction <= 0.0) {
196149
196255
  this.fraction0 = 1.0;
196150
196256
  this.fraction1 = 0.0;
@@ -196159,7 +196265,7 @@ class Joint {
196159
196265
  }
196160
196266
  const numChamferPoints = options.numChamferPoints(theta); // how many interior points in the linestring
196161
196267
  if (numChamferPoints <= 1) { // create sharp corner
196162
- this.jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create(ray0.origin, intersection.detailA.point, ray1.origin);
196268
+ this.jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create(ray0.origin, intersection.detailA.point, ray1.origin);
196163
196269
  return;
196164
196270
  }
196165
196271
  if (numChamferPoints > 1) { // create chamfer corner (a line string)
@@ -196169,7 +196275,7 @@ class Joint {
196169
196275
  const arc = Joint.constructArc(ray0, this.curve0.baseCurveEnd, ray1);
196170
196276
  if (arc !== undefined) {
196171
196277
  const radialFraction = 1 / Math.cos(halfStepRadians);
196172
- const jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create();
196278
+ const jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create();
196173
196279
  this.jointCurve = jointCurve;
196174
196280
  jointCurve.addPoint(ray0.origin); // possibly extend segment or line string
196175
196281
  for (let i = 0; i < numChamferPoints; i++) {
@@ -196184,7 +196290,7 @@ class Joint {
196184
196290
  }
196185
196291
  // if there is no intersection between the 2 ray lines, fill the gap by a line segment
196186
196292
  this.flexure = JointMode.Gap;
196187
- this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196293
+ this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196188
196294
  this.fraction0 = 1.0;
196189
196295
  this.fraction1 = 0.0;
196190
196296
  }
@@ -196226,11 +196332,11 @@ class Joint {
196226
196332
  this.fraction1 = 0.0;
196227
196333
  this.flexure = JointMode.Trim;
196228
196334
  }
196229
- else if (this.curve0 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d && this.curve1 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d) { // pair of lines
196335
+ else if (this.curve0 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d && this.curve1 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d) { // pair of lines
196230
196336
  const ray0 = this.curve0.fractionToPointAndDerivative(0.0);
196231
196337
  const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
196232
- const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196233
- if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveCurveApproachType.Intersection) {
196338
+ const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196339
+ if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__.CurveCurveApproachType.Intersection) {
196234
196340
  this.fraction0 = intersection.detailA.fraction;
196235
196341
  this.fraction1 = intersection.detailB.fraction;
196236
196342
  if (this.fraction0 >= 1.0 && this.fraction1 <= 0.0) { // need to extend
@@ -196241,14 +196347,14 @@ class Joint {
196241
196347
  }
196242
196348
  else if (this.fraction0 > 1.0 && this.fraction1 > 1.0) { // need to fill gap with a single line segment
196243
196349
  this.flexure = JointMode.Gap;
196244
- this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196350
+ this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196245
196351
  this.fraction0 = 1.0;
196246
196352
  this.fraction1 = 0.0;
196247
196353
  }
196248
196354
  }
196249
196355
  }
196250
196356
  else { // generic pair of curves
196251
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_9__.CurveCurve.intersectionXYPairs(this.curve0, false, this.curve1, false);
196357
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_8__.CurveCurve.intersectionXYPairs(this.curve0, false, this.curve1, false);
196252
196358
  const intersectionIndex = this.selectIntersectionIndexByFraction(1.0, 0.0, intersections);
196253
196359
  if (intersectionIndex >= 0) { // need to trim
196254
196360
  this.flexure = JointMode.Trim;
@@ -196359,10 +196465,10 @@ class PolygonWireOffsetContext {
196359
196465
  constructor() { }
196360
196466
  // Construct a single offset from base points
196361
196467
  static createOffsetSegment(basePointA, basePointB, distance) {
196362
- _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(basePointA, basePointB, this._unitAlong);
196468
+ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(basePointA, basePointB, this._unitAlong);
196363
196469
  if (this._unitAlong.normalizeInPlace()) {
196364
196470
  this._unitAlong.rotate90CCWXY(this._unitPerp);
196365
- const segment = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(basePointA.plusScaled(this._unitPerp, distance, this._offsetA), basePointB.plusScaled(this._unitPerp, distance, this._offsetB));
196471
+ const segment = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(basePointA.plusScaled(this._unitPerp, distance, this._offsetA), basePointB.plusScaled(this._unitPerp, distance, this._offsetB));
196366
196472
  CurveChainWireOffsetContext.applyBasePoints(segment, basePointA.clone(), basePointB.clone());
196367
196473
  return segment;
196368
196474
  }
@@ -196388,7 +196494,7 @@ class PolygonWireOffsetContext {
196388
196494
  wrap = false;
196389
196495
  }
196390
196496
  /** create raw offsets as a linked list (joint0) */
196391
- const options = JointOptions.create(leftOffsetDistanceOrOptions);
196497
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.JointOptions.create(leftOffsetDistanceOrOptions);
196392
196498
  const numPoints = points.length;
196393
196499
  let fragment0 = PolygonWireOffsetContext.createOffsetSegment(points[0], points[1], options.leftOffsetDistance);
196394
196500
  let joint0 = new Joint(undefined, fragment0, points[0]);
@@ -196424,7 +196530,7 @@ class PolygonWireOffsetContext {
196424
196530
  }
196425
196531
  // Joint.collectPrimitivesFromChain(joint0, result, numPoints);
196426
196532
  /** turn the Joint linked list into a CurveCollection (Loop or Path). trimming is done in collectStrokesFromChain */
196427
- const chain = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create();
196533
+ const chain = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create();
196428
196534
  Joint.collectStrokesFromChain(joint0, chain, numPoints);
196429
196535
  const n = chain.packedPoints.length;
196430
196536
  if (n > 1) {
@@ -196436,10 +196542,10 @@ class PolygonWireOffsetContext {
196436
196542
  return undefined;
196437
196543
  }
196438
196544
  }
196439
- PolygonWireOffsetContext._unitAlong = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create();
196440
- PolygonWireOffsetContext._unitPerp = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create();
196441
- PolygonWireOffsetContext._offsetA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
196442
- PolygonWireOffsetContext._offsetB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
196545
+ PolygonWireOffsetContext._unitAlong = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
196546
+ PolygonWireOffsetContext._unitPerp = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
196547
+ PolygonWireOffsetContext._offsetA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
196548
+ PolygonWireOffsetContext._offsetB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
196443
196549
 
196444
196550
  /**
196445
196551
  * Context for building a wire offset from a Path or Loop of CurvePrimitives
@@ -196465,41 +196571,39 @@ class CurveChainWireOffsetContext {
196465
196571
  return cp;
196466
196572
  }
196467
196573
  /**
196468
- * Create the offset of a single primitive as viewed in the xy-plane (ignoring z).
196469
- * * each primitive may be labeled (as an `any` object) with start or end point of base curve:
196574
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
196575
+ * * Each primitive may be labeled (as an `any` object) with start or end point of base curve:
196470
196576
  * * `(primitive as any).baseCurveStart: Point3d`
196471
196577
  * * `(primitive as any).baseCurveEnd: Point3d`
196472
- * @param g primitive to offset
196473
- * @param offsetDistanceOrOptions offset distance (positive to left of g), or options object
196578
+ * @param curve primitive to offset
196579
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
196474
196580
  */
196475
- static createSingleOffsetPrimitiveXY(g, offsetDistanceOrOptions) {
196476
- const offset = g.constructOffsetXY(offsetDistanceOrOptions);
196581
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
196582
+ const offset = curve.constructOffsetXY(offsetDistanceOrOptions);
196477
196583
  if (offset === undefined)
196478
196584
  return undefined;
196479
196585
  // decorate each offset with its base curve's endpoints
196480
196586
  if (Array.isArray(offset)) {
196481
- const basePrims = g.collectCurvePrimitives(undefined, true, true);
196587
+ const basePrims = curve.collectCurvePrimitives(undefined, true, true);
196482
196588
  if (basePrims.length !== offset.length)
196483
196589
  return undefined; // unexpected aggregate curve type!
196484
196590
  for (let i = 0; i < basePrims.length; ++i)
196485
196591
  this.applyBasePoints(offset[i], basePrims[i].startPoint(), basePrims[i].endPoint());
196486
196592
  return offset;
196487
196593
  }
196488
- return this.applyBasePoints(offset, g.startPoint(), g.endPoint());
196594
+ return this.applyBasePoints(offset, curve.startPoint(), curve.endPoint());
196489
196595
  }
196490
196596
  /**
196491
196597
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
196492
196598
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
196493
196599
  * not detect self intersection among widely separated edges.
196494
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
196495
- * * See [[JointOptions]] class doc for offset construction rules.
196496
196600
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
196497
196601
  * @param curves base curves.
196498
196602
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
196499
196603
  */
196500
196604
  static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
196501
196605
  const wrap = curves instanceof _Loop__WEBPACK_IMPORTED_MODULE_10__.Loop;
196502
- const offsetOptions = OffsetOptions.create(offsetDistanceOrOptions);
196606
+ const offsetOptions = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
196503
196607
  const simpleOffsets = [];
196504
196608
  /** traverse primitives (children of curves) and create simple offsets of each primitive as an array */
196505
196609
  for (const c of curves.children) {
@@ -197986,7 +198090,7 @@ class IntegratedSpiral3d extends _TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_0_
197986
198090
  static initWorkSpace() {
197987
198091
  IntegratedSpiral3d._gaussFraction = new Float64Array(5);
197988
198092
  IntegratedSpiral3d._gaussWeight = new Float64Array(5);
197989
- IntegratedSpiral3d._gaussMapper = _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_3__.Quadrature.setupGauss5;
198093
+ IntegratedSpiral3d._gaussMapper = (xA, xB, xMapped, wMapped) => _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_3__.Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
197990
198094
  }
197991
198095
  /** Evaluate and sum the gauss quadrature formulas to integrate cos(theta), sin(theta) fractional subset of a reference length.
197992
198096
  * (recall that theta is a nonlinear function of the fraction.)
@@ -198874,7 +198978,7 @@ __webpack_require__.r(__webpack_exports__);
198874
198978
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
198875
198979
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
198876
198980
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
198877
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
198981
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
198878
198982
  /*---------------------------------------------------------------------------------------------
198879
198983
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
198880
198984
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -199005,7 +199109,7 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Cu
199005
199109
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
199006
199110
  */
199007
199111
  constructOffsetXY(offsetDistanceOrOptions) {
199008
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__.OffsetOptions.create(offsetDistanceOrOptions);
199112
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_4__.OffsetOptions.create(offsetDistanceOrOptions);
199009
199113
  const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
199010
199114
  this.emitStrokableParts(handler, options.strokeOptions);
199011
199115
  return handler.claimResult();
@@ -199102,7 +199206,7 @@ class XYCurveEvaluator {
199102
199206
  static initWorkSpace() {
199103
199207
  XYCurveEvaluator._gaussX = new Float64Array(5);
199104
199208
  XYCurveEvaluator._gaussWeight = new Float64Array(5);
199105
- XYCurveEvaluator._gaussMapper = _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_4__.Quadrature.setupGauss5;
199209
+ XYCurveEvaluator._gaussMapper = (xA, xB, xMapped, wMapped) => _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_4__.Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
199106
199210
  }
199107
199211
  /**
199108
199212
  * Integrate between nominal fractions with default gauss rule.
@@ -203223,7 +203327,7 @@ class GrowableBlockedArray {
203223
203327
  return ia - ib; // so original order is maintained among duplicates !!!!
203224
203328
  }
203225
203329
  /** Return an array of block indices sorted per compareLexicalBlock function */
203226
- sortIndicesLexical(compareBlocks = GrowableBlockedArray.compareLexicalBlock) {
203330
+ sortIndicesLexical(compareBlocks = (dataArray, size, iA, iB) => GrowableBlockedArray.compareLexicalBlock(dataArray, size, iA, iB)) {
203227
203331
  const n = this._inUse;
203228
203332
  // let numCompare = 0;
203229
203333
  const result = new Uint32Array(n);
@@ -203494,7 +203598,7 @@ class GrowableFloat64Array {
203494
203598
  * * Uses insertion sort -- fine for small arrays (less than 30), slow for larger arrays
203495
203599
  * @param compareMethod comparison method
203496
203600
  */
203497
- sort(compareMethod = GrowableFloat64Array.compare) {
203601
+ sort(compareMethod = (a, b) => GrowableFloat64Array.compare(a, b)) {
203498
203602
  for (let i = 0; i < this._inUse; i++) {
203499
203603
  for (let j = i + 1; j < this._inUse; j++) {
203500
203604
  const tempI = this._data[i];
@@ -207607,7 +207711,7 @@ class Matrix3d {
207607
207711
  PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.coffs, result.coffs);
207608
207712
  if (this.inverseState === InverseMatrixState.inverseStored
207609
207713
  && other.inverseState === InverseMatrixState.inverseStored)
207610
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.inverseCoffs);
207714
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.inverseCoffs, this.inverseCoffs);
207611
207715
  else if (this.inverseState === InverseMatrixState.singular
207612
207716
  || other.inverseState === InverseMatrixState.singular)
207613
207717
  result.inverseState = InverseMatrixState.singular;
@@ -207625,7 +207729,7 @@ class Matrix3d {
207625
207729
  result = result ? result : new Matrix3d();
207626
207730
  PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.inverseCoffs, Matrix3d._productBuffer);
207627
207731
  if (this.inverseState === InverseMatrixState.inverseStored)
207628
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.coffs, this.inverseCoffs);
207732
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.coffs, this.inverseCoffs);
207629
207733
  else
207630
207734
  result.inverseState = InverseMatrixState.unknown;
207631
207735
  PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
@@ -207641,7 +207745,7 @@ class Matrix3d {
207641
207745
  result = result ? result : new Matrix3d();
207642
207746
  PackedMatrix3dOps.multiplyMatrixMatrix(this.inverseCoffs, other.coffs, Matrix3d._productBuffer);
207643
207747
  if (other.inverseState === InverseMatrixState.inverseStored)
207644
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.coffs);
207748
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.inverseCoffs, this.coffs);
207645
207749
  else
207646
207750
  result.inverseState = InverseMatrixState.unknown;
207647
207751
  PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
@@ -207659,7 +207763,7 @@ class Matrix3d {
207659
207763
  result = result ? result : new Matrix3d();
207660
207764
  PackedMatrix3dOps.multiplyMatrixMatrixTranspose(this.coffs, other.coffs, result.coffs);
207661
207765
  if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
207662
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixTransposeMatrix, other.inverseCoffs, this.inverseCoffs);
207766
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixTransposeMatrix(a, b, _result), other.inverseCoffs, this.inverseCoffs);
207663
207767
  else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
207664
207768
  result.inverseState = InverseMatrixState.singular;
207665
207769
  else
@@ -207678,7 +207782,7 @@ class Matrix3d {
207678
207782
  result = result ? result : new Matrix3d();
207679
207783
  PackedMatrix3dOps.multiplyMatrixTransposeMatrix(this.coffs, other.coffs, result.coffs);
207680
207784
  if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
207681
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrixTranspose, other.inverseCoffs, this.inverseCoffs);
207785
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrixTranspose(a, b, _result), other.inverseCoffs, this.inverseCoffs);
207682
207786
  else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
207683
207787
  result.inverseState = InverseMatrixState.singular;
207684
207788
  else
@@ -210004,16 +210108,16 @@ class Point2d extends XY {
210004
210108
  return Point2d.create(0, 0, result);
210005
210109
  }
210006
210110
  /**
210007
- * Starting at this point, move along vector by tangentFraction of the vector length, and then
210008
- * to the left by leftFraction of the perpendicular vector length.
210009
- * @param tangentFraction distance to move along the vector, as a fraction of vector
210010
- * @param leftFraction distance to move perpendicular to the vector, as a fraction of the rotated vector
210111
+ * Starting at this point, move along `vector` by `tangentFraction` of its length, and then
210112
+ * by `leftFraction` of its length along the left perpendicular.
210113
+ * @param tangentFraction distance to move along `vector`, as a fraction of its length
210114
+ * @param leftFraction distance to move perpendicular to `vector`, as a fraction of its length
210011
210115
  * @param vector the other vector
210012
210116
  */
210013
- addForwardLeft(tangentFraction, leftFraction, vector) {
210117
+ addForwardLeft(tangentFraction, leftFraction, vector, result) {
210014
210118
  const dx = vector.x;
210015
210119
  const dy = vector.y;
210016
- return Point2d.create(this.x + tangentFraction * dx - leftFraction * dy, this.y + tangentFraction * dy + leftFraction * dx);
210120
+ return Point2d.create(this.x + tangentFraction * dx - leftFraction * dy, this.y + tangentFraction * dy + leftFraction * dx, result);
210017
210121
  }
210018
210122
  /**
210019
210123
  * Interpolate at tangentFraction between this instance and point, and then Move by leftFraction
@@ -210197,11 +210301,10 @@ class Vector2d extends XY {
210197
210301
  return this.safeDivideOrNull(mag, result);
210198
210302
  }
210199
210303
  /**
210200
- * Return fractional projection of target vector onto this
210201
- * * It's returning the signed projection magnitude divided by the target magnitude. In other words,
210202
- * it's returning the length of the projection as a fraction of the target magnitude.
210304
+ * Return fractional length of the projection of the instance onto the target vector.
210203
210305
  * @param target the target vector
210204
- * @param defaultFraction the returned value in case magnitude square of target vector is very small
210306
+ * @param defaultFraction the returned value in case the magnitude of `target` is too small
210307
+ * @returns the signed length of the projection divided by the length of `target`
210205
210308
  */
210206
210309
  fractionOfProjectionToVector(target, defaultFraction) {
210207
210310
  /*
@@ -211599,24 +211702,24 @@ class Vector3d extends XYZ {
211599
211702
  return undefined;
211600
211703
  }
211601
211704
  /**
211602
- * Return fractional projection of this vector on the target vector.
211603
- * * It's returning the signed projection magnitude divided by the target magnitude.
211604
- * * To find the projection vector, scale the target vector by the value that this function is returning.
211705
+ * Return fractional length of the projection of the instance onto the target vector.
211706
+ * * To find the projection vector, scale the target vector by the return value.
211605
211707
  * * Math details can be found at docs/learning/geometry/PointVector.md
211606
211708
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/ProjectVectorOnVector
211607
211709
  * and https://www.itwinjs.org/sandbox/SaeedTorabi/ProjectVectorOnPlane
211608
211710
  * @param target the target vector
211609
- * @param defaultFraction the returned value in case magnitude square of target vector is very small
211711
+ * @param defaultFraction the returned value in case the magnitude of `target` is too small
211712
+ * @returns the signed length of the projection divided by the length of `target`
211610
211713
  * */
211611
211714
  fractionOfProjectionToVector(target, defaultFraction = 0) {
211612
211715
  /*
211613
211716
  * Projection vector is ((this.target)/||target||)(target/||target||) = ((this.target)/||target||^2)target
211614
211717
  * This function returns (this.target)/||target||^2
211615
211718
  */
211616
- const numerator = this.dotProduct(target);
211617
211719
  const denominator = target.magnitudeSquared();
211618
211720
  if (denominator < _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistanceSquared)
211619
211721
  return defaultFraction;
211722
+ const numerator = this.dotProduct(target);
211620
211723
  return numerator / denominator;
211621
211724
  }
211622
211725
  /**
@@ -212565,7 +212668,7 @@ class Point4dArray {
212565
212668
  }
212566
212669
  /** unpack from xyzw xyzw... array to array of Point3d and array of weight.
212567
212670
  */
212568
- static unpackFloat64ArrayToPointsAndWeights(data, points, weights, pointFormatter = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create) {
212671
+ static unpackFloat64ArrayToPointsAndWeights(data, points, weights, pointFormatter = (x, y, z) => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z)) {
212569
212672
  points.length = 0;
212570
212673
  weights.length = 0;
212571
212674
  for (let i = 0; i + 3 < data.length; i += 4) {
@@ -213018,7 +213121,7 @@ class Point3dArray {
213018
213121
  * @param data point data with various leaf forms such as `[1,2,3]`, `{x:1,y:2,z:3}`, `Point3d`
213019
213122
  */
213020
213123
  static cloneDeepJSONNumberArrays(data) {
213021
- const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector(this.xyzToArray);
213124
+ const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector((x, y, z) => this.xyzToArray(x, y, z));
213022
213125
  _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.VariantPointDataStream.streamXYZ(data, collector);
213023
213126
  return collector.claimResult();
213024
213127
  }
@@ -213063,7 +213166,7 @@ class Point3dArray {
213063
213166
  * @param data point data with various leaf forms such as `[1,2,3]`, `{x:1,y:2,z:3}`, `Point3d`
213064
213167
  */
213065
213168
  static cloneDeepXYZPoint3dArrays(data) {
213066
- const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create);
213169
+ const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector((x, y, z) => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z));
213067
213170
  _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.VariantPointDataStream.streamXYZ(data, collector);
213068
213171
  return collector.claimResult();
213069
213172
  }
@@ -213106,7 +213209,7 @@ class Point3dArray {
213106
213209
  let n = points.length;
213107
213210
  // Get deep copy
213108
213211
  const xy1 = points.slice(0, n);
213109
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
213212
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan(a, b));
213110
213213
  if (n < 3) {
213111
213214
  for (const p of xy1)
213112
213215
  hullPoints.push(p);
@@ -213131,7 +213234,7 @@ class Point3dArray {
213131
213234
  const i0 = hullPoints.length - 1;
213132
213235
  xy1.length = numInside;
213133
213236
  xy1.push(hullPoints[0]); // force first point to be reconsidered as final hull point.
213134
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
213237
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan(a, b));
213135
213238
  n = xy1.length;
213136
213239
  // xy1.back () is already on stack.
213137
213240
  hullPoints.push(xy1[n - 1]);
@@ -213622,7 +213725,7 @@ class CutLoopMergeContext {
213622
213725
  sortRay.direction.normalizeInPlace();
213623
213726
  for (const loop of this.inputLoops)
213624
213727
  loop.setSortCoordinates(sortRay);
213625
- this.inputLoops.sort(CutLoop.sortFunction);
213728
+ this.inputLoops.sort((loopA, loopB) => CutLoop.sortFunction(loopA, loopB));
213626
213729
  }
213627
213730
  }
213628
213731
  /**
@@ -213668,9 +213771,8 @@ class CutLoopMergeContext {
213668
213771
  }
213669
213772
  }
213670
213773
  }
213671
- /** Static class for operations that treat an array of points as a polygon (with area!) */
213672
213774
  /**
213673
- * Various (static method) computations for arrays of points interpreted as a polygon.
213775
+ * Various static methods to perform computations on an array of points interpreted as a polygon.
213674
213776
  * @public
213675
213777
  */
213676
213778
  class PolygonOps {
@@ -217096,6 +217198,163 @@ class Range2d extends RangeBase {
217096
217198
  }
217097
217199
 
217098
217200
 
217201
+ /***/ }),
217202
+
217203
+ /***/ "../../core/geometry/lib/esm/geometry3d/Ray2d.js":
217204
+ /*!*******************************************************!*\
217205
+ !*** ../../core/geometry/lib/esm/geometry3d/Ray2d.js ***!
217206
+ \*******************************************************/
217207
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
217208
+
217209
+ "use strict";
217210
+ __webpack_require__.r(__webpack_exports__);
217211
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
217212
+ /* harmony export */ Ray2d: () => (/* binding */ Ray2d)
217213
+ /* harmony export */ });
217214
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
217215
+ /*---------------------------------------------------------------------------------------------
217216
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
217217
+ * See LICENSE.md in the project root for license terms and full copyright notice.
217218
+ *--------------------------------------------------------------------------------------------*/
217219
+ /** @packageDocumentation
217220
+ * @module CartesianGeometry
217221
+ */
217222
+
217223
+ // cspell:word CCWXY, CWXY
217224
+ /**
217225
+ * Ray with xy origin and direction
217226
+ * @public
217227
+ */
217228
+ class Ray2d {
217229
+ constructor(origin, direction) {
217230
+ this._origin = origin;
217231
+ this._direction = direction;
217232
+ }
217233
+ /** Copy coordinates from origin and direction. */
217234
+ set(origin, direction) {
217235
+ this._origin.setFrom(origin);
217236
+ this._direction.setFrom(direction);
217237
+ }
217238
+ /**
217239
+ * Create from `origin` and `target` points.
217240
+ * @param origin ray origin, cloned
217241
+ * @param target end of ray direction vector. The direction vector is `target - origin`.
217242
+ * @param result optional pre-allocated object to return
217243
+ */
217244
+ static createOriginAndTarget(origin, target, result) {
217245
+ if (result) {
217246
+ result._origin.setFrom(origin);
217247
+ result._direction.set(target.x - origin.x, target.y - origin.y);
217248
+ return result;
217249
+ }
217250
+ return new Ray2d(origin.clone(), origin.vectorTo(target));
217251
+ }
217252
+ /**
217253
+ * Create by copying coordinates from `origin` and `direction`.
217254
+ * @param origin ray origin
217255
+ * @param direction ray direction
217256
+ * @param result optional pre-allocated object to return
217257
+ */
217258
+ static createOriginAndDirection(origin, direction, result) {
217259
+ if (result) {
217260
+ result.set(origin, direction);
217261
+ return result;
217262
+ }
217263
+ return new Ray2d(origin.clone(), direction.clone());
217264
+ }
217265
+ /** Create from captured `origin` and `direction`. */
217266
+ static createOriginAndDirectionCapture(origin, direction, result) {
217267
+ if (result) {
217268
+ result._origin = origin;
217269
+ result._direction = direction;
217270
+ return result;
217271
+ }
217272
+ return new Ray2d(origin, direction);
217273
+ }
217274
+ /** Get the reference to the ray origin. */
217275
+ get origin() { return this._origin; }
217276
+ /** Get the reference to the ray direction. */
217277
+ get direction() { return this._direction; }
217278
+ /**
217279
+ * Return a parallel ray to the left of this ray.
217280
+ * @param leftFraction distance between rays, as a fraction of the magnitude of this ray's direction vector
217281
+ */
217282
+ parallelRay(leftFraction, result) {
217283
+ if (result) {
217284
+ this._origin.addForwardLeft(0.0, leftFraction, this._direction, result._origin);
217285
+ result._direction.setFrom(this._direction);
217286
+ return result;
217287
+ }
217288
+ return new Ray2d(this._origin.addForwardLeft(0.0, leftFraction, this._direction), this._direction.clone());
217289
+ }
217290
+ /** Return a ray with cloned origin and with direction rotated 90 degrees counterclockwise */
217291
+ ccwPerpendicularRay(result) {
217292
+ if (result) {
217293
+ result._origin.setFrom(this._origin);
217294
+ this._direction.rotate90CCWXY(result._direction);
217295
+ return result;
217296
+ }
217297
+ return new Ray2d(this._origin.clone(), this._direction.rotate90CCWXY());
217298
+ }
217299
+ /** Return a ray with cloned origin and with direction rotated 90 degrees clockwise */
217300
+ cwPerpendicularRay(result) {
217301
+ if (result) {
217302
+ result._origin.setFrom(this._origin);
217303
+ this._direction.rotate90CWXY(result._direction);
217304
+ return result;
217305
+ }
217306
+ return new Ray2d(this._origin.clone(), this._direction.rotate90CWXY());
217307
+ }
217308
+ /**
217309
+ * Normalize the direction vector in place.
217310
+ * @param defaultX value to set `this.direction.x` if normalization fails. Default value 1.
217311
+ * @param defaultY value to set `this.direction.y` if normalization fails. Default value 0.
217312
+ * @returns whether normalization succeeded (i.e., direction is nonzero)
217313
+ */
217314
+ normalizeDirectionInPlace(defaultX = 1, defaultY = 0) {
217315
+ if (this._direction.normalize(this._direction))
217316
+ return true;
217317
+ this._direction.x = defaultX;
217318
+ this._direction.y = defaultY;
217319
+ return false;
217320
+ }
217321
+ /**
217322
+ * Intersect this ray with the unbounded line defined by the given points.
217323
+ * @param linePointA start of the line
217324
+ * @param linePointB end of the line
217325
+ * @returns object with named values:
217326
+ * * `hasIntersection`: whether the intersection exists.
217327
+ * * `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.
217328
+ * * `cross`: the 2D cross product `this.direction x (linePointB - linePointA)`, useful for determining orientation of the line and ray.
217329
+ */
217330
+ intersectUnboundedLine(linePointA, linePointB) {
217331
+ const lineDirection = linePointA.vectorTo(linePointB);
217332
+ const vector0 = linePointA.vectorTo(this._origin);
217333
+ const h0 = vector0.crossProduct(lineDirection);
217334
+ const dHds = this._direction.crossProduct(lineDirection);
217335
+ // h = h0 + s * dh
217336
+ const ff = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-h0, dHds);
217337
+ const hasIntersection = ff !== undefined;
217338
+ return { hasIntersection, fraction: hasIntersection ? ff : 0.0, cross: dHds };
217339
+ }
217340
+ /** Return the ray fraction where the given point projects onto the ray. */
217341
+ projectionFraction(point) {
217342
+ return this._origin.vectorTo(point).fractionOfProjectionToVector(this._direction);
217343
+ }
217344
+ /** Return the ray fraction where the given point projects onto the perpendicular ray. */
217345
+ perpendicularProjectionFraction(point) {
217346
+ const uv = this._direction.crossProduct(this._origin.vectorTo(point));
217347
+ const uu = this._direction.magnitudeSquared();
217348
+ // Want zero returned if failure case, not undefined
217349
+ return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.safeDivideFraction(uv, uu, 0.0);
217350
+ }
217351
+ /** Compute and return origin plus scaled direction. */
217352
+ fractionToPoint(f, result) {
217353
+ return this._origin.plusScaled(this._direction, f, result);
217354
+ }
217355
+ }
217356
+
217357
+
217099
217358
  /***/ }),
217100
217359
 
217101
217360
  /***/ "../../core/geometry/lib/esm/geometry3d/Ray3d.js":
@@ -218779,7 +219038,7 @@ class Transform {
218779
219038
  const originY = this.origin.y;
218780
219039
  const originZ = this.origin.z;
218781
219040
  if (result) {
218782
- const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
219041
+ const n = Transform.matchArrayLengths(points, result, () => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero());
218783
219042
  for (let i = 0; i < n; i++)
218784
219043
  this._matrix.multiplyInverseXYZAsPoint3d(points[i].x - originX, points[i].y - originY, points[i].z - originZ, result[i]);
218785
219044
  return result;
@@ -218809,7 +219068,7 @@ class Transform {
218809
219068
  */
218810
219069
  multiplyPoint2dArray(points, result) {
218811
219070
  if (result) {
218812
- const n = Transform.matchArrayLengths(points, result, _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero);
219071
+ const n = Transform.matchArrayLengths(points, result, () => _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero());
218813
219072
  for (let i = 0; i < n; i++)
218814
219073
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, points[i], result[i]);
218815
219074
  return result;
@@ -218826,7 +219085,7 @@ class Transform {
218826
219085
  */
218827
219086
  multiplyPoint3dArray(points, result) {
218828
219087
  if (result) {
218829
- const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
219088
+ const n = Transform.matchArrayLengths(points, result, () => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero());
218830
219089
  for (let i = 0; i < n; i++)
218831
219090
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, points[i], result[i]);
218832
219091
  return result;
@@ -223582,12 +223841,12 @@ class Complex {
223582
223841
  "use strict";
223583
223842
  __webpack_require__.r(__webpack_exports__);
223584
223843
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
223585
- /* harmony export */ ConvexPolygon2d: () => (/* binding */ ConvexPolygon2d),
223586
- /* harmony export */ Ray2d: () => (/* binding */ Ray2d)
223844
+ /* harmony export */ ConvexPolygon2d: () => (/* binding */ ConvexPolygon2d)
223587
223845
  /* harmony export */ });
223588
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
223846
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
223589
223847
  /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
223590
223848
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
223849
+ /* harmony import */ var _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Ray2d */ "../../core/geometry/lib/esm/geometry3d/Ray2d.js");
223591
223850
  /*---------------------------------------------------------------------------------------------
223592
223851
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
223593
223852
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -223598,97 +223857,7 @@ __webpack_require__.r(__webpack_exports__);
223598
223857
 
223599
223858
 
223600
223859
 
223601
- /**
223602
- * Ray with xy origin and direction
223603
- * @internal
223604
- */
223605
- class Ray2d {
223606
- constructor(origin, direction) {
223607
- this._origin = origin;
223608
- this._direction = direction;
223609
- }
223610
- /** Create from 2d `origin` and `target`.
223611
- * * `target - origin` is the direction vector.
223612
- */
223613
- static createOriginAndTarget(origin, target) {
223614
- return new Ray2d(origin.clone(), origin.vectorTo(target));
223615
- }
223616
- /** Create from (clones of) `origin` point and `direction` vector */
223617
- static createOriginAndDirection(origin, direction) {
223618
- return new Ray2d(origin.clone(), direction.clone());
223619
- }
223620
- /** Capture `origin` and `direction` as ray member variables. */
223621
- static createOriginAndDirectionCapture(origin, direction) {
223622
- return new Ray2d(origin, direction);
223623
- }
223624
- /** Get the (REFERENCE TO) the ray origin. */
223625
- get origin() { return this._origin; }
223626
- /** Get the (REFERENCE TO) the ray direction. */
223627
- get direction() { return this._direction; }
223628
- /**
223629
- * Return a ray that is parallel at distance to the left, specified as fraction of the ray's direction vector.
223630
- */
223631
- parallelRay(leftFraction) {
223632
- return new Ray2d(this._origin.addForwardLeft(0.0, leftFraction, this._direction), this._direction);
223633
- }
223634
- /** Return a ray with same origin, direction rotated 90 degrees counterclockwise */
223635
- ccwPerpendicularRay() {
223636
- return new Ray2d(this._origin, this._direction.rotate90CCWXY());
223637
- }
223638
- /** Return a ray with same origin, direction rotated 90 degrees clockwise */
223639
- cwPerpendicularRay() {
223640
- return new Ray2d(this._origin, this._direction.rotate90CWXY());
223641
- }
223642
- /** Normalize the direction vector in place. */
223643
- normalizeDirectionInPlace(defaultX = 1, defaultY = 0) {
223644
- if (this._direction.normalize(this._direction)) {
223645
- return true;
223646
- }
223647
- else {
223648
- this._direction.x = defaultX;
223649
- this._direction.y = defaultY;
223650
- // magnitude = 0.0;
223651
- return false;
223652
- }
223653
- }
223654
- /**
223655
- * Intersect this ray (ASSUMED NORMALIZED) with unbounded line defined by points.
223656
- * (The normalization assumption affects test for parallel vectors.)
223657
- * Fraction and dHds passed as number[] to use by reference... Sticking to return of true and false in the case fraction is zero after
223658
- * a true safe divide
223659
- */
223660
- intersectUnboundedLine(linePointA, linePointB, fraction, dHds) {
223661
- const lineDirection = linePointA.vectorTo(linePointB);
223662
- const vector0 = linePointA.vectorTo(this._origin);
223663
- const h0 = vector0.crossProduct(lineDirection);
223664
- dHds[0] = this._direction.crossProduct(lineDirection);
223665
- // h = h0 + s * dh
223666
- const ff = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-h0, dHds[0]);
223667
- if (ff !== undefined) {
223668
- fraction[0] = ff;
223669
- return true;
223670
- }
223671
- else {
223672
- fraction[0] = 0.0;
223673
- return false;
223674
- }
223675
- }
223676
- /** return the ray fraction where point projects to the ray */
223677
- projectionFraction(point) {
223678
- return this._origin.vectorTo(point).fractionOfProjectionToVector(this._direction);
223679
- }
223680
- /** return the fraction of projection to the perpendicular ray */
223681
- perpendicularProjectionFraction(point) {
223682
- const uv = this._direction.crossProduct(this._origin.vectorTo(point));
223683
- const uu = this._direction.magnitudeSquared();
223684
- // Want zero returned if failure case, not undefined
223685
- return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.safeDivideFraction(uv, uu, 0.0);
223686
- }
223687
- /** Return point from origin plus a scaled vector */
223688
- fractionToPoint(f) {
223689
- return this._origin.plusScaled(this._direction, f);
223690
- }
223691
- }
223860
+
223692
223861
  /**
223693
223862
  * Convex hull of points in 2d.
223694
223863
  * @internal
@@ -223754,7 +223923,7 @@ class ConvexPolygon2d {
223754
223923
  const xy1 = this._hullPoints[i];
223755
223924
  const c = xy0.crossProductToPoints(xy1, xy);
223756
223925
  if (c < 0.0) {
223757
- const ray = Ray2d.createOriginAndTarget(xy0, xy1);
223926
+ const ray = _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_0__.Ray2d.createOriginAndTarget(xy0, xy1);
223758
223927
  const s = ray.projectionFraction(xy);
223759
223928
  let d = 0.0;
223760
223929
  if (s < 0.0)
@@ -223805,10 +223974,11 @@ class ConvexPolygon2d {
223805
223974
  return true;
223806
223975
  }
223807
223976
  /**
223808
- * Return 2 distances bounding the intersection of the ray with a convex hull.
223809
- * ASSUME (for tolerance) the ray has normalized direction vector.
223810
- * Both negative and positive distances along the ray are possible.
223811
- * Returns range with extremities if less than 3 points, distanceA > distanceB, or if cross product < 0
223977
+ * Return 2 distances bounding the intersection of the ray with this convex hull.
223978
+ * @param ray ray to clip to this convex polygon. ASSUME normalized direction vector, so that ray fractions are distances.
223979
+ * @returns intersection bounds as min and max distances along the ray (from its origin).
223980
+ * * Both negative and positive distances along the ray are possible.
223981
+ * * Range has extreme values if less than 3 points, distanceA > distanceB, or if cross product < 0.
223812
223982
  */
223813
223983
  clipRay(ray) {
223814
223984
  let distanceA = -Number.MAX_VALUE;
@@ -223818,16 +223988,15 @@ class ConvexPolygon2d {
223818
223988
  return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range1d.createNull();
223819
223989
  let xy0 = this._hullPoints[n - 1];
223820
223990
  for (const xy1 of this._hullPoints) {
223821
- const distance = [];
223822
- const dHds = [];
223823
- if (ray.intersectUnboundedLine(xy0, xy1, distance, dHds)) {
223824
- if (dHds[0] > 0.0) {
223825
- if (distance[0] < distanceB)
223826
- distanceB = distance[0];
223991
+ const { hasIntersection, fraction, cross } = ray.intersectUnboundedLine(xy0, xy1);
223992
+ if (hasIntersection) {
223993
+ if (cross > 0.0) {
223994
+ if (fraction < distanceB)
223995
+ distanceB = fraction;
223827
223996
  }
223828
223997
  else {
223829
- if (distance[0] > distanceA)
223830
- distanceA = distance[0];
223998
+ if (fraction > distanceA)
223999
+ distanceA = fraction;
223831
224000
  }
223832
224001
  if (distanceA > distanceB)
223833
224002
  return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range1d.createNull();
@@ -223870,7 +224039,7 @@ class ConvexPolygon2d {
223870
224039
  return undefined;
223871
224040
  // Get deep copy
223872
224041
  const xy1 = points.slice(0, n);
223873
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
224042
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.lexicalXYLessThan(a, b));
223874
224043
  hull.push(xy1[0]); // This is sure to stay
223875
224044
  hull.push(xy1[1]); // This one can be removed in loop.
223876
224045
  // First sweep creates upper hull
@@ -224319,7 +224488,6 @@ __webpack_require__.r(__webpack_exports__);
224319
224488
  /** @packageDocumentation
224320
224489
  * @module Numerics
224321
224490
  */
224322
- // import { Angle, AngleSweep, Geometry } from "../Geometry";
224323
224491
 
224324
224492
 
224325
224493
 
@@ -224328,7 +224496,6 @@ __webpack_require__.r(__webpack_exports__);
224328
224496
 
224329
224497
 
224330
224498
 
224331
- // import { Arc3d } from "../curve/Arc3d";
224332
224499
  // cspell:word Cardano
224333
224500
  // cspell:word CCminusSS
224334
224501
  /* eslint-disable @typescript-eslint/naming-convention */
@@ -226221,19 +226388,19 @@ class GaussMapper {
226221
226388
  numGaussPoints = 5;
226222
226389
  switch (numGaussPoints) {
226223
226390
  case 1:
226224
- this.mapXAndWFunction = Quadrature.setupGauss1;
226391
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss1(xA, xB, xMapped, wMapped);
226225
226392
  break;
226226
226393
  case 2:
226227
- this.mapXAndWFunction = Quadrature.setupGauss2;
226394
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss2(xA, xB, xMapped, wMapped);
226228
226395
  break;
226229
226396
  case 3:
226230
- this.mapXAndWFunction = Quadrature.setupGauss3;
226397
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss3(xA, xB, xMapped, wMapped);
226231
226398
  break;
226232
226399
  case 4:
226233
- this.mapXAndWFunction = Quadrature.setupGauss4;
226400
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss4(xA, xB, xMapped, wMapped);
226234
226401
  break;
226235
226402
  default:
226236
- this.mapXAndWFunction = Quadrature.setupGauss5;
226403
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
226237
226404
  break;
226238
226405
  }
226239
226406
  }
@@ -228709,7 +228876,7 @@ class IndexedEdgeMatcher {
228709
228876
  }
228710
228877
  /** Sort the edge index array. */
228711
228878
  sort() {
228712
- this.edges.sort(SortableEdge.lessThan);
228879
+ this.edges.sort((edgeA, edgeB) => SortableEdge.lessThan(edgeA, edgeB));
228713
228880
  }
228714
228881
  /** Create a single or compound SortableEdgeCluster in dest. */
228715
228882
  collectSortableEdgeCluster(index0, index1, dest) {
@@ -231092,7 +231259,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
231092
231259
  * * Rely on the builder's compress step to find common vertex coordinates
231093
231260
  * @internal
231094
231261
  */
231095
- addGraph(graph, needParams, acceptFaceFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior, isEdgeVisibleFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testMateMaskExterior) {
231262
+ 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)) {
231096
231263
  let index = 0;
231097
231264
  const needNormals = this._options.needNormals;
231098
231265
  let normalIndex = 0;
@@ -231142,7 +231309,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
231142
231309
  /** Create a polyface containing the faces of a HalfEdgeGraph, with test function to filter faces.
231143
231310
  * @internal
231144
231311
  */
231145
- static graphToPolyface(graph, options, acceptFaceFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior) {
231312
+ static graphToPolyface(graph, options, acceptFaceFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior(node)) {
231146
231313
  const builder = PolyfaceBuilder.create(options);
231147
231314
  builder.addGraph(graph, builder.options.needParams, acceptFaceFunction);
231148
231315
  builder.endFace();
@@ -232662,40 +232829,41 @@ __webpack_require__.r(__webpack_exports__);
232662
232829
  /* harmony export */ PolyfaceQuery: () => (/* binding */ PolyfaceQuery),
232663
232830
  /* harmony export */ SweepLineStringToFacetsOptions: () => (/* binding */ SweepLineStringToFacetsOptions)
232664
232831
  /* harmony export */ });
232665
- /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
232666
232832
  /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
232833
+ /* harmony import */ var _curve_CurveOps__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../curve/CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
232667
232834
  /* harmony import */ var _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../curve/internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
232668
232835
  /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
232669
232836
  /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
232670
232837
  /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
232671
- /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
232838
+ /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
232672
232839
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
232673
232840
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
232674
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
232841
+ /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
232842
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
232675
232843
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
232844
+ /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
232676
232845
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
232677
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
232846
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
232678
232847
  /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
232679
232848
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
232680
232849
  /* harmony import */ var _numerics_UnionFind__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../numerics/UnionFind */ "../../core/geometry/lib/esm/numerics/UnionFind.js");
232681
- /* harmony import */ var _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../topology/ChainMerge */ "../../core/geometry/lib/esm/topology/ChainMerge.js");
232682
- /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
232683
- /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
232684
- /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
232685
- /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
232850
+ /* harmony import */ var _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../topology/ChainMerge */ "../../core/geometry/lib/esm/topology/ChainMerge.js");
232851
+ /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
232852
+ /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
232853
+ /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
232854
+ /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
232855
+ /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
232856
+ /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
232857
+ /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
232686
232858
  /* harmony import */ var _IndexedEdgeMatcher__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./IndexedEdgeMatcher */ "../../core/geometry/lib/esm/polyface/IndexedEdgeMatcher.js");
232687
232859
  /* harmony import */ var _IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
232688
- /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
232860
+ /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
232861
+ /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
232689
232862
  /* harmony import */ var _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./multiclip/SweepLineStringToFacetContext */ "../../core/geometry/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js");
232690
- /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
232863
+ /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
232691
232864
  /* harmony import */ var _Polyface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
232692
232865
  /* harmony import */ var _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
232693
- /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
232694
- /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
232695
- /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
232696
- /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
232697
- /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
232698
- /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
232866
+ /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
232699
232867
  /*---------------------------------------------------------------------------------------------
232700
232868
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
232701
232869
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -232736,6 +232904,7 @@ __webpack_require__.r(__webpack_exports__);
232736
232904
 
232737
232905
 
232738
232906
 
232907
+
232739
232908
 
232740
232909
 
232741
232910
  /**
@@ -233369,18 +233538,18 @@ class PolyfaceQuery {
233369
233538
  edges.push(_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.create(pointA, pointB));
233370
233539
  edgeStrings.push([pointA.clone(), pointB.clone()]);
233371
233540
  });
233372
- const chains = _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_15__.OffsetHelpers.collectChains(edges, gapTolerance, planarityTolerance);
233541
+ const chains = _curve_CurveOps__WEBPACK_IMPORTED_MODULE_17__.CurveOps.collectChains(edges, gapTolerance, planarityTolerance);
233373
233542
  if (chains) {
233374
- const frameBuilder = new _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_17__.FrameBuilder();
233543
+ const frameBuilder = new _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_18__.FrameBuilder();
233375
233544
  frameBuilder.announce(chains);
233376
233545
  const frame = frameBuilder.getValidatedFrame(false);
233377
233546
  if (frame !== undefined) {
233378
233547
  const inverseFrame = frame.inverse();
233379
233548
  if (inverseFrame !== undefined) {
233380
233549
  inverseFrame.multiplyPoint3dArrayArrayInPlace(edgeStrings);
233381
- const graph = _topology_Merging__WEBPACK_IMPORTED_MODULE_18__.HalfEdgeGraphMerge.formGraphFromChains(edgeStrings, true, _topology_Graph__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeMask.BOUNDARY_EDGE);
233550
+ const graph = _topology_Merging__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeGraphMerge.formGraphFromChains(edgeStrings, true, _topology_Graph__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMask.BOUNDARY_EDGE);
233382
233551
  if (graph) {
233383
- _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);
233552
+ _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);
233384
233553
  // this.purgeNullFaces(HalfEdgeMask.EXTERIOR);
233385
233554
  const polyface1 = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.graphToPolyface(graph);
233386
233555
  builder.addIndexedPolyface(polyface1, false, frame);
@@ -233393,14 +233562,14 @@ class PolyfaceQuery {
233393
233562
  }
233394
233563
  /**
233395
233564
  * Return a mesh with "some" holes filled in with new facets.
233396
- * * The candidates to be filled are all loops returned by boundaryChainsAsLineString3d
233397
- * * unclosed chains are rejected.
233398
- * * optionally also copy the original mesh, so the composite is a clone with holes filled.
233565
+ * * Candidate chains are computed by [[announceBoundaryChainsAsLineString3d]].
233566
+ * * Unclosed chains are rejected.
233567
+ * * Closed chains are triangulated and returned as a mesh.
233399
233568
  * * The options structure enforces restrictions on how complicated the hole filling can be:
233400
233569
  * * maxEdgesAroundHole -- holes with more edges are skipped
233401
233570
  * * maxPerimeter -- holes with larger summed edge lengths are skipped.
233402
233571
  * * upVector -- holes that do not have positive area along this view are skipped.
233403
- * * includeOriginalMesh -- includes the original mesh in the output mesh.
233572
+ * * includeOriginalMesh -- includes the original mesh in the output mesh, so the composite mesh is a clone with holes filled
233404
233573
  * @param mesh existing mesh
233405
233574
  * @param options options controlling the hole fill.
233406
233575
  * @param unfilledChains optional array to receive the points around holes that were not filled.
@@ -233419,11 +233588,11 @@ class PolyfaceQuery {
233419
233588
  rejected = true;
233420
233589
  else if (options.maxEdgesAroundHole !== undefined && points.length > options.maxEdgesAroundHole)
233421
233590
  rejected = true;
233422
- else if (options.maxPerimeter !== undefined && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_21__.Point3dArray.sumEdgeLengths(points, false) > options.maxPerimeter)
233591
+ else if (options.maxPerimeter !== undefined && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_22__.Point3dArray.sumEdgeLengths(points, false) > options.maxPerimeter)
233423
233592
  rejected = true;
233424
233593
  else if (options.upVector !== undefined && _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.sumTriangleAreasPerpendicularToUpVector(points, options.upVector) <= 0.0)
233425
233594
  rejected = true;
233426
- if (!rejected && _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_22__.SpacePolygonTriangulation.triangulateSimplestSpaceLoop(points, (_loop, triangles) => {
233595
+ if (!rejected && _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_23__.SpacePolygonTriangulation.triangulateSimplestSpaceLoop(points, (_loop, triangles) => {
233427
233596
  for (const t of triangles)
233428
233597
  builder.addPolygon(t);
233429
233598
  })) {
@@ -233449,7 +233618,7 @@ class PolyfaceQuery {
233449
233618
  }
233450
233619
  polyface.setNumWrap(0);
233451
233620
  const polyfaces = [];
233452
- const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
233621
+ const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
233453
233622
  options.needNormals = polyface.normal !== undefined;
233454
233623
  options.needParams = polyface.param !== undefined;
233455
233624
  options.needColors = polyface.color !== undefined;
@@ -233472,7 +233641,7 @@ class PolyfaceQuery {
233472
233641
  return this.cloneFiltered(source.createVisitor(0), filter);
233473
233642
  }
233474
233643
  source.setNumWrap(0);
233475
- const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
233644
+ const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
233476
233645
  options.needNormals = source.normal !== undefined;
233477
233646
  options.needParams = source.param !== undefined;
233478
233647
  options.needColors = source.color !== undefined;
@@ -233610,7 +233779,7 @@ class PolyfaceQuery {
233610
233779
  true, true, true); // accept all outputs
233611
233780
  let chainContext;
233612
233781
  if (options.assembleChains)
233613
- chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__.ChainMergeContext.create();
233782
+ chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
233614
233783
  const context = _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__.ClipSweptLineStringContext.create(linestringPoints, options.vectorToEye);
233615
233784
  if (context) {
233616
233785
  const visitor = polyface.createVisitor(0);
@@ -233662,7 +233831,7 @@ class PolyfaceQuery {
233662
233831
  * * Facets are ASSUMED to be convex and planar, and not overlap in the z direction.
233663
233832
  */
233664
233833
  static async asyncSweepLinestringToFacetsXYReturnChains(linestringPoints, polyface) {
233665
- const chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__.ChainMergeContext.create();
233834
+ const chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
233666
233835
  await Promise.resolve(this.asyncAnnounceSweepLinestringToConvexPolyfaceXY(linestringPoints, polyface, (_linestring, _segmentIndex, _polyface, _facetIndex, points, indexA, indexB) => {
233667
233836
  chainContext.addSegment(points[indexA], points[indexB]);
233668
233837
  }));
@@ -233678,7 +233847,7 @@ class PolyfaceQuery {
233678
233847
  if (polyface instanceof _Polyface__WEBPACK_IMPORTED_MODULE_6__.Polyface) {
233679
233848
  return this.collectRangeLengthData(polyface.createVisitor(0));
233680
233849
  }
233681
- const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_25__.RangeLengthData();
233850
+ const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__.RangeLengthData();
233682
233851
  // polyface is a visitor ...
233683
233852
  for (polyface.reset(); polyface.moveToNextFacet();)
233684
233853
  rangeData.accumulateGrowableXYZArrayRange(polyface.point);
@@ -233690,9 +233859,9 @@ class PolyfaceQuery {
233690
233859
  static cloneWithTVertexFixup(polyface) {
233691
233860
  const oldFacetVisitor = polyface.createVisitor(1); // This is to visit the existing facets.
233692
233861
  const newFacetVisitor = polyface.createVisitor(0); // This is to build the new facets.
233693
- const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_26__.XYPointBuckets.create(polyface.data.point, 30);
233862
+ const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__.XYPointBuckets.create(polyface.data.point, 30);
233694
233863
  const builder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create();
233695
- const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_27__.Range3d.createNull();
233864
+ const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d.createNull();
233696
233865
  const point0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
233697
233866
  const point1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
233698
233867
  const spacePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
@@ -233800,7 +233969,7 @@ class PolyfaceQuery {
233800
233969
  }
233801
233970
  facetIndexAndVertexIndices.push(entry);
233802
233971
  }
233803
- facetIndexAndVertexIndices.sort(this.compareFacetIndexAndVertexIndices);
233972
+ facetIndexAndVertexIndices.sort((arrayA, arrayB) => this.compareFacetIndexAndVertexIndices(arrayA, arrayB));
233804
233973
  let i0, i1;
233805
233974
  const n = facetIndexAndVertexIndices.length;
233806
233975
  const clusterArray = [];
@@ -234057,7 +234226,7 @@ class PolyfaceQuery {
234057
234226
  * @internal
234058
234227
  */
234059
234228
  static convertToHalfEdgeGraph(mesh) {
234060
- const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_28__.HalfEdgeGraphFromIndexedLoopsContext();
234229
+ const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__.HalfEdgeGraphFromIndexedLoopsContext();
234061
234230
  const visitor = mesh.createVisitor(0);
234062
234231
  for (visitor.reset(); visitor.moveToNextFacet();) {
234063
234232
  builder.insertLoop(visitor.pointIndex);
@@ -234078,14 +234247,14 @@ class PolyfaceQuery {
234078
234247
  * @param mesh
234079
234248
  */
234080
234249
  static reorientVertexOrderAroundFacetsForConsistentOrientation(mesh) {
234081
- return _FacetOrientation__WEBPACK_IMPORTED_MODULE_29__.FacetOrientationFixup.doFixup(mesh);
234250
+ return _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__.FacetOrientationFixup.doFixup(mesh);
234082
234251
  }
234083
234252
  /**
234084
234253
  * Set up indexed normals with one normal in the plane of each facet of the mesh.
234085
234254
  * @param polyface
234086
234255
  */
234087
234256
  static buildPerFaceNormals(polyface) {
234088
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
234257
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
234089
234258
  }
234090
234259
  /**
234091
234260
  * * At each vertex of the mesh
@@ -234098,7 +234267,7 @@ class PolyfaceQuery {
234098
234267
  * @param toleranceAngle averaging is done between normals up to this angle.
234099
234268
  */
234100
234269
  static buildAverageNormals(polyface, toleranceAngle = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(31.0)) {
234101
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
234270
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
234102
234271
  }
234103
234272
  /**
234104
234273
  * Offset the faces of the mesh.
@@ -234108,9 +234277,9 @@ class PolyfaceQuery {
234108
234277
  * @returns shifted mesh.
234109
234278
  */
234110
234279
  static cloneOffset(source, signedOffsetDistance, offsetOptions = OffsetMeshOptions.create()) {
234111
- const strokeOptions = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
234280
+ const strokeOptions = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
234112
234281
  const offsetBuilder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create(strokeOptions);
234113
- _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_31__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
234282
+ _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
234114
234283
  return offsetBuilder.claimPolyface();
234115
234284
  }
234116
234285
  /** Search facets for the first one that intersects the infinite line.
@@ -234134,17 +234303,17 @@ class PolyfaceQuery {
234134
234303
  const numEdges = visitor.pointCount; // #vertices = #edges since numWrap is zero
234135
234304
  const vertices = visitor.point;
234136
234305
  if (3 === numEdges) {
234137
- const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_32__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
234306
+ const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
234138
234307
  const detail3 = this._workTriDetail = tri.intersectRay3d(ray, this._workTriDetail);
234139
234308
  tri.snapLocationToEdge(detail3, options?.distanceTolerance, options?.parameterTolerance);
234140
- detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
234309
+ detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
234141
234310
  }
234142
234311
  else {
234143
234312
  const detailN = this._workPolyDetail = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.intersectRay3d(vertices, ray, options?.distanceTolerance, this._workPolyDetail);
234144
234313
  if (_geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.isConvex(vertices))
234145
- detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
234314
+ detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
234146
234315
  else
234147
- detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
234316
+ detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
234148
234317
  }
234149
234318
  if (detail.isInsideOrOn) { // set optional caches, process the intersection
234150
234319
  if (options?.needNormal && visitor.normal)
@@ -234381,7 +234550,7 @@ class TaggedNumericData {
234381
234550
  if (this.tagB !== other.tagB)
234382
234551
  return false;
234383
234552
  return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.exactEqualNumberArrays(this.intData, other.intData)
234384
- && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.almostEqualArrays(this.doubleData, other.doubleData, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber);
234553
+ && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.almostEqualArrays(this.doubleData, other.doubleData, (a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(a, b));
234385
234554
  }
234386
234555
  static areAlmostEqual(dataA, dataB) {
234387
234556
  if (dataA === undefined && dataB === undefined)
@@ -234641,7 +234810,7 @@ class BuildAverageNormalsContext {
234641
234810
  }
234642
234811
  }
234643
234812
  // Sort by the vertex index so all the sectors around each vertex are clustered . .
234644
- sectors.sort(SectorData.cbVertexSort);
234813
+ sectors.sort((left, right) => SectorData.cbVertexSort(left, right));
234645
234814
  // Walk the sectors around each vertex . ..
234646
234815
  // For each unassigned sector
234647
234816
  // walk to further sectors of the same vertex with near-parallel normals, accumulating average normal.
@@ -234674,7 +234843,7 @@ class BuildAverageNormalsContext {
234674
234843
  }
234675
234844
  }
234676
234845
  // Resort by original sector index.
234677
- sectors.sort(SectorData.cbSectorSort);
234846
+ sectors.sort((left, right) => SectorData.cbSectorSort(left, right));
234678
234847
  // normalize the sums and emplace in the facets . . .
234679
234848
  polyface.data.normalIndex = [];
234680
234849
  polyface.data.normal = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArray(sectors.length);
@@ -246403,9 +246572,7 @@ var IModelJson;
246403
246572
  return _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_10__.CoordinateXYZ.create(point);
246404
246573
  return undefined;
246405
246574
  }
246406
- /** Parse TransitionSpiral content (right side) to TransitionSpiral3d
246407
- * @alpha
246408
- */
246575
+ /** Parse TransitionSpiral content (right side) to TransitionSpiral3d. */
246409
246576
  static parseTransitionSpiral(data) {
246410
246577
  const axes = Reader.parseOrientation(data, true);
246411
246578
  const origin = Reader.parsePoint3dProperty(data, "origin");
@@ -247043,10 +247210,7 @@ var IModelJson;
247043
247210
  }
247044
247211
  data.xyVectors = [vectorU.toJSON(), vectorV.toJSON()];
247045
247212
  }
247046
- /**
247047
- * parse properties of a TransitionSpiral.
247048
- * @alpha
247049
- */
247213
+ /** Parse properties of a TransitionSpiral. */
247050
247214
  handleTransitionSpiral(data) {
247051
247215
  // TODO: HANDLE NONRIGID TRANSFORM !!
247052
247216
  // the spiral may have indication of how it was defined. If so, use defined/undefined state of the original data
@@ -249936,7 +250100,7 @@ class ChainMergeContext {
249936
250100
  p.sortData = this.primarySortKey(p);
249937
250101
  }
249938
250102
  const sortArray = this._graph.allHalfEdges.slice();
249939
- sortArray.sort(ChainMergeContext.nodeCompareSortData);
250103
+ sortArray.sort((nodeA, nodeB) => ChainMergeContext.nodeCompareSortData(nodeA, nodeB));
249940
250104
  const xyzTolerance = this._options.tolerance;
249941
250105
  // A node is unvisited if it is its own vertex successor !!!
249942
250106
  // otherwise the node has already been twisted into a base vertex.
@@ -251678,7 +251842,7 @@ class HalfEdgeGraphSearch {
251678
251842
  * @param collectAllNodes flag to pass to the SignedDataSummary constructor to control collection of nodes.
251679
251843
  * @param areaFunction function to all to obtain area (or other numeric value)
251680
251844
  */
251681
- static collectFaceAreaSummary(source, collectAllNodes = false, areaFunction = HalfEdgeGraphSearch.signedFaceArea) {
251845
+ static collectFaceAreaSummary(source, collectAllNodes = false, areaFunction = (node) => HalfEdgeGraphSearch.signedFaceArea(node)) {
251682
251846
  const result = new _SignedDataSummary__WEBPACK_IMPORTED_MODULE_0__.SignedDataSummary(collectAllNodes);
251683
251847
  let allFaces;
251684
251848
  if (source instanceof _Graph__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraph)
@@ -252931,7 +253095,7 @@ __webpack_require__.r(__webpack_exports__);
252931
253095
  * @internal
252932
253096
  */
252933
253097
  class HalfEdgePriorityQueueWithPartnerArray {
252934
- constructor(compare = _Merging__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraphOps.compareNodesYXUp) {
253098
+ constructor(compare = (a, b) => _Merging__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraphOps.compareNodesYXUp(a, b)) {
252935
253099
  this.priorityQueue = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.PriorityQueue(compare);
252936
253100
  this.activeEdges = [];
252937
253101
  }
@@ -254160,7 +254324,7 @@ class RegularizationContext {
254160
254324
  }
254161
254325
  downwardConnectionFromBottomPeak(node) {
254162
254326
  let connectTo;
254163
- const upFunction = _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp;
254327
+ const upFunction = (a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b);
254164
254328
  const upEdgeBase = this.findTopVisibleEdge(node, this.upEdges, 1.0);
254165
254329
  const downEdgeBase = this.findTopVisibleEdge(node, this.downEdges, -1.0);
254166
254330
  connectTo = this.updateMaxNode(connectTo, upEdgeBase, upFunction);
@@ -254213,7 +254377,7 @@ class RegularizationContext {
254213
254377
  */
254214
254378
  runRegularization(upSweep = true, downSweep = true) {
254215
254379
  if (upSweep) {
254216
- this.bottomPeaks.sort(_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp);
254380
+ this.bottomPeaks.sort((a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b));
254217
254381
  for (const bottomPeak of this.bottomPeaks) {
254218
254382
  // GeometryCoreTestIO.consoleLog("SEARCH", bottomPeak.id, [bottomPeak.x, bottomPeak.y]);
254219
254383
  if (!_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.isDownPeak(bottomPeak))
@@ -254230,7 +254394,7 @@ class RegularizationContext {
254230
254394
  this.negateXY();
254231
254395
  // swap the various p and down seeds ....
254232
254396
  this.swapArrays();
254233
- this.bottomPeaks.sort(_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp);
254397
+ this.bottomPeaks.sort((a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b));
254234
254398
  for (const bottomPeak of this.bottomPeaks) {
254235
254399
  if (!_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.isDownPeak(bottomPeak))
254236
254400
  continue;
@@ -255173,7 +255337,7 @@ class Triangulator {
255173
255337
  *
255174
255338
  */
255175
255339
  static spliceLeftMostNodesOfHoles(graph, outerNode, leftMostHoleLoopNode) {
255176
- leftMostHoleLoopNode.sort(Triangulator.compareX);
255340
+ leftMostHoleLoopNode.sort((a, b) => Triangulator.compareX(a, b));
255177
255341
  let numFail = 0;
255178
255342
  // process holes from left to right
255179
255343
  for (const holeStart of leftMostHoleLoopNode) {
@@ -277107,8 +277271,7 @@ const isStageLauncher = (item) => {
277107
277271
  class BackstageItemUtilities {
277108
277272
  }
277109
277273
  /** Creates a stage launcher backstage item */
277110
- BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemPriority, label, subtitle, icon, overrides // eslint-disable-line deprecation/deprecation
277111
- ) => ({
277274
+ BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemPriority, label, subtitle, icon, overrides) => ({
277112
277275
  groupPriority,
277113
277276
  icon,
277114
277277
  internalData: overrides?.internalData,
@@ -277120,8 +277283,7 @@ BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemP
277120
277283
  ...overrides,
277121
277284
  });
277122
277285
  /** Creates an action backstage item */
277123
- BackstageItemUtilities.createActionItem = (itemId, groupPriority, itemPriority, execute, label, subtitle, icon, overrides // eslint-disable-line deprecation/deprecation
277124
- ) => ({
277286
+ BackstageItemUtilities.createActionItem = (itemId, groupPriority, itemPriority, execute, label, subtitle, icon, overrides) => ({
277125
277287
  execute,
277126
277288
  groupPriority,
277127
277289
  icon,
@@ -286551,7 +286713,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
286551
286713
  /***/ ((module) => {
286552
286714
 
286553
286715
  "use strict";
286554
- 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"}}]}}');
286716
+ 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"}}');
286555
286717
 
286556
286718
  /***/ })
286557
286719