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

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