@itwin/ecschema-rpcinterface-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.
@@ -24503,7 +24503,7 @@ class Logger {
24503
24503
  * @param log The logger output function to use - defaults to Logger.logError
24504
24504
  * @param metaData Optional data for the message
24505
24505
  */
24506
- static logException(category, err, log = Logger.logError) {
24506
+ static logException(category, err, log = (_category, message) => Logger.logError(_category, message)) {
24507
24507
  log(category, Logger.getExceptionMessage(err), () => {
24508
24508
  return { ..._BentleyError__WEBPACK_IMPORTED_MODULE_0__.BentleyError.getErrorMetadata(err), exceptionType: err.constructor.name };
24509
24509
  });
@@ -26558,10 +26558,10 @@ class Tracing {
26558
26558
  static enableOpenTelemetry(tracer, api) {
26559
26559
  Tracing._tracer = tracer;
26560
26560
  Tracing._openTelemetry = api;
26561
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace);
26562
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo);
26563
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning);
26564
- _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError = Tracing.withOpenTelemetry(_Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError);
26561
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logTrace(category, message, metaData));
26562
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logInfo(category, message, metaData));
26563
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(category, message, metaData));
26564
+ _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError = (category, message, metaData) => Tracing.withOpenTelemetry(() => _Logger__WEBPACK_IMPORTED_MODULE_0__.Logger.logError(category, message, metaData));
26565
26565
  }
26566
26566
  static withOpenTelemetry(base, isError = false) {
26567
26567
  return (category, message, metaData) => {
@@ -32599,9 +32599,9 @@ class PropertyMetaData {
32599
32599
  case PrimitiveTypeCode.String:
32600
32600
  return jsonObj; // this works even for arrays or strings that are JSON because the parsed JSON is already the right type
32601
32601
  case PrimitiveTypeCode.Point2d:
32602
- return this.createValueOrArray(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.fromJSON, jsonObj);
32602
+ return this.createValueOrArray((obj) => _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.fromJSON(obj), jsonObj);
32603
32603
  case PrimitiveTypeCode.Point3d:
32604
- return this.createValueOrArray(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON, jsonObj);
32604
+ return this.createValueOrArray((obj) => _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(obj), jsonObj);
32605
32605
  }
32606
32606
  }
32607
32607
  if (this.isNavigation)
@@ -40654,7 +40654,7 @@ class RpcInterface {
40654
40654
  // patch difference is fine. If minor versions differ, compatible as long as backend minor version is greater
40655
40655
  return difference === "patch" || (difference === "minor" && frontendSemver.minor < backendSemver.minor);
40656
40656
  }
40657
- /** @internal */
40657
+ /** @beta */
40658
40658
  constructor(routing = _rpc_core_RpcRoutingToken__WEBPACK_IMPORTED_MODULE_3__.RpcRoutingToken.default) {
40659
40659
  this.routing = routing;
40660
40660
  this.configuration = _rpc_core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_0__.RpcConfiguration.supply(this);
@@ -45099,7 +45099,7 @@ var AreaPattern;
45099
45099
  applyTransform(transform) {
45100
45100
  if (transform.isIdentity)
45101
45101
  return true;
45102
- const origin = this.origin ? this.origin : _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero();
45102
+ let origin = this.origin ? this.origin : _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero();
45103
45103
  const rMatrix = this.rotation ? this.rotation.toMatrix3d() : _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix3d.createIdentity();
45104
45104
  if (this.symbolId !== undefined) {
45105
45105
  this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);
@@ -45132,7 +45132,7 @@ var AreaPattern;
45132
45132
  if (this.space2 && 0 !== this.space2)
45133
45133
  this.space2 = Params.transformPatternSpace(transform, this.space2, rMatrix, this.angle2);
45134
45134
  }
45135
- transform.multiplyPoint3d(origin);
45135
+ origin = transform.multiplyPoint3d(origin);
45136
45136
  rMatrix.multiplyMatrixMatrix(transform.matrix, rMatrix);
45137
45137
  const normalized = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix3d.createRigidFromMatrix3d(rMatrix);
45138
45138
  if (!normalized)
@@ -55043,7 +55043,7 @@ class RpcMarshaling {
55043
55043
  }
55044
55044
  marshalingTarget = serialized;
55045
55045
  chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
55046
- serialized.objects = JSON.stringify(value, WireFormat.marshal);
55046
+ serialized.objects = JSON.stringify(value, (_key, _value) => WireFormat.marshal(_key, _value));
55047
55047
  marshalingTarget = undefined;
55048
55048
  chunkThreshold = 0;
55049
55049
  return serialized;
@@ -55057,7 +55057,7 @@ class RpcMarshaling {
55057
55057
  chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
55058
55058
  let result;
55059
55059
  try {
55060
- result = JSON.parse(value.objects, WireFormat.unmarshal);
55060
+ result = JSON.parse(value.objects, (_key, _value) => WireFormat.unmarshal(_key, _value));
55061
55061
  }
55062
55062
  catch (error) {
55063
55063
  if (error instanceof SyntaxError)
@@ -57222,7 +57222,7 @@ class WebAppRpcProtocol extends _core_RpcProtocol__WEBPACK_IMPORTED_MODULE_3__.R
57222
57222
  /** The RPC request class for this protocol. */
57223
57223
  this.requestType = _WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_6__.WebAppRpcRequest;
57224
57224
  this.supportsStatusCategory = true;
57225
- this.events.addListener(_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__.WebAppRpcLogging.logProtocolEvent);
57225
+ this.events.addListener(async (event, object) => _WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_5__.WebAppRpcLogging.logProtocolEvent(event, object));
57226
57226
  }
57227
57227
  }
57228
57228
 
@@ -63749,13 +63749,13 @@ class ECClass extends SchemaItem_1.SchemaItem {
63749
63749
  const key = new SchemaKey_1.SchemaItemKey(targetClass, new SchemaKey_1.SchemaKey(schemaName));
63750
63750
  if (SchemaItem_1.SchemaItem.equalByKey(this, key))
63751
63751
  return true;
63752
- return this.traverseBaseClasses(SchemaItem_1.SchemaItem.equalByKey, key);
63752
+ return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), key);
63753
63753
  }
63754
63754
  else {
63755
63755
  (0, core_bentley_1.assert)(ECClass.isECClass(targetClass), "Expected targetClass to be of type ECClass");
63756
63756
  if (SchemaItem_1.SchemaItem.equalByKey(this, targetClass))
63757
63757
  return true;
63758
- return this.traverseBaseClasses(SchemaItem_1.SchemaItem.equalByKey, targetClass);
63758
+ return this.traverseBaseClasses((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);
63759
63759
  }
63760
63760
  }
63761
63761
  /**
@@ -63765,7 +63765,7 @@ class ECClass extends SchemaItem_1.SchemaItem {
63765
63765
  isSync(targetClass) {
63766
63766
  if (SchemaItem_1.SchemaItem.equalByKey(this, targetClass))
63767
63767
  return true;
63768
- return this.traverseBaseClassesSync(SchemaItem_1.SchemaItem.equalByKey, targetClass);
63768
+ return this.traverseBaseClassesSync((thisSchemaItem, thatSchemaItemOrKey) => SchemaItem_1.SchemaItem.equalByKey(thisSchemaItem, thatSchemaItemOrKey), targetClass);
63769
63769
  }
63770
63770
  /**
63771
63771
  * @internal
@@ -79943,7 +79943,7 @@ class IModelApp {
79943
79943
  * @note As of 4.x, iTwin.js requires WebGL 2. If the client does not support WebGL 2, the `status` field of the returned compatibility info will be [WebGLRenderCompatibilityStatus.CannotCreateContext]($webgl-compatibility).
79944
79944
  */
79945
79945
  static queryRenderCompatibility() {
79946
- return (0,_itwin_webgl_compatibility__WEBPACK_IMPORTED_MODULE_5__.queryRenderCompatibility)(true, _render_webgl_System__WEBPACK_IMPORTED_MODULE_21__.System.createContext);
79946
+ return (0,_itwin_webgl_compatibility__WEBPACK_IMPORTED_MODULE_5__.queryRenderCompatibility)(true, (canvas, useWebGL2, inputContextAttributes) => _render_webgl_System__WEBPACK_IMPORTED_MODULE_21__.System.createContext(canvas, useWebGL2, inputContextAttributes));
79947
79947
  }
79948
79948
  /**
79949
79949
  * This method must be called before any other `@itwin/core-frontend` methods are used.
@@ -80030,7 +80030,7 @@ class IModelApp {
80030
80030
  this.onBeforeShutdown.clear();
80031
80031
  if (false) {}
80032
80032
  this._wantEventLoop = false;
80033
- window.removeEventListener("resize", IModelApp.requestNextAnimation);
80033
+ window.removeEventListener("resize", () => IModelApp.requestNextAnimation());
80034
80034
  this.clearIntervalAnimation();
80035
80035
  [this.toolAdmin, this.viewManager, this.tileAdmin].forEach((sys) => sys.onShutDown());
80036
80036
  this.tools.shutdown();
@@ -80067,7 +80067,7 @@ class IModelApp {
80067
80067
  return;
80068
80068
  if (!IModelApp._animationRequested) {
80069
80069
  IModelApp._animationRequested = true;
80070
- requestAnimationFrame(IModelApp.eventLoop);
80070
+ requestAnimationFrame(() => IModelApp.eventLoop());
80071
80071
  }
80072
80072
  }
80073
80073
  /** @internal */
@@ -80089,7 +80089,7 @@ class IModelApp {
80089
80089
  static startEventLoop() {
80090
80090
  if (!IModelApp._wantEventLoop) {
80091
80091
  IModelApp._wantEventLoop = true;
80092
- window.addEventListener("resize", IModelApp.requestNextAnimation);
80092
+ window.addEventListener("resize", () => IModelApp.requestNextAnimation());
80093
80093
  IModelApp.requestIntervalAnimation();
80094
80094
  IModelApp.requestNextAnimation();
80095
80095
  }
@@ -80112,7 +80112,7 @@ class IModelApp {
80112
80112
  _tools_ToolAdmin__WEBPACK_IMPORTED_MODULE_33__.ToolAdmin.exceptionHandler(exception); // eslint-disable-line @typescript-eslint/no-floating-promises
80113
80113
  IModelApp._wantEventLoop = false;
80114
80114
  IModelApp._animationRequested = true; // unrecoverable after exception, don't request any further frames.
80115
- window.removeEventListener("resize", IModelApp.requestNextAnimation);
80115
+ window.removeEventListener("resize", () => IModelApp.requestNextAnimation());
80116
80116
  }
80117
80117
  }
80118
80118
  /** Get the user's access token for this IModelApp, or a blank string if none is available.
@@ -123225,7 +123225,7 @@ class IdMap {
123225
123225
  /** Mapping of textures by their key values. */
123226
123226
  this.textures = new Map();
123227
123227
  /** Mapping of textures using gradient symbology. */
123228
- this.gradients = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Dictionary(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.Gradient.Symb.compareSymb);
123228
+ this.gradients = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Dictionary((lhs, rhs) => _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.Gradient.Symb.compareSymb(lhs, rhs));
123229
123229
  /** Pending promises to create a texture from an ImageSource. This prevents us from decoding the same ImageSource multiple times */
123230
123230
  this.texturesFromImageSources = new Map();
123231
123231
  this._iModel = iModel;
@@ -138117,7 +138117,7 @@ class GltfReader {
138117
138117
  }
138118
138118
  }
138119
138119
  const uvs = draco.attributes.TEXCOORD_0?.value;
138120
- if (uvs && (uvs.length & 2) === 0)
138120
+ if (uvs && (uvs.length % 2) === 0)
138121
138121
  for (let i = 0; i < uvs.length; i += 2)
138122
138122
  mesh.uvParams.push(new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d(uvs[i], uvs[i + 1]));
138123
138123
  const batchIds = draco.attributes._BATCHID?.value;
@@ -170743,7 +170743,7 @@ __webpack_require__.r(__webpack_exports__);
170743
170743
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
170744
170744
  /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
170745
170745
  /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
170746
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
170746
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
170747
170747
  /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
170748
170748
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
170749
170749
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
@@ -171054,7 +171054,7 @@ class BSplineCurve3dBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_
171054
171054
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
171055
171055
  */
171056
171056
  constructOffsetXY(offsetDistanceOrOptions) {
171057
- const options = _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
171057
+ const options = _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
171058
171058
  const handler = new _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
171059
171059
  this.emitStrokableParts(handler, options.strokeOptions);
171060
171060
  return handler.claimResult();
@@ -173359,7 +173359,7 @@ class BSplineSurface3dH extends BSpline2dNd {
173359
173359
  /** Return a simple array of the control points. */
173360
173360
  copyPoints4d() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_6__.Point4dArray.unpackToPoint4dArray(this.coffs); }
173361
173361
  /** Return a simple array of the control points. */
173362
- copyPointsAndWeights(points, weights, formatter = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create) {
173362
+ copyPointsAndWeights(points, weights, formatter = (x, y, z) => _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z)) {
173363
173363
  _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_6__.Point4dArray.unpackFloat64ArrayToPointsAndWeights(this.coffs, points, weights, formatter);
173364
173364
  }
173365
173365
  /** unpack from xyzw xyzw ... to packed xyz, optionally unweighted
@@ -174570,7 +174570,7 @@ __webpack_require__.r(__webpack_exports__);
174570
174570
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
174571
174571
  /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
174572
174572
  /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
174573
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
174573
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
174574
174574
  /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
174575
174575
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
174576
174576
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
@@ -174786,7 +174786,7 @@ class BezierCurveBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__
174786
174786
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
174787
174787
  */
174788
174788
  constructOffsetXY(offsetDistanceOrOptions) {
174789
- const options = _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__.OffsetOptions.create(offsetDistanceOrOptions);
174789
+ const options = _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_7__.OffsetOptions.create(offsetDistanceOrOptions);
174790
174790
  const handler = new _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
174791
174791
  this.emitStrokableParts(handler, options.strokeOptions);
174792
174792
  return handler.claimResult();
@@ -180617,161 +180617,160 @@ class LineStringOffsetClipperContext {
180617
180617
  "use strict";
180618
180618
  __webpack_require__.r(__webpack_exports__);
180619
180619
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
180620
- /* harmony export */ AbstractNewtonIterator: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.AbstractNewtonIterator),
180621
- /* harmony export */ AkimaCurve3d: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__.AkimaCurve3d),
180622
- /* harmony export */ AkimaCurve3dOptions: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__.AkimaCurve3dOptions),
180623
- /* harmony export */ AnalyticRoots: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.AnalyticRoots),
180620
+ /* harmony export */ AbstractNewtonIterator: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.AbstractNewtonIterator),
180621
+ /* harmony export */ AkimaCurve3d: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__.AkimaCurve3d),
180622
+ /* harmony export */ AkimaCurve3dOptions: () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__.AkimaCurve3dOptions),
180623
+ /* harmony export */ AnalyticRoots: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.AnalyticRoots),
180624
180624
  /* harmony export */ Angle: () => (/* reexport safe */ _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle),
180625
180625
  /* harmony export */ AngleSweep: () => (/* reexport safe */ _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep),
180626
- /* harmony export */ AnnotatedLineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__.AnnotatedLineString3d),
180627
- /* harmony export */ Arc3d: () => (/* reexport safe */ _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__.Arc3d),
180628
- /* harmony export */ AuxChannel: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannel),
180629
- /* harmony export */ AuxChannelData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannelData),
180630
- /* harmony export */ AuxChannelDataType: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.AuxChannelDataType),
180631
- /* harmony export */ AxisIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisIndex),
180632
- /* harmony export */ AxisOrder: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisOrder),
180633
- /* harmony export */ AxisScaleSelect: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.AxisScaleSelect),
180634
- /* harmony export */ BSpline1dNd: () => (/* reexport safe */ _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_105__.BSpline1dNd),
180635
- /* harmony export */ BSpline2dNd: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSpline2dNd),
180636
- /* harmony export */ BSplineCurve3d: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__.BSplineCurve3d),
180637
- /* harmony export */ BSplineCurve3dBase: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__.BSplineCurve3dBase),
180638
- /* harmony export */ BSplineCurve3dH: () => (/* reexport safe */ _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_106__.BSplineCurve3dH),
180639
- /* harmony export */ BSplineCurveOps: () => (/* reexport safe */ _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_104__.BSplineCurveOps),
180640
- /* harmony export */ BSplineSurface3d: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSplineSurface3d),
180641
- /* harmony export */ BSplineSurface3dH: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.BSplineSurface3dH),
180642
- /* harmony export */ BSplineWrapMode: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__.BSplineWrapMode),
180643
- /* harmony export */ BagOfCurves: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.BagOfCurves),
180626
+ /* harmony export */ AnnotatedLineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__.AnnotatedLineString3d),
180627
+ /* harmony export */ Arc3d: () => (/* reexport safe */ _curve_Arc3d__WEBPACK_IMPORTED_MODULE_60__.Arc3d),
180628
+ /* harmony export */ AuxChannel: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannel),
180629
+ /* harmony export */ AuxChannelData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannelData),
180630
+ /* harmony export */ AuxChannelDataType: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.AuxChannelDataType),
180631
+ /* harmony export */ AxisIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisIndex),
180632
+ /* harmony export */ AxisOrder: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisOrder),
180633
+ /* harmony export */ AxisScaleSelect: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.AxisScaleSelect),
180634
+ /* harmony export */ BSpline1dNd: () => (/* reexport safe */ _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_107__.BSpline1dNd),
180635
+ /* harmony export */ BSpline2dNd: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSpline2dNd),
180636
+ /* harmony export */ BSplineCurve3d: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__.BSplineCurve3d),
180637
+ /* harmony export */ BSplineCurve3dBase: () => (/* reexport safe */ _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__.BSplineCurve3dBase),
180638
+ /* harmony export */ BSplineCurve3dH: () => (/* reexport safe */ _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_108__.BSplineCurve3dH),
180639
+ /* harmony export */ BSplineCurveOps: () => (/* reexport safe */ _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_106__.BSplineCurveOps),
180640
+ /* harmony export */ BSplineSurface3d: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSplineSurface3d),
180641
+ /* harmony export */ BSplineSurface3dH: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.BSplineSurface3dH),
180642
+ /* harmony export */ BSplineWrapMode: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__.BSplineWrapMode),
180643
+ /* harmony export */ BagOfCurves: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.BagOfCurves),
180644
180644
  /* harmony export */ BarycentricTriangle: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.BarycentricTriangle),
180645
- /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_127__.BentleyGeometryFlatBuffer),
180646
- /* harmony export */ Bezier1dNd: () => (/* reexport safe */ _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_99__.Bezier1dNd),
180647
- /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.BezierBezierIntersectionXYRRToRRD),
180648
- /* harmony export */ BezierCoffs: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.BezierCoffs),
180649
- /* harmony export */ BezierCurve3d: () => (/* reexport safe */ _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_101__.BezierCurve3d),
180650
- /* harmony export */ BezierCurve3dH: () => (/* reexport safe */ _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_102__.BezierCurve3dH),
180651
- /* harmony export */ BezierCurveBase: () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_100__.BezierCurveBase),
180652
- /* harmony export */ BezierPolynomialAlgebra: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.BezierPolynomialAlgebra),
180645
+ /* harmony export */ BentleyGeometryFlatBuffer: () => (/* reexport safe */ _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__.BentleyGeometryFlatBuffer),
180646
+ /* harmony export */ Bezier1dNd: () => (/* reexport safe */ _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_101__.Bezier1dNd),
180647
+ /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.BezierBezierIntersectionXYRRToRRD),
180648
+ /* harmony export */ BezierCoffs: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierCoffs),
180649
+ /* harmony export */ BezierCurve3d: () => (/* reexport safe */ _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_103__.BezierCurve3d),
180650
+ /* harmony export */ BezierCurve3dH: () => (/* reexport safe */ _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_104__.BezierCurve3dH),
180651
+ /* harmony export */ BezierCurveBase: () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_102__.BezierCurveBase),
180652
+ /* harmony export */ BezierPolynomialAlgebra: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierPolynomialAlgebra),
180653
180653
  /* harmony export */ BilinearPatch: () => (/* reexport safe */ _geometry3d_BilinearPatch__WEBPACK_IMPORTED_MODULE_4__.BilinearPatch),
180654
- /* harmony export */ BilinearPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.BilinearPolynomial),
180655
- /* harmony export */ BooleanClipFactory: () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_37__.BooleanClipFactory),
180656
- /* harmony export */ Box: () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_89__.Box),
180657
- /* harmony export */ BoxTopology: () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_111__.BoxTopology),
180658
- /* harmony export */ ClipMaskXYZRangePlanes: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipMaskXYZRangePlanes),
180659
- /* harmony export */ ClipPlane: () => (/* reexport safe */ _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_38__.ClipPlane),
180660
- /* harmony export */ ClipPlaneContainment: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipPlaneContainment),
180661
- /* harmony export */ ClipPrimitive: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipPrimitive),
180662
- /* harmony export */ ClipShape: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__.ClipShape),
180663
- /* harmony export */ ClipStatus: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipStatus),
180664
- /* harmony export */ ClipStepAction: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipStepAction),
180665
- /* harmony export */ ClipUtilities: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__.ClipUtilities),
180666
- /* harmony export */ ClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__.ClipVector),
180667
- /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__.ClippedPolyfaceBuilders),
180668
- /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_51__.ClusterableArray),
180669
- /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__.Complex),
180670
- /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_90__.Cone),
180671
- /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.ConsolidateAdjacentCurvePrimitivesOptions),
180672
- /* harmony export */ Constant: () => (/* reexport safe */ _Constant__WEBPACK_IMPORTED_MODULE_36__.Constant),
180673
- /* harmony export */ ConstructCurveBetweenCurves: () => (/* reexport safe */ _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__.ConstructCurveBetweenCurves),
180674
- /* harmony export */ ConvexClipPlaneSet: () => (/* reexport safe */ _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_39__.ConvexClipPlaneSet),
180675
- /* harmony export */ ConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.ConvexFacetLocationDetail),
180676
- /* harmony export */ ConvexPolygon2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__.ConvexPolygon2d),
180677
- /* harmony export */ CoordinateXYZ: () => (/* reexport safe */ _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_61__.CoordinateXYZ),
180678
- /* harmony export */ CurveChain: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.CurveChain),
180679
- /* harmony export */ CurveChainWireOffsetContext: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.CurveChainWireOffsetContext),
180680
- /* harmony export */ CurveChainWithDistanceIndex: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__.CurveChainWithDistanceIndex),
180681
- /* harmony export */ CurveCollection: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__.CurveCollection),
180682
- /* harmony export */ CurveCurve: () => (/* reexport safe */ _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_65__.CurveCurve),
180683
- /* harmony export */ CurveCurveApproachType: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveCurveApproachType),
180684
- /* harmony export */ CurveCurveIntersectXY: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.CurveCurveIntersectXY),
180685
- /* harmony export */ CurveCurveIntersectXYZ: () => (/* reexport safe */ _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_67__.CurveCurveIntersectXYZ),
180686
- /* harmony export */ CurveExtendMode: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__.CurveExtendMode),
180687
- /* harmony export */ CurveExtendOptions: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__.CurveExtendOptions),
180688
- /* harmony export */ CurveFactory: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__.CurveFactory),
180689
- /* harmony export */ CurveIntervalRole: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveIntervalRole),
180690
- /* harmony export */ CurveLocationDetail: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveLocationDetail),
180691
- /* harmony export */ CurveLocationDetailArrayPair: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__.CurveLocationDetailArrayPair),
180692
- /* harmony export */ CurveLocationDetailPair: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveLocationDetailPair),
180693
- /* harmony export */ CurvePrimitive: () => (/* reexport safe */ _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_70__.CurvePrimitive),
180694
- /* harmony export */ CurveSearchStatus: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__.CurveSearchStatus),
180654
+ /* harmony export */ BilinearPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.BilinearPolynomial),
180655
+ /* harmony export */ BooleanClipFactory: () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__.BooleanClipFactory),
180656
+ /* harmony export */ Box: () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_91__.Box),
180657
+ /* harmony export */ BoxTopology: () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_113__.BoxTopology),
180658
+ /* harmony export */ ClipMaskXYZRangePlanes: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipMaskXYZRangePlanes),
180659
+ /* harmony export */ ClipPlane: () => (/* reexport safe */ _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_39__.ClipPlane),
180660
+ /* harmony export */ ClipPlaneContainment: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipPlaneContainment),
180661
+ /* harmony export */ ClipPrimitive: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipPrimitive),
180662
+ /* harmony export */ ClipShape: () => (/* reexport safe */ _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__.ClipShape),
180663
+ /* harmony export */ ClipStatus: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipStatus),
180664
+ /* harmony export */ ClipStepAction: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipStepAction),
180665
+ /* harmony export */ ClipUtilities: () => (/* reexport safe */ _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__.ClipUtilities),
180666
+ /* harmony export */ ClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.ClipVector),
180667
+ /* harmony export */ ClippedPolyfaceBuilders: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.ClippedPolyfaceBuilders),
180668
+ /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__.ClusterableArray),
180669
+ /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__.Complex),
180670
+ /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_92__.Cone),
180671
+ /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.ConsolidateAdjacentCurvePrimitivesOptions),
180672
+ /* harmony export */ Constant: () => (/* reexport safe */ _Constant__WEBPACK_IMPORTED_MODULE_37__.Constant),
180673
+ /* harmony export */ ConstructCurveBetweenCurves: () => (/* reexport safe */ _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_61__.ConstructCurveBetweenCurves),
180674
+ /* harmony export */ ConvexClipPlaneSet: () => (/* reexport safe */ _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_40__.ConvexClipPlaneSet),
180675
+ /* harmony export */ ConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.ConvexFacetLocationDetail),
180676
+ /* harmony export */ ConvexPolygon2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_45__.ConvexPolygon2d),
180677
+ /* harmony export */ CoordinateXYZ: () => (/* reexport safe */ _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_62__.CoordinateXYZ),
180678
+ /* harmony export */ CurveChain: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.CurveChain),
180679
+ /* harmony export */ CurveChainWithDistanceIndex: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__.CurveChainWithDistanceIndex),
180680
+ /* harmony export */ CurveCollection: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.CurveCollection),
180681
+ /* harmony export */ CurveCurve: () => (/* reexport safe */ _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_66__.CurveCurve),
180682
+ /* harmony export */ CurveCurveApproachType: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveCurveApproachType),
180683
+ /* harmony export */ CurveCurveIntersectXY: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.CurveCurveIntersectXY),
180684
+ /* harmony export */ CurveCurveIntersectXYZ: () => (/* reexport safe */ _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_68__.CurveCurveIntersectXYZ),
180685
+ /* harmony export */ CurveExtendMode: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__.CurveExtendMode),
180686
+ /* harmony export */ CurveExtendOptions: () => (/* reexport safe */ _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__.CurveExtendOptions),
180687
+ /* harmony export */ CurveFactory: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__.CurveFactory),
180688
+ /* harmony export */ CurveIntervalRole: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveIntervalRole),
180689
+ /* harmony export */ CurveLocationDetail: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveLocationDetail),
180690
+ /* harmony export */ CurveLocationDetailArrayPair: () => (/* reexport safe */ _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__.CurveLocationDetailArrayPair),
180691
+ /* harmony export */ CurveLocationDetailPair: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveLocationDetailPair),
180692
+ /* harmony export */ CurveOps: () => (/* reexport safe */ _curve_CurveOps__WEBPACK_IMPORTED_MODULE_71__.CurveOps),
180693
+ /* harmony export */ CurvePrimitive: () => (/* reexport safe */ _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_72__.CurvePrimitive),
180694
+ /* harmony export */ CurveSearchStatus: () => (/* reexport safe */ _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__.CurveSearchStatus),
180695
180695
  /* harmony export */ CutLoop: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoop),
180696
180696
  /* harmony export */ CutLoopMergeContext: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoopMergeContext),
180697
- /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_125__.DeepCompare),
180698
- /* harmony export */ Degree2PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree2PowerPolynomial),
180699
- /* harmony export */ Degree3PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree3PowerPolynomial),
180700
- /* harmony export */ Degree4PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree4PowerPolynomial),
180701
- /* harmony export */ DirectSpiral3d: () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_86__.DirectSpiral3d),
180702
- /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.DuplicateFacetClusterSelector),
180697
+ /* harmony export */ DeepCompare: () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__.DeepCompare),
180698
+ /* harmony export */ Degree2PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree2PowerPolynomial),
180699
+ /* harmony export */ Degree3PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree3PowerPolynomial),
180700
+ /* harmony export */ Degree4PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.Degree4PowerPolynomial),
180701
+ /* harmony export */ DirectSpiral3d: () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_88__.DirectSpiral3d),
180702
+ /* harmony export */ DuplicateFacetClusterSelector: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.DuplicateFacetClusterSelector),
180703
180703
  /* harmony export */ Ellipsoid: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.Ellipsoid),
180704
180704
  /* harmony export */ EllipsoidPatch: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.EllipsoidPatch),
180705
- /* harmony export */ FacetFaceData: () => (/* reexport safe */ _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_112__.FacetFaceData),
180706
- /* harmony export */ FacetIntersectOptions: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.FacetIntersectOptions),
180705
+ /* harmony export */ FacetFaceData: () => (/* reexport safe */ _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_114__.FacetFaceData),
180706
+ /* harmony export */ FacetIntersectOptions: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.FacetIntersectOptions),
180707
180707
  /* harmony export */ FrameBuilder: () => (/* reexport safe */ _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_6__.FrameBuilder),
180708
- /* harmony export */ GaussMapper: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.GaussMapper),
180708
+ /* harmony export */ GaussMapper: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__.GaussMapper),
180709
180709
  /* harmony export */ GeodesicPathPoint: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathPoint),
180710
180710
  /* harmony export */ GeodesicPathSolver: () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathSolver),
180711
- /* harmony export */ Geometry: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.Geometry),
180711
+ /* harmony export */ Geometry: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.Geometry),
180712
180712
  /* harmony export */ GeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.GeometryHandler),
180713
- /* harmony export */ GeometryQuery: () => (/* reexport safe */ _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_72__.GeometryQuery),
180713
+ /* harmony export */ GeometryQuery: () => (/* reexport safe */ _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_74__.GeometryQuery),
180714
180714
  /* harmony export */ GrowableBlockedArray: () => (/* reexport safe */ _geometry3d_GrowableBlockedArray__WEBPACK_IMPORTED_MODULE_9__.GrowableBlockedArray),
180715
180715
  /* harmony export */ GrowableFloat64Array: () => (/* reexport safe */ _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_10__.GrowableFloat64Array),
180716
180716
  /* harmony export */ GrowableXYArray: () => (/* reexport safe */ _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYArray),
180717
180717
  /* harmony export */ GrowableXYZArray: () => (/* reexport safe */ _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray),
180718
- /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdge),
180719
- /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdgeGraph),
180720
- /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_121__.HalfEdgeMask),
180721
- /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_124__.IModelJson),
180722
- /* harmony export */ ImplicitLineXY: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.ImplicitLineXY),
180718
+ /* harmony export */ HalfEdge: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdge),
180719
+ /* harmony export */ HalfEdgeGraph: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeGraph),
180720
+ /* harmony export */ HalfEdgeMask: () => (/* reexport safe */ _topology_Graph__WEBPACK_IMPORTED_MODULE_123__.HalfEdgeMask),
180721
+ /* harmony export */ IModelJson: () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__.IModelJson),
180722
+ /* harmony export */ ImplicitLineXY: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.ImplicitLineXY),
180723
180723
  /* harmony export */ IndexedCollectionInterval: () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedCollectionInterval),
180724
- /* harmony export */ IndexedPolyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__.IndexedPolyface),
180725
- /* harmony export */ IndexedPolyfaceSubsetVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyfaceSubsetVisitor),
180726
- /* harmony export */ IndexedPolyfaceVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyfaceVisitor),
180724
+ /* harmony export */ IndexedPolyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.IndexedPolyface),
180725
+ /* harmony export */ IndexedPolyfaceSubsetVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.IndexedPolyfaceSubsetVisitor),
180726
+ /* harmony export */ IndexedPolyfaceVisitor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.IndexedPolyfaceVisitor),
180727
180727
  /* harmony export */ IndexedReadWriteXYZCollection: () => (/* reexport safe */ _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_15__.IndexedReadWriteXYZCollection),
180728
180728
  /* harmony export */ IndexedXYCollection: () => (/* reexport safe */ _geometry3d_IndexedXYCollection__WEBPACK_IMPORTED_MODULE_14__.IndexedXYCollection),
180729
180729
  /* harmony export */ IndexedXYZCollection: () => (/* reexport safe */ _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_15__.IndexedXYZCollection),
180730
180730
  /* harmony export */ IndexedXYZCollectionInterval: () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedXYZCollectionInterval),
180731
180731
  /* harmony export */ IndexedXYZCollectionPolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.IndexedXYZCollectionPolygonOps),
180732
- /* harmony export */ IntegratedSpiral3d: () => (/* reexport safe */ _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_85__.IntegratedSpiral3d),
180733
- /* harmony export */ InterpolationCurve3d: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__.InterpolationCurve3d),
180734
- /* harmony export */ InterpolationCurve3dOptions: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__.InterpolationCurve3dOptions),
180732
+ /* harmony export */ IntegratedSpiral3d: () => (/* reexport safe */ _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_87__.IntegratedSpiral3d),
180733
+ /* harmony export */ InterpolationCurve3d: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__.InterpolationCurve3d),
180734
+ /* harmony export */ InterpolationCurve3dOptions: () => (/* reexport safe */ _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__.InterpolationCurve3dOptions),
180735
180735
  /* harmony export */ InverseMatrixState: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.InverseMatrixState),
180736
- /* harmony export */ JointOptions: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.JointOptions),
180737
- /* harmony export */ KnotVector: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__.KnotVector),
180738
- /* harmony export */ LineSegment3d: () => (/* reexport safe */ _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_73__.LineSegment3d),
180739
- /* harmony export */ LineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__.LineString3d),
180740
- /* harmony export */ LinearSweep: () => (/* reexport safe */ _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_91__.LinearSweep),
180736
+ /* harmony export */ JointOptions: () => (/* reexport safe */ _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__.JointOptions),
180737
+ /* harmony export */ KnotVector: () => (/* reexport safe */ _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__.KnotVector),
180738
+ /* harmony export */ LineSegment3d: () => (/* reexport safe */ _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_75__.LineSegment3d),
180739
+ /* harmony export */ LineString3d: () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__.LineString3d),
180740
+ /* harmony export */ LinearSweep: () => (/* reexport safe */ _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_93__.LinearSweep),
180741
180741
  /* harmony export */ LongitudeLatitudeNumber: () => (/* reexport safe */ _geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_2__.LongitudeLatitudeNumber),
180742
- /* harmony export */ Loop: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_75__.Loop),
180743
- /* harmony export */ LoopCurveLoopCurve: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_75__.LoopCurveLoopCurve),
180744
- /* harmony export */ Map4d: () => (/* reexport safe */ _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_48__.Map4d),
180742
+ /* harmony export */ Loop: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_77__.Loop),
180743
+ /* harmony export */ LoopCurveLoopCurve: () => (/* reexport safe */ _curve_Loop__WEBPACK_IMPORTED_MODULE_77__.LoopCurveLoopCurve),
180744
+ /* harmony export */ Map4d: () => (/* reexport safe */ _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_49__.Map4d),
180745
180745
  /* harmony export */ Matrix3d: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.Matrix3d),
180746
- /* harmony export */ Matrix4d: () => (/* reexport safe */ _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_47__.Matrix4d),
180747
- /* harmony export */ MiteredSweepOutputSelect: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__.MiteredSweepOutputSelect),
180748
- /* harmony export */ MomentData: () => (/* reexport safe */ _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_49__.MomentData),
180749
- /* harmony export */ MultiChainCollector: () => (/* reexport safe */ _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_128__.MultiChainCollector),
180750
- /* harmony export */ Newton1dUnbounded: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton1dUnbounded),
180751
- /* harmony export */ Newton1dUnboundedApproximateDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton1dUnboundedApproximateDerivative),
180752
- /* harmony export */ Newton2dUnboundedWithDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.Newton2dUnboundedWithDerivative),
180753
- /* harmony export */ NewtonEvaluatorRRtoRRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRRtoRRD),
180754
- /* harmony export */ NewtonEvaluatorRtoR: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRtoR),
180755
- /* harmony export */ NewtonEvaluatorRtoRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.NewtonEvaluatorRtoRD),
180756
- /* harmony export */ NonConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.NonConvexFacetLocationDetail),
180746
+ /* harmony export */ Matrix4d: () => (/* reexport safe */ _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_48__.Matrix4d),
180747
+ /* harmony export */ MiteredSweepOutputSelect: () => (/* reexport safe */ _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__.MiteredSweepOutputSelect),
180748
+ /* harmony export */ MomentData: () => (/* reexport safe */ _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_50__.MomentData),
180749
+ /* harmony export */ Newton1dUnbounded: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton1dUnbounded),
180750
+ /* harmony export */ Newton1dUnboundedApproximateDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton1dUnboundedApproximateDerivative),
180751
+ /* harmony export */ Newton2dUnboundedWithDerivative: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.Newton2dUnboundedWithDerivative),
180752
+ /* harmony export */ NewtonEvaluatorRRtoRRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRRtoRRD),
180753
+ /* harmony export */ NewtonEvaluatorRtoR: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRtoR),
180754
+ /* harmony export */ NewtonEvaluatorRtoRD: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.NewtonEvaluatorRtoRD),
180755
+ /* harmony export */ NonConvexFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.NonConvexFacetLocationDetail),
180757
180756
  /* harmony export */ NullGeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.NullGeometryHandler),
180758
180757
  /* harmony export */ NumberArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.NumberArray),
180759
- /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.OffsetMeshOptions),
180760
- /* harmony export */ OffsetOptions: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.OffsetOptions),
180761
- /* harmony export */ Order2Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order2Bezier),
180762
- /* harmony export */ Order3Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order3Bezier),
180763
- /* harmony export */ Order4Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order4Bezier),
180764
- /* harmony export */ Order5Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.Order5Bezier),
180758
+ /* harmony export */ OffsetMeshOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.OffsetMeshOptions),
180759
+ /* harmony export */ OffsetOptions: () => (/* reexport safe */ _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__.OffsetOptions),
180760
+ /* harmony export */ Order2Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order2Bezier),
180761
+ /* harmony export */ Order3Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order3Bezier),
180762
+ /* harmony export */ Order4Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order4Bezier),
180763
+ /* harmony export */ Order5Bezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.Order5Bezier),
180765
180764
  /* harmony export */ OrderedRotationAngles: () => (/* reexport safe */ _geometry3d_OrderedRotationAngles__WEBPACK_IMPORTED_MODULE_17__.OrderedRotationAngles),
180766
180765
  /* harmony export */ PackedMatrix3dOps: () => (/* reexport safe */ _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_16__.PackedMatrix3dOps),
180767
- /* harmony export */ ParityRegion: () => (/* reexport safe */ _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_76__.ParityRegion),
180768
- /* harmony export */ PascalCoefficients: () => (/* reexport safe */ _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__.PascalCoefficients),
180769
- /* harmony export */ Path: () => (/* reexport safe */ _curve_Path__WEBPACK_IMPORTED_MODULE_77__.Path),
180770
- /* harmony export */ PathFragment: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__.PathFragment),
180766
+ /* harmony export */ ParityRegion: () => (/* reexport safe */ _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_79__.ParityRegion),
180767
+ /* harmony export */ PascalCoefficients: () => (/* reexport safe */ _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_55__.PascalCoefficients),
180768
+ /* harmony export */ Path: () => (/* reexport safe */ _curve_Path__WEBPACK_IMPORTED_MODULE_80__.Path),
180769
+ /* harmony export */ PathFragment: () => (/* reexport safe */ _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__.PathFragment),
180771
180770
  /* harmony export */ Plane3d: () => (/* reexport safe */ _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_18__.Plane3d),
180772
180771
  /* harmony export */ Plane3dByOriginAndUnitNormal: () => (/* reexport safe */ _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_19__.Plane3dByOriginAndUnitNormal),
180773
180772
  /* harmony export */ Plane3dByOriginAndVectors: () => (/* reexport safe */ _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_20__.Plane3dByOriginAndVectors),
180774
- /* harmony export */ PlaneByOriginAndVectors4d: () => (/* reexport safe */ _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_45__.PlaneByOriginAndVectors4d),
180773
+ /* harmony export */ PlaneByOriginAndVectors4d: () => (/* reexport safe */ _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_46__.PlaneByOriginAndVectors4d),
180775
180774
  /* harmony export */ Point2d: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Point2d),
180776
180775
  /* harmony export */ Point2dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point2dArray),
180777
180776
  /* harmony export */ Point2dArrayCarrier: () => (/* reexport safe */ _geometry3d_Point2dArrayCarrier__WEBPACK_IMPORTED_MODULE_21__.Point2dArrayCarrier),
@@ -180779,81 +180778,80 @@ __webpack_require__.r(__webpack_exports__);
180779
180778
  /* harmony export */ Point3dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point3dArray),
180780
180779
  /* harmony export */ Point3dArrayCarrier: () => (/* reexport safe */ _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_25__.Point3dArrayCarrier),
180781
180780
  /* harmony export */ Point3dArrayPolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayPolygonOps),
180782
- /* harmony export */ Point4d: () => (/* reexport safe */ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_46__.Point4d),
180781
+ /* harmony export */ Point4d: () => (/* reexport safe */ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_47__.Point4d),
180783
180782
  /* harmony export */ Point4dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Point4dArray),
180784
- /* harmony export */ PointString3d: () => (/* reexport safe */ _curve_PointString3d__WEBPACK_IMPORTED_MODULE_81__.PointString3d),
180785
- /* harmony export */ Polyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__.Polyface),
180786
- /* harmony export */ PolyfaceAuxData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__.PolyfaceAuxData),
180787
- /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_116__.PolyfaceBuilder),
180788
- /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__.PolyfaceClip),
180789
- /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_117__.PolyfaceData),
180790
- /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.PolyfaceQuery),
180791
- /* harmony export */ PolygonLocation: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.PolygonLocation),
180783
+ /* harmony export */ PointString3d: () => (/* reexport safe */ _curve_PointString3d__WEBPACK_IMPORTED_MODULE_83__.PointString3d),
180784
+ /* harmony export */ Polyface: () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__.Polyface),
180785
+ /* harmony export */ PolyfaceAuxData: () => (/* reexport safe */ _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__.PolyfaceAuxData),
180786
+ /* harmony export */ PolyfaceBuilder: () => (/* reexport safe */ _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__.PolyfaceBuilder),
180787
+ /* harmony export */ PolyfaceClip: () => (/* reexport safe */ _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__.PolyfaceClip),
180788
+ /* harmony export */ PolyfaceData: () => (/* reexport safe */ _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__.PolyfaceData),
180789
+ /* harmony export */ PolyfaceQuery: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.PolyfaceQuery),
180790
+ /* harmony export */ PolygonLocation: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.PolygonLocation),
180792
180791
  /* harmony export */ PolygonLocationDetail: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonLocationDetail),
180793
180792
  /* harmony export */ PolygonOps: () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonOps),
180794
- /* harmony export */ PolygonWireOffsetContext: () => (/* reexport safe */ _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__.PolygonWireOffsetContext),
180795
180793
  /* harmony export */ PolylineOps: () => (/* reexport safe */ _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_26__.PolylineOps),
180796
- /* harmony export */ PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.PowerPolynomial),
180797
- /* harmony export */ ProxyCurve: () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_82__.ProxyCurve),
180798
- /* harmony export */ Quadrature: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.Quadrature),
180794
+ /* harmony export */ PowerPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.PowerPolynomial),
180795
+ /* harmony export */ ProxyCurve: () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_84__.ProxyCurve),
180796
+ /* harmony export */ Quadrature: () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__.Quadrature),
180799
180797
  /* harmony export */ Range1d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range1d),
180800
- /* harmony export */ Range1dArray: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.Range1dArray),
180798
+ /* harmony export */ Range1dArray: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__.Range1dArray),
180801
180799
  /* harmony export */ Range2d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range2d),
180802
180800
  /* harmony export */ Range3d: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d),
180803
180801
  /* harmony export */ RangeBase: () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.RangeBase),
180804
- /* harmony export */ Ray2d: () => (/* reexport safe */ _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__.Ray2d),
180805
- /* harmony export */ Ray3d: () => (/* reexport safe */ _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_29__.Ray3d),
180802
+ /* harmony export */ Ray2d: () => (/* reexport safe */ _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_29__.Ray2d),
180803
+ /* harmony export */ Ray3d: () => (/* reexport safe */ _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_30__.Ray3d),
180806
180804
  /* harmony export */ RecurseToCurvesGeometryHandler: () => (/* reexport safe */ _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_8__.RecurseToCurvesGeometryHandler),
180807
- /* harmony export */ RecursiveCurveProcessor: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__.RecursiveCurveProcessor),
180808
- /* harmony export */ RecursiveCurveProcessorWithStack: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__.RecursiveCurveProcessorWithStack),
180809
- /* harmony export */ RegionBinaryOpType: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__.RegionBinaryOpType),
180810
- /* harmony export */ RegionMomentsXY: () => (/* reexport safe */ _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_78__.RegionMomentsXY),
180811
- /* harmony export */ RegionOps: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__.RegionOps),
180812
- /* harmony export */ RotationalSweep: () => (/* reexport safe */ _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_92__.RotationalSweep),
180813
- /* harmony export */ RuledSweep: () => (/* reexport safe */ _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_93__.RuledSweep),
180814
- /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__.Sample),
180815
- /* harmony export */ Segment1d: () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_30__.Segment1d),
180816
- /* harmony export */ SimpleNewton: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__.SimpleNewton),
180817
- /* harmony export */ SineCosinePolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SineCosinePolynomial),
180818
- /* harmony export */ SmallSystem: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SmallSystem),
180805
+ /* harmony export */ RecursiveCurveProcessor: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__.RecursiveCurveProcessor),
180806
+ /* harmony export */ RecursiveCurveProcessorWithStack: () => (/* reexport safe */ _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__.RecursiveCurveProcessorWithStack),
180807
+ /* harmony export */ RegionBinaryOpType: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__.RegionBinaryOpType),
180808
+ /* harmony export */ RegionMomentsXY: () => (/* reexport safe */ _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_81__.RegionMomentsXY),
180809
+ /* harmony export */ RegionOps: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__.RegionOps),
180810
+ /* harmony export */ RotationalSweep: () => (/* reexport safe */ _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_94__.RotationalSweep),
180811
+ /* harmony export */ RuledSweep: () => (/* reexport safe */ _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_95__.RuledSweep),
180812
+ /* harmony export */ Sample: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.Sample),
180813
+ /* harmony export */ Segment1d: () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__.Segment1d),
180814
+ /* harmony export */ SimpleNewton: () => (/* reexport safe */ _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__.SimpleNewton),
180815
+ /* harmony export */ SineCosinePolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SineCosinePolynomial),
180816
+ /* harmony export */ SmallSystem: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SmallSystem),
180819
180817
  /* harmony export */ SmoothTransformBetweenFrusta: () => (/* reexport safe */ _geometry3d_FrustumAnimation__WEBPACK_IMPORTED_MODULE_7__.SmoothTransformBetweenFrusta),
180820
- /* harmony export */ SolidPrimitive: () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_94__.SolidPrimitive),
180821
- /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_123__.SpacePolygonTriangulation),
180822
- /* harmony export */ Sphere: () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_95__.Sphere),
180823
- /* harmony export */ SphereImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SphereImplicit),
180824
- /* harmony export */ StandardViewIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_35__.StandardViewIndex),
180825
- /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__.SteppedIndexFunctionFactory),
180826
- /* harmony export */ StringifiedClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__.StringifiedClipVector),
180827
- /* harmony export */ StrokeCountMap: () => (/* reexport safe */ _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_88__.StrokeCountMap),
180828
- /* harmony export */ StrokeOptions: () => (/* reexport safe */ _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_83__.StrokeOptions),
180829
- /* harmony export */ SweepContour: () => (/* reexport safe */ _solid_SweepContour__WEBPACK_IMPORTED_MODULE_96__.SweepContour),
180830
- /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__.SweepLineStringToFacetsOptions),
180831
- /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__.TaggedNumericConstants),
180832
- /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__.TaggedNumericData),
180833
- /* harmony export */ TorusImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TorusImplicit),
180834
- /* harmony export */ TorusPipe: () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_97__.TorusPipe),
180835
- /* harmony export */ Transform: () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_31__.Transform),
180836
- /* harmony export */ TransitionSpiral3d: () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_84__.TransitionSpiral3d),
180837
- /* harmony export */ TriDiagonalSystem: () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__.TriDiagonalSystem),
180818
+ /* harmony export */ SolidPrimitive: () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_96__.SolidPrimitive),
180819
+ /* harmony export */ SpacePolygonTriangulation: () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__.SpacePolygonTriangulation),
180820
+ /* harmony export */ Sphere: () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_97__.Sphere),
180821
+ /* harmony export */ SphereImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.SphereImplicit),
180822
+ /* harmony export */ StandardViewIndex: () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.StandardViewIndex),
180823
+ /* harmony export */ SteppedIndexFunctionFactory: () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.SteppedIndexFunctionFactory),
180824
+ /* harmony export */ StringifiedClipVector: () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.StringifiedClipVector),
180825
+ /* harmony export */ StrokeCountMap: () => (/* reexport safe */ _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_90__.StrokeCountMap),
180826
+ /* harmony export */ StrokeOptions: () => (/* reexport safe */ _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_85__.StrokeOptions),
180827
+ /* harmony export */ SweepContour: () => (/* reexport safe */ _solid_SweepContour__WEBPACK_IMPORTED_MODULE_98__.SweepContour),
180828
+ /* harmony export */ SweepLineStringToFacetsOptions: () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__.SweepLineStringToFacetsOptions),
180829
+ /* harmony export */ TaggedNumericConstants: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericConstants),
180830
+ /* harmony export */ TaggedNumericData: () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__.TaggedNumericData),
180831
+ /* harmony export */ TorusImplicit: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TorusImplicit),
180832
+ /* harmony export */ TorusPipe: () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_99__.TorusPipe),
180833
+ /* harmony export */ Transform: () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__.Transform),
180834
+ /* harmony export */ TransitionSpiral3d: () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_86__.TransitionSpiral3d),
180835
+ /* harmony export */ TriDiagonalSystem: () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_59__.TriDiagonalSystem),
180838
180836
  /* harmony export */ TriangleLocationDetail: () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.TriangleLocationDetail),
180839
- /* harmony export */ TriangularFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__.TriangularFacetLocationDetail),
180840
- /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_122__.Triangulator),
180841
- /* harmony export */ TrigPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TrigPolynomial),
180842
- /* harmony export */ UVSelect: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.UVSelect),
180843
- /* harmony export */ UVSurfaceOps: () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_32__.UVSurfaceOps),
180844
- /* harmony export */ UnionOfConvexClipPlaneSets: () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_40__.UnionOfConvexClipPlaneSets),
180845
- /* harmony export */ UnionRegion: () => (/* reexport safe */ _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_87__.UnionRegion),
180846
- /* harmony export */ UnivariateBezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__.UnivariateBezier),
180837
+ /* harmony export */ TriangularFacetLocationDetail: () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__.TriangularFacetLocationDetail),
180838
+ /* harmony export */ Triangulator: () => (/* reexport safe */ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__.Triangulator),
180839
+ /* harmony export */ TrigPolynomial: () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__.TrigPolynomial),
180840
+ /* harmony export */ UVSelect: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.UVSelect),
180841
+ /* harmony export */ UVSurfaceOps: () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__.UVSurfaceOps),
180842
+ /* harmony export */ UnionOfConvexClipPlaneSets: () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__.UnionOfConvexClipPlaneSets),
180843
+ /* harmony export */ UnionRegion: () => (/* reexport safe */ _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_89__.UnionRegion),
180844
+ /* harmony export */ UnivariateBezier: () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.UnivariateBezier),
180847
180845
  /* harmony export */ Vector2d: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Vector2d),
180848
180846
  /* harmony export */ Vector3d: () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.Vector3d),
180849
180847
  /* harmony export */ Vector3dArray: () => (/* reexport safe */ _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_24__.Vector3dArray),
180850
- /* harmony export */ WeightStyle: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__.WeightStyle),
180848
+ /* harmony export */ WeightStyle: () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__.WeightStyle),
180851
180849
  /* harmony export */ XY: () => (/* reexport safe */ _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.XY),
180852
- /* harmony export */ XYAndZ: () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_33__.XYAndZ),
180850
+ /* harmony export */ XYAndZ: () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__.XYAndZ),
180853
180851
  /* harmony export */ XYZ: () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.XYZ),
180854
- /* harmony export */ YawPitchRollAngles: () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_34__.YawPitchRollAngles),
180855
- /* harmony export */ compareRange1dLexicalLowHigh: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.compareRange1dLexicalLowHigh),
180856
- /* harmony export */ interpolateColor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__.interpolateColor)
180852
+ /* harmony export */ YawPitchRollAngles: () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__.YawPitchRollAngles),
180853
+ /* harmony export */ compareRange1dLexicalLowHigh: () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__.compareRange1dLexicalLowHigh),
180854
+ /* harmony export */ interpolateColor: () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__.interpolateColor)
180857
180855
  /* harmony export */ });
180858
180856
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
180859
180857
  /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
@@ -180884,106 +180882,107 @@ __webpack_require__.r(__webpack_exports__);
180884
180882
  /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
180885
180883
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
180886
180884
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
180887
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
180888
- /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
180889
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
180890
- /* harmony import */ var _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./geometry3d/UVSurfaceOps */ "../../core/geometry/lib/esm/geometry3d/UVSurfaceOps.js");
180891
- /* harmony import */ var _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./geometry3d/XYZProps */ "../../core/geometry/lib/esm/geometry3d/XYZProps.js");
180892
- /* harmony import */ var _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./geometry3d/YawPitchRollAngles */ "../../core/geometry/lib/esm/geometry3d/YawPitchRollAngles.js");
180893
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./Geometry */ "../../core/geometry/lib/esm/Geometry.js");
180894
- /* harmony import */ var _Constant__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Constant */ "../../core/geometry/lib/esm/Constant.js");
180895
- /* harmony import */ var _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./clipping/BooleanClipFactory */ "../../core/geometry/lib/esm/clipping/BooleanClipFactory.js");
180896
- /* harmony import */ var _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./clipping/ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
180897
- /* harmony import */ var _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./clipping/ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
180898
- /* harmony import */ var _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./clipping/UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
180899
- /* harmony import */ var _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./clipping/ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
180900
- /* harmony import */ var _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./clipping/ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
180901
- /* harmony import */ var _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./clipping/ClipUtils */ "../../core/geometry/lib/esm/clipping/ClipUtils.js");
180902
- /* harmony import */ var _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./numerics/ConvexPolygon2d */ "../../core/geometry/lib/esm/numerics/ConvexPolygon2d.js");
180903
- /* harmony import */ var _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./geometry4d/PlaneByOriginAndVectors4d */ "../../core/geometry/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js");
180904
- /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
180905
- /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
180906
- /* harmony import */ var _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./geometry4d/Map4d */ "../../core/geometry/lib/esm/geometry4d/Map4d.js");
180907
- /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
180908
- /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
180909
- /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
180910
- /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
180911
- /* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
180912
- /* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
180913
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
180914
- /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
180915
- /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
180916
- /* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
180917
- /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
180918
- /* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
180919
- /* harmony import */ var _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./curve/CoordinateXYZ */ "../../core/geometry/lib/esm/curve/CoordinateXYZ.js");
180920
- /* harmony import */ var _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./curve/CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
180921
- /* harmony import */ var _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./curve/CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
180922
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
180923
- /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
180924
- /* harmony import */ var _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXY.js");
180925
- /* harmony import */ var _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXYZ.js");
180926
- /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
180927
- /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
180928
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
180929
- /* harmony import */ var _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./curve/CurveProcessor */ "../../core/geometry/lib/esm/curve/CurveProcessor.js");
180930
- /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
180931
- /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
180932
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
180933
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
180934
- /* harmony import */ var _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./curve/ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
180935
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
180936
- /* harmony import */ var _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./curve/RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
180937
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
180938
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
180939
- /* harmony import */ var _curve_PointString3d__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./curve/PointString3d */ "../../core/geometry/lib/esm/curve/PointString3d.js");
180940
- /* harmony import */ var _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./curve/ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
180941
- /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
180942
- /* harmony import */ var _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./curve/spiral/TransitionSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/TransitionSpiral3d.js");
180943
- /* harmony import */ var _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./curve/spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
180944
- /* harmony import */ var _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./curve/spiral/DirectSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/DirectSpiral3d.js");
180945
- /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
180946
- /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
180947
- /* harmony import */ var _solid_Box__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./solid/Box */ "../../core/geometry/lib/esm/solid/Box.js");
180948
- /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
180949
- /* harmony import */ var _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./solid/LinearSweep */ "../../core/geometry/lib/esm/solid/LinearSweep.js");
180950
- /* harmony import */ var _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./solid/RotationalSweep */ "../../core/geometry/lib/esm/solid/RotationalSweep.js");
180951
- /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
180952
- /* harmony import */ var _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./solid/SolidPrimitive */ "../../core/geometry/lib/esm/solid/SolidPrimitive.js");
180953
- /* harmony import */ var _solid_Sphere__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./solid/Sphere */ "../../core/geometry/lib/esm/solid/Sphere.js");
180954
- /* harmony import */ var _solid_SweepContour__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./solid/SweepContour */ "../../core/geometry/lib/esm/solid/SweepContour.js");
180955
- /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
180956
- /* harmony import */ var _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./bspline/AkimaCurve3d */ "../../core/geometry/lib/esm/bspline/AkimaCurve3d.js");
180957
- /* harmony import */ var _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./bspline/Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
180958
- /* harmony import */ var _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./bspline/BezierCurveBase */ "../../core/geometry/lib/esm/bspline/BezierCurveBase.js");
180959
- /* harmony import */ var _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./bspline/BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
180960
- /* harmony import */ var _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./bspline/BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
180961
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
180962
- /* harmony import */ var _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./bspline/BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
180963
- /* harmony import */ var _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./bspline/BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
180964
- /* harmony import */ var _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./bspline/BSplineCurve3dH */ "../../core/geometry/lib/esm/bspline/BSplineCurve3dH.js");
180965
- /* harmony import */ var _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./bspline/BSplineSurface */ "../../core/geometry/lib/esm/bspline/BSplineSurface.js");
180966
- /* harmony import */ var _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./bspline/InterpolationCurve3d */ "../../core/geometry/lib/esm/bspline/InterpolationCurve3d.js");
180967
- /* harmony import */ var _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./bspline/KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
180968
- /* harmony import */ var _polyface_AuxData__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./polyface/AuxData */ "../../core/geometry/lib/esm/polyface/AuxData.js");
180969
- /* harmony import */ var _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./polyface/BoxTopology */ "../../core/geometry/lib/esm/polyface/BoxTopology.js");
180970
- /* harmony import */ var _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./polyface/FacetFaceData */ "../../core/geometry/lib/esm/polyface/FacetFaceData.js");
180971
- /* harmony import */ var _polyface_Polyface__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./polyface/Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
180972
- /* harmony import */ var _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./polyface/FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
180973
- /* harmony import */ var _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./polyface/IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
180974
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
180975
- /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
180976
- /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
180977
- /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
180978
- /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
180979
- /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
180980
- /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
180981
- /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
180982
- /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
180983
- /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
180984
- /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
180985
- /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
180986
- /* harmony import */ var _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./curve/internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
180885
+ /* harmony import */ var _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./geometry3d/Ray2d */ "../../core/geometry/lib/esm/geometry3d/Ray2d.js");
180886
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
180887
+ /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
180888
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
180889
+ /* harmony import */ var _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./geometry3d/UVSurfaceOps */ "../../core/geometry/lib/esm/geometry3d/UVSurfaceOps.js");
180890
+ /* harmony import */ var _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./geometry3d/XYZProps */ "../../core/geometry/lib/esm/geometry3d/XYZProps.js");
180891
+ /* harmony import */ var _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./geometry3d/YawPitchRollAngles */ "../../core/geometry/lib/esm/geometry3d/YawPitchRollAngles.js");
180892
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Geometry */ "../../core/geometry/lib/esm/Geometry.js");
180893
+ /* harmony import */ var _Constant__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./Constant */ "../../core/geometry/lib/esm/Constant.js");
180894
+ /* harmony import */ var _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./clipping/BooleanClipFactory */ "../../core/geometry/lib/esm/clipping/BooleanClipFactory.js");
180895
+ /* harmony import */ var _clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./clipping/ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
180896
+ /* harmony import */ var _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./clipping/ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
180897
+ /* harmony import */ var _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./clipping/UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
180898
+ /* harmony import */ var _clipping_ClipPrimitive__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./clipping/ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
180899
+ /* harmony import */ var _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./clipping/ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
180900
+ /* harmony import */ var _clipping_ClipUtils__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./clipping/ClipUtils */ "../../core/geometry/lib/esm/clipping/ClipUtils.js");
180901
+ /* harmony import */ var _numerics_ConvexPolygon2d__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./numerics/ConvexPolygon2d */ "../../core/geometry/lib/esm/numerics/ConvexPolygon2d.js");
180902
+ /* harmony import */ var _geometry4d_PlaneByOriginAndVectors4d__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./geometry4d/PlaneByOriginAndVectors4d */ "../../core/geometry/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js");
180903
+ /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
180904
+ /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
180905
+ /* harmony import */ var _geometry4d_Map4d__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./geometry4d/Map4d */ "../../core/geometry/lib/esm/geometry4d/Map4d.js");
180906
+ /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
180907
+ /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
180908
+ /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
180909
+ /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
180910
+ /* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
180911
+ /* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
180912
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
180913
+ /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
180914
+ /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
180915
+ /* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
180916
+ /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
180917
+ /* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
180918
+ /* harmony import */ var _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./curve/CoordinateXYZ */ "../../core/geometry/lib/esm/curve/CoordinateXYZ.js");
180919
+ /* harmony import */ var _curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./curve/CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
180920
+ /* harmony import */ var _curve_CurveExtendMode__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./curve/CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
180921
+ /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
180922
+ /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
180923
+ /* harmony import */ var _curve_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXY.js");
180924
+ /* harmony import */ var _curve_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./curve/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/CurveCurveIntersectXYZ.js");
180925
+ /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
180926
+ /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
180927
+ /* harmony import */ var _curve_CurveOps__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./curve/CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
180928
+ /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
180929
+ /* harmony import */ var _curve_CurveProcessor__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./curve/CurveProcessor */ "../../core/geometry/lib/esm/curve/CurveProcessor.js");
180930
+ /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
180931
+ /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
180932
+ /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
180933
+ /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
180934
+ /* harmony import */ var _curve_OffsetOptions__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./curve/OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
180935
+ /* harmony import */ var _curve_ParityRegion__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./curve/ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
180936
+ /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
180937
+ /* harmony import */ var _curve_RegionMomentsXY__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./curve/RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
180938
+ /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
180939
+ /* harmony import */ var _curve_PointString3d__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./curve/PointString3d */ "../../core/geometry/lib/esm/curve/PointString3d.js");
180940
+ /* harmony import */ var _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./curve/ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
180941
+ /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
180942
+ /* harmony import */ var _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./curve/spiral/TransitionSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/TransitionSpiral3d.js");
180943
+ /* harmony import */ var _curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./curve/spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
180944
+ /* harmony import */ var _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./curve/spiral/DirectSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/DirectSpiral3d.js");
180945
+ /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
180946
+ /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
180947
+ /* harmony import */ var _solid_Box__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./solid/Box */ "../../core/geometry/lib/esm/solid/Box.js");
180948
+ /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
180949
+ /* harmony import */ var _solid_LinearSweep__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./solid/LinearSweep */ "../../core/geometry/lib/esm/solid/LinearSweep.js");
180950
+ /* harmony import */ var _solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./solid/RotationalSweep */ "../../core/geometry/lib/esm/solid/RotationalSweep.js");
180951
+ /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
180952
+ /* harmony import */ var _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./solid/SolidPrimitive */ "../../core/geometry/lib/esm/solid/SolidPrimitive.js");
180953
+ /* harmony import */ var _solid_Sphere__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./solid/Sphere */ "../../core/geometry/lib/esm/solid/Sphere.js");
180954
+ /* harmony import */ var _solid_SweepContour__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./solid/SweepContour */ "../../core/geometry/lib/esm/solid/SweepContour.js");
180955
+ /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
180956
+ /* harmony import */ var _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./bspline/AkimaCurve3d */ "../../core/geometry/lib/esm/bspline/AkimaCurve3d.js");
180957
+ /* harmony import */ var _bspline_Bezier1dNd__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./bspline/Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
180958
+ /* harmony import */ var _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./bspline/BezierCurveBase */ "../../core/geometry/lib/esm/bspline/BezierCurveBase.js");
180959
+ /* harmony import */ var _bspline_BezierCurve3d__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./bspline/BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
180960
+ /* harmony import */ var _bspline_BezierCurve3dH__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./bspline/BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
180961
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
180962
+ /* harmony import */ var _bspline_BSplineCurveOps__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./bspline/BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
180963
+ /* harmony import */ var _bspline_BSpline1dNd__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./bspline/BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
180964
+ /* harmony import */ var _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./bspline/BSplineCurve3dH */ "../../core/geometry/lib/esm/bspline/BSplineCurve3dH.js");
180965
+ /* harmony import */ var _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./bspline/BSplineSurface */ "../../core/geometry/lib/esm/bspline/BSplineSurface.js");
180966
+ /* harmony import */ var _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./bspline/InterpolationCurve3d */ "../../core/geometry/lib/esm/bspline/InterpolationCurve3d.js");
180967
+ /* harmony import */ var _bspline_KnotVector__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./bspline/KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
180968
+ /* harmony import */ var _polyface_AuxData__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./polyface/AuxData */ "../../core/geometry/lib/esm/polyface/AuxData.js");
180969
+ /* harmony import */ var _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./polyface/BoxTopology */ "../../core/geometry/lib/esm/polyface/BoxTopology.js");
180970
+ /* harmony import */ var _polyface_FacetFaceData__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./polyface/FacetFaceData */ "../../core/geometry/lib/esm/polyface/FacetFaceData.js");
180971
+ /* harmony import */ var _polyface_Polyface__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./polyface/Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
180972
+ /* harmony import */ var _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./polyface/FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
180973
+ /* harmony import */ var _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./polyface/IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
180974
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
180975
+ /* harmony import */ var _polyface_PolyfaceData__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./polyface/PolyfaceData */ "../../core/geometry/lib/esm/polyface/PolyfaceData.js");
180976
+ /* harmony import */ var _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./polyface/PolyfaceQuery */ "../../core/geometry/lib/esm/polyface/PolyfaceQuery.js");
180977
+ /* harmony import */ var _polyface_PolyfaceClip__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./polyface/PolyfaceClip */ "../../core/geometry/lib/esm/polyface/PolyfaceClip.js");
180978
+ /* harmony import */ var _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./polyface/TaggedNumericData */ "../../core/geometry/lib/esm/polyface/TaggedNumericData.js");
180979
+ /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
180980
+ /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
180981
+ /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
180982
+ /* harmony import */ var _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./serialization/IModelJsonSchema */ "../../core/geometry/lib/esm/serialization/IModelJsonSchema.js");
180983
+ /* harmony import */ var _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./serialization/DeepCompare */ "../../core/geometry/lib/esm/serialization/DeepCompare.js");
180984
+ /* harmony import */ var _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./serialization/GeometrySamples */ "../../core/geometry/lib/esm/serialization/GeometrySamples.js");
180985
+ /* harmony import */ var _serialization_BentleyGeometryFlatBuffer__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ./serialization/BentleyGeometryFlatBuffer */ "../../core/geometry/lib/esm/serialization/BentleyGeometryFlatBuffer.js");
180987
180986
  /*---------------------------------------------------------------------------------------------
180988
180987
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
180989
180988
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -181234,7 +181233,7 @@ __webpack_require__.r(__webpack_exports__);
181234
181233
 
181235
181234
 
181236
181235
 
181237
- // temporary export for internal access pending exposure of this functionality via public API
181236
+
181238
181237
 
181239
181238
 
181240
181239
 
@@ -181265,8 +181264,8 @@ __webpack_require__.r(__webpack_exports__);
181265
181264
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
181266
181265
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
181267
181266
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
181268
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
181269
181267
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
181268
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
181270
181269
  /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
181271
181270
  /*---------------------------------------------------------------------------------------------
181272
181271
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -182199,7 +182198,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
182199
182198
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
182200
182199
  */
182201
182200
  constructOffsetXY(offsetDistanceOrOptions) {
182202
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__.OffsetOptions.create(offsetDistanceOrOptions);
182201
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_14__.OffsetOptions.create(offsetDistanceOrOptions);
182203
182202
  if (this.isCircular || options.preserveEllipticalArcs) {
182204
182203
  const arcXY = this.cloneAtZ();
182205
182204
  const sign = arcXY.sweep.sweepRadians * arcXY.matrixRef.coffs[8] >= 0.0 ? 1.0 : -1.0;
@@ -182249,199 +182248,6 @@ Arc3d.quadratureIntervalAngleDegrees = 10.0;
182249
182248
 
182250
182249
 
182251
182250
 
182252
- /***/ }),
182253
-
182254
- /***/ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js":
182255
- /*!******************************************************************!*\
182256
- !*** ../../core/geometry/lib/esm/curve/ChainCollectorContext.js ***!
182257
- \******************************************************************/
182258
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
182259
-
182260
- "use strict";
182261
- __webpack_require__.r(__webpack_exports__);
182262
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
182263
- /* harmony export */ ChainCollectorContext: () => (/* binding */ ChainCollectorContext)
182264
- /* harmony export */ });
182265
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
182266
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
182267
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
182268
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
182269
- /*---------------------------------------------------------------------------------------------
182270
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
182271
- * See LICENSE.md in the project root for license terms and full copyright notice.
182272
- *--------------------------------------------------------------------------------------------*/
182273
-
182274
-
182275
-
182276
-
182277
- /**
182278
- * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
182279
- * * The caller makes a sequence of calls to announce individual primitives.
182280
- * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`
182281
- * * (a) "simple chains" -- the caller has the curve primitives in order and just needs to have them monitored for coordinate breaks that indicate transition to a new chain.
182282
- * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.
182283
- * * (b) "mixed" primitives -- primitive order is NOT significant for chain assembly.
182284
- * * The collector needs to search all prior paths at both start and end, and consider connection to both the start and end of each new primitive.
182285
- * * The per-curve announcement is
182286
- * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
182287
- * * When all curves have been announced, the call to grab the paths option
182288
- * * formLoopsIfClosed
182289
- * * If true, convert closed paths to `Loop`, open paths to `Path`
182290
- * * If false, convert all paths (open or not) to `Path`
182291
- * * Usage pattern is
182292
- * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
182293
- * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`
182294
- * * end: ` result = context.grabResults (formLoopsIfClosed)`
182295
- * @internal
182296
- */
182297
- class ChainCollectorContext {
182298
- /**
182299
- * Push a new chain with an optional first primitive.
182300
- */
182301
- pushNewChain(primitive) {
182302
- const chain = [];
182303
- if (primitive)
182304
- chain.push(primitive);
182305
- this._chains.push(chain);
182306
- }
182307
- findOrCreateTailChain() {
182308
- if (this._chains.length === 0)
182309
- this.pushNewChain();
182310
- return this._chains[this._chains.length - 1];
182311
- }
182312
- findAnyChainToConnect(xyz) {
182313
- for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
182314
- const path = this._chains[chainIndexA];
182315
- this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);
182316
- if (this._xyzWork1.isAlmostEqual(xyz))
182317
- return { chainIndex: chainIndexA, atEnd: true };
182318
- this._xyzWork1 = path[0].startPoint(this._xyzWork1);
182319
- if (this._xyzWork1.isAlmostEqual(xyz))
182320
- return { chainIndex: chainIndexA, atEnd: false };
182321
- }
182322
- return undefined;
182323
- }
182324
- /** Initialize with an empty array of chains.
182325
- * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.
182326
- */
182327
- constructor(makeClones) {
182328
- this._chains = [];
182329
- this._makeClones = makeClones;
182330
- }
182331
- /** Announce a curve primitive
182332
- * * searchAllChains controls the extent of search for connecting points.
182333
- * * false ==> only consider connection to most recent chain.
182334
- * * true ==> search for any connection, reversing direction as needed.
182335
- * * Otherwise start a new chain.
182336
- */
182337
- announceCurvePrimitive(candidate, searchAllChains = false) {
182338
- if (candidate) {
182339
- if (this._makeClones) {
182340
- const candidate1 = candidate.clone();
182341
- if (!candidate1 || !(candidate1 instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive))
182342
- return;
182343
- this.transferMarkup(candidate, candidate1);
182344
- candidate = candidate1;
182345
- }
182346
- if (!searchAllChains) {
182347
- const activeChain = this.findOrCreateTailChain();
182348
- if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))
182349
- activeChain.push(candidate);
182350
- else
182351
- this.pushNewChain(candidate);
182352
- }
182353
- else {
182354
- this._xyzWork0 = candidate.startPoint(this._xyzWork0);
182355
- let connect = this.findAnyChainToConnect(this._xyzWork0);
182356
- if (connect) {
182357
- if (connect.atEnd) {
182358
- this._chains[connect.chainIndex].push(candidate);
182359
- }
182360
- else {
182361
- candidate.reverseInPlace();
182362
- this._chains[connect.chainIndex].splice(0, 0, candidate);
182363
- }
182364
- }
182365
- else {
182366
- this._xyzWork0 = candidate.endPoint(this._xyzWork0);
182367
- connect = this.findAnyChainToConnect(this._xyzWork0);
182368
- if (connect) { // START of new primitive ..
182369
- if (connect.atEnd) {
182370
- candidate.reverseInPlace();
182371
- this._chains[connect.chainIndex].push(candidate);
182372
- }
182373
- else {
182374
- this._chains[connect.chainIndex].splice(0, 0, candidate);
182375
- }
182376
- }
182377
- else {
182378
- this._chains.push([candidate]);
182379
- }
182380
- }
182381
- }
182382
- }
182383
- }
182384
- /** Transfer markup (e.g. startCut, endCut) from source to destination */
182385
- transferMarkup(source, dest) {
182386
- if (source && dest) {
182387
- dest.startCut = source.startCut;
182388
- dest.endCut = source.endCut;
182389
- }
182390
- }
182391
- /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
182392
- * * The input array is assumed to be connected appropriately to act as the curves of a Path.
182393
- * * When a path is created the curves array is CAPTURED.
182394
- */
182395
- promoteArrayToCurves(curves, makeLoopIfClosed) {
182396
- if (curves.length === 0)
182397
- return undefined;
182398
- if (makeLoopIfClosed) {
182399
- ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);
182400
- ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);
182401
- if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))
182402
- return _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop.createArray(curves);
182403
- }
182404
- if (curves.length === 1)
182405
- return curves[0];
182406
- return _Path__WEBPACK_IMPORTED_MODULE_2__.Path.createArray(curves);
182407
- }
182408
- /** Return the collected results, structured as the simplest possible type. */
182409
- grabResult(makeLoopIfClosed = false) {
182410
- const chains = this._chains;
182411
- if (chains.length === 0)
182412
- return undefined;
182413
- if (chains.length === 1)
182414
- return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
182415
- const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.BagOfCurves.create();
182416
- for (const chain of chains) {
182417
- const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
182418
- bag.tryAddChild(q);
182419
- }
182420
- return bag;
182421
- }
182422
- /** test if there is a break between primitiveA and primitiveB, due to any condition such as
182423
- * * primitiveA.endCut
182424
- * * primitiveB.startCut
182425
- * * physical gap between primitives.
182426
- */
182427
- static needBreakBetweenPrimitives(primitiveA, primitiveB, isXYOnly = false) {
182428
- if (primitiveA === undefined)
182429
- return true;
182430
- if (primitiveB === undefined)
182431
- return true;
182432
- if (primitiveA.endCut !== undefined)
182433
- return true;
182434
- if (primitiveB.startCut !== undefined)
182435
- return true;
182436
- ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);
182437
- ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);
182438
- return isXYOnly
182439
- ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)
182440
- : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);
182441
- }
182442
- }
182443
-
182444
-
182445
182251
  /***/ }),
182446
182252
 
182447
182253
  /***/ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js":
@@ -182689,7 +182495,7 @@ __webpack_require__.r(__webpack_exports__);
182689
182495
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
182690
182496
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
182691
182497
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
182692
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
182498
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
182693
182499
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
182694
182500
  /*---------------------------------------------------------------------------------------------
182695
182501
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -183378,7 +183184,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
183378
183184
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
183379
183185
  */
183380
183186
  constructOffsetXY(offsetDistanceOrOptions) {
183381
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
183187
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
183382
183188
  const offsets = [];
183383
183189
  for (const prim of this.collectCurvePrimitives(undefined, true, true)) {
183384
183190
  const offset = prim.constructOffsetXY(options);
@@ -183467,8 +183273,8 @@ __webpack_require__.r(__webpack_exports__);
183467
183273
  * same plane).
183468
183274
  * - `Loop` - A chain required to close from last to first so that a planar area is enclosed (so curves have to
183469
183275
  * be on the same plane).
183470
- * - `ParityRegion` -- a collection of coplanar `Loop`s, with "in/out" classification by parity rules.
183471
- * - `UnionRegion` -- a collection of coplanar `Loop`s, with "in/out" classification by union rules.
183276
+ * - `ParityRegion` -- a collection of coplanar `Loop`, with "in/out" classification by parity rules.
183277
+ * - `UnionRegion` -- a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
183472
183278
  * - `BagOfCurves` -- a collection of `AnyCurve` with no implied structure.
183473
183279
  *
183474
183280
  * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
@@ -187416,6 +187222,183 @@ class CurveLocationDetailPair {
187416
187222
  }
187417
187223
 
187418
187224
 
187225
+ /***/ }),
187226
+
187227
+ /***/ "../../core/geometry/lib/esm/curve/CurveOps.js":
187228
+ /*!*****************************************************!*\
187229
+ !*** ../../core/geometry/lib/esm/curve/CurveOps.js ***!
187230
+ \*****************************************************/
187231
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
187232
+
187233
+ "use strict";
187234
+ __webpack_require__.r(__webpack_exports__);
187235
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
187236
+ /* harmony export */ CurveOps: () => (/* binding */ CurveOps)
187237
+ /* harmony export */ });
187238
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
187239
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
187240
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
187241
+ /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
187242
+ /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
187243
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
187244
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
187245
+ /*---------------------------------------------------------------------------------------------
187246
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
187247
+ * See LICENSE.md in the project root for license terms and full copyright notice.
187248
+ *--------------------------------------------------------------------------------------------*/
187249
+ /** @packageDocumentation
187250
+ * @module Curve
187251
+ */
187252
+
187253
+
187254
+
187255
+
187256
+
187257
+
187258
+
187259
+ /**
187260
+ * Static methods for miscellaneous curve operations.
187261
+ * @public
187262
+ */
187263
+ class CurveOps {
187264
+ /** Recursively sum curve lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level. */
187265
+ static sumLengths(curves) {
187266
+ let mySum = 0;
187267
+ if (curves instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive) {
187268
+ mySum += curves.curveLength();
187269
+ }
187270
+ else if (curves instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_1__.CurveCollection) {
187271
+ mySum += curves.sumLengths();
187272
+ }
187273
+ else if (Array.isArray(curves)) {
187274
+ for (const data1 of curves)
187275
+ mySum += this.sumLengths(data1);
187276
+ }
187277
+ return mySum;
187278
+ }
187279
+ /** Recursively extend the range by each curve's range, allowing CurvePrimitive, CurveCollection, or array of such at any level. */
187280
+ static extendRange(range, curves) {
187281
+ if (Array.isArray(curves)) {
187282
+ for (const data1 of curves)
187283
+ this.extendRange(range, data1);
187284
+ }
187285
+ else {
187286
+ curves.extendRange(range);
187287
+ }
187288
+ return range;
187289
+ }
187290
+ /**
187291
+ * Construct a separate xy-offset for each input curve.
187292
+ * * For best offset results, the inputs should be parallel to the xy-plane.
187293
+ * @param curves input curve(s), z-coordinates ignored. Only [[ChainTypes]] are handled.
187294
+ * @param offset offset distance (positive to left of curve, negative to right)
187295
+ * @param result array to collect offset curves
187296
+ * @returns summed length of offset curves
187297
+ */
187298
+ static appendXYOffsets(curves, offset, result) {
187299
+ let summedLengths = 0;
187300
+ if (curves instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive) {
187301
+ const resultA = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(_Path__WEBPACK_IMPORTED_MODULE_3__.Path.create(curves), offset);
187302
+ if (resultA) {
187303
+ summedLengths += this.sumLengths(resultA);
187304
+ result.push(resultA);
187305
+ }
187306
+ }
187307
+ else if (curves instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop || curves instanceof _Path__WEBPACK_IMPORTED_MODULE_3__.Path) {
187308
+ const resultA = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offset);
187309
+ if (resultA) {
187310
+ summedLengths += this.sumLengths(resultA);
187311
+ result.push(resultA);
187312
+ }
187313
+ }
187314
+ else if (curves instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_1__.BagOfCurves) {
187315
+ for (const q of curves.children)
187316
+ summedLengths += this.appendXYOffsets(q, offset, result);
187317
+ }
187318
+ else if (Array.isArray(curves)) {
187319
+ for (const q of curves)
187320
+ summedLengths += this.appendXYOffsets(q, offset, result);
187321
+ }
187322
+ return summedLengths;
187323
+ }
187324
+ /**
187325
+ * Restructure curve fragments as Paths and Loops, and construct xy-offsets of the chains.
187326
+ * * If the inputs do not form Loop(s), the classification of offsets is suspect.
187327
+ * * For best offset results, the inputs should be parallel to the xy-plane.
187328
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
187329
+ * @param fragments fragments to be chained and offset
187330
+ * @param offsetDistance offset distance, applied to both sides of each fragment to produce inside and outside xy-offset curves.
187331
+ * @param gapTolerance distance to be treated as "effectively zero" when joining head-to-tail
187332
+ * @returns object with named chains, insideOffsets, outsideOffsets
187333
+ */
187334
+ static collectInsideAndOutsideXYOffsets(fragments, offsetDistance, gapTolerance) {
187335
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance);
187336
+ for (const s of fragments) {
187337
+ collector.captureCurve(s);
187338
+ }
187339
+ const chains = collector.grabResult(true);
187340
+ const myOffsetA = [];
187341
+ const myOffsetB = [];
187342
+ const offsetLengthA = CurveOps.appendXYOffsets(chains, offsetDistance, myOffsetA);
187343
+ const offsetLengthB = CurveOps.appendXYOffsets(chains, -offsetDistance, myOffsetB);
187344
+ if (offsetLengthA > offsetLengthB) {
187345
+ return { outsideOffsets: myOffsetA, insideOffsets: myOffsetB, chains };
187346
+ }
187347
+ else {
187348
+ return { insideOffsets: myOffsetA, outsideOffsets: myOffsetB, chains };
187349
+ }
187350
+ }
187351
+ /**
187352
+ * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
187353
+ * * The construction will remove "some" local effects of features smaller than the offset distance, but will not detect self intersection among widely separated edges.
187354
+ * @param curves base curves.
187355
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
187356
+ */
187357
+ static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
187358
+ return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
187359
+ }
187360
+ /**
187361
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
187362
+ * @param curve primitive to offset
187363
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
187364
+ */
187365
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
187366
+ return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_2__.CurveChainWireOffsetContext.createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions);
187367
+ }
187368
+ /**
187369
+ * Restructure curve fragments as Paths and Loops.
187370
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
187371
+ * @param fragments fragments to be chained
187372
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
187373
+ * @param planeTolerance tolerance for considering a closed chain to be planar. If undefined, only create Path. If defined, create Loops for closed chains within tolerance of a plane.
187374
+ * @returns chains, possibly wrapped in a [[BagOfCurves]].
187375
+ */
187376
+ static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance) {
187377
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance, planeTolerance);
187378
+ for (const s of fragments) {
187379
+ collector.captureCurve(s);
187380
+ }
187381
+ return collector.grabResult(true);
187382
+ }
187383
+ /**
187384
+ * Restructure curve fragments as Paths and Loops, to be stroked and passed into the callback.
187385
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
187386
+ * @param fragments fragments to be chained and stroked
187387
+ * @param announceChain callback to process each stroked Path and Loop
187388
+ * @param strokeOptions options for stroking the chains
187389
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail. Also used for removing duplicate points in the stroked chains.
187390
+ * @param planeTolerance tolerance for considering a closed chain to be planar. If undefined, only create Path. If defined, create Loops for closed chains within tolerance of a plane.
187391
+ */
187392
+ static collectChainsAsLineString3d(fragments, announceChain, strokeOptions, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.smallMetricDistance) {
187393
+ const collector = new _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_5__.MultiChainCollector(gapTolerance, planeTolerance);
187394
+ for (const s of fragments) {
187395
+ collector.captureCurve(s);
187396
+ }
187397
+ collector.announceChainsAsLineString3d(announceChain, strokeOptions);
187398
+ }
187399
+ }
187400
+
187401
+
187419
187402
  /***/ }),
187420
187403
 
187421
187404
  /***/ "../../core/geometry/lib/esm/curve/CurvePrimitive.js":
@@ -188308,7 +188291,7 @@ __webpack_require__.r(__webpack_exports__);
188308
188291
  * @public
188309
188292
  */
188310
188293
  class GeometryQuery {
188311
- /** Return the range of the entire (tree) GeometryQuery */
188294
+ /** Return the range of the entire GeometryQuery tree */
188312
188295
  range(transform, result) {
188313
188296
  if (result)
188314
188297
  result.setNull();
@@ -188356,7 +188339,7 @@ class GeometryQuery {
188356
188339
  return false;
188357
188340
  }
188358
188341
  /**
188359
- * Apply instance method isAlmostEqual if both are defined.
188342
+ * Apply instance method [[isAlmostEqual]] if both are defined.
188360
188343
  * * both undefined returns true
188361
188344
  * * single defined returns false
188362
188345
  */
@@ -188393,7 +188376,7 @@ __webpack_require__.r(__webpack_exports__);
188393
188376
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
188394
188377
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
188395
188378
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
188396
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
188379
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
188397
188380
  /*---------------------------------------------------------------------------------------------
188398
188381
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
188399
188382
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -188773,7 +188756,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
188773
188756
  const offsetVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Vector3d.createStartEnd(this._point0, this._point1);
188774
188757
  if (offsetVec.normalizeInPlace()) {
188775
188758
  offsetVec.rotate90CCWXY(offsetVec);
188776
- const offsetDist = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.getOffsetDistance(offsetDistanceOrOptions);
188759
+ const offsetDist = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.getOffsetDistance(offsetDistanceOrOptions);
188777
188760
  return LineSegment3d.create(this._point0.plusScaled(offsetVec, offsetDist), this._point1.plusScaled(offsetVec, offsetDist));
188778
188761
  }
188779
188762
  return undefined;
@@ -188822,8 +188805,8 @@ __webpack_require__.r(__webpack_exports__);
188822
188805
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
188823
188806
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
188824
188807
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
188825
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
188826
188808
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
188809
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
188827
188810
  /* harmony import */ var _Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
188828
188811
 
188829
188812
 
@@ -190161,7 +190144,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
190161
190144
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
190162
190145
  */
190163
190146
  constructOffsetXY(offsetDistanceOrOptions) {
190164
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
190147
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
190165
190148
  const offsets = [];
190166
190149
  for (const seg of this.collectCurvePrimitives(undefined, true, true)) {
190167
190150
  const offset = seg.constructOffsetXY(options);
@@ -190401,6 +190384,184 @@ class LoopCurveLoopCurve {
190401
190384
  }
190402
190385
 
190403
190386
 
190387
+ /***/ }),
190388
+
190389
+ /***/ "../../core/geometry/lib/esm/curve/OffsetOptions.js":
190390
+ /*!**********************************************************!*\
190391
+ !*** ../../core/geometry/lib/esm/curve/OffsetOptions.js ***!
190392
+ \**********************************************************/
190393
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
190394
+
190395
+ "use strict";
190396
+ __webpack_require__.r(__webpack_exports__);
190397
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
190398
+ /* harmony export */ JointOptions: () => (/* binding */ JointOptions),
190399
+ /* harmony export */ OffsetOptions: () => (/* binding */ OffsetOptions)
190400
+ /* harmony export */ });
190401
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
190402
+ /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
190403
+ /*---------------------------------------------------------------------------------------------
190404
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
190405
+ * See LICENSE.md in the project root for license terms and full copyright notice.
190406
+ *--------------------------------------------------------------------------------------------*/
190407
+ /** @packageDocumentation
190408
+ * @module Curve
190409
+ */
190410
+
190411
+
190412
+ /**
190413
+ * Control parameters for joint construction, used in offset construction methods such as [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].
190414
+ * * Define a "joint" as the common point between adjacent segments of the input curve.
190415
+ * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
190416
+ * the segments at the joint.
190417
+ * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
190418
+ * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
190419
+ * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
190420
+ * single intersection point (to create a sharp corner).
190421
+ * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
190422
+ * * lie outside the arc that would have been created by the first construction
190423
+ * * have uniform turn angle less than `options.maxChamferDegrees`
190424
+ * * touch the arc at their midpoint (except first and last edge).
190425
+ * @public
190426
+ */
190427
+ class JointOptions {
190428
+ /**
190429
+ * Construct JointOptions.
190430
+ * * leftOffsetDistance is required
190431
+ * * minArcDegrees and maxChamferDegrees are optional.
190432
+ */
190433
+ constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
190434
+ /**
190435
+ * Smallest arc to construct.
190436
+ * * If this control angle is 180 degrees or more, arcs are never created.
190437
+ */
190438
+ this.minArcDegrees = 180.0;
190439
+ /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
190440
+ this.maxChamferTurnDegrees = 90;
190441
+ /**
190442
+ * Whether to remove the internal turn angle upper bound for sharp corner construction.
190443
+ * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
190444
+ * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
190445
+ * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
190446
+ * up to `maxChamferTurnDegrees`.
190447
+ * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset with
190448
+ * sharp corners at each joint by setting `maxChamferTurnDegrees < minArcDegrees` and `allowSharpestCorners` to true.
190449
+ */
190450
+ this.allowSharpestCorners = false;
190451
+ /** Offset distance, positive to left of base curve. */
190452
+ this.leftOffsetDistance = 0;
190453
+ /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
190454
+ this.preserveEllipticalArcs = false;
190455
+ this.leftOffsetDistance = leftOffsetDistance;
190456
+ this.minArcDegrees = minArcDegrees;
190457
+ this.maxChamferTurnDegrees = maxChamferDegrees;
190458
+ this.preserveEllipticalArcs = preserveEllipticalArcs;
190459
+ this.allowSharpestCorners = allowSharpestCorners;
190460
+ }
190461
+ /** Return a deep clone. */
190462
+ clone() {
190463
+ return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
190464
+ }
190465
+ /** Copy values of input options */
190466
+ setFrom(other) {
190467
+ this.leftOffsetDistance = other.leftOffsetDistance;
190468
+ this.minArcDegrees = other.minArcDegrees;
190469
+ this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
190470
+ this.preserveEllipticalArcs = other.preserveEllipticalArcs;
190471
+ this.allowSharpestCorners = other.allowSharpestCorners;
190472
+ }
190473
+ /**
190474
+ * Parse a number or JointOptions up to JointOptions:
190475
+ * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
190476
+ * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
190477
+ * @param leftOffsetDistanceOrOptions
190478
+ */
190479
+ static create(leftOffsetDistanceOrOptions) {
190480
+ if (leftOffsetDistanceOrOptions instanceof JointOptions)
190481
+ return leftOffsetDistanceOrOptions;
190482
+ return new JointOptions(leftOffsetDistanceOrOptions);
190483
+ }
190484
+ /** Return true if the options indicate this amount of turn should be handled with an arc. */
190485
+ needArc(theta) {
190486
+ return Math.abs(theta.degrees) >= this.minArcDegrees;
190487
+ }
190488
+ /** Return the number of corners needed to chamfer the given turn angle. */
190489
+ numChamferPoints(theta) {
190490
+ const degrees = Math.abs(theta.degrees);
190491
+ const minStepDegreesClamp = 10;
190492
+ let maxStepDegreesClamp = 120;
190493
+ if (this.allowSharpestCorners) {
190494
+ maxStepDegreesClamp = this.maxChamferTurnDegrees;
190495
+ }
190496
+ const stepDegrees = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
190497
+ if (degrees <= stepDegrees)
190498
+ return 1;
190499
+ return Math.ceil(degrees / stepDegrees);
190500
+ }
190501
+ }
190502
+ /**
190503
+ * Options for offsetting a curve, used in offset construction methods such as [[CurvePrimitive.constructOffsetXY]], [[RegionOps.constructPolygonWireXYOffset]] and [[Region.Ops.constructCurveXYOffset]].
190504
+ * @public
190505
+ */
190506
+ class OffsetOptions {
190507
+ /** Options that are provided are captured. */
190508
+ constructor(offsetDistanceOrOptions, strokeOptions) {
190509
+ this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
190510
+ this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__.StrokeOptions.createForCurves();
190511
+ }
190512
+ get minArcDegrees() {
190513
+ return this.jointOptions.minArcDegrees;
190514
+ }
190515
+ set minArcDegrees(value) {
190516
+ this.jointOptions.minArcDegrees = value;
190517
+ }
190518
+ get maxChamferTurnDegrees() {
190519
+ return this.jointOptions.maxChamferTurnDegrees;
190520
+ }
190521
+ set maxChamferTurnDegrees(value) {
190522
+ this.jointOptions.maxChamferTurnDegrees = value;
190523
+ }
190524
+ get allowSharpestCorners() {
190525
+ return this.jointOptions.allowSharpestCorners;
190526
+ }
190527
+ set allowSharpestCorners(value) {
190528
+ this.jointOptions.allowSharpestCorners = value;
190529
+ }
190530
+ get leftOffsetDistance() {
190531
+ return this.jointOptions.leftOffsetDistance;
190532
+ }
190533
+ set leftOffsetDistance(value) {
190534
+ this.jointOptions.leftOffsetDistance = value;
190535
+ }
190536
+ get preserveEllipticalArcs() {
190537
+ return this.jointOptions.preserveEllipticalArcs;
190538
+ }
190539
+ set preserveEllipticalArcs(value) {
190540
+ this.jointOptions.preserveEllipticalArcs = value;
190541
+ }
190542
+ /**
190543
+ * Convert variant input into OffsetOptions.
190544
+ * * If a JointOptions is provided, it is captured.
190545
+ * * If an OffsetOptions is provided, a reference to it is returned.
190546
+ */
190547
+ static create(offsetDistanceOrOptions) {
190548
+ if (offsetDistanceOrOptions instanceof OffsetOptions)
190549
+ return offsetDistanceOrOptions;
190550
+ return new OffsetOptions(offsetDistanceOrOptions);
190551
+ }
190552
+ /** Convert variant input into offset distance */
190553
+ static getOffsetDistance(offsetDistanceOrOptions) {
190554
+ if (typeof offsetDistanceOrOptions === "number")
190555
+ return offsetDistanceOrOptions;
190556
+ return offsetDistanceOrOptions.leftOffsetDistance;
190557
+ }
190558
+ /** Return a deep clone. */
190559
+ clone() {
190560
+ return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
190561
+ }
190562
+ }
190563
+
190564
+
190404
190565
  /***/ }),
190405
190566
 
190406
190567
  /***/ "../../core/geometry/lib/esm/curve/ParityRegion.js":
@@ -192546,32 +192707,33 @@ __webpack_require__.r(__webpack_exports__);
192546
192707
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
192547
192708
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
192548
192709
  /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
192549
- /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
192710
+ /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
192550
192711
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
192551
- /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
192552
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
192553
- /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
192554
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
192712
+ /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
192713
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
192714
+ /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
192715
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
192555
192716
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
192556
192717
  /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
192557
192718
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
192558
192719
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
192559
192720
  /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
192560
- /* harmony import */ var _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ChainCollectorContext */ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js");
192561
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
192562
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
192563
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
192721
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
192722
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
192723
+ /* harmony import */ var _CurveOps__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
192724
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
192564
192725
  /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
192565
- /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
192566
- /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
192726
+ /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
192727
+ /* harmony import */ var _internalContexts_ChainCollectorContext__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./internalContexts/ChainCollectorContext */ "../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js");
192567
192728
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
192568
192729
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
192569
192730
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
192731
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
192570
192732
  /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
192571
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
192572
- /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
192573
- /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
192574
- /* harmony import */ var _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Query/InOutTests */ "../../core/geometry/lib/esm/curve/Query/InOutTests.js");
192733
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
192734
+ /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
192735
+ /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
192736
+ /* harmony import */ var _Query_InOutTests__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Query/InOutTests */ "../../core/geometry/lib/esm/curve/Query/InOutTests.js");
192575
192737
  /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
192576
192738
  /* harmony import */ var _RegionMomentsXY__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
192577
192739
  /* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
@@ -192614,6 +192776,7 @@ __webpack_require__.r(__webpack_exports__);
192614
192776
 
192615
192777
 
192616
192778
 
192779
+
192617
192780
 
192618
192781
 
192619
192782
  /**
@@ -192892,8 +193055,6 @@ class RegionOps {
192892
193055
  * the xy-plane.
192893
193056
  * * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not
192894
193057
  * guarantee a simple area offset.
192895
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
192896
- * * See [[JointOptions]] class doc for offset construction rules.
192897
193058
  * @param points a single loop or path
192898
193059
  * @param wrap true to include wraparound
192899
193060
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or JointOptions
@@ -192907,13 +193068,13 @@ class RegionOps {
192907
193068
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
192908
193069
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
192909
193070
  * not detect self intersection among widely separated edges.
192910
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
192911
- * * See [[JointOptions]] class doc for offset construction rules.
193071
+ * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
192912
193072
  * @param curves base curves.
192913
193073
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
192914
193074
  */
192915
193075
  static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
192916
- return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
193076
+ const offsetOptions = _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__.OffsetOptions.create(offsetDistanceOrOptions);
193077
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.constructCurveXYOffset(curves, offsetOptions);
192917
193078
  }
192918
193079
  /**
192919
193080
  * Test if point (x,y) is IN, OUT or ON a region.
@@ -192923,7 +193084,7 @@ class RegionOps {
192923
193084
  * @param y y coordinate of point to test
192924
193085
  */
192925
193086
  static testPointInOnOutRegionXY(curves, x, y) {
192926
- return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
193087
+ return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_20__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
192927
193088
  }
192928
193089
  /**
192929
193090
  * Create curve collection of subtype determined by gaps between the input curves.
@@ -192947,11 +193108,11 @@ class RegionOps {
192947
193108
  maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));
192948
193109
  let collection;
192949
193110
  if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(maxGap)) {
192950
- collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_19__.Path.create();
193111
+ collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_21__.Path.create();
192951
193112
  isPath = true;
192952
193113
  }
192953
193114
  else {
192954
- collection = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.BagOfCurves.create();
193115
+ collection = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.BagOfCurves.create();
192955
193116
  }
192956
193117
  for (const c of curves)
192957
193118
  collection.tryAddChild(c);
@@ -192976,7 +193137,7 @@ class RegionOps {
192976
193137
  * @param cutterCurves input curves to intersect with `curvesToCut`
192977
193138
  */
192978
193139
  static cloneCurvesWithXYSplits(curvesToCut, cutterCurves) {
192979
- return _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__.CurveSplitContext.cloneCurvesWithXYSplits(curvesToCut, cutterCurves);
193140
+ return _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_23__.CurveSplitContext.cloneCurvesWithXYSplits(curvesToCut, cutterCurves);
192980
193141
  }
192981
193142
  /**
192982
193143
  * Create paths assembled from many curves.
@@ -192987,35 +193148,36 @@ class RegionOps {
192987
193148
  static splitToPathsBetweenBreaks(source, makeClones) {
192988
193149
  if (source === undefined)
192989
193150
  return undefined;
192990
- if (source instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive)
193151
+ if (source instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive)
192991
193152
  return source;
192992
193153
  // source is a collection . ..
192993
193154
  const primitives = source.collectCurvePrimitives();
192994
- const chainCollector = new _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__.ChainCollectorContext(makeClones);
193155
+ const chainCollector = new _internalContexts_ChainCollectorContext__WEBPACK_IMPORTED_MODULE_25__.ChainCollectorContext(makeClones);
192995
193156
  for (const primitive of primitives) {
192996
193157
  chainCollector.announceCurvePrimitive(primitive);
192997
193158
  }
192998
193159
  return chainCollector.grabResult();
192999
193160
  }
193000
193161
  /**
193001
- * Restructure curve fragments as chains, and construct (left and right) chain offsets in the xy-plane.
193002
- * * BEWARE that if the input is not a loop, the classification of outputs is suspect.
193003
- * @param fragments fragments to be chained, z-coordinates ignored
193004
- * @param offsetDistance offset distance
193005
- * @param gapTolerance absolute endpoint tolerance for computing chains
193162
+ * Restructure curve fragments as Paths and Loops, and construct xy-offsets of the chains.
193163
+ * * If the inputs do not form Loop(s), the classification of offsets is suspect.
193164
+ * * For best offset results, the inputs should be parallel to the xy-plane.
193165
+ * @param fragments fragments to be chained and offset
193166
+ * @param offsetDistance offset distance, applied to both sides of each fragment to produce inside and outside xy-offset curves.
193167
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
193006
193168
  * @returns object with named chains, insideOffsets, outsideOffsets
193007
193169
  */
193008
193170
  static collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance) {
193009
- return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance);
193171
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.collectInsideAndOutsideXYOffsets(fragments, offsetDistance, gapTolerance);
193010
193172
  }
193011
193173
  /**
193012
- * Restructure curve fragments as chains.
193174
+ * Restructure curve fragments as Paths and Loops.
193013
193175
  * @param fragments fragments to be chained
193014
- * @param gapTolerance absolute endpoint tolerance for computing chains
193015
- * @returns chains, possibly wrapped in BagOfCurves if there multiple chains
193176
+ * @param gapTolerance distance to be treated as "effectively zero" when assembling fragments head-to-tail
193177
+ * @returns chains, possibly wrapped in a [[BagOfCurves]].
193016
193178
  */
193017
193179
  static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
193018
- return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectChains(fragments, gapTolerance);
193180
+ return _CurveOps__WEBPACK_IMPORTED_MODULE_19__.CurveOps.collectChains(fragments, gapTolerance);
193019
193181
  }
193020
193182
  /**
193021
193183
  * Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments
@@ -193027,17 +193189,17 @@ class RegionOps {
193027
193189
  const result = { insideParts: [], outsideParts: [], coincidentParts: [] };
193028
193190
  const pathWithIntersectionMarkup = RegionOps.cloneCurvesWithXYSplits(curvesToCut, region);
193029
193191
  const splitPaths = RegionOps.splitToPathsBetweenBreaks(pathWithIntersectionMarkup, true);
193030
- if (splitPaths instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection) {
193192
+ if (splitPaths instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection) {
193031
193193
  for (const child of splitPaths.children) {
193032
- const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(child);
193194
+ const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(child);
193033
193195
  if (pointOnChild) {
193034
193196
  const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);
193035
193197
  pushToInOnOutArrays(child, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);
193036
193198
  }
193037
193199
  }
193038
193200
  }
193039
- else if (splitPaths instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive) {
193040
- const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(splitPaths);
193201
+ else if (splitPaths instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive) {
193202
+ const pointOnChild = _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection.createCurveLocationDetailOnAnyCurvePrimitive(splitPaths);
193041
193203
  if (pointOnChild) {
193042
193204
  const inOnOut = RegionOps.testPointInOnOutRegionXY(region, pointOnChild.point.x, pointOnChild.point.y);
193043
193205
  pushToInOnOutArrays(splitPaths, inOnOut, result.outsideParts, result.coincidentParts, result.insideParts);
@@ -193079,7 +193241,7 @@ class RegionOps {
193079
193241
  }
193080
193242
  else {
193081
193243
  dataToUse = _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray.create(data);
193082
- _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
193244
+ _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_26__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
193083
193245
  if (dataToUse.length < (requireClosurePoint ? 5 : 4))
193084
193246
  return undefined;
193085
193247
  }
@@ -193090,19 +193252,19 @@ class RegionOps {
193090
193252
  if (normalVector.normalizeInPlace()
193091
193253
  && vector12.isAlmostEqual(vector03)
193092
193254
  && vector01.isPerpendicularTo(vector03)) {
193093
- return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__.Transform.createOriginAndMatrixColumns(dataToUse.getPoint3dAtUncheckedPointIndex(0), vector01, vector03, normalVector);
193255
+ return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_27__.Transform.createOriginAndMatrixColumns(dataToUse.getPoint3dAtUncheckedPointIndex(0), vector01, vector03, normalVector);
193094
193256
  }
193095
193257
  }
193096
193258
  else if (Array.isArray(data)) {
193097
- return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayCarrier(data), requireClosurePoint);
193259
+ return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_28__.Point3dArrayCarrier(data), requireClosurePoint);
193098
193260
  }
193099
193261
  else if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
193100
193262
  return this.rectangleEdgeTransform(data.children[0].packedPoints, true);
193101
193263
  }
193102
- else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_19__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
193264
+ else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_21__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
193103
193265
  return this.rectangleEdgeTransform(data.children[0].packedPoints, requireClosurePoint);
193104
193266
  }
193105
- else if (data instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveChain) {
193267
+ else if (data instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveChain) {
193106
193268
  if (!data.checkForNonLinearPrimitives()) {
193107
193269
  // const linestring = LineString3d.create();
193108
193270
  const strokes = data.getPackedStrokes();
@@ -193126,7 +193288,7 @@ class RegionOps {
193126
193288
  * @param options options for tolerance and selective simplification.
193127
193289
  */
193128
193290
  static consolidateAdjacentPrimitives(curves, options) {
193129
- const context = new _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__.ConsolidateAdjacentCurvePrimitivesContext(options);
193291
+ const context = new _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_29__.ConsolidateAdjacentCurvePrimitivesContext(options);
193130
193292
  curves.dispatchToGeometryHandler(context);
193131
193293
  }
193132
193294
  /**
@@ -193145,13 +193307,13 @@ class RegionOps {
193145
193307
  const loopAndArea = [];
193146
193308
  for (const candidate of loops) {
193147
193309
  if (candidate instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop)
193148
- _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, candidate);
193310
+ _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.pushLoop(loopAndArea, candidate);
193149
193311
  else if (candidate instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
193150
193312
  const loop = _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(candidate);
193151
- _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, loop);
193313
+ _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.pushLoop(loopAndArea, loop);
193152
193314
  }
193153
193315
  }
193154
- return _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.sortAsAnyRegion(loopAndArea);
193316
+ return _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_30__.SortablePolygon.sortAsAnyRegion(loopAndArea);
193155
193317
  }
193156
193318
  /**
193157
193319
  * Find all areas bounded by the unstructured, possibly intersecting curves.
@@ -193176,7 +193338,7 @@ class RegionOps {
193176
193338
  const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
193177
193339
  const range = this.curveArrayRange(primitives);
193178
193340
  const areaTol = this.computeXYAreaTolerance(range, tolerance);
193179
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_30__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
193341
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_31__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
193180
193342
  const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.assembleHalfEdgeGraph(primitives, intersections, tolerance);
193181
193343
  return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);
193182
193344
  }
@@ -193193,10 +193355,10 @@ class RegionOps {
193193
193355
  */
193194
193356
  static collectCurvePrimitives(candidates, collectorArray, smallestPossiblePrimitives = false, explodeLinestrings = false) {
193195
193357
  const results = collectorArray === undefined ? [] : collectorArray;
193196
- if (candidates instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__.CurvePrimitive) {
193358
+ if (candidates instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_24__.CurvePrimitive) {
193197
193359
  candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);
193198
193360
  }
193199
- else if (candidates instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_20__.CurveCollection) {
193361
+ else if (candidates instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_22__.CurveCollection) {
193200
193362
  candidates.collectCurvePrimitives(results, smallestPossiblePrimitives, explodeLinestrings);
193201
193363
  }
193202
193364
  else if (Array.isArray(candidates)) {
@@ -193234,12 +193396,12 @@ class RegionOps {
193234
193396
  * @param worldToLocal transform to apply to data before computing its range
193235
193397
  */
193236
193398
  static curveArrayRange(data, worldToLocal) {
193237
- const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__.Range3d.create();
193238
- if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
193399
+ const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_32__.Range3d.create();
193400
+ if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__.GeometryQuery)
193239
193401
  data.extendRange(range, worldToLocal);
193240
193402
  else if (Array.isArray(data)) {
193241
193403
  for (const c of data) {
193242
- if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
193404
+ if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_33__.GeometryQuery)
193243
193405
  c.extendRange(range, worldToLocal);
193244
193406
  else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__.Point3d)
193245
193407
  range.extendPoint(c, worldToLocal);
@@ -193546,7 +193708,7 @@ class RegionOpsFaceToFaceSearch {
193546
193708
  const baseMask = _topology_Graph__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeMask.BOUNDARY_EDGE | _topology_Graph__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeMask.PRIMARY_EDGE;
193547
193709
  const callbacks = RegionBooleanContext.create(opA, opB);
193548
193710
  callbacks.graph = graph;
193549
- callbacks.faceAreaFunction = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea;
193711
+ callbacks.faceAreaFunction = (node) => _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea(node);
193550
193712
  // Add all the members in groupA ..
193551
193713
  for (const data of dataA) {
193552
193714
  if (data.length > 2) {
@@ -193991,7 +194153,7 @@ class GraphComponent {
193991
194153
  }
193992
194154
  this.faceAreas.length = 0;
193993
194155
  if (!faceAreaFunction)
193994
- faceAreaFunction = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea;
194156
+ faceAreaFunction = (node) => _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__.HalfEdgeGraphSearch.signedFaceArea(node);
193995
194157
  for (const f of this.faces) {
193996
194158
  this.faceAreas.push(faceAreaFunction(f));
193997
194159
  }
@@ -194489,6 +194651,199 @@ class AppendPlaneIntersectionStrokeHandler extends _NewtonRtoRStrokeHandler__WEB
194489
194651
  }
194490
194652
 
194491
194653
 
194654
+ /***/ }),
194655
+
194656
+ /***/ "../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js":
194657
+ /*!***********************************************************************************!*\
194658
+ !*** ../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js ***!
194659
+ \***********************************************************************************/
194660
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
194661
+
194662
+ "use strict";
194663
+ __webpack_require__.r(__webpack_exports__);
194664
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
194665
+ /* harmony export */ ChainCollectorContext: () => (/* binding */ ChainCollectorContext)
194666
+ /* harmony export */ });
194667
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
194668
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
194669
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
194670
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
194671
+ /*---------------------------------------------------------------------------------------------
194672
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
194673
+ * See LICENSE.md in the project root for license terms and full copyright notice.
194674
+ *--------------------------------------------------------------------------------------------*/
194675
+
194676
+
194677
+
194678
+
194679
+ /**
194680
+ * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
194681
+ * * The caller makes a sequence of calls to announce individual primitives.
194682
+ * * The collector has 2 use cases in mind, controlled by `searchAllPaths` flag on `chainCollectorContext.announceCurvePrimitive`
194683
+ * * (a) "simple chains" -- the caller has the curve primitives in order and just needs to have them monitored for coordinate breaks that indicate transition to a new chain.
194684
+ * * The collector needs to watch for connection to the most recent path but not search for prior paths to join to instead.
194685
+ * * (b) "mixed" primitives -- primitive order is NOT significant for chain assembly.
194686
+ * * The collector needs to search all prior paths at both start and end, and consider connection to both the start and end of each new primitive.
194687
+ * * The per-curve announcement is
194688
+ * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
194689
+ * * When all curves have been announced, the call to grab the paths option
194690
+ * * formLoopsIfClosed
194691
+ * * If true, convert closed paths to `Loop`, open paths to `Path`
194692
+ * * If false, convert all paths (open or not) to `Path`
194693
+ * * Usage pattern is
194694
+ * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
194695
+ * * many times: ` context.announceCurvePrimitive (primitive, searchAllPaths)`
194696
+ * * end: ` result = context.grabResults (formLoopsIfClosed)`
194697
+ * @internal
194698
+ */
194699
+ class ChainCollectorContext {
194700
+ /**
194701
+ * Push a new chain with an optional first primitive.
194702
+ */
194703
+ pushNewChain(primitive) {
194704
+ const chain = [];
194705
+ if (primitive)
194706
+ chain.push(primitive);
194707
+ this._chains.push(chain);
194708
+ }
194709
+ findOrCreateTailChain() {
194710
+ if (this._chains.length === 0)
194711
+ this.pushNewChain();
194712
+ return this._chains[this._chains.length - 1];
194713
+ }
194714
+ findAnyChainToConnect(xyz) {
194715
+ for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
194716
+ const path = this._chains[chainIndexA];
194717
+ this._xyzWork1 = path[path.length - 1].endPoint(this._xyzWork1);
194718
+ if (this._xyzWork1.isAlmostEqual(xyz))
194719
+ return { chainIndex: chainIndexA, atEnd: true };
194720
+ this._xyzWork1 = path[0].startPoint(this._xyzWork1);
194721
+ if (this._xyzWork1.isAlmostEqual(xyz))
194722
+ return { chainIndex: chainIndexA, atEnd: false };
194723
+ }
194724
+ return undefined;
194725
+ }
194726
+ /** Initialize with an empty array of chains.
194727
+ * @param makeClones if true, all CurvePrimitives sent to `announceCurvePrimitive` is immediately cloned. If false, the reference to the original curve is maintained.
194728
+ */
194729
+ constructor(makeClones) {
194730
+ this._chains = [];
194731
+ this._makeClones = makeClones;
194732
+ }
194733
+ /** Announce a curve primitive
194734
+ * * searchAllChains controls the extent of search for connecting points.
194735
+ * * false ==> only consider connection to most recent chain.
194736
+ * * true ==> search for any connection, reversing direction as needed.
194737
+ * * Otherwise start a new chain.
194738
+ */
194739
+ announceCurvePrimitive(candidate, searchAllChains = false) {
194740
+ if (candidate) {
194741
+ if (this._makeClones) {
194742
+ const candidate1 = candidate.clone();
194743
+ if (!candidate1 || !(candidate1 instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive))
194744
+ return;
194745
+ this.transferMarkup(candidate, candidate1);
194746
+ candidate = candidate1;
194747
+ }
194748
+ if (!searchAllChains) {
194749
+ const activeChain = this.findOrCreateTailChain();
194750
+ if (activeChain.length === 0 || !ChainCollectorContext.needBreakBetweenPrimitives(activeChain[activeChain.length - 1], candidate))
194751
+ activeChain.push(candidate);
194752
+ else
194753
+ this.pushNewChain(candidate);
194754
+ }
194755
+ else {
194756
+ this._xyzWork0 = candidate.startPoint(this._xyzWork0);
194757
+ let connect = this.findAnyChainToConnect(this._xyzWork0);
194758
+ if (connect) {
194759
+ if (connect.atEnd) {
194760
+ this._chains[connect.chainIndex].push(candidate);
194761
+ }
194762
+ else {
194763
+ candidate.reverseInPlace();
194764
+ this._chains[connect.chainIndex].splice(0, 0, candidate);
194765
+ }
194766
+ }
194767
+ else {
194768
+ this._xyzWork0 = candidate.endPoint(this._xyzWork0);
194769
+ connect = this.findAnyChainToConnect(this._xyzWork0);
194770
+ if (connect) { // START of new primitive ..
194771
+ if (connect.atEnd) {
194772
+ candidate.reverseInPlace();
194773
+ this._chains[connect.chainIndex].push(candidate);
194774
+ }
194775
+ else {
194776
+ this._chains[connect.chainIndex].splice(0, 0, candidate);
194777
+ }
194778
+ }
194779
+ else {
194780
+ this._chains.push([candidate]);
194781
+ }
194782
+ }
194783
+ }
194784
+ }
194785
+ }
194786
+ /** Transfer markup (e.g. startCut, endCut) from source to destination */
194787
+ transferMarkup(source, dest) {
194788
+ if (source && dest) {
194789
+ dest.startCut = source.startCut;
194790
+ dest.endCut = source.endCut;
194791
+ }
194792
+ }
194793
+ /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
194794
+ * * The input array is assumed to be connected appropriately to act as the curves of a Path.
194795
+ * * When a path is created the curves array is CAPTURED.
194796
+ */
194797
+ promoteArrayToCurves(curves, makeLoopIfClosed) {
194798
+ if (curves.length === 0)
194799
+ return undefined;
194800
+ if (makeLoopIfClosed) {
194801
+ ChainCollectorContext._staticPointA = curves[0].startPoint(ChainCollectorContext._staticPointA);
194802
+ ChainCollectorContext._staticPointB = curves[curves.length - 1].endPoint(ChainCollectorContext._staticPointB);
194803
+ if (ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB))
194804
+ return _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop.createArray(curves);
194805
+ }
194806
+ if (curves.length === 1)
194807
+ return curves[0];
194808
+ return _Path__WEBPACK_IMPORTED_MODULE_2__.Path.createArray(curves);
194809
+ }
194810
+ /** Return the collected results, structured as the simplest possible type. */
194811
+ grabResult(makeLoopIfClosed = false) {
194812
+ const chains = this._chains;
194813
+ if (chains.length === 0)
194814
+ return undefined;
194815
+ if (chains.length === 1)
194816
+ return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
194817
+ const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.BagOfCurves.create();
194818
+ for (const chain of chains) {
194819
+ const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
194820
+ bag.tryAddChild(q);
194821
+ }
194822
+ return bag;
194823
+ }
194824
+ /** test if there is a break between primitiveA and primitiveB, due to any condition such as
194825
+ * * primitiveA.endCut
194826
+ * * primitiveB.startCut
194827
+ * * physical gap between primitives.
194828
+ */
194829
+ static needBreakBetweenPrimitives(primitiveA, primitiveB, isXYOnly = false) {
194830
+ if (primitiveA === undefined)
194831
+ return true;
194832
+ if (primitiveB === undefined)
194833
+ return true;
194834
+ if (primitiveA.endCut !== undefined)
194835
+ return true;
194836
+ if (primitiveB.startCut !== undefined)
194837
+ return true;
194838
+ ChainCollectorContext._staticPointA = primitiveA.endPoint(ChainCollectorContext._staticPointA);
194839
+ ChainCollectorContext._staticPointB = primitiveB.startPoint(ChainCollectorContext._staticPointB);
194840
+ return isXYOnly
194841
+ ? !ChainCollectorContext._staticPointA.isAlmostEqualXY(ChainCollectorContext._staticPointB)
194842
+ : !ChainCollectorContext._staticPointA.isAlmostEqual(ChainCollectorContext._staticPointB);
194843
+ }
194844
+ }
194845
+
194846
+
194492
194847
  /***/ }),
194493
194848
 
194494
194849
  /***/ "../../core/geometry/lib/esm/curve/internalContexts/CloneCurvesContext.js":
@@ -195089,22 +195444,19 @@ class GapSearchContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.Recu
195089
195444
  "use strict";
195090
195445
  __webpack_require__.r(__webpack_exports__);
195091
195446
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
195092
- /* harmony export */ MultiChainCollector: () => (/* binding */ MultiChainCollector),
195093
- /* harmony export */ OffsetHelpers: () => (/* binding */ OffsetHelpers)
195447
+ /* harmony export */ MultiChainCollector: () => (/* binding */ MultiChainCollector)
195094
195448
  /* harmony export */ });
195095
- /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195096
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195097
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195098
- /* harmony import */ var _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../curve/GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
195099
- /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195100
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195101
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
195102
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
195103
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
195104
195449
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195105
- /* harmony import */ var _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../curve/CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195106
- /* harmony import */ var _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
195107
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
195450
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
195451
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195452
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195453
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195454
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195455
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195456
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195457
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
195458
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
195459
+ /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
195108
195460
  /*---------------------------------------------------------------------------------------------
195109
195461
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195110
195462
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -195123,38 +195475,36 @@ __webpack_require__.r(__webpack_exports__);
195123
195475
 
195124
195476
 
195125
195477
 
195126
-
195127
-
195128
195478
  /**
195129
195479
  * Manage a growing array of arrays of curve primitives that are to be joined "head to tail" in paths.
195130
195480
  * * The caller makes a sequence of calls to announce individual primitives.
195131
- * * This collector (unlike the simpler "ChainCollector") expects to have inputs arriving in random order, leaving multiple open chains in play at any time.
195132
- * * chainCollector.announceCurvePrimitive (curve, searchAllPaths).
195133
- * * When all curves have been announced, the call to grab the paths option restructures the various active chains into Path and Loop objects.
195481
+ * * This collector (unlike the simpler [[ChainCollectorContext]]) expects to have inputs arriving in random order, leaving multiple open chains in play at any time.
195482
+ * * When all curves have been announced, the call to `grabResults` restructures the various active chains into Paths (and optionally, Loops).
195483
+ * * Chain formation is dependent upon input fragment order, as a greedy algorithm is employed.
195134
195484
  * * Usage pattern is
195135
- * * initialization: `context = new ChainCollectorContext (makeClones: boolean)`
195136
- * * many times
195137
- * * ` context.captureCurve (anyCurve, searchAllPaths)`
195138
- * * ` context.captureCurvePrimitive (primitive, searchAllPaths)`
195139
- * * end: ` result = context.grabResult (formLoopsIfClosed)`
195485
+ * * initialization: `context = new MultiChainCollector(gapTol, planeTol)`
195486
+ * * many times:
195487
+ * * `context.captureCurve(anyCurve)`
195488
+ * * `context.captureCurvePrimitive(primitive)`
195489
+ * * end: `result = context.grabResult(makeLoopIfClosed)`
195140
195490
  * @internal
195141
195491
  */
195142
195492
  class MultiChainCollector {
195143
195493
  /** Initialize with an empty array of chains.
195144
- * @param endPointShiftTolerance tolerance for calling endpoints identical
195145
- * @param planeTolerance tolerance for considering a loop to be planar. If undefined, only create Path. If defined, create Loop curves are if within tolerance of a plane.
195494
+ * @param gapTolerance tolerance for calling endpoints identical
195495
+ * @param planeTolerance tolerance for considering a closed chain to be planar. If undefined, only create Path. If defined, create Loops for closed chains within tolerance of a plane.
195146
195496
  */
195147
- constructor(endPointShiftTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
195497
+ constructor(gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, planeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
195148
195498
  this._chains = [];
195149
- this._endPointShiftTolerance = endPointShiftTolerance;
195150
- this._endPointHitTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
195151
- this._planarityTolerance = planeTolerance;
195499
+ this._gapTolerance = gapTolerance;
195500
+ this._snapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
195501
+ this._planeTolerance = planeTolerance;
195152
195502
  }
195153
195503
  /**
195154
195504
  * Find a chain (with index _other than_ exceptChainIndex) that starts or ends at xyz
195155
- * @param xyz
195156
- * @param tolerance
195157
- * @param exceptChainIndex index of chain to ignore. Send -1 to consider all chains.
195505
+ * @param xyz endpoint to check
195506
+ * @param tolerance absolute distance tolerance for equating endpoints
195507
+ * @param exceptChainIndex index of chain to ignore. Send -1 to consider all chains.
195158
195508
  */
195159
195509
  findAnyChainToConnect(xyz, tolerance, exceptChainIndex = -1) {
195160
195510
  for (let chainIndexA = 0; chainIndexA < this._chains.length; chainIndexA++) {
@@ -195174,31 +195524,91 @@ class MultiChainCollector {
195174
195524
  * Insert a single curve primitive into the active chains.
195175
195525
  * * The primitive is captured (not cloned)
195176
195526
  * * The primitive may be reversed in place
195177
- * @param candidate
195527
+ * @param candidate curve to add to the context
195178
195528
  */
195179
195529
  captureCurvePrimitive(candidate) {
195180
- if (this.attachPrimitiveToAnyChain(candidate, this._endPointHitTolerance))
195181
- return;
195182
- if (this.attachPrimitiveToAnyChain(candidate, this._endPointShiftTolerance))
195530
+ if (this._snapTolerance < this._gapTolerance) {
195531
+ if (this.attachPrimitiveToAnyChain(candidate, this._snapTolerance))
195532
+ return;
195533
+ }
195534
+ if (this.attachPrimitiveToAnyChain(candidate, this._gapTolerance))
195183
195535
  return;
195184
195536
  this._chains.push([candidate]);
195185
- return;
195186
195537
  }
195187
195538
  /**
195188
195539
  * Insert any curve into the collection.
195189
195540
  * * This recurses into Path, Loop, BagOfCurves etc
195190
- * * The all primitives are captured, and may be reversed in place.
195191
- * @param candidate
195541
+ * * All primitives are captured, and may be reversed in place.
195542
+ * @param candidate curve to add to the context
195192
195543
  */
195193
195544
  captureCurve(candidate) {
195194
- if (candidate instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
195545
+ if (candidate instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
195195
195546
  this.captureCurvePrimitive(candidate);
195196
- else if (candidate instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
195547
+ else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
195197
195548
  for (const c of candidate.children) {
195198
195549
  this.captureCurve(c);
195199
195550
  }
195200
195551
  }
195201
195552
  }
195553
+ /** If allowed by the geometry type, move an endpoint. */
195554
+ static simpleEndPointMove(curve, atEnd, to) {
195555
+ if (curve instanceof (_LineSegment3d__WEBPACK_IMPORTED_MODULE_3__.LineSegment3d)) {
195556
+ if (atEnd) {
195557
+ curve.point1Ref.setFrom(to);
195558
+ }
195559
+ else {
195560
+ curve.point0Ref.setFrom(to);
195561
+ }
195562
+ return true;
195563
+ }
195564
+ else if (curve instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d && curve.numPoints() > 0) {
195565
+ const i = atEnd ? curve.numPoints() - 1 : 0;
195566
+ curve.packedPoints.setAtCheckedPointIndex(i, to);
195567
+ return true;
195568
+ }
195569
+ return false;
195570
+ }
195571
+ /**
195572
+ * Try to move the end of curve0 and/or the start of curve1 to a common point.
195573
+ * * All z-coordinates are ignored.
195574
+ * @param curve0 first curve, assumed to end close to the start of curve1
195575
+ * @param curve1 second curve, assumed to start close to the end of curve0
195576
+ * @param gapTolerance max distance to move a curve start/end point
195577
+ * @returns whether curve start/end point(s) moved
195578
+ */
195579
+ static moveHeadOrTail(curve0, curve1, gapTolerance) {
195580
+ const xyz0 = curve0.endPoint();
195581
+ const xyz1 = curve1.startPoint();
195582
+ const minShift = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance * 0.001;
195583
+ const d01 = xyz0.distanceXY(xyz1);
195584
+ if (d01 < minShift)
195585
+ return false;
195586
+ // try lines and linestrings
195587
+ if (d01 < gapTolerance) {
195588
+ if (this.simpleEndPointMove(curve1, false, xyz0) || this.simpleEndPointMove(curve0, true, xyz1))
195589
+ return true;
195590
+ }
195591
+ // try other primitive types
195592
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_5__.CurveCurve.intersectionXYPairs(curve0, true, curve1, true);
195593
+ const shiftFactor = 5.0;
195594
+ for (const pair of intersections) {
195595
+ const detail0 = pair.detailA;
195596
+ const detail1 = pair.detailB;
195597
+ const distance0 = detail0.point.distanceXY(xyz0);
195598
+ const distance1 = detail1.point.distanceXY(xyz1);
195599
+ if (distance0 < shiftFactor * gapTolerance && distance1 < shiftFactor * gapTolerance) {
195600
+ if (curve0 instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d && curve1 instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d) {
195601
+ const radians0End = curve0.sweep.fractionToRadians(detail0.fraction);
195602
+ curve0.sweep.setStartEndRadians(curve0.sweep.startRadians, radians0End);
195603
+ const radians1Start = curve1.sweep.fractionToRadians(detail1.fraction);
195604
+ curve1.sweep.setStartEndRadians(radians1Start, curve1.sweep.endRadians);
195605
+ return true;
195606
+ }
195607
+ // TODO: other combinations of types
195608
+ }
195609
+ }
195610
+ return false;
195611
+ }
195202
195612
  /** Announce a curve primitive
195203
195613
  * * If a "nearby" connection is possible, insert the candidate in the chain and force endpoint match.
195204
195614
  * * Otherwise start a new chain.
@@ -195212,7 +195622,7 @@ class MultiChainCollector {
195212
195622
  const chain = this._chains[connect.chainIndex];
195213
195623
  const index0 = chain.length - 1;
195214
195624
  this._chains[connect.chainIndex].push(candidate);
195215
- OffsetHelpers.moveHeadOrTail(chain[index0], chain[index0 + 1], this._endPointShiftTolerance);
195625
+ MultiChainCollector.moveHeadOrTail(chain[index0], chain[index0 + 1], this._gapTolerance);
195216
195626
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195217
195627
  return true;
195218
195628
  }
@@ -195220,7 +195630,7 @@ class MultiChainCollector {
195220
195630
  candidate.reverseInPlace();
195221
195631
  const chain = this._chains[connect.chainIndex];
195222
195632
  chain.splice(0, 0, candidate);
195223
- OffsetHelpers.moveHeadOrTail(chain[0], chain[1], this._endPointShiftTolerance);
195633
+ MultiChainCollector.moveHeadOrTail(chain[0], chain[1], this._gapTolerance);
195224
195634
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195225
195635
  return true;
195226
195636
  }
@@ -195228,20 +195638,20 @@ class MultiChainCollector {
195228
195638
  else {
195229
195639
  this._xyzWork0 = candidate.endPoint(this._xyzWork0);
195230
195640
  connect = this.findAnyChainToConnect(this._xyzWork0, tolerance);
195231
- if (connect) { // START of new primitive ..
195641
+ if (connect) {
195232
195642
  if (connect.atEnd) {
195233
195643
  candidate.reverseInPlace();
195234
195644
  const chain = this._chains[connect.chainIndex];
195235
195645
  const index0 = chain.length - 1;
195236
195646
  this._chains[connect.chainIndex].push(candidate);
195237
- OffsetHelpers.moveHeadOrTail(chain[index0], chain[index0 + 1], this._endPointShiftTolerance);
195647
+ MultiChainCollector.moveHeadOrTail(chain[index0], chain[index0 + 1], this._gapTolerance);
195238
195648
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195239
195649
  return true;
195240
195650
  }
195241
195651
  else {
195242
195652
  const chain = this._chains[connect.chainIndex];
195243
195653
  chain.splice(0, 0, candidate);
195244
- OffsetHelpers.moveHeadOrTail(chain[0], chain[1], this._endPointShiftTolerance);
195654
+ MultiChainCollector.moveHeadOrTail(chain[0], chain[1], this._gapTolerance);
195245
195655
  this.searchAndMergeChainIndex(connect.chainIndex, tolerance);
195246
195656
  return true;
195247
195657
  }
@@ -195251,10 +195661,13 @@ class MultiChainCollector {
195251
195661
  return false;
195252
195662
  }
195253
195663
  /**
195254
- * * Move each primitive from chainB to the end of chainA.
195255
- * * clear chainB.
195256
- * * move the final chain to chainB index.
195257
- * * reduce the _chain.length by 1.
195664
+ * Merge two entries in the chain array.
195665
+ * * Move each primitive from chainB to the end of chainA.
195666
+ * * Clear chainB.
195667
+ * * Move the final chain to chainB index.
195668
+ * * Decrement the array length.
195669
+ * @param chainIndexA index of chainA
195670
+ * @param chainIndexB index of chainB
195258
195671
  */
195259
195672
  mergeChainsForwardForward(chainIndexA, chainIndexB) {
195260
195673
  const chainA = this._chains[chainIndexA];
@@ -195262,30 +195675,26 @@ class MultiChainCollector {
195262
195675
  for (const p of chainB) {
195263
195676
  chainA.push(p);
195264
195677
  }
195265
- // chainIndexB is unused.
195266
- chainB.length = 0;
195678
+ chainB.length = 0; // chainIndexB is unused
195267
195679
  const lastChainIndex = this._chains.length - 1;
195268
- if (chainIndexB !== lastChainIndex) {
195680
+ if (chainIndexB !== lastChainIndex)
195269
195681
  this._chains[chainIndexB] = this._chains[lastChainIndex];
195270
- this._chains.pop();
195271
- }
195272
- else {
195273
- this._chains.pop();
195274
- }
195682
+ this._chains.pop();
195275
195683
  }
195684
+ /** Reverse the curve chain in place. */
195276
195685
  reverseChain(chainIndex) {
195277
195686
  const chain = this._chains[chainIndex];
195278
195687
  chain.reverse();
195279
195688
  for (const p of chain)
195280
195689
  p.reverseInPlace();
195281
195690
  }
195282
- // see if the head or tail of chainIndex matches any existing chain. If so, merge
195691
+ /** See if the head or tail of chainIndex matches any existing chain. If so, merge the two chains. */
195283
195692
  searchAndMergeChainIndex(chainIndex, tolerance) {
195284
195693
  // ASSUME valid index of non-empty chain
195285
195694
  const chain = this._chains[chainIndex];
195286
195695
  const lastIndexInChain = chain.length - 1;
195287
195696
  this._xyzWork0 = chain[0].startPoint(this._xyzWork0);
195288
- // this start with any other chain ..
195697
+ // try start with any other chain
195289
195698
  let connect = this.findAnyChainToConnect(this._xyzWork0, tolerance, chainIndex);
195290
195699
  if (connect) {
195291
195700
  if (!connect.atEnd)
@@ -195303,9 +195712,11 @@ class MultiChainCollector {
195303
195712
  return;
195304
195713
  }
195305
195714
  }
195306
- /** turn an array of curve primitives into the simplest possible strongly typed curve structure.
195307
- * * The input array is assumed to be connected appropriately to act as the curves of a Path.
195308
- * * When a path is created the curves array is CAPTURED.
195715
+ /**
195716
+ * Convert an array of curve primitives into the simplest possible strongly typed curve structure.
195717
+ * @param curves input array, assembled correctly into a single contiguous path, captured by returned object
195718
+ * @param makeLoopIfClosed whether to return a Loop from physically closed curves array, otherwise Path
195719
+ * @return Loop or Path if multiple curves; the primitive if only one curve; undefined if no curves
195309
195720
  */
195310
195721
  promoteArrayToCurves(curves, makeLoopIfClosed) {
195311
195722
  if (curves.length === 0)
@@ -195315,39 +195726,37 @@ class MultiChainCollector {
195315
195726
  const primitiveN = curves[curves.length - 1];
195316
195727
  MultiChainCollector._staticPointA = primitive0.startPoint(MultiChainCollector._staticPointA);
195317
195728
  MultiChainCollector._staticPointB = primitiveN.endPoint(MultiChainCollector._staticPointB);
195318
- const distanceAToB = MultiChainCollector._staticPointA.distance(MultiChainCollector._staticPointB);
195319
- if (distanceAToB < this._endPointShiftTolerance) {
195320
- // adjust for closure (and get the corrected coordinates)
195321
- OffsetHelpers.moveHeadOrTail(primitiveN, primitive0, this._endPointShiftTolerance);
195729
+ if (MultiChainCollector.moveHeadOrTail(primitiveN, primitive0, this._gapTolerance)) {
195730
+ // get the corrected coordinates
195322
195731
  MultiChainCollector._staticPointA = primitive0.startPoint(MultiChainCollector._staticPointA);
195323
195732
  MultiChainCollector._staticPointB = primitiveN.endPoint(MultiChainCollector._staticPointB);
195324
195733
  }
195325
- if (MultiChainCollector._staticPointA.isAlmostEqual(MultiChainCollector._staticPointB)) {
195326
- const localToWorld = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_3__.FrameBuilder.createRightHandedLocalToWorld(curves);
195734
+ if (MultiChainCollector._staticPointA.isAlmostEqual(MultiChainCollector._staticPointB, this._gapTolerance)) {
195735
+ const localToWorld = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_7__.FrameBuilder.createRightHandedLocalToWorld(curves);
195327
195736
  if (localToWorld) {
195328
195737
  const worldToLocal = localToWorld.inverse();
195329
195738
  if (worldToLocal) {
195330
- const range = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_4__.RegionOps.curveArrayRange(curves, worldToLocal);
195331
- if (this._planarityTolerance !== undefined && range.zLength() <= this._planarityTolerance) {
195332
- return _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createArray(curves);
195739
+ const range = _RegionOps__WEBPACK_IMPORTED_MODULE_8__.RegionOps.curveArrayRange(curves, worldToLocal);
195740
+ if (this._planeTolerance !== undefined && range.zLength() <= this._planeTolerance) {
195741
+ return _Loop__WEBPACK_IMPORTED_MODULE_9__.Loop.createArray(curves);
195333
195742
  }
195334
195743
  }
195335
195744
  }
195336
- return _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.createArray(curves);
195745
+ return _Path__WEBPACK_IMPORTED_MODULE_10__.Path.createArray(curves);
195337
195746
  }
195338
195747
  }
195339
195748
  if (curves.length === 1)
195340
195749
  return curves[0];
195341
- return _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.createArray(curves);
195750
+ return _Path__WEBPACK_IMPORTED_MODULE_10__.Path.createArray(curves);
195342
195751
  }
195343
- chainToLineString3d(curves) {
195344
- if (curves.length === 0)
195752
+ /** Stroke the curve chain to a line string, de-duplicate the points. */
195753
+ chainToLineString3d(chain, options) {
195754
+ if (chain.length === 0)
195345
195755
  return undefined;
195346
- const linestring = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.create();
195347
- for (const curve of curves) {
195348
- curve.emitStrokes(linestring);
195349
- linestring.removeDuplicatePoints();
195350
- }
195756
+ const linestring = _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d.create();
195757
+ for (const curve of chain)
195758
+ curve.emitStrokes(linestring, options);
195759
+ linestring.removeDuplicatePoints(this._gapTolerance);
195351
195760
  return linestring;
195352
195761
  }
195353
195762
  /** Return the collected results, structured as the simplest possible type. */
@@ -195357,7 +195766,7 @@ class MultiChainCollector {
195357
195766
  return undefined;
195358
195767
  if (chains.length === 1)
195359
195768
  return this.promoteArrayToCurves(chains[0], makeLoopIfClosed);
195360
- const bag = _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves.create();
195769
+ const bag = _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves.create();
195361
195770
  for (const chain of chains) {
195362
195771
  const q = this.promoteArrayToCurves(chain, makeLoopIfClosed);
195363
195772
  bag.tryAddChild(q);
@@ -195365,171 +195774,22 @@ class MultiChainCollector {
195365
195774
  return bag;
195366
195775
  }
195367
195776
  /** Return chains as individual calls to announceChain. */
195368
- announceChainsAsLineString3d(announceChain) {
195777
+ announceChainsAsLineString3d(announceChain, options) {
195369
195778
  const chains = this._chains;
195370
195779
  if (chains.length === 1) {
195371
- const ls = this.chainToLineString3d(chains[0]);
195780
+ const ls = this.chainToLineString3d(chains[0], options);
195372
195781
  if (ls)
195373
195782
  announceChain(ls);
195374
195783
  }
195375
195784
  else if (chains.length > 1) {
195376
195785
  for (const chain of chains) {
195377
- const ls = this.chainToLineString3d(chain);
195786
+ const ls = this.chainToLineString3d(chain, options);
195378
195787
  if (ls)
195379
195788
  announceChain(ls);
195380
195789
  }
195381
195790
  }
195382
195791
  }
195383
195792
  }
195384
- /**
195385
- * Static methods to assist offset sequences.
195386
- * @internal
195387
- */
195388
- class OffsetHelpers {
195389
- // recursively sum lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level.
195390
- static sumLengths(data) {
195391
- let mySum = 0;
195392
- if (data instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive) {
195393
- mySum += data.curveLength();
195394
- }
195395
- else if (data instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection) {
195396
- mySum += data.sumLengths();
195397
- }
195398
- else if (Array.isArray(data)) {
195399
- for (const data1 of data)
195400
- mySum += this.sumLengths(data1);
195401
- }
195402
- return mySum;
195403
- }
195404
- // recursively sum lengths, allowing CurvePrimitive, CurveCollection, or array of such at any level.
195405
- static extendRange(range, data) {
195406
- if (data instanceof _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_8__.GeometryQuery) {
195407
- data.extendRange(range);
195408
- }
195409
- else if (Array.isArray(data)) {
195410
- for (const data1 of data)
195411
- this.extendRange(range, data1);
195412
- }
195413
- return range;
195414
- }
195415
- // construct (separately) the offsets of each entry of data (Path, Loop, BagOfCurve, or Array of those)
195416
- // push all offset geometry into the result array
195417
- // return summed length
195418
- static appendOffsets(data, offset, result) {
195419
- let summedLengths = 0;
195420
- if (data instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive) {
195421
- const resultA = _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.CurveChainWireOffsetContext.constructCurveXYOffset(_curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path.create(data), offset);
195422
- if (resultA) {
195423
- summedLengths += this.sumLengths(resultA);
195424
- result.push(resultA);
195425
- }
195426
- }
195427
- else if (data instanceof _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop || data instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_6__.Path) {
195428
- const resultA = _PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__.CurveChainWireOffsetContext.constructCurveXYOffset(data, offset);
195429
- if (resultA) {
195430
- summedLengths += this.sumLengths(resultA);
195431
- result.push(resultA);
195432
- }
195433
- }
195434
- else if (data instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_2__.BagOfCurves) {
195435
- for (const q of data.children)
195436
- summedLengths += this.appendOffsets(q, offset, result);
195437
- }
195438
- else if (Array.isArray(data)) {
195439
- for (const q of data)
195440
- summedLengths += this.appendOffsets(q, offset, result);
195441
- }
195442
- return summedLengths;
195443
- }
195444
- /**
195445
- * * Restructure curve fragments as chains and offsets
195446
- * * Return object with named chains, insideOffsets, outsideOffsets
195447
- * * BEWARE that if the input is not a loop the classification of outputs is suspect.
195448
- * @param fragments fragments to be chained
195449
- * @param offsetDistance offset distance.
195450
- */
195451
- static collectInsideAndOutsideOffsets(fragments, offsetDistance, gapTolerance) {
195452
- const collector = new MultiChainCollector(gapTolerance);
195453
- for (const s of fragments) {
195454
- collector.captureCurve(s);
195455
- }
195456
- const myChains = collector.grabResult(true);
195457
- const myOffsetA = [];
195458
- const myOffsetB = [];
195459
- const offsetLengthA = OffsetHelpers.appendOffsets(myChains, offsetDistance, myOffsetA);
195460
- const offsetLengthB = OffsetHelpers.appendOffsets(myChains, -offsetDistance, myOffsetB);
195461
- if (offsetLengthA > offsetLengthB) {
195462
- return { outsideOffsets: myOffsetA, insideOffsets: myOffsetB, chains: myChains };
195463
- }
195464
- else {
195465
- return { insideOffsets: myOffsetA, outsideOffsets: myOffsetB, chains: myChains };
195466
- }
195467
- }
195468
- /**
195469
- * * Restructure curve fragments as chains and offsets
195470
- * * BEWARE that if the input is not a loop the classification of outputs is suspect.
195471
- * @param fragments fragments to be chained
195472
- * @param gapTolerance distance to be treated as "effectively zero" when joining head-to-tail.
195473
- */
195474
- static collectChains(fragments, gapTolerance, planarTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
195475
- const collector = new MultiChainCollector(gapTolerance, planarTolerance);
195476
- for (const s of fragments) {
195477
- collector.captureCurve(s);
195478
- }
195479
- return collector.grabResult(true);
195480
- }
195481
- /** If allowed by the geometry type, move an endpoint.
195482
- *
195483
- */
195484
- static simpleEndPointMove(g, atEnd, to) {
195485
- if (g instanceof (_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_10__.LineSegment3d)) {
195486
- if (atEnd) {
195487
- g.point1Ref.setFrom(to);
195488
- }
195489
- else {
195490
- g.point0Ref.setFrom(to);
195491
- }
195492
- return true;
195493
- }
195494
- else if (g instanceof _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d && g.numPoints() > 0) {
195495
- const i = atEnd ? g.numPoints() - 1 : 0;
195496
- g.packedPoints.setAtCheckedPointIndex(i, to);
195497
- return true;
195498
- }
195499
- return false;
195500
- }
195501
- // Try to move move tail (end) of g0 and/or head (beginning) of g1 to a common point.
195502
- static moveHeadOrTail(g0, g1, maxShift) {
195503
- const xyz0 = g0.endPoint();
195504
- const xyz1 = g1.startPoint();
195505
- const minShift = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance * 0.001;
195506
- const d01 = xyz0.distanceXY(xyz1);
195507
- if (d01 < minShift)
195508
- return true;
195509
- if (this.simpleEndPointMove(g1, false, xyz0) || this.simpleEndPointMove(g0, true, xyz1))
195510
- return true;
195511
- // const detail1On0 = g0.closestPoint(xyz1);
195512
- // const detail0On1 = g1.closestPoint(xyz0);
195513
- const intersections = _curve_CurveCurve__WEBPACK_IMPORTED_MODULE_11__.CurveCurve.intersectionXYPairs(g0, true, g1, true);
195514
- const shiftFactor = 5.0;
195515
- for (const pair of intersections) {
195516
- const detail0 = pair.detailA;
195517
- const detail1 = pair.detailB;
195518
- const distance0 = detail0.point.distanceXY(xyz0);
195519
- const distance1 = detail1.point.distanceXY(xyz1);
195520
- if (distance0 < shiftFactor * maxShift && distance1 < shiftFactor * maxShift) {
195521
- if (g0 instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__.Arc3d && g1 instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_12__.Arc3d) {
195522
- const radians0End = g0.sweep.fractionToRadians(detail0.fraction);
195523
- g0.sweep.setStartEndRadians(g0.sweep.startRadians, radians0End);
195524
- const radians1Start = g1.sweep.fractionToRadians(detail1.fraction);
195525
- g1.sweep.setStartEndRadians(radians1Start, g1.sweep.endRadians);
195526
- return true;
195527
- }
195528
- }
195529
- }
195530
- return false;
195531
- }
195532
- }
195533
195793
 
195534
195794
 
195535
195795
  /***/ }),
@@ -195774,24 +196034,22 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
195774
196034
  __webpack_require__.r(__webpack_exports__);
195775
196035
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
195776
196036
  /* harmony export */ CurveChainWireOffsetContext: () => (/* binding */ CurveChainWireOffsetContext),
195777
- /* harmony export */ JointOptions: () => (/* binding */ JointOptions),
195778
- /* harmony export */ OffsetOptions: () => (/* binding */ OffsetOptions),
195779
196037
  /* harmony export */ PolygonWireOffsetContext: () => (/* binding */ PolygonWireOffsetContext)
195780
196038
  /* harmony export */ });
195781
196039
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195782
- /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
195783
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195784
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
195785
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195786
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
195787
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
196040
+ /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
196041
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
196042
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
196043
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
196044
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
196045
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
195788
196046
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195789
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195790
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
196047
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
196048
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195791
196049
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
196050
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
195792
196051
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
195793
196052
  /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
195794
- /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
195795
196053
  /*---------------------------------------------------------------------------------------------
195796
196054
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195797
196055
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -195827,158 +196085,6 @@ var JointMode;
195827
196085
  JointMode[JointMode["JustGeometry"] = 3] = "JustGeometry";
195828
196086
  JointMode[JointMode["Gap"] = 4] = "Gap";
195829
196087
  })(JointMode || (JointMode = {}));
195830
- /**
195831
- * Control parameters for joint construction.
195832
- * * Define a "joint" as the common point between adjacent segments of the input curve.
195833
- * * Define the "turn angle" at a joint to be the angle in [0,pi] between the first derivatives (tangents) of
195834
- * the segments at the joint.
195835
- * * When creating offsets, if an offset needs to do an "outside" turn, the first applicable construction is applied:
195836
- * * If the turn angle is larger than `options.minArcDegrees`, a circular arc is constructed to offset the joint.
195837
- * * If the turn angle is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
195838
- * single intersection point (to create a sharp corner).
195839
- * * If the turn angle is larger than `options.maxChamferDegrees`, the joint is offset with a line string whose edges:
195840
- * * lie outside the arc that would have been created by the first construction
195841
- * * have uniform turn angle less than `options.maxChamferDegrees`
195842
- * * touch the arc at their midpoint (except first and last edge).
195843
- * @public
195844
- */
195845
- class JointOptions {
195846
- /**
195847
- * Construct JointOptions.
195848
- * * leftOffsetDistance is required
195849
- * * minArcDegrees and maxChamferDegrees are optional.
195850
- */
195851
- constructor(leftOffsetDistance, minArcDegrees = 180, maxChamferDegrees = 90, preserveEllipticalArcs = false, allowSharpestCorners = false) {
195852
- /**
195853
- * Smallest arc to construct.
195854
- * * If this control angle is 180 degrees or more, arcs are never created.
195855
- */
195856
- this.minArcDegrees = 180.0;
195857
- /** Largest turn angle at which to construct a sharp corner, or largest turn angle in a multi-segment chamfer. */
195858
- this.maxChamferTurnDegrees = 90;
195859
- /**
195860
- * Whether to remove the internal turn angle upper bound for sharp corner construction.
195861
- * * By default, a sharp corner is not created at a joint when the turn angle is too large, so as to avoid offsets whose
195862
- * ranges blow up. Internally, this is implemented by applying an upper bound of 120 degrees to `maxChamferTurnDegrees`.
195863
- * * When `allowSharpestCorners` is true, this internal upper bound is removed, allowing sharp corners for turn angles
195864
- * up to `maxChamferTurnDegrees`.
195865
- * * Thus, if you know your input turn angles are no greater than `maxChamferTurnDegrees`, you can create an offset
195866
- * with sharp corners at each joint by setting `minArcDegrees` to 180 and `allowSharpestCorners` to true.
195867
- */
195868
- this.allowSharpestCorners = false;
195869
- /** Offset distance, positive to left of base curve. */
195870
- this.leftOffsetDistance = 0;
195871
- /** Whether to offset elliptical arcs as elliptical arcs (true) or as B-spline curves (false, default). */
195872
- this.preserveEllipticalArcs = false;
195873
- this.leftOffsetDistance = leftOffsetDistance;
195874
- this.minArcDegrees = minArcDegrees;
195875
- this.maxChamferTurnDegrees = maxChamferDegrees;
195876
- this.preserveEllipticalArcs = preserveEllipticalArcs;
195877
- this.allowSharpestCorners = allowSharpestCorners;
195878
- }
195879
- /** Return a deep clone. */
195880
- clone() {
195881
- return new JointOptions(this.leftOffsetDistance, this.minArcDegrees, this.maxChamferTurnDegrees, this.preserveEllipticalArcs, this.allowSharpestCorners);
195882
- }
195883
- /** Copy values of input options */
195884
- setFrom(other) {
195885
- this.leftOffsetDistance = other.leftOffsetDistance;
195886
- this.minArcDegrees = other.minArcDegrees;
195887
- this.maxChamferTurnDegrees = other.maxChamferTurnDegrees;
195888
- this.preserveEllipticalArcs = other.preserveEllipticalArcs;
195889
- this.allowSharpestCorners = other.allowSharpestCorners;
195890
- }
195891
- /**
195892
- * Parse a number or JointOptions up to JointOptions:
195893
- * * If leftOffsetDistanceOptions is a number, create a JointOptions with other options set to default values.
195894
- * * If leftOffsetDistanceOrOptions is a JointOptions, return it unchanged.
195895
- * @param leftOffsetDistanceOrOptions
195896
- */
195897
- static create(leftOffsetDistanceOrOptions) {
195898
- if (leftOffsetDistanceOrOptions instanceof JointOptions)
195899
- return leftOffsetDistanceOrOptions;
195900
- return new JointOptions(leftOffsetDistanceOrOptions);
195901
- }
195902
- /**
195903
- /** Return true if the options indicate this amount of turn should be handled with an arc. */
195904
- needArc(theta) {
195905
- return Math.abs(theta.degrees) >= this.minArcDegrees;
195906
- }
195907
- /** Return the number of corners needed to chamfer the given turn angle. */
195908
- numChamferPoints(theta) {
195909
- const degrees = Math.abs(theta.degrees);
195910
- const minStepDegreesClamp = 10;
195911
- let maxStepDegreesClamp = 120;
195912
- if (this.allowSharpestCorners) {
195913
- maxStepDegreesClamp = this.maxChamferTurnDegrees;
195914
- }
195915
- const stepDegrees = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.clamp(this.maxChamferTurnDegrees, minStepDegreesClamp, maxStepDegreesClamp);
195916
- if (degrees <= stepDegrees)
195917
- return 1;
195918
- return Math.ceil(degrees / stepDegrees);
195919
- }
195920
- }
195921
- /**
195922
- * Options for offsetting a curve.
195923
- * @public
195924
- */
195925
- class OffsetOptions {
195926
- /** Options that are provided are captured. */
195927
- constructor(offsetDistanceOrOptions, strokeOptions) {
195928
- this.jointOptions = JointOptions.create(offsetDistanceOrOptions);
195929
- this.strokeOptions = (strokeOptions !== undefined) ? strokeOptions : _StrokeOptions__WEBPACK_IMPORTED_MODULE_1__.StrokeOptions.createForCurves();
195930
- }
195931
- get minArcDegrees() {
195932
- return this.jointOptions.minArcDegrees;
195933
- }
195934
- set minArcDegrees(value) {
195935
- this.jointOptions.minArcDegrees = value;
195936
- }
195937
- get maxChamferTurnDegrees() {
195938
- return this.jointOptions.maxChamferTurnDegrees;
195939
- }
195940
- set maxChamferTurnDegrees(value) {
195941
- this.jointOptions.maxChamferTurnDegrees = value;
195942
- }
195943
- get allowSharpestCorners() {
195944
- return this.jointOptions.allowSharpestCorners;
195945
- }
195946
- set allowSharpestCorners(value) {
195947
- this.jointOptions.allowSharpestCorners = value;
195948
- }
195949
- get leftOffsetDistance() {
195950
- return this.jointOptions.leftOffsetDistance;
195951
- }
195952
- set leftOffsetDistance(value) {
195953
- this.jointOptions.leftOffsetDistance = value;
195954
- }
195955
- get preserveEllipticalArcs() {
195956
- return this.jointOptions.preserveEllipticalArcs;
195957
- }
195958
- set preserveEllipticalArcs(value) {
195959
- this.jointOptions.preserveEllipticalArcs = value;
195960
- }
195961
- /**
195962
- * Convert variant input into OffsetOptions.
195963
- * * If a JointOptions is provided, it is captured.
195964
- * * If an OffsetOptions is provided, a reference to it is returned.
195965
- */
195966
- static create(offsetDistanceOrOptions) {
195967
- if (offsetDistanceOrOptions instanceof OffsetOptions)
195968
- return offsetDistanceOrOptions;
195969
- return new OffsetOptions(offsetDistanceOrOptions);
195970
- }
195971
- /** Convert variant input into offset distance */
195972
- static getOffsetDistance(offsetDistanceOrOptions) {
195973
- if (typeof offsetDistanceOrOptions === "number")
195974
- return offsetDistanceOrOptions;
195975
- return offsetDistanceOrOptions.leftOffsetDistance;
195976
- }
195977
- /** Return a deep clone. */
195978
- clone() {
195979
- return new OffsetOptions(this.jointOptions.clone(), this.strokeOptions.clone());
195980
- }
195981
- }
195982
196088
  /**
195983
196089
  * Description of geometry around a joint.
195984
196090
  * @internal
@@ -195997,9 +196103,9 @@ class Joint {
195997
196103
  static constructArc(ray0, center, ray1) {
195998
196104
  if (center !== undefined && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(ray0.origin.distance(center), ray1.origin.distance(center))) {
195999
196105
  const angle = ray0.direction.angleToXY(ray1.direction);
196000
- const vector0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(center, ray0.origin);
196106
+ const vector0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(center, ray0.origin);
196001
196107
  const vector90 = vector0.rotate90CCWXY();
196002
- return _Arc3d__WEBPACK_IMPORTED_MODULE_3__.Arc3d.create(center, vector0, vector90, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_4__.AngleSweep.createStartEndRadians(0.0, angle.radians));
196108
+ return _Arc3d__WEBPACK_IMPORTED_MODULE_2__.Arc3d.create(center, vector0, vector90, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(0.0, angle.radians));
196003
196109
  }
196004
196110
  return undefined;
196005
196111
  }
@@ -196067,7 +196173,7 @@ class Joint {
196067
196173
  const pointA = destination[destination.length - 1].endPoint();
196068
196174
  const pointB = primitive.startPoint();
196069
196175
  if (!pointA.isAlmostEqual(pointB)) {
196070
- destination.push(_LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(pointA, pointB));
196176
+ destination.push(_LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(pointA, pointB));
196071
196177
  }
196072
196178
  }
196073
196179
  destination.push(primitive);
@@ -196075,7 +196181,7 @@ class Joint {
196075
196181
  }
196076
196182
  static adjustJointToPrimitives(joint) {
196077
196183
  const ls = joint.jointCurve;
196078
- if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d) {
196184
+ if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d) {
196079
196185
  if (joint.curve0) {
196080
196186
  const curvePoint = joint.curve0.endPoint();
196081
196187
  const jointPoint0 = ls.startPoint();
@@ -196143,8 +196249,8 @@ class Joint {
196143
196249
  if (this.curve0 && this.curve1) {
196144
196250
  const ray0 = this.curve0.fractionToPointAndDerivative(1.0);
196145
196251
  const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
196146
- const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196147
- if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveCurveApproachType.Intersection) {
196252
+ const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196253
+ if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__.CurveCurveApproachType.Intersection) {
196148
196254
  if (intersection.detailA.fraction >= 0.0 && intersection.detailB.fraction <= 0.0) {
196149
196255
  this.fraction0 = 1.0;
196150
196256
  this.fraction1 = 0.0;
@@ -196159,7 +196265,7 @@ class Joint {
196159
196265
  }
196160
196266
  const numChamferPoints = options.numChamferPoints(theta); // how many interior points in the linestring
196161
196267
  if (numChamferPoints <= 1) { // create sharp corner
196162
- this.jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create(ray0.origin, intersection.detailA.point, ray1.origin);
196268
+ this.jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create(ray0.origin, intersection.detailA.point, ray1.origin);
196163
196269
  return;
196164
196270
  }
196165
196271
  if (numChamferPoints > 1) { // create chamfer corner (a line string)
@@ -196169,7 +196275,7 @@ class Joint {
196169
196275
  const arc = Joint.constructArc(ray0, this.curve0.baseCurveEnd, ray1);
196170
196276
  if (arc !== undefined) {
196171
196277
  const radialFraction = 1 / Math.cos(halfStepRadians);
196172
- const jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create();
196278
+ const jointCurve = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create();
196173
196279
  this.jointCurve = jointCurve;
196174
196280
  jointCurve.addPoint(ray0.origin); // possibly extend segment or line string
196175
196281
  for (let i = 0; i < numChamferPoints; i++) {
@@ -196184,7 +196290,7 @@ class Joint {
196184
196290
  }
196185
196291
  // if there is no intersection between the 2 ray lines, fill the gap by a line segment
196186
196292
  this.flexure = JointMode.Gap;
196187
- this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196293
+ this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196188
196294
  this.fraction0 = 1.0;
196189
196295
  this.fraction1 = 0.0;
196190
196296
  }
@@ -196226,11 +196332,11 @@ class Joint {
196226
196332
  this.fraction1 = 0.0;
196227
196333
  this.flexure = JointMode.Trim;
196228
196334
  }
196229
- else if (this.curve0 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d && this.curve1 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d) { // pair of lines
196335
+ else if (this.curve0 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d && this.curve1 instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d) { // pair of lines
196230
196336
  const ray0 = this.curve0.fractionToPointAndDerivative(0.0);
196231
196337
  const ray1 = this.curve1.fractionToPointAndDerivative(0.0);
196232
- const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196233
- if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveCurveApproachType.Intersection) {
196338
+ const intersection = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.closestApproachRay3dRay3d(ray0, ray1); // intersection of the 2 ray lines
196339
+ if (intersection.approachType === _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__.CurveCurveApproachType.Intersection) {
196234
196340
  this.fraction0 = intersection.detailA.fraction;
196235
196341
  this.fraction1 = intersection.detailB.fraction;
196236
196342
  if (this.fraction0 >= 1.0 && this.fraction1 <= 0.0) { // need to extend
@@ -196241,14 +196347,14 @@ class Joint {
196241
196347
  }
196242
196348
  else if (this.fraction0 > 1.0 && this.fraction1 > 1.0) { // need to fill gap with a single line segment
196243
196349
  this.flexure = JointMode.Gap;
196244
- this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196350
+ this.jointCurve = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(this.curve0.fractionToPoint(1.0), this.curve1.fractionToPoint(0.0));
196245
196351
  this.fraction0 = 1.0;
196246
196352
  this.fraction1 = 0.0;
196247
196353
  }
196248
196354
  }
196249
196355
  }
196250
196356
  else { // generic pair of curves
196251
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_9__.CurveCurve.intersectionXYPairs(this.curve0, false, this.curve1, false);
196357
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_8__.CurveCurve.intersectionXYPairs(this.curve0, false, this.curve1, false);
196252
196358
  const intersectionIndex = this.selectIntersectionIndexByFraction(1.0, 0.0, intersections);
196253
196359
  if (intersectionIndex >= 0) { // need to trim
196254
196360
  this.flexure = JointMode.Trim;
@@ -196359,10 +196465,10 @@ class PolygonWireOffsetContext {
196359
196465
  constructor() { }
196360
196466
  // Construct a single offset from base points
196361
196467
  static createOffsetSegment(basePointA, basePointB, distance) {
196362
- _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(basePointA, basePointB, this._unitAlong);
196468
+ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(basePointA, basePointB, this._unitAlong);
196363
196469
  if (this._unitAlong.normalizeInPlace()) {
196364
196470
  this._unitAlong.rotate90CCWXY(this._unitPerp);
196365
- const segment = _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d.create(basePointA.plusScaled(this._unitPerp, distance, this._offsetA), basePointB.plusScaled(this._unitPerp, distance, this._offsetB));
196471
+ const segment = _LineSegment3d__WEBPACK_IMPORTED_MODULE_4__.LineSegment3d.create(basePointA.plusScaled(this._unitPerp, distance, this._offsetA), basePointB.plusScaled(this._unitPerp, distance, this._offsetB));
196366
196472
  CurveChainWireOffsetContext.applyBasePoints(segment, basePointA.clone(), basePointB.clone());
196367
196473
  return segment;
196368
196474
  }
@@ -196388,7 +196494,7 @@ class PolygonWireOffsetContext {
196388
196494
  wrap = false;
196389
196495
  }
196390
196496
  /** create raw offsets as a linked list (joint0) */
196391
- const options = JointOptions.create(leftOffsetDistanceOrOptions);
196497
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.JointOptions.create(leftOffsetDistanceOrOptions);
196392
196498
  const numPoints = points.length;
196393
196499
  let fragment0 = PolygonWireOffsetContext.createOffsetSegment(points[0], points[1], options.leftOffsetDistance);
196394
196500
  let joint0 = new Joint(undefined, fragment0, points[0]);
@@ -196424,7 +196530,7 @@ class PolygonWireOffsetContext {
196424
196530
  }
196425
196531
  // Joint.collectPrimitivesFromChain(joint0, result, numPoints);
196426
196532
  /** turn the Joint linked list into a CurveCollection (Loop or Path). trimming is done in collectStrokesFromChain */
196427
- const chain = _LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.create();
196533
+ const chain = _LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.create();
196428
196534
  Joint.collectStrokesFromChain(joint0, chain, numPoints);
196429
196535
  const n = chain.packedPoints.length;
196430
196536
  if (n > 1) {
@@ -196436,10 +196542,10 @@ class PolygonWireOffsetContext {
196436
196542
  return undefined;
196437
196543
  }
196438
196544
  }
196439
- PolygonWireOffsetContext._unitAlong = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create();
196440
- PolygonWireOffsetContext._unitPerp = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create();
196441
- PolygonWireOffsetContext._offsetA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
196442
- PolygonWireOffsetContext._offsetB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
196545
+ PolygonWireOffsetContext._unitAlong = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
196546
+ PolygonWireOffsetContext._unitPerp = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
196547
+ PolygonWireOffsetContext._offsetA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
196548
+ PolygonWireOffsetContext._offsetB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
196443
196549
 
196444
196550
  /**
196445
196551
  * Context for building a wire offset from a Path or Loop of CurvePrimitives
@@ -196465,40 +196571,39 @@ class CurveChainWireOffsetContext {
196465
196571
  return cp;
196466
196572
  }
196467
196573
  /**
196468
- * Create the offset of a single primitive as viewed in the xy-plane (ignoring z).
196469
- * * each primitive may be labeled (as an `any` object) with start or end point of base curve:
196574
+ * Create the offset of a single curve primitive as viewed in the xy-plane (ignoring z).
196575
+ * * Each primitive may be labeled (as an `any` object) with start or end point of base curve:
196470
196576
  * * `(primitive as any).baseCurveStart: Point3d`
196471
196577
  * * `(primitive as any).baseCurveEnd: Point3d`
196472
- * @param g primitive to offset
196473
- * @param offsetDistanceOrOptions offset distance (positive to left of g), or options object
196578
+ * @param curve primitive to offset
196579
+ * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object
196474
196580
  */
196475
- static createSingleOffsetPrimitiveXY(g, offsetDistanceOrOptions) {
196476
- const offset = g.constructOffsetXY(offsetDistanceOrOptions);
196581
+ static createSingleOffsetPrimitiveXY(curve, offsetDistanceOrOptions) {
196582
+ const offset = curve.constructOffsetXY(offsetDistanceOrOptions);
196477
196583
  if (offset === undefined)
196478
196584
  return undefined;
196479
196585
  // decorate each offset with its base curve's endpoints
196480
196586
  if (Array.isArray(offset)) {
196481
- const basePrims = g.collectCurvePrimitives(undefined, true, true);
196587
+ const basePrims = curve.collectCurvePrimitives(undefined, true, true);
196482
196588
  if (basePrims.length !== offset.length)
196483
196589
  return undefined; // unexpected aggregate curve type!
196484
196590
  for (let i = 0; i < basePrims.length; ++i)
196485
196591
  this.applyBasePoints(offset[i], basePrims[i].startPoint(), basePrims[i].endPoint());
196486
196592
  return offset;
196487
196593
  }
196488
- return this.applyBasePoints(offset, g.startPoint(), g.endPoint());
196594
+ return this.applyBasePoints(offset, curve.startPoint(), curve.endPoint());
196489
196595
  }
196490
196596
  /**
196491
196597
  * Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
196492
196598
  * * The construction will remove "some" local effects of features smaller than the offset distance, but will
196493
196599
  * not detect self intersection among widely separated edges.
196494
- * * If offsetDistance is given as a number, default OffsetOptions are applied.
196495
- * * See [[JointOptions]] class doc for offset construction rules.
196600
+ * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/Offset
196496
196601
  * @param curves base curves.
196497
196602
  * @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
196498
196603
  */
196499
196604
  static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
196500
196605
  const wrap = curves instanceof _Loop__WEBPACK_IMPORTED_MODULE_10__.Loop;
196501
- const offsetOptions = OffsetOptions.create(offsetDistanceOrOptions);
196606
+ const offsetOptions = _OffsetOptions__WEBPACK_IMPORTED_MODULE_9__.OffsetOptions.create(offsetDistanceOrOptions);
196502
196607
  const simpleOffsets = [];
196503
196608
  /** traverse primitives (children of curves) and create simple offsets of each primitive as an array */
196504
196609
  for (const c of curves.children) {
@@ -197985,7 +198090,7 @@ class IntegratedSpiral3d extends _TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_0_
197985
198090
  static initWorkSpace() {
197986
198091
  IntegratedSpiral3d._gaussFraction = new Float64Array(5);
197987
198092
  IntegratedSpiral3d._gaussWeight = new Float64Array(5);
197988
- IntegratedSpiral3d._gaussMapper = _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_3__.Quadrature.setupGauss5;
198093
+ IntegratedSpiral3d._gaussMapper = (xA, xB, xMapped, wMapped) => _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_3__.Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
197989
198094
  }
197990
198095
  /** Evaluate and sum the gauss quadrature formulas to integrate cos(theta), sin(theta) fractional subset of a reference length.
197991
198096
  * (recall that theta is a nonlinear function of the fraction.)
@@ -198873,7 +198978,7 @@ __webpack_require__.r(__webpack_exports__);
198873
198978
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
198874
198979
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
198875
198980
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
198876
- /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
198981
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
198877
198982
  /*---------------------------------------------------------------------------------------------
198878
198983
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
198879
198984
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -199004,7 +199109,7 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Cu
199004
199109
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
199005
199110
  */
199006
199111
  constructOffsetXY(offsetDistanceOrOptions) {
199007
- const options = _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__.OffsetOptions.create(offsetDistanceOrOptions);
199112
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_4__.OffsetOptions.create(offsetDistanceOrOptions);
199008
199113
  const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
199009
199114
  this.emitStrokableParts(handler, options.strokeOptions);
199010
199115
  return handler.claimResult();
@@ -199101,7 +199206,7 @@ class XYCurveEvaluator {
199101
199206
  static initWorkSpace() {
199102
199207
  XYCurveEvaluator._gaussX = new Float64Array(5);
199103
199208
  XYCurveEvaluator._gaussWeight = new Float64Array(5);
199104
- XYCurveEvaluator._gaussMapper = _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_4__.Quadrature.setupGauss5;
199209
+ XYCurveEvaluator._gaussMapper = (xA, xB, xMapped, wMapped) => _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_4__.Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
199105
199210
  }
199106
199211
  /**
199107
199212
  * Integrate between nominal fractions with default gauss rule.
@@ -203222,7 +203327,7 @@ class GrowableBlockedArray {
203222
203327
  return ia - ib; // so original order is maintained among duplicates !!!!
203223
203328
  }
203224
203329
  /** Return an array of block indices sorted per compareLexicalBlock function */
203225
- sortIndicesLexical(compareBlocks = GrowableBlockedArray.compareLexicalBlock) {
203330
+ sortIndicesLexical(compareBlocks = (dataArray, size, iA, iB) => GrowableBlockedArray.compareLexicalBlock(dataArray, size, iA, iB)) {
203226
203331
  const n = this._inUse;
203227
203332
  // let numCompare = 0;
203228
203333
  const result = new Uint32Array(n);
@@ -203493,7 +203598,7 @@ class GrowableFloat64Array {
203493
203598
  * * Uses insertion sort -- fine for small arrays (less than 30), slow for larger arrays
203494
203599
  * @param compareMethod comparison method
203495
203600
  */
203496
- sort(compareMethod = GrowableFloat64Array.compare) {
203601
+ sort(compareMethod = (a, b) => GrowableFloat64Array.compare(a, b)) {
203497
203602
  for (let i = 0; i < this._inUse; i++) {
203498
203603
  for (let j = i + 1; j < this._inUse; j++) {
203499
203604
  const tempI = this._data[i];
@@ -207606,7 +207711,7 @@ class Matrix3d {
207606
207711
  PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.coffs, result.coffs);
207607
207712
  if (this.inverseState === InverseMatrixState.inverseStored
207608
207713
  && other.inverseState === InverseMatrixState.inverseStored)
207609
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.inverseCoffs);
207714
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.inverseCoffs, this.inverseCoffs);
207610
207715
  else if (this.inverseState === InverseMatrixState.singular
207611
207716
  || other.inverseState === InverseMatrixState.singular)
207612
207717
  result.inverseState = InverseMatrixState.singular;
@@ -207624,7 +207729,7 @@ class Matrix3d {
207624
207729
  result = result ? result : new Matrix3d();
207625
207730
  PackedMatrix3dOps.multiplyMatrixMatrix(this.coffs, other.inverseCoffs, Matrix3d._productBuffer);
207626
207731
  if (this.inverseState === InverseMatrixState.inverseStored)
207627
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.coffs, this.inverseCoffs);
207732
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.coffs, this.inverseCoffs);
207628
207733
  else
207629
207734
  result.inverseState = InverseMatrixState.unknown;
207630
207735
  PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
@@ -207640,7 +207745,7 @@ class Matrix3d {
207640
207745
  result = result ? result : new Matrix3d();
207641
207746
  PackedMatrix3dOps.multiplyMatrixMatrix(this.inverseCoffs, other.coffs, Matrix3d._productBuffer);
207642
207747
  if (other.inverseState === InverseMatrixState.inverseStored)
207643
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrix, other.inverseCoffs, this.coffs);
207748
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrix(a, b, _result), other.inverseCoffs, this.coffs);
207644
207749
  else
207645
207750
  result.inverseState = InverseMatrixState.unknown;
207646
207751
  PackedMatrix3dOps.copy(Matrix3d._productBuffer, result.coffs);
@@ -207658,7 +207763,7 @@ class Matrix3d {
207658
207763
  result = result ? result : new Matrix3d();
207659
207764
  PackedMatrix3dOps.multiplyMatrixMatrixTranspose(this.coffs, other.coffs, result.coffs);
207660
207765
  if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
207661
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixTransposeMatrix, other.inverseCoffs, this.inverseCoffs);
207766
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixTransposeMatrix(a, b, _result), other.inverseCoffs, this.inverseCoffs);
207662
207767
  else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
207663
207768
  result.inverseState = InverseMatrixState.singular;
207664
207769
  else
@@ -207677,7 +207782,7 @@ class Matrix3d {
207677
207782
  result = result ? result : new Matrix3d();
207678
207783
  PackedMatrix3dOps.multiplyMatrixTransposeMatrix(this.coffs, other.coffs, result.coffs);
207679
207784
  if (this.inverseState === InverseMatrixState.inverseStored && other.inverseState === InverseMatrixState.inverseStored)
207680
- result.finishInverseCoffs(PackedMatrix3dOps.multiplyMatrixMatrixTranspose, other.inverseCoffs, this.inverseCoffs);
207785
+ result.finishInverseCoffs((a, b, _result) => PackedMatrix3dOps.multiplyMatrixMatrixTranspose(a, b, _result), other.inverseCoffs, this.inverseCoffs);
207681
207786
  else if (this.inverseState === InverseMatrixState.singular || other.inverseState === InverseMatrixState.singular)
207682
207787
  result.inverseState = InverseMatrixState.singular;
207683
207788
  else
@@ -208860,24 +208965,27 @@ class Plane3d {
208860
208965
  isPointInPlane(spacePoint, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
208861
208966
  return Math.abs(this.altitude(spacePoint)) <= tolerance;
208862
208967
  }
208863
- /** return a value -1, 0, 1 giving a signed indicator of whether the toleranced altitude of the point is
208864
- * negative, near zero, or positive.
208968
+ /**
208969
+ * Return a value -1, 0, 1 giving a signed indicator of whether the toleranced altitude of the point is
208970
+ * negative, near zero, or positive.
208865
208971
  *
208866
- */
208972
+ */
208867
208973
  classifyAltitude(point, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
208868
208974
  return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.split3Way01(this.altitude(point), tolerance);
208869
208975
  }
208870
- /** return a value -1, 0, 1 giving a signed indicator of whether the toleranced altitude of x,y,z is
208871
- * negative, near zero, or positive.
208976
+ /**
208977
+ * Return a value -1, 0, 1 giving a signed indicator of whether the toleranced altitude of x,y,z is
208978
+ * negative, near zero, or positive.
208872
208979
  *
208873
- */
208980
+ */
208874
208981
  classifyAltitudeXYZ(x, y, z, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
208875
208982
  return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.split3Way01(this.altitudeXYZ(x, y, z), tolerance);
208876
208983
  }
208877
208984
  /**
208878
208985
  * Return the unit normal for the plane.
208879
208986
  * * The abstract base class implementation assembles the normal from normalX, normalY, normalZ calls.
208880
- * * Derived classes should (but are not required to) override for maximum efficiency if the separate normal calls cause repeated normalization.
208987
+ * * Derived classes should (but are not required to) override for maximum efficiency if the separate normal calls
208988
+ * cause repeated normalization.
208881
208989
  * @param result
208882
208990
  */
208883
208991
  getUnitNormal(result) {
@@ -208888,7 +208996,7 @@ class Plane3d {
208888
208996
  * * Default implementation projects the origin (0,0,0) to the plane.
208889
208997
  * * Classes that have a preferred origin for their plane should override.
208890
208998
  * * Classes with a purely implicit equation of their plane can accept the default implementation
208891
- * */
208999
+ */
208892
209000
  getAnyPointOnPlane(result) {
208893
209001
  return this.projectPointToPlane(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), result);
208894
209002
  }
@@ -208969,7 +209077,8 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
208969
209077
  return Plane3dByOriginAndUnitNormal._create(origin.x, origin.y, origin.z, 0, 1, 0);
208970
209078
  return Plane3dByOriginAndUnitNormal._create(0, 0, 0, 0, 1, 0);
208971
209079
  }
208972
- /** Create a new Plane3dByOriginAndUnitNormal with given origin and normal.
209080
+ /**
209081
+ * Create a new Plane3dByOriginAndUnitNormal with given origin and normal.
208973
209082
  * * The inputs are NOT captured.
208974
209083
  * * Returns undefined if `normal.normalize()` returns undefined.
208975
209084
  */
@@ -208985,7 +209094,8 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
208985
209094
  return undefined;
208986
209095
  return new Plane3dByOriginAndUnitNormal(origin.clone(), normalized);
208987
209096
  }
208988
- /** Create a new Plane3dByOriginAndUnitNormal from a variety of plane types.
209097
+ /**
209098
+ * Create a new Plane3dByOriginAndUnitNormal from a variety of plane types.
208989
209099
  * * The inputs are NOT captured.
208990
209100
  * * Returns undefined if `source.getUnitNormal()` returns undefined.
208991
209101
  */
@@ -209004,7 +209114,8 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209004
209114
  const origin = source.getAnyPointOnPlane();
209005
209115
  return new Plane3dByOriginAndUnitNormal(origin, normal);
209006
209116
  }
209007
- /** create a new Plane3dByOriginAndUnitNormal with direct coordinates of origin and normal.
209117
+ /**
209118
+ * Create a new Plane3dByOriginAndUnitNormal with direct coordinates of origin and normal.
209008
209119
  * * Returns undefined if the normal vector is all zeros.
209009
209120
  * * If unable to normalize return undefined. (And if result is given it is left unchanged)
209010
209121
  */
@@ -209019,7 +209130,9 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209019
209130
  }
209020
209131
  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));
209021
209132
  }
209022
- /** 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.
209133
+ /**
209134
+ * Create a new Plane3dByOriginAndUnitNormal with unit normal (a) in the xy plane (b) perpendicular to the line
209135
+ * defined by xy parts of origin to target.
209023
209136
  * * origin and normal both have z = 0.
209024
209137
  * * The inputs are NOT captured.
209025
209138
  * * Returns undefined if the normal vector is all zeros.
@@ -209029,7 +209142,8 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209029
209142
  const uy = target.y - origin.y;
209030
209143
  return this.createXYZUVW(origin.x, origin.y, 0.0, uy, -ux, 0.0, result);
209031
209144
  }
209032
- /** create a new Plane3dByOriginAndUnitNormal with xy origin (at z=0) and normal angle in xy plane.
209145
+ /**
209146
+ * Create a new Plane3dByOriginAndUnitNormal with xy origin (at z=0) and normal angle in xy plane.
209033
209147
  * * Returns undefined if the normal vector is all zeros.
209034
209148
  */
209035
209149
  static createXYAngle(x, y, normalAngleFromX, result) {
@@ -209040,7 +209154,8 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209040
209154
  }
209041
209155
  return new Plane3dByOriginAndUnitNormal(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, 0), _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(normalAngleFromX.cos(), normalAngleFromX.sin()));
209042
209156
  }
209043
- /** Create a plane defined by two points and an in-plane vector.
209157
+ /**
209158
+ * Create a plane defined by two points and an in-plane vector.
209044
209159
  * @param pointA any point in the plane
209045
209160
  * @param pointB any other point in the plane
209046
209161
  * @param vector any vector in the plane but not parallel to the vector from pointA to pointB
@@ -209051,7 +209166,8 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209051
209166
  return new Plane3dByOriginAndUnitNormal(pointA, cross);
209052
209167
  return undefined;
209053
209168
  }
209054
- /** Create a plane defined by three points.
209169
+ /**
209170
+ * Create a plane defined by three points.
209055
209171
  * @param pointA any point in the plane. This will be the origin.
209056
209172
  * @param pointB any other point in the plane
209057
209173
  * @param pointC any third point in the plane but not on the line of pointA and pointB
@@ -209062,7 +209178,8 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209062
209178
  return new Plane3dByOriginAndUnitNormal(pointA, cross);
209063
209179
  return undefined;
209064
209180
  }
209065
- /** Create a plane defined by a point and two vectors in the plane
209181
+ /**
209182
+ * Create a plane defined by a point and two vectors in the plane
209066
209183
  * @param pointA any point in the plane
209067
209184
  * @param vectorB any vector in the plane
209068
209185
  * @param vectorC any vector in the plane but not parallel to vectorB
@@ -209073,7 +209190,7 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209073
209190
  return new Plane3dByOriginAndUnitNormal(pointA, cross);
209074
209191
  return undefined;
209075
209192
  }
209076
- /** test for (toleranced) equality with `other` */
209193
+ /** Test for (toleranced) equality with `other` */
209077
209194
  isAlmostEqual(other) {
209078
209195
  return this._origin.isAlmostEqual(other._origin) && this._normal.isAlmostEqual(other._normal);
209079
209196
  }
@@ -209092,8 +209209,11 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209092
209209
  * Convert to a JSON object.
209093
209210
  * @return {*} [origin,normal]
209094
209211
  */
209095
- toJSON() { return { origin: this._origin.toJSON(), normal: this._normal.toJSON() }; }
209096
- /** create a new Plane3dByOriginAndUnitNormal from json fragment.
209212
+ toJSON() {
209213
+ return { origin: this._origin.toJSON(), normal: this._normal.toJSON() };
209214
+ }
209215
+ /**
209216
+ * Create a new Plane3dByOriginAndUnitNormal from json fragment.
209097
209217
  * * See `Plane3dByOriginAndUnitNormal.setFromJSON`
209098
209218
  */
209099
209219
  static fromJSON(json) {
@@ -209102,10 +209222,15 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209102
209222
  return result;
209103
209223
  }
209104
209224
  /** Return a reference to the origin. */
209105
- getOriginRef() { return this._origin; }
209225
+ getOriginRef() {
209226
+ return this._origin;
209227
+ }
209106
209228
  /** Return a reference to the unit normal. */
209107
- getNormalRef() { return this._normal; }
209108
- /** Return coordinate axes (as a transform) with
209229
+ getNormalRef() {
209230
+ return this._normal;
209231
+ }
209232
+ /**
209233
+ * Return coordinate axes (as a transform) with
209109
209234
  * * origin at plane origin
209110
209235
  * * z axis in direction of plane normal.
209111
209236
  * * x,y axes in plane.
@@ -209114,8 +209239,7 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209114
209239
  const axes = _Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createRigidHeadsUp(this._normal, _Geometry__WEBPACK_IMPORTED_MODULE_2__.AxisOrder.ZXY);
209115
209240
  return _Transform__WEBPACK_IMPORTED_MODULE_4__.Transform.createRefs(this._origin.clone(), axes);
209116
209241
  }
209117
- /** Return a (singular) transform which projects points to this plane.
209118
- */
209242
+ /** Return a (singular) transform which projects points to this plane. */
209119
209243
  getProjectionToPlane() {
209120
209244
  const axes = _Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createIdentity();
209121
209245
  axes.addScaledOuterProductInPlace(this._normal, this._normal, -1.0);
@@ -209127,7 +209251,7 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209127
209251
  this._origin.setFrom(origin);
209128
209252
  this._normal.setFrom(normal);
209129
209253
  }
209130
- /** return a deep clone (point and normal cloned) */
209254
+ /** Return a deep clone (point and normal cloned) */
209131
209255
  clone(result) {
209132
209256
  if (result) {
209133
209257
  result.set(this._origin, this._normal);
@@ -209157,51 +209281,56 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209157
209281
  this.set(source._origin, source._normal);
209158
209282
  }
209159
209283
  /** Return the altitude of spacePoint above or below the plane. (Below is negative) */
209160
- altitude(spacePoint) { return this._normal.dotProductStartEnd(this._origin, spacePoint); }
209284
+ altitude(spacePoint) {
209285
+ return this._normal.dotProductStartEnd(this._origin, spacePoint);
209286
+ }
209161
209287
  /** Return the altitude of point (x,y) given xy parts using only the xy parts of origin and unit normal */
209162
209288
  altitudeXY(x, y) {
209163
209289
  return (x - this._origin.x) * this._normal.x + (y - this._origin.y) * this._normal.y;
209164
209290
  }
209165
- /**
209166
- * Return the x component of the normal used to evaluate altitude.
209167
- */
209168
- normalX() { return this._normal.x; }
209169
- /**
209170
- * Return the x component of the normal used to evaluate altitude.
209171
- */
209172
- normalY() { return this._normal.y; }
209173
- /**
209174
- * Return the z component of the normal used to evaluate altitude.
209175
- */
209176
- normalZ() { return this._normal.z; }
209177
- /**
209178
- * Return (a clone of) the unit normal.
209179
- */
209291
+ /** Return the x component of the normal used to evaluate altitude. */
209292
+ normalX() {
209293
+ return this._normal.x;
209294
+ }
209295
+ /** Return the x component of the normal used to evaluate altitude. */
209296
+ normalY() {
209297
+ return this._normal.y;
209298
+ }
209299
+ /** Return the z component of the normal used to evaluate altitude. */
209300
+ normalZ() {
209301
+ return this._normal.z;
209302
+ }
209303
+ /** Return (a clone of) the unit normal. */
209180
209304
  getUnitNormal(result) {
209181
209305
  return this._normal.clone(result);
209182
209306
  }
209183
- /**
209184
- * Return (a clone of) the origin.
209185
- */
209307
+ /** Return (a clone of) the origin. */
209186
209308
  getAnyPointOnPlane(result) {
209309
+ // This function returns the plane origin. In general, a point x is on the plane if and only if (x-o).n = 0.
209187
209310
  return this._origin.clone(result);
209188
209311
  }
209189
209312
  /** Return the signed altitude of weighted spacePoint above or below the plane. (Below is negative) */
209190
209313
  weightedAltitude(spacePoint) {
209191
209314
  return this._normal.dotProductStart3dEnd4d(this._origin, spacePoint);
209192
209315
  }
209193
- /** return any point at specified (signed) altitude. */
209316
+ /** Return any point at specified (signed) altitude. */
209194
209317
  altitudeToPoint(altitude, result) {
209195
209318
  return this._origin.plusScaled(this._normal, altitude, result);
209196
209319
  }
209197
- /** Return the dot product of spaceVector with the plane's unit normal. This tells the rate of change of altitude
209320
+ /**
209321
+ * Return the dot product of spaceVector with the plane's unit normal. This tells the rate of change of altitude
209198
209322
  * for a point moving at speed one along the spaceVector.
209199
209323
  */
209200
- velocityXYZ(x, y, z) { return this._normal.dotProductXYZ(x, y, z); }
209201
- /** Return the dot product of spaceVector with the plane's unit normal. This tells the rate of change of altitude
209324
+ velocityXYZ(x, y, z) {
209325
+ return this._normal.dotProductXYZ(x, y, z);
209326
+ }
209327
+ /**
209328
+ * Return the dot product of spaceVector with the plane's unit normal. This tells the rate of change of altitude
209202
209329
  * for a point moving at speed one along the spaceVector.
209203
209330
  */
209204
- velocity(spaceVector) { return this._normal.dotProduct(spaceVector); }
209331
+ velocity(spaceVector) {
209332
+ return this._normal.dotProduct(spaceVector);
209333
+ }
209205
209334
  /** Return the altitude of a point given as separate x,y,z components. */
209206
209335
  altitudeXYZ(x, y, z) {
209207
209336
  return this._normal.dotProductStartEndXYZ(this._origin, x, y, z);
@@ -209214,9 +209343,10 @@ class Plane3dByOriginAndUnitNormal extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__
209214
209343
  projectPointToPlane(spacePoint, result) {
209215
209344
  return spacePoint.plusScaled(this._normal, -this._normal.dotProductStartEnd(this._origin, spacePoint), result);
209216
209345
  }
209217
- /** Returns true if spacePoint is within distance tolerance of the plane.
209346
+ /**
209347
+ * Returns true if spacePoint is within distance tolerance of the plane.
209218
209348
  * * This logic is identical to the [[Plane3d]] method but avoids a level of function call.
209219
- */
209349
+ */
209220
209350
  isPointInPlane(spacePoint, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
209221
209351
  const altitude = this._normal.dotProductStartEnd(this._origin, spacePoint);
209222
209352
  return Math.abs(altitude) <= tolerance;
@@ -209494,6 +209624,8 @@ class Plane3dByOriginAndVectors extends _Plane3d__WEBPACK_IMPORTED_MODULE_0__.Pl
209494
209624
  * Return some point on the plane.
209495
209625
  */
209496
209626
  getAnyPointOnPlane(result) {
209627
+ // This function returns the plane origin. In general, a point x is on the plane if
209628
+ // and only if x = o + a*u + b*v, where a and b are scalars.
209497
209629
  return this.origin.clone(result);
209498
209630
  }
209499
209631
  /** Return (if possible) a ray with origin at plane origin, direction as unit normal to the plane */
@@ -209976,16 +210108,16 @@ class Point2d extends XY {
209976
210108
  return Point2d.create(0, 0, result);
209977
210109
  }
209978
210110
  /**
209979
- * Starting at this point, move along vector by tangentFraction of the vector length, and then
209980
- * to the left by leftFraction of the perpendicular vector length.
209981
- * @param tangentFraction distance to move along the vector, as a fraction of vector
209982
- * @param leftFraction distance to move perpendicular to the vector, as a fraction of the rotated vector
210111
+ * Starting at this point, move along `vector` by `tangentFraction` of its length, and then
210112
+ * by `leftFraction` of its length along the left perpendicular.
210113
+ * @param tangentFraction distance to move along `vector`, as a fraction of its length
210114
+ * @param leftFraction distance to move perpendicular to `vector`, as a fraction of its length
209983
210115
  * @param vector the other vector
209984
210116
  */
209985
- addForwardLeft(tangentFraction, leftFraction, vector) {
210117
+ addForwardLeft(tangentFraction, leftFraction, vector, result) {
209986
210118
  const dx = vector.x;
209987
210119
  const dy = vector.y;
209988
- return Point2d.create(this.x + tangentFraction * dx - leftFraction * dy, this.y + tangentFraction * dy + leftFraction * dx);
210120
+ return Point2d.create(this.x + tangentFraction * dx - leftFraction * dy, this.y + tangentFraction * dy + leftFraction * dx, result);
209989
210121
  }
209990
210122
  /**
209991
210123
  * Interpolate at tangentFraction between this instance and point, and then Move by leftFraction
@@ -210169,11 +210301,10 @@ class Vector2d extends XY {
210169
210301
  return this.safeDivideOrNull(mag, result);
210170
210302
  }
210171
210303
  /**
210172
- * Return fractional projection of target vector onto this
210173
- * * It's returning the signed projection magnitude divided by the target magnitude. In other words,
210174
- * it's returning the length of the projection as a fraction of the target magnitude.
210304
+ * Return fractional length of the projection of the instance onto the target vector.
210175
210305
  * @param target the target vector
210176
- * @param defaultFraction the returned value in case magnitude square of target vector is very small
210306
+ * @param defaultFraction the returned value in case the magnitude of `target` is too small
210307
+ * @returns the signed length of the projection divided by the length of `target`
210177
210308
  */
210178
210309
  fractionOfProjectionToVector(target, defaultFraction) {
210179
210310
  /*
@@ -211571,24 +211702,24 @@ class Vector3d extends XYZ {
211571
211702
  return undefined;
211572
211703
  }
211573
211704
  /**
211574
- * Return fractional projection of this vector on the target vector.
211575
- * * It's returning the signed projection magnitude divided by the target magnitude.
211576
- * * To find the projection vector, scale the target vector by the value that this function is returning.
211705
+ * Return fractional length of the projection of the instance onto the target vector.
211706
+ * * To find the projection vector, scale the target vector by the return value.
211577
211707
  * * Math details can be found at docs/learning/geometry/PointVector.md
211578
211708
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/ProjectVectorOnVector
211579
211709
  * and https://www.itwinjs.org/sandbox/SaeedTorabi/ProjectVectorOnPlane
211580
211710
  * @param target the target vector
211581
- * @param defaultFraction the returned value in case magnitude square of target vector is very small
211711
+ * @param defaultFraction the returned value in case the magnitude of `target` is too small
211712
+ * @returns the signed length of the projection divided by the length of `target`
211582
211713
  * */
211583
211714
  fractionOfProjectionToVector(target, defaultFraction = 0) {
211584
211715
  /*
211585
211716
  * Projection vector is ((this.target)/||target||)(target/||target||) = ((this.target)/||target||^2)target
211586
211717
  * This function returns (this.target)/||target||^2
211587
211718
  */
211588
- const numerator = this.dotProduct(target);
211589
211719
  const denominator = target.magnitudeSquared();
211590
211720
  if (denominator < _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistanceSquared)
211591
211721
  return defaultFraction;
211722
+ const numerator = this.dotProduct(target);
211592
211723
  return numerator / denominator;
211593
211724
  }
211594
211725
  /**
@@ -212537,7 +212668,7 @@ class Point4dArray {
212537
212668
  }
212538
212669
  /** unpack from xyzw xyzw... array to array of Point3d and array of weight.
212539
212670
  */
212540
- static unpackFloat64ArrayToPointsAndWeights(data, points, weights, pointFormatter = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create) {
212671
+ static unpackFloat64ArrayToPointsAndWeights(data, points, weights, pointFormatter = (x, y, z) => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z)) {
212541
212672
  points.length = 0;
212542
212673
  weights.length = 0;
212543
212674
  for (let i = 0; i + 3 < data.length; i += 4) {
@@ -212990,7 +213121,7 @@ class Point3dArray {
212990
213121
  * @param data point data with various leaf forms such as `[1,2,3]`, `{x:1,y:2,z:3}`, `Point3d`
212991
213122
  */
212992
213123
  static cloneDeepJSONNumberArrays(data) {
212993
- const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector(this.xyzToArray);
213124
+ const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector((x, y, z) => this.xyzToArray(x, y, z));
212994
213125
  _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.VariantPointDataStream.streamXYZ(data, collector);
212995
213126
  return collector.claimResult();
212996
213127
  }
@@ -213035,7 +213166,7 @@ class Point3dArray {
213035
213166
  * @param data point data with various leaf forms such as `[1,2,3]`, `{x:1,y:2,z:3}`, `Point3d`
213036
213167
  */
213037
213168
  static cloneDeepXYZPoint3dArrays(data) {
213038
- const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create);
213169
+ const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.PointStringDeepXYZArrayCollector((x, y, z) => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z));
213039
213170
  _PointStreaming__WEBPACK_IMPORTED_MODULE_7__.VariantPointDataStream.streamXYZ(data, collector);
213040
213171
  return collector.claimResult();
213041
213172
  }
@@ -213078,7 +213209,7 @@ class Point3dArray {
213078
213209
  let n = points.length;
213079
213210
  // Get deep copy
213080
213211
  const xy1 = points.slice(0, n);
213081
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
213212
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan(a, b));
213082
213213
  if (n < 3) {
213083
213214
  for (const p of xy1)
213084
213215
  hullPoints.push(p);
@@ -213103,7 +213234,7 @@ class Point3dArray {
213103
213234
  const i0 = hullPoints.length - 1;
213104
213235
  xy1.length = numInside;
213105
213236
  xy1.push(hullPoints[0]); // force first point to be reconsidered as final hull point.
213106
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
213237
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan(a, b));
213107
213238
  n = xy1.length;
213108
213239
  // xy1.back () is already on stack.
213109
213240
  hullPoints.push(xy1[n - 1]);
@@ -213594,7 +213725,7 @@ class CutLoopMergeContext {
213594
213725
  sortRay.direction.normalizeInPlace();
213595
213726
  for (const loop of this.inputLoops)
213596
213727
  loop.setSortCoordinates(sortRay);
213597
- this.inputLoops.sort(CutLoop.sortFunction);
213728
+ this.inputLoops.sort((loopA, loopB) => CutLoop.sortFunction(loopA, loopB));
213598
213729
  }
213599
213730
  }
213600
213731
  /**
@@ -213640,9 +213771,8 @@ class CutLoopMergeContext {
213640
213771
  }
213641
213772
  }
213642
213773
  }
213643
- /** Static class for operations that treat an array of points as a polygon (with area!) */
213644
213774
  /**
213645
- * Various (static method) computations for arrays of points interpreted as a polygon.
213775
+ * Various static methods to perform computations on an array of points interpreted as a polygon.
213646
213776
  * @public
213647
213777
  */
213648
213778
  class PolygonOps {
@@ -217068,6 +217198,163 @@ class Range2d extends RangeBase {
217068
217198
  }
217069
217199
 
217070
217200
 
217201
+ /***/ }),
217202
+
217203
+ /***/ "../../core/geometry/lib/esm/geometry3d/Ray2d.js":
217204
+ /*!*******************************************************!*\
217205
+ !*** ../../core/geometry/lib/esm/geometry3d/Ray2d.js ***!
217206
+ \*******************************************************/
217207
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
217208
+
217209
+ "use strict";
217210
+ __webpack_require__.r(__webpack_exports__);
217211
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
217212
+ /* harmony export */ Ray2d: () => (/* binding */ Ray2d)
217213
+ /* harmony export */ });
217214
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
217215
+ /*---------------------------------------------------------------------------------------------
217216
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
217217
+ * See LICENSE.md in the project root for license terms and full copyright notice.
217218
+ *--------------------------------------------------------------------------------------------*/
217219
+ /** @packageDocumentation
217220
+ * @module CartesianGeometry
217221
+ */
217222
+
217223
+ // cspell:word CCWXY, CWXY
217224
+ /**
217225
+ * Ray with xy origin and direction
217226
+ * @public
217227
+ */
217228
+ class Ray2d {
217229
+ constructor(origin, direction) {
217230
+ this._origin = origin;
217231
+ this._direction = direction;
217232
+ }
217233
+ /** Copy coordinates from origin and direction. */
217234
+ set(origin, direction) {
217235
+ this._origin.setFrom(origin);
217236
+ this._direction.setFrom(direction);
217237
+ }
217238
+ /**
217239
+ * Create from `origin` and `target` points.
217240
+ * @param origin ray origin, cloned
217241
+ * @param target end of ray direction vector. The direction vector is `target - origin`.
217242
+ * @param result optional pre-allocated object to return
217243
+ */
217244
+ static createOriginAndTarget(origin, target, result) {
217245
+ if (result) {
217246
+ result._origin.setFrom(origin);
217247
+ result._direction.set(target.x - origin.x, target.y - origin.y);
217248
+ return result;
217249
+ }
217250
+ return new Ray2d(origin.clone(), origin.vectorTo(target));
217251
+ }
217252
+ /**
217253
+ * Create by copying coordinates from `origin` and `direction`.
217254
+ * @param origin ray origin
217255
+ * @param direction ray direction
217256
+ * @param result optional pre-allocated object to return
217257
+ */
217258
+ static createOriginAndDirection(origin, direction, result) {
217259
+ if (result) {
217260
+ result.set(origin, direction);
217261
+ return result;
217262
+ }
217263
+ return new Ray2d(origin.clone(), direction.clone());
217264
+ }
217265
+ /** Create from captured `origin` and `direction`. */
217266
+ static createOriginAndDirectionCapture(origin, direction, result) {
217267
+ if (result) {
217268
+ result._origin = origin;
217269
+ result._direction = direction;
217270
+ return result;
217271
+ }
217272
+ return new Ray2d(origin, direction);
217273
+ }
217274
+ /** Get the reference to the ray origin. */
217275
+ get origin() { return this._origin; }
217276
+ /** Get the reference to the ray direction. */
217277
+ get direction() { return this._direction; }
217278
+ /**
217279
+ * Return a parallel ray to the left of this ray.
217280
+ * @param leftFraction distance between rays, as a fraction of the magnitude of this ray's direction vector
217281
+ */
217282
+ parallelRay(leftFraction, result) {
217283
+ if (result) {
217284
+ this._origin.addForwardLeft(0.0, leftFraction, this._direction, result._origin);
217285
+ result._direction.setFrom(this._direction);
217286
+ return result;
217287
+ }
217288
+ return new Ray2d(this._origin.addForwardLeft(0.0, leftFraction, this._direction), this._direction.clone());
217289
+ }
217290
+ /** Return a ray with cloned origin and with direction rotated 90 degrees counterclockwise */
217291
+ ccwPerpendicularRay(result) {
217292
+ if (result) {
217293
+ result._origin.setFrom(this._origin);
217294
+ this._direction.rotate90CCWXY(result._direction);
217295
+ return result;
217296
+ }
217297
+ return new Ray2d(this._origin.clone(), this._direction.rotate90CCWXY());
217298
+ }
217299
+ /** Return a ray with cloned origin and with direction rotated 90 degrees clockwise */
217300
+ cwPerpendicularRay(result) {
217301
+ if (result) {
217302
+ result._origin.setFrom(this._origin);
217303
+ this._direction.rotate90CWXY(result._direction);
217304
+ return result;
217305
+ }
217306
+ return new Ray2d(this._origin.clone(), this._direction.rotate90CWXY());
217307
+ }
217308
+ /**
217309
+ * Normalize the direction vector in place.
217310
+ * @param defaultX value to set `this.direction.x` if normalization fails. Default value 1.
217311
+ * @param defaultY value to set `this.direction.y` if normalization fails. Default value 0.
217312
+ * @returns whether normalization succeeded (i.e., direction is nonzero)
217313
+ */
217314
+ normalizeDirectionInPlace(defaultX = 1, defaultY = 0) {
217315
+ if (this._direction.normalize(this._direction))
217316
+ return true;
217317
+ this._direction.x = defaultX;
217318
+ this._direction.y = defaultY;
217319
+ return false;
217320
+ }
217321
+ /**
217322
+ * Intersect this ray with the unbounded line defined by the given points.
217323
+ * @param linePointA start of the line
217324
+ * @param linePointB end of the line
217325
+ * @returns object with named values:
217326
+ * * `hasIntersection`: whether the intersection exists.
217327
+ * * `fraction`: ray parameter of intersection, or 0.0 if `!hasIntersection`. If the instance is normalized, this is the signed distance along the ray to the intersection point.
217328
+ * * `cross`: the 2D cross product `this.direction x (linePointB - linePointA)`, useful for determining orientation of the line and ray.
217329
+ */
217330
+ intersectUnboundedLine(linePointA, linePointB) {
217331
+ const lineDirection = linePointA.vectorTo(linePointB);
217332
+ const vector0 = linePointA.vectorTo(this._origin);
217333
+ const h0 = vector0.crossProduct(lineDirection);
217334
+ const dHds = this._direction.crossProduct(lineDirection);
217335
+ // h = h0 + s * dh
217336
+ const ff = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-h0, dHds);
217337
+ const hasIntersection = ff !== undefined;
217338
+ return { hasIntersection, fraction: hasIntersection ? ff : 0.0, cross: dHds };
217339
+ }
217340
+ /** Return the ray fraction where the given point projects onto the ray. */
217341
+ projectionFraction(point) {
217342
+ return this._origin.vectorTo(point).fractionOfProjectionToVector(this._direction);
217343
+ }
217344
+ /** Return the ray fraction where the given point projects onto the perpendicular ray. */
217345
+ perpendicularProjectionFraction(point) {
217346
+ const uv = this._direction.crossProduct(this._origin.vectorTo(point));
217347
+ const uu = this._direction.magnitudeSquared();
217348
+ // Want zero returned if failure case, not undefined
217349
+ return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.safeDivideFraction(uv, uu, 0.0);
217350
+ }
217351
+ /** Compute and return origin plus scaled direction. */
217352
+ fractionToPoint(f, result) {
217353
+ return this._origin.plusScaled(this._direction, f, result);
217354
+ }
217355
+ }
217356
+
217357
+
217071
217358
  /***/ }),
217072
217359
 
217073
217360
  /***/ "../../core/geometry/lib/esm/geometry3d/Ray3d.js":
@@ -218415,7 +218702,7 @@ class Transform {
218415
218702
  /**
218416
218703
  * Create a Transform with translation provided by x,y,z parts.
218417
218704
  * * Translation Transform maps any vector `v` to `v + p` where `p = (x,y,z)`
218418
- * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/CubeMove
218705
+ * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/CubeTransform
218419
218706
  * @param x x part of translation
218420
218707
  * @param y y part of translation
218421
218708
  * @param z z part of translation
@@ -218428,7 +218715,7 @@ class Transform {
218428
218715
  /**
218429
218716
  * Create a Transform with specified `translation` part.
218430
218717
  * * Translation Transform maps any vector `v` to `v + translation`
218431
- * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/CubeMove
218718
+ * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/CubeTransform
218432
218719
  * @param translation x,y,z parts of the translation
218433
218720
  * @param result optional pre-allocated Transform
218434
218721
  * @returns new or updated transform
@@ -218551,7 +218838,7 @@ class Transform {
218551
218838
  * Create a Transform which leaves the fixedPoint unchanged and scales everything else around it by
218552
218839
  * a single scale factor. The returned Transform maps a point `p` to `M*p + (f - M*f)`
218553
218840
  * where `f` is the fixedPoint and M is the scale matrix (i.e., `Tp = M*(p-f) + f`).
218554
- * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/CubeScale
218841
+ * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/CubeTransform
218555
218842
  */
218556
218843
  static createScaleAboutPoint(fixedPoint, scale, result) {
218557
218844
  const matrix = _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createScale(scale, scale, scale);
@@ -218751,7 +219038,7 @@ class Transform {
218751
219038
  const originY = this.origin.y;
218752
219039
  const originZ = this.origin.z;
218753
219040
  if (result) {
218754
- const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
219041
+ const n = Transform.matchArrayLengths(points, result, () => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero());
218755
219042
  for (let i = 0; i < n; i++)
218756
219043
  this._matrix.multiplyInverseXYZAsPoint3d(points[i].x - originX, points[i].y - originY, points[i].z - originZ, result[i]);
218757
219044
  return result;
@@ -218781,7 +219068,7 @@ class Transform {
218781
219068
  */
218782
219069
  multiplyPoint2dArray(points, result) {
218783
219070
  if (result) {
218784
- const n = Transform.matchArrayLengths(points, result, _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero);
219071
+ const n = Transform.matchArrayLengths(points, result, () => _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero());
218785
219072
  for (let i = 0; i < n; i++)
218786
219073
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, points[i], result[i]);
218787
219074
  return result;
@@ -218798,7 +219085,7 @@ class Transform {
218798
219085
  */
218799
219086
  multiplyPoint3dArray(points, result) {
218800
219087
  if (result) {
218801
- const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
219088
+ const n = Transform.matchArrayLengths(points, result, () => _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero());
218802
219089
  for (let i = 0; i < n; i++)
218803
219090
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, points[i], result[i]);
218804
219091
  return result;
@@ -223554,12 +223841,12 @@ class Complex {
223554
223841
  "use strict";
223555
223842
  __webpack_require__.r(__webpack_exports__);
223556
223843
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
223557
- /* harmony export */ ConvexPolygon2d: () => (/* binding */ ConvexPolygon2d),
223558
- /* harmony export */ Ray2d: () => (/* binding */ Ray2d)
223844
+ /* harmony export */ ConvexPolygon2d: () => (/* binding */ ConvexPolygon2d)
223559
223845
  /* harmony export */ });
223560
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
223846
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
223561
223847
  /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
223562
223848
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
223849
+ /* harmony import */ var _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Ray2d */ "../../core/geometry/lib/esm/geometry3d/Ray2d.js");
223563
223850
  /*---------------------------------------------------------------------------------------------
223564
223851
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
223565
223852
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -223570,97 +223857,7 @@ __webpack_require__.r(__webpack_exports__);
223570
223857
 
223571
223858
 
223572
223859
 
223573
- /**
223574
- * Ray with xy origin and direction
223575
- * @internal
223576
- */
223577
- class Ray2d {
223578
- constructor(origin, direction) {
223579
- this._origin = origin;
223580
- this._direction = direction;
223581
- }
223582
- /** Create from 2d `origin` and `target`.
223583
- * * `target - origin` is the direction vector.
223584
- */
223585
- static createOriginAndTarget(origin, target) {
223586
- return new Ray2d(origin.clone(), origin.vectorTo(target));
223587
- }
223588
- /** Create from (clones of) `origin` point and `direction` vector */
223589
- static createOriginAndDirection(origin, direction) {
223590
- return new Ray2d(origin.clone(), direction.clone());
223591
- }
223592
- /** Capture `origin` and `direction` as ray member variables. */
223593
- static createOriginAndDirectionCapture(origin, direction) {
223594
- return new Ray2d(origin, direction);
223595
- }
223596
- /** Get the (REFERENCE TO) the ray origin. */
223597
- get origin() { return this._origin; }
223598
- /** Get the (REFERENCE TO) the ray direction. */
223599
- get direction() { return this._direction; }
223600
- /**
223601
- * Return a ray that is parallel at distance to the left, specified as fraction of the ray's direction vector.
223602
- */
223603
- parallelRay(leftFraction) {
223604
- return new Ray2d(this._origin.addForwardLeft(0.0, leftFraction, this._direction), this._direction);
223605
- }
223606
- /** Return a ray with same origin, direction rotated 90 degrees counterclockwise */
223607
- ccwPerpendicularRay() {
223608
- return new Ray2d(this._origin, this._direction.rotate90CCWXY());
223609
- }
223610
- /** Return a ray with same origin, direction rotated 90 degrees clockwise */
223611
- cwPerpendicularRay() {
223612
- return new Ray2d(this._origin, this._direction.rotate90CWXY());
223613
- }
223614
- /** Normalize the direction vector in place. */
223615
- normalizeDirectionInPlace(defaultX = 1, defaultY = 0) {
223616
- if (this._direction.normalize(this._direction)) {
223617
- return true;
223618
- }
223619
- else {
223620
- this._direction.x = defaultX;
223621
- this._direction.y = defaultY;
223622
- // magnitude = 0.0;
223623
- return false;
223624
- }
223625
- }
223626
- /**
223627
- * Intersect this ray (ASSUMED NORMALIZED) with unbounded line defined by points.
223628
- * (The normalization assumption affects test for parallel vectors.)
223629
- * Fraction and dHds passed as number[] to use by reference... Sticking to return of true and false in the case fraction is zero after
223630
- * a true safe divide
223631
- */
223632
- intersectUnboundedLine(linePointA, linePointB, fraction, dHds) {
223633
- const lineDirection = linePointA.vectorTo(linePointB);
223634
- const vector0 = linePointA.vectorTo(this._origin);
223635
- const h0 = vector0.crossProduct(lineDirection);
223636
- dHds[0] = this._direction.crossProduct(lineDirection);
223637
- // h = h0 + s * dh
223638
- const ff = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-h0, dHds[0]);
223639
- if (ff !== undefined) {
223640
- fraction[0] = ff;
223641
- return true;
223642
- }
223643
- else {
223644
- fraction[0] = 0.0;
223645
- return false;
223646
- }
223647
- }
223648
- /** return the ray fraction where point projects to the ray */
223649
- projectionFraction(point) {
223650
- return this._origin.vectorTo(point).fractionOfProjectionToVector(this._direction);
223651
- }
223652
- /** return the fraction of projection to the perpendicular ray */
223653
- perpendicularProjectionFraction(point) {
223654
- const uv = this._direction.crossProduct(this._origin.vectorTo(point));
223655
- const uu = this._direction.magnitudeSquared();
223656
- // Want zero returned if failure case, not undefined
223657
- return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.safeDivideFraction(uv, uu, 0.0);
223658
- }
223659
- /** Return point from origin plus a scaled vector */
223660
- fractionToPoint(f) {
223661
- return this._origin.plusScaled(this._direction, f);
223662
- }
223663
- }
223860
+
223664
223861
  /**
223665
223862
  * Convex hull of points in 2d.
223666
223863
  * @internal
@@ -223726,7 +223923,7 @@ class ConvexPolygon2d {
223726
223923
  const xy1 = this._hullPoints[i];
223727
223924
  const c = xy0.crossProductToPoints(xy1, xy);
223728
223925
  if (c < 0.0) {
223729
- const ray = Ray2d.createOriginAndTarget(xy0, xy1);
223926
+ const ray = _geometry3d_Ray2d__WEBPACK_IMPORTED_MODULE_0__.Ray2d.createOriginAndTarget(xy0, xy1);
223730
223927
  const s = ray.projectionFraction(xy);
223731
223928
  let d = 0.0;
223732
223929
  if (s < 0.0)
@@ -223777,10 +223974,11 @@ class ConvexPolygon2d {
223777
223974
  return true;
223778
223975
  }
223779
223976
  /**
223780
- * Return 2 distances bounding the intersection of the ray with a convex hull.
223781
- * ASSUME (for tolerance) the ray has normalized direction vector.
223782
- * Both negative and positive distances along the ray are possible.
223783
- * Returns range with extremities if less than 3 points, distanceA > distanceB, or if cross product < 0
223977
+ * Return 2 distances bounding the intersection of the ray with this convex hull.
223978
+ * @param ray ray to clip to this convex polygon. ASSUME normalized direction vector, so that ray fractions are distances.
223979
+ * @returns intersection bounds as min and max distances along the ray (from its origin).
223980
+ * * Both negative and positive distances along the ray are possible.
223981
+ * * Range has extreme values if less than 3 points, distanceA > distanceB, or if cross product < 0.
223784
223982
  */
223785
223983
  clipRay(ray) {
223786
223984
  let distanceA = -Number.MAX_VALUE;
@@ -223790,16 +223988,15 @@ class ConvexPolygon2d {
223790
223988
  return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range1d.createNull();
223791
223989
  let xy0 = this._hullPoints[n - 1];
223792
223990
  for (const xy1 of this._hullPoints) {
223793
- const distance = [];
223794
- const dHds = [];
223795
- if (ray.intersectUnboundedLine(xy0, xy1, distance, dHds)) {
223796
- if (dHds[0] > 0.0) {
223797
- if (distance[0] < distanceB)
223798
- distanceB = distance[0];
223991
+ const { hasIntersection, fraction, cross } = ray.intersectUnboundedLine(xy0, xy1);
223992
+ if (hasIntersection) {
223993
+ if (cross > 0.0) {
223994
+ if (fraction < distanceB)
223995
+ distanceB = fraction;
223799
223996
  }
223800
223997
  else {
223801
- if (distance[0] > distanceA)
223802
- distanceA = distance[0];
223998
+ if (fraction > distanceA)
223999
+ distanceA = fraction;
223803
224000
  }
223804
224001
  if (distanceA > distanceB)
223805
224002
  return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range1d.createNull();
@@ -223842,7 +224039,7 @@ class ConvexPolygon2d {
223842
224039
  return undefined;
223843
224040
  // Get deep copy
223844
224041
  const xy1 = points.slice(0, n);
223845
- xy1.sort(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.lexicalXYLessThan);
224042
+ xy1.sort((a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.lexicalXYLessThan(a, b));
223846
224043
  hull.push(xy1[0]); // This is sure to stay
223847
224044
  hull.push(xy1[1]); // This one can be removed in loop.
223848
224045
  // First sweep creates upper hull
@@ -224291,7 +224488,6 @@ __webpack_require__.r(__webpack_exports__);
224291
224488
  /** @packageDocumentation
224292
224489
  * @module Numerics
224293
224490
  */
224294
- // import { Angle, AngleSweep, Geometry } from "../Geometry";
224295
224491
 
224296
224492
 
224297
224493
 
@@ -224300,7 +224496,6 @@ __webpack_require__.r(__webpack_exports__);
224300
224496
 
224301
224497
 
224302
224498
 
224303
- // import { Arc3d } from "../curve/Arc3d";
224304
224499
  // cspell:word Cardano
224305
224500
  // cspell:word CCminusSS
224306
224501
  /* eslint-disable @typescript-eslint/naming-convention */
@@ -226193,19 +226388,19 @@ class GaussMapper {
226193
226388
  numGaussPoints = 5;
226194
226389
  switch (numGaussPoints) {
226195
226390
  case 1:
226196
- this.mapXAndWFunction = Quadrature.setupGauss1;
226391
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss1(xA, xB, xMapped, wMapped);
226197
226392
  break;
226198
226393
  case 2:
226199
- this.mapXAndWFunction = Quadrature.setupGauss2;
226394
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss2(xA, xB, xMapped, wMapped);
226200
226395
  break;
226201
226396
  case 3:
226202
- this.mapXAndWFunction = Quadrature.setupGauss3;
226397
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss3(xA, xB, xMapped, wMapped);
226203
226398
  break;
226204
226399
  case 4:
226205
- this.mapXAndWFunction = Quadrature.setupGauss4;
226400
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss4(xA, xB, xMapped, wMapped);
226206
226401
  break;
226207
226402
  default:
226208
- this.mapXAndWFunction = Quadrature.setupGauss5;
226403
+ this.mapXAndWFunction = (xA, xB, xMapped, wMapped) => Quadrature.setupGauss5(xA, xB, xMapped, wMapped);
226209
226404
  break;
226210
226405
  }
226211
226406
  }
@@ -228681,7 +228876,7 @@ class IndexedEdgeMatcher {
228681
228876
  }
228682
228877
  /** Sort the edge index array. */
228683
228878
  sort() {
228684
- this.edges.sort(SortableEdge.lessThan);
228879
+ this.edges.sort((edgeA, edgeB) => SortableEdge.lessThan(edgeA, edgeB));
228685
228880
  }
228686
228881
  /** Create a single or compound SortableEdgeCluster in dest. */
228687
228882
  collectSortableEdgeCluster(index0, index1, dest) {
@@ -231064,7 +231259,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
231064
231259
  * * Rely on the builder's compress step to find common vertex coordinates
231065
231260
  * @internal
231066
231261
  */
231067
- addGraph(graph, needParams, acceptFaceFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior, isEdgeVisibleFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testMateMaskExterior) {
231262
+ addGraph(graph, needParams, acceptFaceFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior(node), isEdgeVisibleFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testMateMaskExterior(node)) {
231068
231263
  let index = 0;
231069
231264
  const needNormals = this._options.needNormals;
231070
231265
  let normalIndex = 0;
@@ -231114,7 +231309,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
231114
231309
  /** Create a polyface containing the faces of a HalfEdgeGraph, with test function to filter faces.
231115
231310
  * @internal
231116
231311
  */
231117
- static graphToPolyface(graph, options, acceptFaceFunction = _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior) {
231312
+ static graphToPolyface(graph, options, acceptFaceFunction = (node) => _topology_Graph__WEBPACK_IMPORTED_MODULE_23__.HalfEdge.testNodeMaskNotExterior(node)) {
231118
231313
  const builder = PolyfaceBuilder.create(options);
231119
231314
  builder.addGraph(graph, builder.options.needParams, acceptFaceFunction);
231120
231315
  builder.endFace();
@@ -232634,40 +232829,41 @@ __webpack_require__.r(__webpack_exports__);
232634
232829
  /* harmony export */ PolyfaceQuery: () => (/* binding */ PolyfaceQuery),
232635
232830
  /* harmony export */ SweepLineStringToFacetsOptions: () => (/* binding */ SweepLineStringToFacetsOptions)
232636
232831
  /* harmony export */ });
232637
- /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
232638
232832
  /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
232833
+ /* harmony import */ var _curve_CurveOps__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../curve/CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
232639
232834
  /* harmony import */ var _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../curve/internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
232640
232835
  /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
232641
232836
  /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
232642
232837
  /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
232643
- /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
232838
+ /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
232644
232839
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
232645
232840
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
232646
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
232841
+ /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
232842
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
232647
232843
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
232844
+ /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
232648
232845
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
232649
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
232846
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
232650
232847
  /* harmony import */ var _geometry4d_Matrix4d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry4d/Matrix4d */ "../../core/geometry/lib/esm/geometry4d/Matrix4d.js");
232651
232848
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
232652
232849
  /* harmony import */ var _numerics_UnionFind__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../numerics/UnionFind */ "../../core/geometry/lib/esm/numerics/UnionFind.js");
232653
- /* harmony import */ var _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../topology/ChainMerge */ "../../core/geometry/lib/esm/topology/ChainMerge.js");
232654
- /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
232655
- /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
232656
- /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
232657
- /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
232850
+ /* harmony import */ var _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../topology/ChainMerge */ "../../core/geometry/lib/esm/topology/ChainMerge.js");
232851
+ /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
232852
+ /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
232853
+ /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
232854
+ /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
232855
+ /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
232856
+ /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
232857
+ /* harmony import */ var _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./FacetOrientation */ "../../core/geometry/lib/esm/polyface/FacetOrientation.js");
232658
232858
  /* harmony import */ var _IndexedEdgeMatcher__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./IndexedEdgeMatcher */ "../../core/geometry/lib/esm/polyface/IndexedEdgeMatcher.js");
232659
232859
  /* harmony import */ var _IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./IndexedPolyfaceVisitor */ "../../core/geometry/lib/esm/polyface/IndexedPolyfaceVisitor.js");
232660
- /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
232860
+ /* harmony import */ var _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./multiclip/BuildAverageNormalsContext */ "../../core/geometry/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js");
232861
+ /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
232661
232862
  /* harmony import */ var _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./multiclip/SweepLineStringToFacetContext */ "../../core/geometry/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js");
232662
- /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
232863
+ /* harmony import */ var _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./multiclip/XYPointBuckets */ "../../core/geometry/lib/esm/polyface/multiclip/XYPointBuckets.js");
232663
232864
  /* harmony import */ var _Polyface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Polyface */ "../../core/geometry/lib/esm/polyface/Polyface.js");
232664
232865
  /* harmony import */ var _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
232665
- /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
232666
- /* harmony import */ var _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../topology/SpaceTriangulation */ "../../core/geometry/lib/esm/topology/SpaceTriangulation.js");
232667
- /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
232668
- /* harmony import */ var _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./multiclip/OffsetMeshContext */ "../../core/geometry/lib/esm/polyface/multiclip/OffsetMeshContext.js");
232669
- /* harmony import */ var _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./FacetLocationDetail */ "../../core/geometry/lib/esm/polyface/FacetLocationDetail.js");
232670
- /* harmony import */ var _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../geometry3d/BarycentricTriangle */ "../../core/geometry/lib/esm/geometry3d/BarycentricTriangle.js");
232866
+ /* harmony import */ var _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./RangeLengthData */ "../../core/geometry/lib/esm/polyface/RangeLengthData.js");
232671
232867
  /*---------------------------------------------------------------------------------------------
232672
232868
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
232673
232869
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -232708,6 +232904,7 @@ __webpack_require__.r(__webpack_exports__);
232708
232904
 
232709
232905
 
232710
232906
 
232907
+
232711
232908
 
232712
232909
 
232713
232910
  /**
@@ -233341,18 +233538,18 @@ class PolyfaceQuery {
233341
233538
  edges.push(_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.create(pointA, pointB));
233342
233539
  edgeStrings.push([pointA.clone(), pointB.clone()]);
233343
233540
  });
233344
- const chains = _curve_internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_15__.OffsetHelpers.collectChains(edges, gapTolerance, planarityTolerance);
233541
+ const chains = _curve_CurveOps__WEBPACK_IMPORTED_MODULE_17__.CurveOps.collectChains(edges, gapTolerance, planarityTolerance);
233345
233542
  if (chains) {
233346
- const frameBuilder = new _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_17__.FrameBuilder();
233543
+ const frameBuilder = new _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_18__.FrameBuilder();
233347
233544
  frameBuilder.announce(chains);
233348
233545
  const frame = frameBuilder.getValidatedFrame(false);
233349
233546
  if (frame !== undefined) {
233350
233547
  const inverseFrame = frame.inverse();
233351
233548
  if (inverseFrame !== undefined) {
233352
233549
  inverseFrame.multiplyPoint3dArrayArrayInPlace(edgeStrings);
233353
- const graph = _topology_Merging__WEBPACK_IMPORTED_MODULE_18__.HalfEdgeGraphMerge.formGraphFromChains(edgeStrings, true, _topology_Graph__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeMask.BOUNDARY_EDGE);
233550
+ const graph = _topology_Merging__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeGraphMerge.formGraphFromChains(edgeStrings, true, _topology_Graph__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMask.BOUNDARY_EDGE);
233354
233551
  if (graph) {
233355
- _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeGraphSearch.collectConnectedComponentsWithExteriorParityMasks(graph, new _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMaskTester(_topology_Graph__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeMask.BOUNDARY_EDGE), _topology_Graph__WEBPACK_IMPORTED_MODULE_19__.HalfEdgeMask.EXTERIOR);
233552
+ _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__.HalfEdgeGraphSearch.collectConnectedComponentsWithExteriorParityMasks(graph, new _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_21__.HalfEdgeMaskTester(_topology_Graph__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMask.BOUNDARY_EDGE), _topology_Graph__WEBPACK_IMPORTED_MODULE_20__.HalfEdgeMask.EXTERIOR);
233356
233553
  // this.purgeNullFaces(HalfEdgeMask.EXTERIOR);
233357
233554
  const polyface1 = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.graphToPolyface(graph);
233358
233555
  builder.addIndexedPolyface(polyface1, false, frame);
@@ -233365,14 +233562,14 @@ class PolyfaceQuery {
233365
233562
  }
233366
233563
  /**
233367
233564
  * Return a mesh with "some" holes filled in with new facets.
233368
- * * The candidates to be filled are all loops returned by boundaryChainsAsLineString3d
233369
- * * unclosed chains are rejected.
233370
- * * optionally also copy the original mesh, so the composite is a clone with holes filled.
233565
+ * * Candidate chains are computed by [[announceBoundaryChainsAsLineString3d]].
233566
+ * * Unclosed chains are rejected.
233567
+ * * Closed chains are triangulated and returned as a mesh.
233371
233568
  * * The options structure enforces restrictions on how complicated the hole filling can be:
233372
233569
  * * maxEdgesAroundHole -- holes with more edges are skipped
233373
233570
  * * maxPerimeter -- holes with larger summed edge lengths are skipped.
233374
233571
  * * upVector -- holes that do not have positive area along this view are skipped.
233375
- * * includeOriginalMesh -- includes the original mesh in the output mesh.
233572
+ * * includeOriginalMesh -- includes the original mesh in the output mesh, so the composite mesh is a clone with holes filled
233376
233573
  * @param mesh existing mesh
233377
233574
  * @param options options controlling the hole fill.
233378
233575
  * @param unfilledChains optional array to receive the points around holes that were not filled.
@@ -233391,11 +233588,11 @@ class PolyfaceQuery {
233391
233588
  rejected = true;
233392
233589
  else if (options.maxEdgesAroundHole !== undefined && points.length > options.maxEdgesAroundHole)
233393
233590
  rejected = true;
233394
- else if (options.maxPerimeter !== undefined && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_21__.Point3dArray.sumEdgeLengths(points, false) > options.maxPerimeter)
233591
+ else if (options.maxPerimeter !== undefined && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_22__.Point3dArray.sumEdgeLengths(points, false) > options.maxPerimeter)
233395
233592
  rejected = true;
233396
233593
  else if (options.upVector !== undefined && _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.sumTriangleAreasPerpendicularToUpVector(points, options.upVector) <= 0.0)
233397
233594
  rejected = true;
233398
- if (!rejected && _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_22__.SpacePolygonTriangulation.triangulateSimplestSpaceLoop(points, (_loop, triangles) => {
233595
+ if (!rejected && _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_23__.SpacePolygonTriangulation.triangulateSimplestSpaceLoop(points, (_loop, triangles) => {
233399
233596
  for (const t of triangles)
233400
233597
  builder.addPolygon(t);
233401
233598
  })) {
@@ -233421,7 +233618,7 @@ class PolyfaceQuery {
233421
233618
  }
233422
233619
  polyface.setNumWrap(0);
233423
233620
  const polyfaces = [];
233424
- const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
233621
+ const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
233425
233622
  options.needNormals = polyface.normal !== undefined;
233426
233623
  options.needParams = polyface.param !== undefined;
233427
233624
  options.needColors = polyface.color !== undefined;
@@ -233444,7 +233641,7 @@ class PolyfaceQuery {
233444
233641
  return this.cloneFiltered(source.createVisitor(0), filter);
233445
233642
  }
233446
233643
  source.setNumWrap(0);
233447
- const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
233644
+ const options = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
233448
233645
  options.needNormals = source.normal !== undefined;
233449
233646
  options.needParams = source.param !== undefined;
233450
233647
  options.needColors = source.color !== undefined;
@@ -233582,7 +233779,7 @@ class PolyfaceQuery {
233582
233779
  true, true, true); // accept all outputs
233583
233780
  let chainContext;
233584
233781
  if (options.assembleChains)
233585
- chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__.ChainMergeContext.create();
233782
+ chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
233586
233783
  const context = _multiclip_SweepLineStringToFacetContext__WEBPACK_IMPORTED_MODULE_12__.ClipSweptLineStringContext.create(linestringPoints, options.vectorToEye);
233587
233784
  if (context) {
233588
233785
  const visitor = polyface.createVisitor(0);
@@ -233634,7 +233831,7 @@ class PolyfaceQuery {
233634
233831
  * * Facets are ASSUMED to be convex and planar, and not overlap in the z direction.
233635
233832
  */
233636
233833
  static async asyncSweepLinestringToFacetsXYReturnChains(linestringPoints, polyface) {
233637
- const chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_24__.ChainMergeContext.create();
233834
+ const chainContext = _topology_ChainMerge__WEBPACK_IMPORTED_MODULE_25__.ChainMergeContext.create();
233638
233835
  await Promise.resolve(this.asyncAnnounceSweepLinestringToConvexPolyfaceXY(linestringPoints, polyface, (_linestring, _segmentIndex, _polyface, _facetIndex, points, indexA, indexB) => {
233639
233836
  chainContext.addSegment(points[indexA], points[indexB]);
233640
233837
  }));
@@ -233650,7 +233847,7 @@ class PolyfaceQuery {
233650
233847
  if (polyface instanceof _Polyface__WEBPACK_IMPORTED_MODULE_6__.Polyface) {
233651
233848
  return this.collectRangeLengthData(polyface.createVisitor(0));
233652
233849
  }
233653
- const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_25__.RangeLengthData();
233850
+ const rangeData = new _RangeLengthData__WEBPACK_IMPORTED_MODULE_26__.RangeLengthData();
233654
233851
  // polyface is a visitor ...
233655
233852
  for (polyface.reset(); polyface.moveToNextFacet();)
233656
233853
  rangeData.accumulateGrowableXYZArrayRange(polyface.point);
@@ -233662,9 +233859,9 @@ class PolyfaceQuery {
233662
233859
  static cloneWithTVertexFixup(polyface) {
233663
233860
  const oldFacetVisitor = polyface.createVisitor(1); // This is to visit the existing facets.
233664
233861
  const newFacetVisitor = polyface.createVisitor(0); // This is to build the new facets.
233665
- const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_26__.XYPointBuckets.create(polyface.data.point, 30);
233862
+ const rangeSearcher = _multiclip_XYPointBuckets__WEBPACK_IMPORTED_MODULE_27__.XYPointBuckets.create(polyface.data.point, 30);
233666
233863
  const builder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create();
233667
- const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_27__.Range3d.createNull();
233864
+ const edgeRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d.createNull();
233668
233865
  const point0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
233669
233866
  const point1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
233670
233867
  const spacePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
@@ -233772,7 +233969,7 @@ class PolyfaceQuery {
233772
233969
  }
233773
233970
  facetIndexAndVertexIndices.push(entry);
233774
233971
  }
233775
- facetIndexAndVertexIndices.sort(this.compareFacetIndexAndVertexIndices);
233972
+ facetIndexAndVertexIndices.sort((arrayA, arrayB) => this.compareFacetIndexAndVertexIndices(arrayA, arrayB));
233776
233973
  let i0, i1;
233777
233974
  const n = facetIndexAndVertexIndices.length;
233778
233975
  const clusterArray = [];
@@ -234029,7 +234226,7 @@ class PolyfaceQuery {
234029
234226
  * @internal
234030
234227
  */
234031
234228
  static convertToHalfEdgeGraph(mesh) {
234032
- const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_28__.HalfEdgeGraphFromIndexedLoopsContext();
234229
+ const builder = new _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_29__.HalfEdgeGraphFromIndexedLoopsContext();
234033
234230
  const visitor = mesh.createVisitor(0);
234034
234231
  for (visitor.reset(); visitor.moveToNextFacet();) {
234035
234232
  builder.insertLoop(visitor.pointIndex);
@@ -234050,14 +234247,14 @@ class PolyfaceQuery {
234050
234247
  * @param mesh
234051
234248
  */
234052
234249
  static reorientVertexOrderAroundFacetsForConsistentOrientation(mesh) {
234053
- return _FacetOrientation__WEBPACK_IMPORTED_MODULE_29__.FacetOrientationFixup.doFixup(mesh);
234250
+ return _FacetOrientation__WEBPACK_IMPORTED_MODULE_30__.FacetOrientationFixup.doFixup(mesh);
234054
234251
  }
234055
234252
  /**
234056
234253
  * Set up indexed normals with one normal in the plane of each facet of the mesh.
234057
234254
  * @param polyface
234058
234255
  */
234059
234256
  static buildPerFaceNormals(polyface) {
234060
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
234257
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildPerFaceNormals(polyface);
234061
234258
  }
234062
234259
  /**
234063
234260
  * * At each vertex of the mesh
@@ -234070,7 +234267,7 @@ class PolyfaceQuery {
234070
234267
  * @param toleranceAngle averaging is done between normals up to this angle.
234071
234268
  */
234072
234269
  static buildAverageNormals(polyface, toleranceAngle = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(31.0)) {
234073
- _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_30__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
234270
+ _multiclip_BuildAverageNormalsContext__WEBPACK_IMPORTED_MODULE_31__.BuildAverageNormalsContext.buildFastAverageNormals(polyface, toleranceAngle);
234074
234271
  }
234075
234272
  /**
234076
234273
  * Offset the faces of the mesh.
@@ -234080,9 +234277,9 @@ class PolyfaceQuery {
234080
234277
  * @returns shifted mesh.
234081
234278
  */
234082
234279
  static cloneOffset(source, signedOffsetDistance, offsetOptions = OffsetMeshOptions.create()) {
234083
- const strokeOptions = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_23__.StrokeOptions.createForFacets();
234280
+ const strokeOptions = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_24__.StrokeOptions.createForFacets();
234084
234281
  const offsetBuilder = _PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_16__.PolyfaceBuilder.create(strokeOptions);
234085
- _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_31__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
234282
+ _multiclip_OffsetMeshContext__WEBPACK_IMPORTED_MODULE_32__.OffsetMeshContext.buildOffsetMeshWithEdgeChamfers(source, offsetBuilder, signedOffsetDistance, offsetOptions);
234086
234283
  return offsetBuilder.claimPolyface();
234087
234284
  }
234088
234285
  /** Search facets for the first one that intersects the infinite line.
@@ -234106,17 +234303,17 @@ class PolyfaceQuery {
234106
234303
  const numEdges = visitor.pointCount; // #vertices = #edges since numWrap is zero
234107
234304
  const vertices = visitor.point;
234108
234305
  if (3 === numEdges) {
234109
- const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_32__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
234306
+ const tri = this._workTriangle = _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_33__.BarycentricTriangle.create(vertices.getPoint3dAtUncheckedPointIndex(0), vertices.getPoint3dAtUncheckedPointIndex(1), vertices.getPoint3dAtUncheckedPointIndex(2), this._workTriangle);
234110
234307
  const detail3 = this._workTriDetail = tri.intersectRay3d(ray, this._workTriDetail);
234111
234308
  tri.snapLocationToEdge(detail3, options?.distanceTolerance, options?.parameterTolerance);
234112
- detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
234309
+ detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
234113
234310
  }
234114
234311
  else {
234115
234312
  const detailN = this._workPolyDetail = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.intersectRay3d(vertices, ray, options?.distanceTolerance, this._workPolyDetail);
234116
234313
  if (_geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__.PolygonOps.isConvex(vertices))
234117
- detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
234314
+ detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
234118
234315
  else
234119
- detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_33__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
234316
+ detail = this._workFacetDetailNC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_34__.NonConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailNC);
234120
234317
  }
234121
234318
  if (detail.isInsideOrOn) { // set optional caches, process the intersection
234122
234319
  if (options?.needNormal && visitor.normal)
@@ -234353,7 +234550,7 @@ class TaggedNumericData {
234353
234550
  if (this.tagB !== other.tagB)
234354
234551
  return false;
234355
234552
  return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.exactEqualNumberArrays(this.intData, other.intData)
234356
- && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.almostEqualArrays(this.doubleData, other.doubleData, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber);
234553
+ && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.almostEqualArrays(this.doubleData, other.doubleData, (a, b) => _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(a, b));
234357
234554
  }
234358
234555
  static areAlmostEqual(dataA, dataB) {
234359
234556
  if (dataA === undefined && dataB === undefined)
@@ -234613,7 +234810,7 @@ class BuildAverageNormalsContext {
234613
234810
  }
234614
234811
  }
234615
234812
  // Sort by the vertex index so all the sectors around each vertex are clustered . .
234616
- sectors.sort(SectorData.cbVertexSort);
234813
+ sectors.sort((left, right) => SectorData.cbVertexSort(left, right));
234617
234814
  // Walk the sectors around each vertex . ..
234618
234815
  // For each unassigned sector
234619
234816
  // walk to further sectors of the same vertex with near-parallel normals, accumulating average normal.
@@ -234646,7 +234843,7 @@ class BuildAverageNormalsContext {
234646
234843
  }
234647
234844
  }
234648
234845
  // Resort by original sector index.
234649
- sectors.sort(SectorData.cbSectorSort);
234846
+ sectors.sort((left, right) => SectorData.cbSectorSort(left, right));
234650
234847
  // normalize the sums and emplace in the facets . . .
234651
234848
  polyface.data.normalIndex = [];
234652
234849
  polyface.data.normal = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArray(sectors.length);
@@ -246375,9 +246572,7 @@ var IModelJson;
246375
246572
  return _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_10__.CoordinateXYZ.create(point);
246376
246573
  return undefined;
246377
246574
  }
246378
- /** Parse TransitionSpiral content (right side) to TransitionSpiral3d
246379
- * @alpha
246380
- */
246575
+ /** Parse TransitionSpiral content (right side) to TransitionSpiral3d. */
246381
246576
  static parseTransitionSpiral(data) {
246382
246577
  const axes = Reader.parseOrientation(data, true);
246383
246578
  const origin = Reader.parsePoint3dProperty(data, "origin");
@@ -247015,10 +247210,7 @@ var IModelJson;
247015
247210
  }
247016
247211
  data.xyVectors = [vectorU.toJSON(), vectorV.toJSON()];
247017
247212
  }
247018
- /**
247019
- * parse properties of a TransitionSpiral.
247020
- * @alpha
247021
- */
247213
+ /** Parse properties of a TransitionSpiral. */
247022
247214
  handleTransitionSpiral(data) {
247023
247215
  // TODO: HANDLE NONRIGID TRANSFORM !!
247024
247216
  // the spiral may have indication of how it was defined. If so, use defined/undefined state of the original data
@@ -249908,7 +250100,7 @@ class ChainMergeContext {
249908
250100
  p.sortData = this.primarySortKey(p);
249909
250101
  }
249910
250102
  const sortArray = this._graph.allHalfEdges.slice();
249911
- sortArray.sort(ChainMergeContext.nodeCompareSortData);
250103
+ sortArray.sort((nodeA, nodeB) => ChainMergeContext.nodeCompareSortData(nodeA, nodeB));
249912
250104
  const xyzTolerance = this._options.tolerance;
249913
250105
  // A node is unvisited if it is its own vertex successor !!!
249914
250106
  // otherwise the node has already been twisted into a base vertex.
@@ -251650,7 +251842,7 @@ class HalfEdgeGraphSearch {
251650
251842
  * @param collectAllNodes flag to pass to the SignedDataSummary constructor to control collection of nodes.
251651
251843
  * @param areaFunction function to all to obtain area (or other numeric value)
251652
251844
  */
251653
- static collectFaceAreaSummary(source, collectAllNodes = false, areaFunction = HalfEdgeGraphSearch.signedFaceArea) {
251845
+ static collectFaceAreaSummary(source, collectAllNodes = false, areaFunction = (node) => HalfEdgeGraphSearch.signedFaceArea(node)) {
251654
251846
  const result = new _SignedDataSummary__WEBPACK_IMPORTED_MODULE_0__.SignedDataSummary(collectAllNodes);
251655
251847
  let allFaces;
251656
251848
  if (source instanceof _Graph__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraph)
@@ -252903,7 +253095,7 @@ __webpack_require__.r(__webpack_exports__);
252903
253095
  * @internal
252904
253096
  */
252905
253097
  class HalfEdgePriorityQueueWithPartnerArray {
252906
- constructor(compare = _Merging__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraphOps.compareNodesYXUp) {
253098
+ constructor(compare = (a, b) => _Merging__WEBPACK_IMPORTED_MODULE_1__.HalfEdgeGraphOps.compareNodesYXUp(a, b)) {
252907
253099
  this.priorityQueue = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.PriorityQueue(compare);
252908
253100
  this.activeEdges = [];
252909
253101
  }
@@ -254132,7 +254324,7 @@ class RegularizationContext {
254132
254324
  }
254133
254325
  downwardConnectionFromBottomPeak(node) {
254134
254326
  let connectTo;
254135
- const upFunction = _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp;
254327
+ const upFunction = (a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b);
254136
254328
  const upEdgeBase = this.findTopVisibleEdge(node, this.upEdges, 1.0);
254137
254329
  const downEdgeBase = this.findTopVisibleEdge(node, this.downEdges, -1.0);
254138
254330
  connectTo = this.updateMaxNode(connectTo, upEdgeBase, upFunction);
@@ -254185,7 +254377,7 @@ class RegularizationContext {
254185
254377
  */
254186
254378
  runRegularization(upSweep = true, downSweep = true) {
254187
254379
  if (upSweep) {
254188
- this.bottomPeaks.sort(_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp);
254380
+ this.bottomPeaks.sort((a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b));
254189
254381
  for (const bottomPeak of this.bottomPeaks) {
254190
254382
  // GeometryCoreTestIO.consoleLog("SEARCH", bottomPeak.id, [bottomPeak.x, bottomPeak.y]);
254191
254383
  if (!_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.isDownPeak(bottomPeak))
@@ -254202,7 +254394,7 @@ class RegularizationContext {
254202
254394
  this.negateXY();
254203
254395
  // swap the various p and down seeds ....
254204
254396
  this.swapArrays();
254205
- this.bottomPeaks.sort(_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp);
254397
+ this.bottomPeaks.sort((a, b) => _Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.compareNodesYXUp(a, b));
254206
254398
  for (const bottomPeak of this.bottomPeaks) {
254207
254399
  if (!_Merging__WEBPACK_IMPORTED_MODULE_0__.HalfEdgeGraphOps.isDownPeak(bottomPeak))
254208
254400
  continue;
@@ -255145,7 +255337,7 @@ class Triangulator {
255145
255337
  *
255146
255338
  */
255147
255339
  static spliceLeftMostNodesOfHoles(graph, outerNode, leftMostHoleLoopNode) {
255148
- leftMostHoleLoopNode.sort(Triangulator.compareX);
255340
+ leftMostHoleLoopNode.sort((a, b) => Triangulator.compareX(a, b));
255149
255341
  let numFail = 0;
255150
255342
  // process holes from left to right
255151
255343
  for (const holeStart of leftMostHoleLoopNode) {
@@ -277079,8 +277271,7 @@ const isStageLauncher = (item) => {
277079
277271
  class BackstageItemUtilities {
277080
277272
  }
277081
277273
  /** Creates a stage launcher backstage item */
277082
- BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemPriority, label, subtitle, icon, overrides // eslint-disable-line deprecation/deprecation
277083
- ) => ({
277274
+ BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemPriority, label, subtitle, icon, overrides) => ({
277084
277275
  groupPriority,
277085
277276
  icon,
277086
277277
  internalData: overrides?.internalData,
@@ -277092,8 +277283,7 @@ BackstageItemUtilities.createStageLauncher = (frontstageId, groupPriority, itemP
277092
277283
  ...overrides,
277093
277284
  });
277094
277285
  /** Creates an action backstage item */
277095
- BackstageItemUtilities.createActionItem = (itemId, groupPriority, itemPriority, execute, label, subtitle, icon, overrides // eslint-disable-line deprecation/deprecation
277096
- ) => ({
277286
+ BackstageItemUtilities.createActionItem = (itemId, groupPriority, itemPriority, execute, label, subtitle, icon, overrides) => ({
277097
277287
  execute,
277098
277288
  groupPriority,
277099
277289
  icon,
@@ -286523,7 +286713,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
286523
286713
  /***/ ((module) => {
286524
286714
 
286525
286715
  "use strict";
286526
- 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"}}]}}');
286716
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.69","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.1.0-dev.69","@itwin/core-bentley":"workspace:^4.1.0-dev.69","@itwin/core-common":"workspace:^4.1.0-dev.69","@itwin/core-geometry":"workspace:^4.1.0-dev.69","@itwin/core-orbitgt":"workspace:^4.1.0-dev.69","@itwin/core-quantity":"workspace:^4.1.0-dev.69"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.0.0","@itwin/object-storage-core":"^2.0.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
286527
286717
 
286528
286718
  /***/ })
286529
286719