@itwin/ecschema-rpcinterface-tests 4.3.0-dev.4 → 4.3.0-dev.6

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.
@@ -147143,7 +147143,8 @@ var TileGraphicType;
147143
147143
  */
147144
147144
  class TileTreeReference /* implements RenderMemory.Consumer */ {
147145
147145
  /** Force a new tree owner / tile tree to be created for the current tile tree reference
147146
- /* @internal */
147146
+ * @internal
147147
+ */
147147
147148
  resetTreeOwner() { }
147148
147149
  /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.
147149
147150
  * Override this and call super if you have such auxiliary trees.
@@ -148269,7 +148270,10 @@ __webpack_require__.r(__webpack_exports__);
148269
148270
  /** @packageDocumentation
148270
148271
  * @module Tiles
148271
148272
  */
148272
- /** @internal */
148273
+ /**
148274
+ * Class representing an ArcGIS error code.
148275
+ * @internal
148276
+ */
148273
148277
  var ArcGisErrorCode;
148274
148278
  (function (ArcGisErrorCode) {
148275
148279
  ArcGisErrorCode[ArcGisErrorCode["InvalidCredentials"] = 401] = "InvalidCredentials";
@@ -148278,7 +148282,10 @@ var ArcGisErrorCode;
148278
148282
  ArcGisErrorCode[ArcGisErrorCode["UnknownError"] = 1000] = "UnknownError";
148279
148283
  ArcGisErrorCode[ArcGisErrorCode["NoTokenService"] = 1001] = "NoTokenService";
148280
148284
  })(ArcGisErrorCode || (ArcGisErrorCode = {}));
148281
- /** @internal */
148285
+ /**
148286
+ * Class containing utilities relating to ArcGIS services and coordinate systems.
148287
+ * @internal
148288
+ */
148282
148289
  class ArcGisUtilities {
148283
148290
  static getBBoxString(range) {
148284
148291
  if (!range)
@@ -148336,6 +148343,12 @@ class ArcGisUtilities {
148336
148343
  }
148337
148344
  return sources;
148338
148345
  }
148346
+ /**
148347
+ * Get map layer sources from an ArcGIS query.
148348
+ * @param range Range for the query.
148349
+ * @param url URL for the query.
148350
+ * @returns List of map layer sources.
148351
+ */
148339
148352
  static async getSourcesFromQuery(range, url = "https://usgs.maps.arcgis.com/sharing/rest/search") {
148340
148353
  const sources = new Array();
148341
148354
  for (let start = 1; start > 0;) {
@@ -148355,11 +148368,11 @@ class ArcGisUtilities {
148355
148368
  return sources;
148356
148369
  }
148357
148370
  /**
148358
- * Parse the URL to check if it represent a valid ArcGIS service
148371
+ * Parse the URL to check if it represents a valid ArcGIS service
148359
148372
  * @param url URL to validate.
148360
148373
  * @param serviceType Service type to validate (i.e FeatureServer, MapServer)
148361
148374
  * @return Validation Status.
148362
- */
148375
+ */
148363
148376
  static validateUrl(url, serviceType) {
148364
148377
  const urlObj = new URL(url.toLowerCase());
148365
148378
  if (urlObj.pathname.includes("/rest/services/")) {
@@ -148382,10 +148395,10 @@ class ArcGisUtilities {
148382
148395
  * @param capabilitiesFilter List of capabilities 'keyword' that needs to be advertised in the service's metadata
148383
148396
  * in order to be valid. For example: 'Map', 'Query', etc
148384
148397
  * @param userName Username to use for legacy token based security.
148385
- * @param password Username to use for legacy token based security.
148398
+ * @param password Password to use for legacy token based security.
148386
148399
  * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
148387
148400
  * @return Validation Status. If successful, a list of available sub-layers will also be returned.
148388
- */
148401
+ */
148389
148402
  static async validateSource(url, formatId, capabilitiesFilter, userName, password, ignoreCache) {
148390
148403
  const metadata = await this.getServiceJson(url, formatId, userName, password, ignoreCache);
148391
148404
  const json = metadata?.content;
@@ -148429,9 +148442,7 @@ class ArcGisUtilities {
148429
148442
  }
148430
148443
  return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.Valid, subLayers };
148431
148444
  }
148432
- /**
148433
- * Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible.
148434
- */
148445
+ /** Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible. */
148435
148446
  static isEpsg3857Compatible(tileInfo) {
148436
148447
  if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))
148437
148448
  return false;
@@ -148439,11 +148450,17 @@ class ArcGisUtilities {
148439
148450
  return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;
148440
148451
  }
148441
148452
  /**
148442
- * Fetch an ArcGIS service metadata, and returns its JSON representation.
148453
+ * Fetches an ArcGIS service metadata, and returns its JSON representation.
148443
148454
  * If an access client has been configured for the specified formatId,
148444
148455
  * it will be used to apply required security token.
148445
148456
  * By default, response for each URL are cached.
148446
- */
148457
+ * @param url URL of the ArcGIS service
148458
+ * @param formatId Format ID of the service
148459
+ * @param userName Username to use for legacy token based security
148460
+ * @param password Password to use for legacy token based security
148461
+ * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
148462
+ * @param requireToken Flag to indicate if a token is required
148463
+ */
148447
148464
  static async getServiceJson(url, formatId, userName, password, ignoreCache, requireToken) {
148448
148465
  if (!ignoreCache) {
148449
148466
  const cached = ArcGisUtilities._serviceCache.get(url);
@@ -148490,8 +148507,7 @@ class ArcGisUtilities {
148490
148507
  return undefined;
148491
148508
  }
148492
148509
  }
148493
- /** Read a response from ArcGIS server and check for error code in the response.
148494
- */
148510
+ /** Read a response from ArcGIS server and check for error code in the response. */
148495
148511
  static async checkForResponseErrorCode(response) {
148496
148512
  const tmpResponse = response;
148497
148513
  if (response.headers && tmpResponse.headers.get("content-type")?.toLowerCase().includes("json")) {
@@ -148532,8 +148548,7 @@ class ArcGisUtilities {
148532
148548
  * @param latitude Latitude in degrees to use to compute scales (i.e 0 for Equator)
148533
148549
  * @param tileSize Size of a tile in pixels (i.e 256)
148534
148550
  * @param screenDpi Monitor resolution in dots per inch (i.e. typically 96dpi is used by Google Maps)
148535
- *
148536
- * @returns An array containing resolution and scale values for each requested zoom level
148551
+ * @returns An array containing resolution and scale values for each requested zoom level
148537
148552
  */
148538
148553
  static computeZoomLevelsScales(startZoom = 0, endZoom = 20, latitude = 0, tileSize = 256, screenDpi = 96) {
148539
148554
  // Note: There is probably a more direct way to compute this, but I prefer to go for a simple and well documented approach.
@@ -148552,12 +148567,12 @@ class ArcGisUtilities {
148552
148567
  return results;
148553
148568
  }
148554
148569
  /**
148555
- * Match the provided minScale,maxScale values to corresponding wgs84 zoom levels
148570
+ * Match the provided minScale, maxScale values to corresponding wgs84 zoom levels
148556
148571
  * @param defaultMaxLod Value of the last LOD (i.e 22)
148557
148572
  * @param tileSize Size of a tile in pixels (i.e 256)
148558
148573
  * @param minScale Minimum scale value that needs to be matched to a LOD level
148559
148574
  * @param maxScale Maximum scale value that needs to be matched to a LOD level
148560
- * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale
148575
+ * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale
148561
148576
  */
148562
148577
  static getZoomLevelsScales(defaultMaxLod, tileSize, minScale, maxScale, tolerance = 0) {
148563
148578
  let minLod, maxLod;
@@ -149574,9 +149589,9 @@ class ArcGISMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2
149574
149589
  return undefined;
149575
149590
  }
149576
149591
  }
149577
- _generateChildIds(tile, resolveChildren) {
149578
- const childIds = this.getPotentialChildIds(tile);
149579
- if (tile.quadId.level < Math.max(1, this.minimumZoomLevel - 1)) {
149592
+ _generateChildIds(quadId, resolveChildren) {
149593
+ const childIds = this.getPotentialChildIds(quadId);
149594
+ if (quadId.level < Math.max(1, this.minimumZoomLevel - 1)) {
149580
149595
  resolveChildren(childIds);
149581
149596
  return;
149582
149597
  }
@@ -150875,14 +150890,14 @@ class WmtsMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2__
150875
150890
  getDisplayedTileMatrixSetAndLimits() {
150876
150891
  return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);
150877
150892
  }
150878
- _generateChildIds(tile, resolveChildren) {
150879
- const childIds = this.getPotentialChildIds(tile);
150893
+ _generateChildIds(quadId, resolveChildren) {
150894
+ const childIds = this.getPotentialChildIds(quadId);
150880
150895
  const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();
150881
150896
  if (!matrixSetAndLimits) {
150882
150897
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false); // Must always hava a matrix set.
150883
150898
  return;
150884
150899
  }
150885
- const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;
150900
+ const limits = matrixSetAndLimits.limits?.[quadId.level + 1]?.limits;
150886
150901
  if (!limits) {
150887
150902
  resolveChildren(childIds);
150888
150903
  return;
@@ -151262,17 +151277,24 @@ class ImageryMapLayerTreeSupplier {
151262
151277
  }
151263
151278
  const imageryTreeSupplier = new ImageryMapLayerTreeSupplier();
151264
151279
  /** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.
151265
- * @internal
151280
+ * @beta
151266
151281
  */
151267
151282
  class ImageryMapLayerTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_4__.MapLayerTileTreeReference {
151268
- constructor(layerSettings, layerIndex, iModel) {
151269
- super(layerSettings, layerIndex, iModel);
151283
+ /**
151284
+ * Constructor for an ImageryMapLayerTreeReference.
151285
+ * @param layerSettings Map layer settings that are applied to the ImageryMapLayerTreeReference.
151286
+ * @param layerIndex The index of the associated map layer. Usually passed in through [[createMapLayerTreeReference]] in [[MapTileTree]]'s constructor.
151287
+ * @param iModel The iModel containing the ImageryMapLayerTreeReference.
151288
+ */
151289
+ constructor(args) {
151290
+ super(args.layerSettings, args.layerIndex, args.iModel);
151270
151291
  }
151271
151292
  get castsShadows() { return false; }
151272
151293
  /** Return the owner of the TileTree to draw. */
151273
151294
  get treeOwner() {
151274
151295
  return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
151275
151296
  }
151297
+ /* @internal */
151276
151298
  resetTreeOwner() {
151277
151299
  return this.iModel.tiles.resetTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
151278
151300
  }
@@ -151539,32 +151561,52 @@ __webpack_require__.r(__webpack_exports__);
151539
151561
 
151540
151562
 
151541
151563
  const loggerCategory = "ArcGISFeatureProvider";
151542
- /** Class representing a map-layer format.
151564
+ /**
151565
+ * Class representing a map-layer format.
151543
151566
  * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].
151544
151567
  * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.
151545
151568
  * The MapLayerFormat object can later be used to validate a source, or create a provider.
151546
151569
  *
151547
- * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].
151570
+ * Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].
151548
151571
  * @public
151549
151572
  */
151550
151573
  class MapLayerFormat {
151551
- /** Register the current format in the [[MapLayerFormatRegistry]].
151552
- */
151574
+ /** Register the current format in the [[MapLayerFormatRegistry]]. */
151553
151575
  static register() { _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.register(this); }
151554
- /** Allow a source of a specific to be validated before being attached as a map-layer.
151555
- */
151576
+ /**
151577
+ * Allow a source of a specific format to be validated before being attached as a map-layer.
151578
+ * @param _url The URL of the source.
151579
+ * @param _userName The username to access the source if needed.
151580
+ * @param _password The password to access the source if needed.
151581
+ * @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).
151582
+ * @returns Validation Status. If successful, a list of available sub-layers may also be returned.
151583
+ */
151556
151584
  static async validateSource(_url, _userName, _password, _ignoreCache) { return { status: _internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerSourceStatus.Valid }; }
151557
- /** Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile Tree.
151558
- * @internal
151559
- */
151560
- static createImageryProvider(_settings) { (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false); }
151561
- /** @internal */
151585
+ /**
151586
+ * Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.
151587
+ * @param _settings The map layer settings to be applied to the imagery provider.
151588
+ * @returns Returns the new imagery provider.
151589
+ * @beta
151590
+ */
151591
+ static createImageryProvider(_settings) {
151592
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
151593
+ return undefined;
151594
+ }
151595
+ /**
151596
+ * Creates a MapLayerTileTreeReference for this map layer format.
151597
+ * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
151598
+ * @param _layerIndex The index of the associated map layer.
151599
+ * @param _iModel The iModel containing the MapLayerTileTreeReference.
151600
+ * @returns Returns the new tile tree reference.
151601
+ * @beta
151602
+ */
151562
151603
  static createMapLayerTree(_layerSettings, _layerIndex, _iModel) {
151563
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false);
151604
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
151564
151605
  return undefined;
151565
151606
  }
151566
151607
  }
151567
- /** A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
151608
+ /**
151609
+ * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
151568
151610
  * @public
151569
151611
  */
151570
151612
  class MapLayerFormatRegistry {
@@ -151607,7 +151649,8 @@ class MapLayerFormatRegistry {
151607
151649
  }
151608
151650
  return format.createMapLayerTree(layerSettings, layerIndex, iModel);
151609
151651
  }
151610
- /** Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.
151652
+ /**
151653
+ * Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.
151611
151654
  * @internal
151612
151655
  */
151613
151656
  createImageryProvider(layerSettings) {
@@ -151652,7 +151695,7 @@ __webpack_require__.r(__webpack_exports__);
151652
151695
  class ImageryMapLayerFormat extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerFormat {
151653
151696
  /** @internal */
151654
151697
  static createMapLayerTree(layerSettings, layerIndex, iModel) {
151655
- return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);
151698
+ return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference({ layerSettings, layerIndex, iModel });
151656
151699
  }
151657
151700
  }
151658
151701
  class WmsMapLayerFormat extends ImageryMapLayerFormat {
@@ -151884,15 +151927,23 @@ class MapLayerImageryProvider {
151884
151927
  this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme();
151885
151928
  /** @internal */
151886
151929
  this._status = MapLayerImageryProviderStatus.Valid;
151887
- // Those values are used internally for various computation, this should not get overriden.
151888
- /** @internal */
151930
+ /**
151931
+ * This value is used internally for various computations, this should not get overriden.
151932
+ * @internal
151933
+ */
151889
151934
  this.defaultMinimumZoomLevel = 0;
151890
- /** @internal */
151935
+ /**
151936
+ * This value is used internally for various computations, this should not get overriden.
151937
+ * @internal
151938
+ */
151891
151939
  this.defaultMaximumZoomLevel = 22;
151892
151940
  this._mercatorTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.WebMercatorTilingScheme();
151893
151941
  this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme(2, 1, true);
151894
151942
  }
151895
- /** @internal */
151943
+ /**
151944
+ * Initialize the provider by loading the first tile at its default maximum zoom level.
151945
+ * @beta
151946
+ */
151896
151947
  async initialize() {
151897
151948
  this.loadTile(0, 0, this.defaultMaximumZoomLevel).then((tileData) => {
151898
151949
  if (tileData !== undefined)
@@ -151900,20 +151951,31 @@ class MapLayerImageryProvider {
151900
151951
  });
151901
151952
  }
151902
151953
  get tilingScheme() { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }
151903
- /** @internal */
151954
+ /**
151955
+ * Add attribution logo cards for the data supplied by this provider to the [[Viewport]]'s logo div.
151956
+ * @param _cards Logo cards HTML element that may contain custom data attributes.
151957
+ * @param _viewport Viewport to add logo cards to.
151958
+ * @beta
151959
+ */
151904
151960
  addLogoCards(_cards, _viewport) { }
151905
151961
  /** @internal */
151906
151962
  get transparentBackgroundString() { return this._settings.transparentBackground ? "true" : "false"; }
151907
151963
  /** @internal */
151908
151964
  async _areChildrenAvailable(_tile) { return true; }
151909
151965
  /** @internal */
151910
- getPotentialChildIds(tile) {
151911
- const childLevel = tile.quadId.level + 1;
151912
- return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
151966
+ getPotentialChildIds(quadId) {
151967
+ const childLevel = quadId.level + 1;
151968
+ return quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
151913
151969
  }
151914
- /** @internal */
151915
- _generateChildIds(tile, resolveChildren) {
151916
- resolveChildren(this.getPotentialChildIds(tile));
151970
+ /**
151971
+ * Get child IDs of a quad and generate tiles based on these child IDs.
151972
+ * See [[ImageryTileTree._loadChildren]] for the definition of `resolveChildren` where this function is commonly called.
151973
+ * @param quadId quad to generate child IDs for.
151974
+ * @param resolveChildren Function that creates tiles from child IDs.
151975
+ * @beta
151976
+ */
151977
+ _generateChildIds(quadId, resolveChildren) {
151978
+ resolveChildren(this.getPotentialChildIds(quadId));
151917
151979
  }
151918
151980
  /** @internal */
151919
151981
  generateChildIds(tile, resolveChildren) {
@@ -151921,9 +151983,16 @@ class MapLayerImageryProvider {
151921
151983
  tile.setLeaf();
151922
151984
  return;
151923
151985
  }
151924
- this._generateChildIds(tile, resolveChildren);
151986
+ this._generateChildIds(tile.quadId, resolveChildren);
151925
151987
  }
151926
- /** @internal */
151988
+ /**
151989
+ * Get tooltip text for a specific quad and cartographic position.
151990
+ * @param strings List of strings to contain tooltip text.
151991
+ * @param quadId Quad ID to get tooltip for.
151992
+ * @param _carto Cartographic that may be used to retrieve and/or format tooltip text.
151993
+ * @param tree Tree associated with the quad to get the tooltip for.
151994
+ * @internal
151995
+ */
151927
151996
  async getToolTip(strings, quadId, _carto, tree) {
151928
151997
  if (doDebugToolTips) {
151929
151998
  const range = quadId.getLatLongRangeDegrees(tree.tilingScheme);
@@ -151958,7 +152027,8 @@ class MapLayerImageryProvider {
151958
152027
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Invalid tile content type");
151959
152028
  return undefined;
151960
152029
  }
151961
- /** Change the status of this provider.
152030
+ /**
152031
+ * Change the status of this provider.
151962
152032
  * Sub-classes should override 'onStatusUpdated' instead of this method.
151963
152033
  * @internal
151964
152034
  */
@@ -152041,31 +152111,49 @@ class MapLayerImageryProvider {
152041
152111
  }
152042
152112
  return true;
152043
152113
  }
152044
- /** @internal */
152045
- // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)
152114
+ /**
152115
+ * Calculates the projected x cartesian coordinate in EPSG:3857 from the longitude in EPSG:4326 (WGS84)
152116
+ * @param longitude Longitude in EPSG:4326 (WGS84)
152117
+ * @internal
152118
+ */
152046
152119
  getEPSG3857X(longitude) {
152047
152120
  return longitude * 20037508.34 / 180.0;
152048
152121
  }
152049
- /** @internal */
152050
- // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)
152122
+ /**
152123
+ * Calculates the projected y cartesian coordinate in EPSG:3857 from the latitude in EPSG:4326 (WGS84)
152124
+ * @param latitude Latitude in EPSG:4326 (WGS84)
152125
+ * @internal
152126
+ */
152051
152127
  getEPSG3857Y(latitude) {
152052
152128
  const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);
152053
152129
  return y * 20037508.34 / 180.0;
152054
152130
  }
152055
- /** @internal */
152056
- // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
152131
+ /**
152132
+ * Calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
152133
+ * @param x3857 Projected x cartesian coordinate in EPSG:3857
152134
+ * @internal
152135
+ */
152057
152136
  getEPSG4326Lon(x3857) {
152058
152137
  return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(x3857 / earthRadius);
152059
152138
  }
152060
- /** @internal */
152061
- // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
152139
+ /**
152140
+ * Calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
152141
+ * @param y3857 Projected y cartesian coordinate in EPSG:3857
152142
+ * @internal
152143
+ */
152062
152144
  getEPSG4326Lat(y3857) {
152063
152145
  const y = 2 * Math.atan(Math.exp(y3857 / earthRadius)) - (Math.PI / 2);
152064
152146
  return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(y);
152065
152147
  }
152066
- /** @internal */
152067
- // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.
152068
- // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
152148
+ /**
152149
+ * Get the bounding box/extents of a tile in EPSG:4326 (WGS84) format.
152150
+ * Map tile providers like Bing and Mapbox allow the URL to be constructed directly from the zoom level and tile coordinates.
152151
+ * However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
152152
+ * @param row Row of the tile
152153
+ * @param column Column of the tile
152154
+ * @param zoomLevel Desired zoom level of the tile
152155
+ * @internal
152156
+ */
152069
152157
  getEPSG4326Extent(row, column, zoomLevel) {
152070
152158
  // Shift left (this.tileSize << zoomLevel) overflow when using 512 pixels tile at higher resolution,
152071
152159
  // so use Math.pow instead (I assume the performance lost to be minimal)
@@ -152080,7 +152168,13 @@ class MapLayerImageryProvider {
152080
152168
  const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;
152081
152169
  return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };
152082
152170
  }
152083
- /** @internal */
152171
+ /**
152172
+ * Get the bounding box/extents of a tile in EPSG:3857 format.
152173
+ * @param row Row of the tile
152174
+ * @param column Column of the tile
152175
+ * @param zoomLevel Desired zoom level of the tile
152176
+ * @internal
152177
+ */
152084
152178
  getEPSG3857Extent(row, column, zoomLevel) {
152085
152179
  const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);
152086
152180
  const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);
@@ -152357,24 +152451,45 @@ __webpack_require__.r(__webpack_exports__);
152357
152451
 
152358
152452
 
152359
152453
 
152360
- /** @internal */
152454
+ /**
152455
+ * A [[TileTreeReference]] to be used specifically for [[MapTileTree]]s.
152456
+ * The reference refers to its MapTileTree by way of the tree's [[TileTreeOwner]].
152457
+ * Multiple MapLayerTileTreeReferences can refer to the same TileTree if the map layer settings are equivalent, meaning
152458
+ * they have identical format IDs, URLs, credentials, etc.
152459
+ * @beta
152460
+ */
152361
152461
  class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.TileTreeReference {
152462
+ /**
152463
+ * Constructor for a MapLayerTileTreeReference.
152464
+ * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
152465
+ * @param _layerIndex The index of the associated map layer.
152466
+ * @param iModel The iModel containing the MapLayerTileTreeReference.
152467
+ * @internal
152468
+ */
152362
152469
  constructor(_layerSettings, _layerIndex, iModel) {
152363
152470
  super();
152364
152471
  this._layerSettings = _layerSettings;
152365
152472
  this._layerIndex = _layerIndex;
152366
152473
  this.iModel = iModel;
152367
152474
  }
152475
+ /* @internal */
152368
152476
  get _transparency() { return this._layerSettings.transparency ? this._layerSettings.transparency : undefined; }
152477
+ /** Returns true if the associated map layer, including its sublayers, is opaque. */
152369
152478
  get isOpaque() {
152370
152479
  return this._layerSettings.visible && (!this._layerSettings.allSubLayersInvisible) && !this._layerSettings.transparentBackground && 0 === this._layerSettings.transparency;
152371
152480
  }
152481
+ /* Returns the map layer name. */
152372
152482
  get layerName() { return this._layerSettings.name; }
152483
+ /** Returns the imagery provider for the tile tree. */
152373
152484
  get imageryProvider() { return undefined; }
152374
152485
  set layerSettings(layerSettings) { this._layerSettings = layerSettings; }
152486
+ /** Returns the layer settings for the map layer. */
152375
152487
  get layerSettings() { return this._layerSettings; }
152488
+ /** Returns the index of the map layer associated with the tile tree. */
152376
152489
  get layerIndex() { return this._layerIndex; }
152490
+ /** Returns the transparency value of the map layer. */
152377
152491
  get transparency() { return this._transparency; }
152492
+ /* Returns a tooltip describing the hit with the map layer name. */
152378
152493
  async getToolTip(hit) {
152379
152494
  const tree = this.treeOwner.tileTree;
152380
152495
  if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.sourceId)
@@ -152386,7 +152501,14 @@ class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.T
152386
152501
  return div;
152387
152502
  }
152388
152503
  }
152389
- /** @internal */
152504
+ /**
152505
+ * Creates a MapLayerTileTreeReference.
152506
+ * @param layerSettings Model or image map layer settings that are applied to the MapLayerTileTreeReference.
152507
+ * @param layerIndex The index of the associated map layer.
152508
+ * @param iModel The iModel containing the new MapLayerTileTreeReference.
152509
+ * @returns Returns the new tile tree reference, either a ModelMapLayerTileTreeReference or an ImageryMapLayerTreeReference.
152510
+ * @internal
152511
+ */
152390
152512
  function createMapLayerTreeReference(layerSettings, layerIndex, iModel) {
152391
152513
  if (layerSettings instanceof _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ModelMapLayerSettings) {
152392
152514
  return (0,_internal__WEBPACK_IMPORTED_MODULE_3__.createModelMapLayerTileTreeReference)(layerSettings, layerIndex, iModel);
@@ -183389,11 +183511,28 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
183389
183511
  curveLengthBetweenFractions(fraction0, fraction1) {
183390
183512
  return Math.abs(fraction1 - fraction0) * this._totalLength;
183391
183513
  }
183514
+ /** Flatten CurveChainWithDistanceIndex children in the input chain.
183515
+ * @return cloned flattened CurveChain, or reference to the input chain if no nesting
183516
+ */
183517
+ static flattenNestedChains(chain) {
183518
+ if (-1 === chain.children.findIndex((child) => { return child instanceof CurveChainWithDistanceIndex; }))
183519
+ return chain;
183520
+ const flatChain = chain.clone();
183521
+ const flatChildren = flatChain.children.flatMap((child) => {
183522
+ if (child instanceof CurveChainWithDistanceIndex)
183523
+ return child.path.children;
183524
+ else
183525
+ return [child];
183526
+ });
183527
+ flatChain.children.splice(0, Infinity, ...flatChildren);
183528
+ return flatChain;
183529
+ }
183392
183530
  /**
183393
183531
  * Capture (not clone) a path into a new `CurveChainWithDistanceIndex`
183394
183532
  * @param path primitive array to be CAPTURED (not cloned)
183395
183533
  */
183396
183534
  static createCapture(path, options) {
183535
+ path = this.flattenNestedChains(path); // nested chains not allowed
183397
183536
  const fragments = DistanceIndexConstructionContext.createPathFragmentIndex(path, options);
183398
183537
  const result = new CurveChainWithDistanceIndex(path, fragments);
183399
183538
  return result;
@@ -183729,6 +183868,36 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
183729
183868
  }
183730
183869
  return undefined;
183731
183870
  }
183871
+ /**
183872
+ * Given a parent chain, convert the corresponding child details in the specified pairs.
183873
+ * * Converted details refer to the chain's global parameterization instead of the child's.
183874
+ * * It is assumed that for all i >= index0, `pairs[i].detailA.curve` is a child of chainA (similarly for chainB).
183875
+ * @param pairs array to mutate
183876
+ * @param index0 convert details of pairs in the tail of the array, starting at index0
183877
+ * @param chainA convert each specified detailA to the global parameterization of chainA
183878
+ * @param chainB convert each specified detailB to the global parameterization of chainB
183879
+ * @param compressAdjacent whether to remove adjacent duplicate pairs after conversion
183880
+ * @return the converted array
183881
+ * @internal
183882
+ */
183883
+ static convertChildDetailToChainDetail(pairs, index0, chainA, chainB, compressAdjacent) {
183884
+ for (let i = index0; i < pairs.length; ++i) {
183885
+ const childDetailPair = pairs[i];
183886
+ if (chainA) {
183887
+ const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
183888
+ if (chainDetail)
183889
+ childDetailPair.detailA = chainDetail;
183890
+ }
183891
+ if (chainB) {
183892
+ const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
183893
+ if (chainDetail)
183894
+ childDetailPair.detailB = chainDetail;
183895
+ }
183896
+ }
183897
+ if (compressAdjacent)
183898
+ pairs = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveLocationDetailPair.removeAdjacentDuplicates(pairs, index0);
183899
+ return pairs;
183900
+ }
183732
183901
  }
183733
183902
  CurveChainWithDistanceIndex._numCalls = 0;
183734
183903
  CurveChainWithDistanceIndex._numTested = 0;
@@ -183787,15 +183956,13 @@ __webpack_require__.r(__webpack_exports__);
183787
183956
 
183788
183957
  /**
183789
183958
  * A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures:
183790
- * - `CurveChain` is a (non-instantiable) intermediate class for a sequence of `CurvePrimitive` joining head-to-tail.
183791
- * The two instantiable forms of `CurveChain` are
183792
- * - `Path` - A chain not required to close and not enclosing a planar area (so curves do not have to be on the
183793
- * same plane).
183794
- * - `Loop` - A chain required to close from last to first so that a planar area is enclosed (so curves have to
183795
- * be on the same plane).
183796
- * - `ParityRegion` -- a collection of coplanar `Loop`, with "in/out" classification by parity rules.
183797
- * - `UnionRegion` -- a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
183798
- * - `BagOfCurves` -- a collection of `AnyCurve` with no implied structure.
183959
+ * - [[CurveChain]] - a non-instantiable intermediate class for a sequence of [[CurvePrimitive]] joining head-to-tail.
183960
+ * The two instantiable forms of `CurveChain` are:
183961
+ * - [[Path]] - a chain of curves. Does not have to be closed or planar. A closed `Path` is not treated as bounding a surface.
183962
+ * - [[Loop]] - a closed and planar chain of curves. A `Loop` is treated as bounding a planar area.
183963
+ * - [[ParityRegion]] - a collection of coplanar `Loop`, with "in/out" classification by parity rules.
183964
+ * - [[UnionRegion]] - a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
183965
+ * - [[BagOfCurves]] - a collection of [[AnyCurve]] with no implied structure.
183799
183966
  *
183800
183967
  * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
183801
183968
  * @public
@@ -183805,7 +183972,6 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
183805
183972
  super(...arguments);
183806
183973
  /** String name for schema properties */
183807
183974
  this.geometryCategory = "curveCollection";
183808
- /* eslint-disable @typescript-eslint/naming-convention, no-empty */
183809
183975
  /** Flag for inner loop status. Only used by `Loop`. */
183810
183976
  this.isInner = false;
183811
183977
  }
@@ -184182,11 +184348,9 @@ __webpack_require__.r(__webpack_exports__);
184182
184348
  /* harmony export */ CurveCurve: () => (/* binding */ CurveCurve)
184183
184349
  /* harmony export */ });
184184
184350
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
184185
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
184186
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
184187
- /* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
184351
+ /* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
184188
184352
  /* harmony import */ var _internalContexts_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js");
184189
- /* harmony import */ var _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js");
184353
+ /* harmony import */ var _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js");
184190
184354
  /*---------------------------------------------------------------------------------------------
184191
184355
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
184192
184356
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -184198,8 +184362,6 @@ __webpack_require__.r(__webpack_exports__);
184198
184362
 
184199
184363
 
184200
184364
 
184201
-
184202
-
184203
184365
  /**
184204
184366
  * `CurveCurve` has static method for various computations that work on a pair of curves or curve collections.
184205
184367
  * @public
@@ -184214,22 +184376,11 @@ class CurveCurve {
184214
184376
  * @param tolerance optional distance tolerance for coincidence
184215
184377
  */
184216
184378
  static intersectionXYPairs(curveA, extendA, curveB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
184217
- const handler = new _internalContexts_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_1__.CurveCurveIntersectXY(undefined, extendA, curveB, extendB, tolerance);
184218
- if (curveB instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive) {
184219
- curveA.dispatchToGeometryHandler(handler);
184220
- }
184221
- else if (curveB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.CurveCollection) {
184222
- const allCurves = curveB.collectCurvePrimitives();
184223
- for (const child of allCurves) {
184224
- handler.resetGeometry(false, child, false);
184225
- curveA.dispatchToGeometryHandler(handler);
184226
- }
184227
- }
184228
- return handler.grabPairedResults();
184379
+ return CurveCurve.intersectionProjectedXYPairs(undefined, curveA, extendA, curveB, extendB, tolerance);
184229
184380
  }
184230
184381
  /**
184231
184382
  * Return xy intersections of 2 projected curves.
184232
- * @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections.
184383
+ * @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections
184233
184384
  * @param curveA first curve
184234
184385
  * @param extendA true to allow curveA to extend
184235
184386
  * @param curveB second curve
@@ -184253,7 +184404,7 @@ class CurveCurve {
184253
184404
  * @returns array of intersections structured as CurveLocationDetailPair[]
184254
184405
  */
184255
184406
  static intersectionXYZPairs(curveA, extendA, curveB, extendB) {
184256
- const handler = new _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_4__.CurveCurveIntersectXYZ(extendA, curveB, extendB);
184407
+ const handler = new _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__.CurveCurveIntersectXYZ(extendA, curveB, extendB);
184257
184408
  curveA.dispatchToGeometryHandler(handler);
184258
184409
  return handler.grabPairedResults();
184259
184410
  }
@@ -184267,7 +184418,7 @@ class CurveCurve {
184267
184418
  for (let i = 0; i < primitives.length; i++) {
184268
184419
  const curveA = primitives[i];
184269
184420
  for (let j = i + 1; j < primitives.length; j++) {
184270
- handler.resetGeometry(false, primitives[j], false);
184421
+ handler.resetGeometry(primitives[j]);
184271
184422
  curveA.dispatchToGeometryHandler(handler);
184272
184423
  }
184273
184424
  }
@@ -184287,7 +184438,7 @@ class CurveCurve {
184287
184438
  * Close approaches further than this xy-distance are not returned.
184288
184439
  */
184289
184440
  static closeApproachProjectedXYPairs(curveA, curveB, maxDistance) {
184290
- const handler = new _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_5__.CurveCurveCloseApproachXY(curveB);
184441
+ const handler = new _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__.CurveCurveCloseApproachXY(curveB);
184291
184442
  handler.maxDistanceToAccept = maxDistance;
184292
184443
  curveA.dispatchToGeometryHandler(handler);
184293
184444
  return handler.grabPairedResults();
@@ -185421,6 +185572,10 @@ class CurveLocationDetail {
185421
185572
  }
185422
185573
  return detailB;
185423
185574
  }
185575
+ /** Compare only the curve and fraction of this detail with `other`. */
185576
+ isSameCurveAndFraction(other) {
185577
+ return this.curve === other.curve && _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(this.fraction, other.fraction);
185578
+ }
185424
185579
  }
185425
185580
  /**
185426
185581
  * Enumeration of configurations for intersections and min/max distance-between-curve
@@ -185483,6 +185638,30 @@ class CurveLocationDetailPair {
185483
185638
  this.detailA = this.detailB;
185484
185639
  this.detailB = q;
185485
185640
  }
185641
+ /**
185642
+ * Mutate the input array by removing the second of two adjacent duplicate pairs.
185643
+ * * Ignores details representing coincident intervals (e.g., for which `fraction1` is defined).
185644
+ * * Comparison is performed by [[CurveLocationDetail.isSameCurveAndFraction]].
185645
+ * * No sorting is performed.
185646
+ * @param pairs array to de-duplicate in place
185647
+ * @param index0 look for duplicates in the tail of the array starting at index0
185648
+ * @return reference to input array
185649
+ * @internal
185650
+ */
185651
+ static removeAdjacentDuplicates(pairs, index0 = 0) {
185652
+ return pairs.flatMap((pair, i, arr) => {
185653
+ if (i >= index0 && i > 0) {
185654
+ if (!pair.detailA.hasFraction1 && !pair.detailB.hasFraction1) {
185655
+ if (pair.detailA.isSameCurveAndFraction(arr[i - 1].detailA)) {
185656
+ if (pair.detailB.isSameCurveAndFraction(arr[i - 1].detailB)) {
185657
+ return []; // remove the i_th pair
185658
+ }
185659
+ }
185660
+ }
185661
+ }
185662
+ return [pair]; // preserve the i_th pair
185663
+ });
185664
+ }
185486
185665
  }
185487
185666
  /**
185488
185667
  * Data bundle for a pair of arrays of CurveLocationDetail structures.
@@ -186533,10 +186712,8 @@ class CurveWireMomentsXYZ {
186533
186712
  if (root instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_3__.CurvePrimitive)
186534
186713
  root.emitStrokableParts(this);
186535
186714
  else if (root instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_4__.CurveCollection) {
186536
- if (root.children !== undefined)
186537
- for (const child of root.children) {
186538
- this.visitLeaves(child);
186539
- }
186715
+ for (const child of root.children)
186716
+ this.visitLeaves(child);
186540
186717
  }
186541
186718
  }
186542
186719
  }
@@ -187925,10 +188102,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
187925
188102
  isInPlane(plane) {
187926
188103
  return this._points.isCloseToPlane(plane, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
187927
188104
  }
187928
- /**
187929
- * Push a hit, fixing up the prior entry if needed.
187930
- * Return the incremented counter.
187931
- */
188105
+ /** Push a hit, fixing up the prior entry if needed. */
187932
188106
  static pushVertexHit(result, counter, cp, fraction, point) {
187933
188107
  const detail = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.createCurveFractionPoint(cp, fraction, point);
187934
188108
  result.push(detail);
@@ -193748,10 +193922,6 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193748
193922
  this._results = [];
193749
193923
  return result;
193750
193924
  }
193751
- /** Returns `true` if `detail` has same curve and fraction. */
193752
- sameCurveAndFraction(cp, fraction, detail) {
193753
- return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
193754
- }
193755
193925
  /**
193756
193926
  * If distance between pointA and pointB is less than maxDistance, record CurveLocationDetailPair which is
193757
193927
  * the approach from pointA to pointB.
@@ -193802,13 +193972,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193802
193972
  const oldDetailA = this._results[numPrevious - 1].detailA;
193803
193973
  const oldDetailB = this._results[numPrevious - 1].detailB;
193804
193974
  if (reversed) {
193805
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
193806
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
193975
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
193976
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193807
193977
  return;
193808
193978
  }
193809
193979
  else {
193810
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
193811
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
193980
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
193981
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193812
193982
  return;
193813
193983
  }
193814
193984
  }
@@ -193854,13 +194024,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193854
194024
  const oldDetailA = this._results[numPrevious - 1].detailA;
193855
194025
  const oldDetailB = this._results[numPrevious - 1].detailB;
193856
194026
  if (reversed) {
193857
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
193858
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
194027
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194028
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193859
194029
  return;
193860
194030
  }
193861
194031
  else {
193862
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
193863
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
194032
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194033
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193864
194034
  return;
193865
194035
  }
193866
194036
  }
@@ -194246,38 +194416,22 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194246
194416
  }
194247
194417
  this._geometryB = geomB; // restore
194248
194418
  }
194249
- /**
194250
- * Given a parent chain, convert the corresponding child details so that they refer to the chain's global parameterization.
194251
- * * It is assumed that `this._results[i].detailA.curve` is a child of chainA, and similarly for detailB/chainB.
194252
- * @param chainA convert each detailA to the global parameterization of chainA
194253
- * @param chainB convert each detailB to the global parameterization of chainB
194254
- */
194255
- convertChildDetailToChainDetail(chainA, chainB) {
194256
- for (const childDetailPair of this._results) {
194257
- if (chainA) {
194258
- const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
194259
- if (chainDetail)
194260
- childDetailPair.detailA = chainDetail;
194261
- }
194262
- if (chainB) {
194263
- const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
194264
- if (chainDetail)
194265
- childDetailPair.detailB = chainDetail;
194266
- }
194267
- }
194268
- }
194269
194419
  /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
194270
194420
  dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
194271
194421
  if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex))
194272
194422
  return;
194423
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
194424
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
194425
+ return;
194426
+ }
194427
+ const index0 = this._results.length;
194273
194428
  const geomB = this._geometryB; // save
194274
194429
  for (const child of geomB.path.children) {
194275
194430
  this.resetGeometry(child);
194276
194431
  geomAHandler(geomA);
194277
194432
  }
194278
194433
  this.resetGeometry(geomB); // restore
194279
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!(geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex));
194280
- this.convertChildDetailToChainDetail(undefined, geomB);
194434
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
194281
194435
  }
194282
194436
  /** Double dispatch handler for strongly typed segment. */
194283
194437
  handleLineSegment3d(segmentA) {
@@ -194448,7 +194602,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194448
194602
  /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
194449
194603
  handleCurveChainWithDistanceIndex(chain) {
194450
194604
  super.handleCurveChainWithDistanceIndex(chain);
194451
- this.convertChildDetailToChainDetail(chain, this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex ? this._geometryB : undefined);
194605
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
194606
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
194452
194607
  }
194453
194608
  /** Double dispatch handler for strongly typed homogeneous bspline curve .. */
194454
194609
  handleBSplineCurve3dH(_curve) {
@@ -194490,27 +194645,36 @@ __webpack_require__.r(__webpack_exports__);
194490
194645
  /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* binding */ BezierBezierIntersectionXYRRToRRD),
194491
194646
  /* harmony export */ CurveCurveIntersectXY: () => (/* binding */ CurveCurveIntersectXY)
194492
194647
  /* harmony export */ });
194493
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
194494
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
194495
- /* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
194496
- /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
194497
- /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
194498
- /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
194499
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
194500
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
194501
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
194502
- /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
194503
- /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
194504
- /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
194505
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
194506
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
194507
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
194508
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
194509
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
194648
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
194649
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
194650
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
194651
+ /* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
194652
+ /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
194653
+ /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
194654
+ /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
194655
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
194656
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
194657
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
194658
+ /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
194659
+ /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
194660
+ /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
194661
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
194662
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
194663
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
194664
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
194665
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
194666
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
194667
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
194510
194668
  /*---------------------------------------------------------------------------------------------
194511
194669
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
194512
194670
  * See LICENSE.md in the project root for license terms and full copyright notice.
194513
194671
  *--------------------------------------------------------------------------------------------*/
194672
+ /** @packageDocumentation
194673
+ * @module Curve
194674
+ */
194675
+
194676
+
194677
+
194514
194678
 
194515
194679
 
194516
194680
 
@@ -194534,13 +194698,13 @@ __webpack_require__.r(__webpack_exports__);
194534
194698
  * * The inputs are assumed pre-transformed so that the target condition is to match x and y coordinates.
194535
194699
  * @internal
194536
194700
  */
194537
- class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__.NewtonEvaluatorRRtoRRD {
194701
+ class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.NewtonEvaluatorRRtoRRD {
194538
194702
  constructor(curveA, curveB) {
194539
194703
  super();
194540
194704
  this._curveA = curveA;
194541
194705
  this._curveB = curveB;
194542
- this._rayA = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__.Ray3d.createZero();
194543
- this._rayB = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__.Ray3d.createZero();
194706
+ this._rayA = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
194707
+ this._rayB = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
194544
194708
  }
194545
194709
  evaluate(fractionA, fractionB) {
194546
194710
  this._curveA.fractionToPointAndDerivative(fractionA, this._rayA);
@@ -194555,7 +194719,7 @@ class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORT
194555
194719
  * * geometryB is saved for later reference.
194556
194720
  * @internal
194557
194721
  */
194558
- class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_2__.NullGeometryHandler {
194722
+ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__.RecurseToCurvesGeometryHandler {
194559
194723
  /**
194560
194724
  * The constructor.
194561
194725
  * @param worldToLocal optional transform (possibly perspective) to project to xy plane for intersection.
@@ -194564,7 +194728,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194564
194728
  * @param extendB flag for extension of geometryB.
194565
194729
  * @param tolerance optional distance tolerance for coincidence.
194566
194730
  */
194567
- constructor(worldToLocal, extendA, geometryB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
194731
+ constructor(worldToLocal, extendA, geometryB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
194568
194732
  super();
194569
194733
  this._extendA = extendA;
194570
194734
  this._geometryB = geometryB;
@@ -194576,14 +194740,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194576
194740
  if (!this._worldToLocalAffine)
194577
194741
  this._worldToLocalPerspective = worldToLocal.clone();
194578
194742
  }
194579
- this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_4__.CoincidentGeometryQuery.create(tolerance);
194743
+ this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__.CoincidentGeometryQuery.create(tolerance);
194580
194744
  this._results = [];
194581
194745
  }
194582
- /** Reset the geometry and flags, leaving all other parts unchanged (and preserving accumulated intersections) */
194583
- resetGeometry(extendA, geometryB, extendB) {
194584
- this._extendA = extendA;
194746
+ /** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
194747
+ resetGeometry(geometryB) {
194585
194748
  this._geometryB = geometryB;
194586
- this._extendB = extendB;
194587
194749
  }
194588
194750
  acceptFraction(extend0, fraction, extend1, fractionTol = 1.0e-12) {
194589
194751
  if (!extend0 && fraction < -fractionTol)
@@ -194593,12 +194755,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194593
194755
  return true;
194594
194756
  }
194595
194757
  /** Test the fraction by strict parameter, but allow toleranced distance test at ends. */
194596
- acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
194758
+ acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
194597
194759
  if (!extend0 && fraction < 0) {
194598
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol(fraction * pointA.distanceXY(pointB), tolerance);
194760
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol(fraction * pointA.distanceXY(pointB), tolerance);
194599
194761
  }
194600
194762
  else if (!extend1 && fraction > 1.0)
194601
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol((fraction - 1.0) * pointA.distanceXY(pointB), tolerance);
194763
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol((fraction - 1.0) * pointA.distanceXY(pointB), tolerance);
194602
194764
  return true;
194603
194765
  }
194604
194766
  /**
@@ -194611,9 +194773,6 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194611
194773
  this._results = [];
194612
194774
  return result;
194613
194775
  }
194614
- sameCurveAndFraction(cp, fraction, detail) {
194615
- return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
194616
- }
194617
194776
  /**
194618
194777
  * Record the pre-computed intersection between two curves. Filter by extension rules. Record with fraction mapping.
194619
194778
  * @param localFractionA intersection fraction local to the subcurve of cpA between fractionA0 and fractionA1
@@ -194634,14 +194793,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194634
194793
  intervalDetails.detailA.hasFraction1 &&
194635
194794
  intervalDetails.detailB.hasFraction1;
194636
194795
  if (isInterval) {
194637
- globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
194638
- globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
194639
- globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
194640
- globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction1, fractionB1);
194796
+ globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
194797
+ globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
194798
+ globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
194799
+ globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction1, fractionB1);
194641
194800
  }
194642
194801
  else {
194643
- globalFractionA = globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
194644
- globalFractionB = globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
194802
+ globalFractionA = globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
194803
+ globalFractionB = globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
194645
194804
  }
194646
194805
  // ignore duplicate of most recent pair
194647
194806
  const numPrevious = this._results.length;
@@ -194649,31 +194808,31 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194649
194808
  const oldDetailA = this._results[numPrevious - 1].detailA;
194650
194809
  const oldDetailB = this._results[numPrevious - 1].detailB;
194651
194810
  if (reversed) {
194652
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
194653
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
194811
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194812
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
194654
194813
  return;
194655
194814
  }
194656
194815
  else {
194657
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
194658
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
194816
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194817
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
194659
194818
  return;
194660
194819
  }
194661
194820
  }
194662
- const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, cpA.fractionToPoint(globalFractionA));
194663
- const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, cpB.fractionToPoint(globalFractionB));
194821
+ const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, cpA.fractionToPoint(globalFractionA));
194822
+ const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, cpB.fractionToPoint(globalFractionB));
194664
194823
  if (isInterval) {
194665
194824
  detailA.captureFraction1Point1(globalFractionA1, cpA.fractionToPoint(globalFractionA1));
194666
194825
  detailB.captureFraction1Point1(globalFractionB1, cpB.fractionToPoint(globalFractionB1));
194667
194826
  }
194668
194827
  else {
194669
- detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveIntervalRole.isolated);
194670
- detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveIntervalRole.isolated);
194828
+ detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
194829
+ detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
194671
194830
  }
194672
194831
  if (reversed) {
194673
- this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetailPair(detailB, detailA));
194832
+ this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailB, detailA));
194674
194833
  }
194675
194834
  else {
194676
- this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetailPair(detailA, detailB));
194835
+ this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailA, detailB));
194677
194836
  }
194678
194837
  }
194679
194838
  /**
@@ -194701,7 +194860,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194701
194860
  if (overlap) {
194702
194861
  this.recordPointWithLocalFractions(overlap.detailA.fraction, cpA, fractionA0, fractionA1, overlap.detailB.fraction, cpB, fractionB0, fractionB1, reversed, overlap);
194703
194862
  }
194704
- else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
194863
+ else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
194705
194864
  if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance) &&
194706
194865
  this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
194707
194866
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
@@ -194721,7 +194880,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194721
194880
  this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1, hA1);
194722
194881
  this._worldToLocalPerspective.multiplyPoint3d(pointB0, 1, hB0);
194723
194882
  this._worldToLocalPerspective.multiplyPoint3d(pointB1, 1, hB1);
194724
- const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
194883
+ const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
194725
194884
  if (fractionAB !== undefined) {
194726
194885
  const fractionA = fractionAB.x;
194727
194886
  const fractionB = fractionAB.y;
@@ -194764,17 +194923,17 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194764
194923
  const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
194765
194924
  const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
194766
194925
  const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
194767
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
194768
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
194769
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
194770
- const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194771
- const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194772
- const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194773
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194926
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
194927
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
194928
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
194929
+ const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194930
+ const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194931
+ const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194932
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194774
194933
  for (let i = 0; i < numRoots; i++) {
194775
194934
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
194776
194935
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
194777
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
194936
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
194778
194937
  if (lineFraction !== undefined &&
194779
194938
  this.acceptFraction(extendA0, lineFraction, extendA1) &&
194780
194939
  this.acceptFraction(extendB0, arcFraction, extendB1)) {
@@ -194790,19 +194949,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194790
194949
  pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
194791
194950
  pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
194792
194951
  }
194793
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
194794
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
194795
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
194796
- const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194797
- const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194798
- const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194799
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194952
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
194953
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
194954
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
194955
+ const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194956
+ const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194957
+ const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194958
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194800
194959
  const lineFractionTol = 1.0e-10;
194801
194960
  const arcFractionTol = 1.0e-7;
194802
194961
  for (let i = 0; i < numRoots; i++) {
194803
194962
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
194804
194963
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
194805
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
194964
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
194806
194965
  if (lineFraction !== undefined &&
194807
194966
  this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol) &&
194808
194967
  this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
@@ -194823,7 +194982,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194823
194982
  const localB = inverseA.multiplyMatrixMatrix(matrixB); // localB->localA transform
194824
194983
  const ellipseRadians = [];
194825
194984
  const circleRadians = [];
194826
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
194985
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
194827
194986
  localB.coffs[0], localB.coffs[3], localB.coffs[6], // vector0 xyw
194828
194987
  localB.coffs[1], localB.coffs[4], localB.coffs[7], // vector90 xyw
194829
194988
  ellipseRadians, circleRadians);
@@ -194854,14 +195013,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194854
195013
  if (this._worldToLocalPerspective) {
194855
195014
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
194856
195015
  const dataB = cpB.toTransformedPoint4d(this._worldToLocalPerspective);
194857
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
194858
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
195016
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
195017
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
194859
195018
  }
194860
195019
  else {
194861
195020
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
194862
195021
  const dataB = cpB.toTransformedVectors(this._worldToLocalAffine);
194863
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
194864
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
195022
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
195023
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
194865
195024
  }
194866
195025
  const conditionA = matrixA.conditionNumber();
194867
195026
  const conditionB = matrixB.conditionNumber();
@@ -194891,11 +195050,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194891
195050
  let matrixA;
194892
195051
  if (this._worldToLocalPerspective) {
194893
195052
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
194894
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
195053
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
194895
195054
  }
194896
195055
  else {
194897
195056
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
194898
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
195057
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
194899
195058
  }
194900
195059
  // The worldToLocal has moved the arc vectors into local space.
194901
195060
  // matrixA captures the xyw parts (ignoring z)
@@ -194906,7 +195065,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194906
195065
  const orderF = cpB.order; // order of the beziers for simple coordinates
194907
195066
  const orderG = 2 * orderF - 1; // order of the (single) bezier for squared coordinates.
194908
195067
  const coffF = new Float64Array(orderF);
194909
- const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderG);
195068
+ const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderG);
194910
195069
  const axx = matrixAInverse.at(0, 0);
194911
195070
  const axy = matrixAInverse.at(0, 1);
194912
195071
  const axz = 0.0;
@@ -194977,13 +195136,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194977
195136
  dispatchBezierBezierStrokeFirst(bezierA, bcurveA, strokeCountA, bezierB, bcurveB, _strokeCountB, univariateBezierB, // caller-allocated for univariate coefficients.
194978
195137
  reversed) {
194979
195138
  if (!this._xyzwA0)
194980
- this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195139
+ this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194981
195140
  if (!this._xyzwA1)
194982
- this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195141
+ this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194983
195142
  if (!this._xyzwPlane)
194984
- this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195143
+ this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194985
195144
  if (!this._xyzwB)
194986
- this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195145
+ this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194987
195146
  /*
194988
195147
  const roots = univariateBezierG.roots(0.0, true);
194989
195148
  if (roots) {
@@ -195009,7 +195168,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195009
195168
  for (let i = 1; i <= strokeCountA; i++, f0 = f1, this._xyzwA0.setFrom(this._xyzwA1)) {
195010
195169
  f1 = i * df;
195011
195170
  bezierA.fractionToPoint4d(f1, this._xyzwA1);
195012
- _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
195171
+ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
195013
195172
  bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
195014
195173
  let errors = 0;
195015
195174
  const roots = univariateBezierB.roots(0.0, true);
@@ -195017,11 +195176,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195017
195176
  for (const r of roots) {
195018
195177
  let bezierBFraction = r;
195019
195178
  bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
195020
- const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
195021
- if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
195022
- let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(f0, segmentAFraction, f1);
195179
+ const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
195180
+ if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
195181
+ let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(f0, segmentAFraction, f1);
195023
195182
  const xyMatchingFunction = new BezierBezierIntersectionXYRRToRRD(bezierA, bezierB);
195024
- const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
195183
+ const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
195025
195184
  newtonSearcher.setUV(bezierAFraction, bezierBFraction);
195026
195185
  if (newtonSearcher.runIterations()) {
195027
195186
  bezierAFraction = newtonSearcher.getU();
@@ -195064,8 +195223,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195064
195223
  const rangeB = this.getRanges(bezierSpanB);
195065
195224
  const orderA = bcurveA.order;
195066
195225
  const orderB = bcurveB.order;
195067
- const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderA);
195068
- const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderB);
195226
+ const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderA);
195227
+ const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderB);
195069
195228
  for (let a = 0; a < numA; a++) {
195070
195229
  for (let b = 0; b < numB; b++) {
195071
195230
  if (rangeA[a].intersectsRangeXY(rangeB[b])) {
@@ -195089,7 +195248,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195089
195248
  return this._worldToLocalPerspective.multiplyPoint3d(xyz, w);
195090
195249
  if (this._worldToLocalAffine)
195091
195250
  return this._worldToLocalAffine.multiplyXYZW(xyz.x, xyz.y, xyz.z, w);
195092
- return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createFromPointAndWeight(xyz, w);
195251
+ return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createFromPointAndWeight(xyz, w);
195093
195252
  }
195094
195253
  mapNPCPlaneToWorld(npcPlane, worldPlane) {
195095
195254
  // for NPC pointY, Y^ * H = 0 is "on" plane H. (Hat is transpose)
@@ -195113,7 +195272,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195113
195272
  dispatchSegmentBsplineCurve(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, bcurve, extendB, reversed) {
195114
195273
  const pointA0H = this.projectPoint(pointA0);
195115
195274
  const pointA1H = this.projectPoint(pointA1);
195116
- const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
195275
+ const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
195117
195276
  this.mapNPCPlaneToWorld(planeCoffs, planeCoffs);
195118
195277
  // NOW .. we have a plane in world space. Intersect it with the bspline:
195119
195278
  const intersections = [];
@@ -195125,7 +195284,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195125
195284
  const fractionB = detail.fraction;
195126
195285
  const curvePoint = detail.point;
195127
195286
  const curvePointH = this.projectPoint(curvePoint);
195128
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
195287
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
195129
195288
  if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1) &&
195130
195289
  this.acceptFraction(extendB, fractionB, extendB)) {
195131
195290
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed);
@@ -195229,72 +195388,130 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195229
195388
  transform.multiplyPoint3d(pointB0, this._workPointB0);
195230
195389
  transform.multiplyPoint3d(pointB1, this._workPointB1);
195231
195390
  }
195391
+ /** Low level dispatch of curve collection. */
195392
+ dispatchCurveCollection(geomA, geomAHandler) {
195393
+ const geomB = this._geometryB; // save
195394
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection))
195395
+ return;
195396
+ for (const child of geomB.children) {
195397
+ this.resetGeometry(child);
195398
+ geomAHandler(geomA);
195399
+ }
195400
+ this._geometryB = geomB; // restore
195401
+ }
195402
+ /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
195403
+ dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
195404
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex))
195405
+ return;
195406
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195407
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
195408
+ return;
195409
+ }
195410
+ const index0 = this._results.length;
195411
+ const geomB = this._geometryB; // save
195412
+ for (const child of geomB.path.children) {
195413
+ this.resetGeometry(child);
195414
+ geomAHandler(geomA);
195415
+ }
195416
+ this.resetGeometry(geomB); // restore
195417
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
195418
+ }
195232
195419
  /** Double dispatch handler for strongly typed segment. */
195233
195420
  handleLineSegment3d(segmentA) {
195234
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195421
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195235
195422
  const segmentB = this._geometryB;
195236
195423
  this.dispatchSegmentSegment(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, segmentB, this._extendB, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB, false);
195237
195424
  }
195238
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195425
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195239
195426
  this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
195240
195427
  }
195241
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195428
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195242
195429
  this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
195243
195430
  }
195244
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
195431
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
195245
195432
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
195246
195433
  }
195434
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195435
+ this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
195436
+ }
195437
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195438
+ this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
195439
+ }
195247
195440
  return undefined;
195248
195441
  }
195249
195442
  /** Double dispatch handler for strongly typed linestring. */
195250
195443
  handleLineString3d(lsA) {
195251
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195444
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195252
195445
  const lsB = this._geometryB;
195253
195446
  this.computeLineStringLineString(lsA, lsB, false);
195254
195447
  }
195255
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195448
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195256
195449
  this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195257
195450
  }
195258
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195451
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195259
195452
  this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195260
195453
  }
195261
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
195454
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
195262
195455
  this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
195263
195456
  }
195457
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195458
+ this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
195459
+ }
195460
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195461
+ this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
195462
+ }
195264
195463
  return undefined;
195265
195464
  }
195266
195465
  /** Double dispatch handler for strongly typed arc. */
195267
195466
  handleArc3d(arc0) {
195268
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195467
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195269
195468
  this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
195270
195469
  }
195271
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195470
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195272
195471
  this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
195273
195472
  }
195274
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195473
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195275
195474
  this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
195276
195475
  }
195277
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
195476
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
195278
195477
  this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
195279
195478
  }
195479
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195480
+ this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
195481
+ }
195482
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195483
+ this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
195484
+ }
195280
195485
  return undefined;
195281
195486
  }
195282
195487
  /** Double dispatch handler for strongly typed bspline curve. */
195283
195488
  handleBSplineCurve3d(curve) {
195284
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195489
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195285
195490
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
195286
195491
  }
195287
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195492
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195288
195493
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
195289
195494
  }
195290
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195495
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195291
195496
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
195292
195497
  }
195293
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3dBase) {
195498
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3dBase) {
195294
195499
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
195295
195500
  }
195501
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195502
+ this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
195503
+ }
195504
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195505
+ this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
195506
+ }
195296
195507
  return undefined;
195297
195508
  }
195509
+ /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
195510
+ handleCurveChainWithDistanceIndex(chain) {
195511
+ super.handleCurveChainWithDistanceIndex(chain);
195512
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
195513
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
195514
+ }
195298
195515
  /** Double dispatch handler for strongly typed homogeneous bspline curve .. */
195299
195516
  handleBSplineCurve3dH(_curve) {
195300
195517
  /*
@@ -195313,19 +195530,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195313
195530
  return undefined;
195314
195531
  }
195315
195532
  }
195316
- CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__.Vector2d.create();
195317
- CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195318
- CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195319
- CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195320
- CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195321
- CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195322
- CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195323
- CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195324
- CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195325
- CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195326
- CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195327
- CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195328
- CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195533
+ CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__.Vector2d.create();
195534
+ CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195535
+ CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195536
+ CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195537
+ CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195538
+ CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195539
+ CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195540
+ CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195541
+ CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195542
+ CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195543
+ CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195544
+ CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195545
+ CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195329
195546
 
195330
195547
 
195331
195548
 
@@ -195342,17 +195559,20 @@ __webpack_require__.r(__webpack_exports__);
195342
195559
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
195343
195560
  /* harmony export */ CurveCurveIntersectXYZ: () => (/* binding */ CurveCurveIntersectXYZ)
195344
195561
  /* harmony export */ });
195345
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
195346
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195347
- /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
195348
- /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
195349
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
195350
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195351
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
195352
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195353
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
195354
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195355
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195562
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
195563
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
195564
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195565
+ /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
195566
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
195567
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
195568
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195569
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
195570
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195571
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
195572
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195573
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
195574
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195575
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195356
195576
  /*---------------------------------------------------------------------------------------------
195357
195577
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195358
195578
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -195371,6 +195591,9 @@ __webpack_require__.r(__webpack_exports__);
195371
195591
 
195372
195592
 
195373
195593
 
195594
+
195595
+
195596
+
195374
195597
  // cspell:word XYRR
195375
195598
  /**
195376
195599
  * Handler class for XYZ intersections between _geometryB and another geometry.
@@ -195378,7 +195601,7 @@ __webpack_require__.r(__webpack_exports__);
195378
195601
  * * geometryB is saved for later reference.
195379
195602
  * @internal
195380
195603
  */
195381
- class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__.NullGeometryHandler {
195604
+ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__.RecurseToCurvesGeometryHandler {
195382
195605
  /**
195383
195606
  * @param extendA flag to enable using extension of the other geometry.
195384
195607
  * @param geometryB second curve for intersection. Saved for reference by specific handler methods.
@@ -195391,6 +195614,10 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195391
195614
  this._extendB = extendB;
195392
195615
  this._results = [];
195393
195616
  }
195617
+ /** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
195618
+ resetGeometry(geometryB) {
195619
+ this._geometryB = geometryB;
195620
+ }
195394
195621
  /**
195395
195622
  * Return the results structure for the intersection calculation, structured as an array of CurveLocationDetailPair.
195396
195623
  * @param reinitialize if true, a new results structure is created for use by later calls.
@@ -195415,21 +195642,21 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195415
195642
  * Record with fraction mapping.
195416
195643
  */
195417
195644
  recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed) {
195418
- const globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
195419
- const globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
195420
- // ignore duplicate of most recent point . ..
195645
+ const globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
195646
+ const globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
195647
+ // ignore duplicate of most recent point
195421
195648
  const numPrevious = this._results.length;
195422
195649
  if (numPrevious > 0) {
195423
- const topFractionA = this._results[numPrevious - 1].detailA.fraction;
195424
- const topFractionB = this._results[numPrevious - 1].detailB.fraction;
195650
+ const oldDetailA = this._results[numPrevious - 1].detailA;
195651
+ const oldDetailB = this._results[numPrevious - 1].detailB;
195425
195652
  if (reversed) {
195426
- if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionA, globalFractionB) &&
195427
- _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionB, globalFractionA))
195653
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
195654
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
195428
195655
  return;
195429
195656
  }
195430
195657
  else {
195431
- if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionA, globalFractionA) &&
195432
- _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionB, globalFractionB))
195658
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
195659
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
195433
195660
  return;
195434
195661
  }
195435
195662
  }
@@ -195437,16 +195664,16 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195437
195664
  const pointB = cpB.fractionToPoint(globalFractionB);
195438
195665
  if (!pointA.isAlmostEqualMetric(pointB))
195439
195666
  return;
195440
- const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, pointA);
195441
- detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveIntervalRole.isolated);
195442
- const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, pointB);
195443
- detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveIntervalRole.isolated);
195667
+ const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, pointA);
195668
+ detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
195669
+ const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, pointB);
195670
+ detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
195444
195671
  if (reversed) {
195445
- const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetailPair(detailB, detailA);
195672
+ const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailB, detailA);
195446
195673
  this._results.push(pair);
195447
195674
  }
195448
195675
  else {
195449
- const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetailPair(detailA, detailB);
195676
+ const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailA, detailB);
195450
195677
  this._results.push(pair);
195451
195678
  }
195452
195679
  }
@@ -195457,7 +195684,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195457
195684
  */
195458
195685
  computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed) {
195459
195686
  const uv = CurveCurveIntersectXYZ._workVector2dA;
195460
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
195687
+ if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
195461
195688
  this.acceptFraction(extendA0, uv.x, extendA1) && this.acceptFraction(extendB0, uv.y, extendB1)) {
195462
195689
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
195463
195690
  }
@@ -195484,20 +195711,20 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195484
195711
  * @param vectorC second candidate for additional in-plane vector
195485
195712
  */
195486
195713
  createPlaneWithPreferredPerpendicular(origin, vectorA, cosineValue, vectorB, vectorC) {
195487
- cosineValue = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.restrictToInterval(Math.abs(cosineValue), 0.0, 1.0 - _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallFraction);
195714
+ cosineValue = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.restrictToInterval(Math.abs(cosineValue), 0.0, 1.0 - _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallFraction);
195488
195715
  const dotAA = vectorA.magnitudeSquared();
195489
195716
  const dotBB = vectorB.magnitudeSquared();
195490
195717
  const dotAB = Math.abs(vectorA.dotProduct(vectorB));
195491
195718
  const cross = vectorA.unitCrossProduct(dotAB * dotAB <= cosineValue * cosineValue * dotAA * dotBB ? vectorB : vectorC);
195492
195719
  if (cross)
195493
- return _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(origin, cross);
195720
+ return _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(origin, cross);
195494
195721
  return undefined;
195495
195722
  }
195496
195723
  // Caller accesses data from a linestring or segment and passes it here.
195497
195724
  // The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
195498
195725
  // The fraction and extend parameters allow all combinations to be passed in.
195499
195726
  dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
195500
- const lineVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Vector3d.createStartEnd(pointA0, pointA1);
195727
+ const lineVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Vector3d.createStartEnd(pointA0, pointA1);
195501
195728
  const plane = this.createPlaneWithPreferredPerpendicular(pointA0, lineVector, 0.94, arc.perpendicularVector, arc.vector0);
195502
195729
  if (plane !== undefined) {
195503
195730
  const candidates = [];
@@ -195506,7 +195733,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195506
195733
  let linePoint;
195507
195734
  for (const c of candidates) {
195508
195735
  if (this.acceptFraction(extendB0, c.fraction, extendB1)) {
195509
- lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
195736
+ lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
195510
195737
  if (lineFraction !== undefined) {
195511
195738
  linePoint = pointA0.interpolate(lineFraction, pointA1, linePoint);
195512
195739
  if (linePoint.isAlmostEqualMetric(c.point)
@@ -195527,7 +195754,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195527
195754
  if (otherVectors !== undefined) {
195528
195755
  const ellipseRadians = [];
195529
195756
  const circleRadians = [];
195530
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(otherVectors.center.x, otherVectors.center.y, 1.0, otherVectors.vector0.x, otherVectors.vector0.y, 0.0, otherVectors.vector90.x, otherVectors.vector90.y, 0.0, ellipseRadians, circleRadians);
195757
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(otherVectors.center.x, otherVectors.center.y, 1.0, otherVectors.vector0.x, otherVectors.vector0.y, 0.0, otherVectors.vector90.x, otherVectors.vector90.y, 0.0, ellipseRadians, circleRadians);
195531
195758
  for (let i = 0; i < ellipseRadians.length; i++) {
195532
195759
  const fractionA = cpA.sweep.radiansToSignedPeriodicFraction(circleRadians[i]);
195533
195760
  const fractionB = cpB.sweep.radiansToSignedPeriodicFraction(ellipseRadians[i]);
@@ -195547,8 +195774,8 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195547
195774
  // 2) accept points that appear in both intersection sets.
195548
195775
  // If arcs are in parallel planes -- no intersections.
195549
195776
  // If arcs are in the same plane -- xy intersection in that plane.
195550
- const planeA = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(cpA.center, cpA.perpendicularVector);
195551
- const planeB = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(cpB.center, cpB.perpendicularVector);
195777
+ const planeA = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpA.center, cpA.perpendicularVector);
195778
+ const planeB = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpB.center, cpB.perpendicularVector);
195552
195779
  if (planeA === undefined || planeB === undefined)
195553
195780
  return;
195554
195781
  if (planeA.getNormalRef().isParallelTo(planeB.getNormalRef())) {
@@ -195949,72 +196176,130 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195949
196176
  }
195950
196177
  }
195951
196178
  }
196179
+ /** Low level dispatch of curve collection. */
196180
+ dispatchCurveCollection(geomA, geomAHandler) {
196181
+ const geomB = this._geometryB; // save
196182
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection))
196183
+ return;
196184
+ for (const child of geomB.children) {
196185
+ this.resetGeometry(child);
196186
+ geomAHandler(geomA);
196187
+ }
196188
+ this._geometryB = geomB; // restore
196189
+ }
196190
+ /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
196191
+ dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
196192
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex))
196193
+ return;
196194
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196195
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
196196
+ return;
196197
+ }
196198
+ const index0 = this._results.length;
196199
+ const geomB = this._geometryB; // save
196200
+ for (const child of geomB.path.children) {
196201
+ this.resetGeometry(child);
196202
+ geomAHandler(geomA);
196203
+ }
196204
+ this.resetGeometry(geomB); // restore
196205
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
196206
+ }
195952
196207
  /** Double dispatch handler for strongly typed segment. */
195953
196208
  handleLineSegment3d(segmentA) {
195954
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196209
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
195955
196210
  const segmentB = this._geometryB;
195956
196211
  this.dispatchSegmentSegment(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, segmentB, this._extendB, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB, false);
195957
196212
  }
195958
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196213
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
195959
196214
  this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
195960
196215
  }
195961
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196216
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
195962
196217
  this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
195963
196218
  }
195964
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
196219
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
195965
196220
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
195966
196221
  }
196222
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196223
+ this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
196224
+ }
196225
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196226
+ this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
196227
+ }
195967
196228
  return undefined;
195968
196229
  }
195969
196230
  /** double dispatch handler for strongly typed linestring. */
195970
196231
  handleLineString3d(lsA) {
195971
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196232
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
195972
196233
  const lsB = this._geometryB;
195973
196234
  this.computeLineStringLineString(lsA, lsB, false);
195974
196235
  }
195975
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196236
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
195976
196237
  this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195977
196238
  }
195978
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196239
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
195979
196240
  this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195980
196241
  }
195981
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
196242
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
195982
196243
  this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
195983
196244
  }
196245
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196246
+ this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
196247
+ }
196248
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196249
+ this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
196250
+ }
195984
196251
  return undefined;
195985
196252
  }
195986
196253
  /** Double dispatch handler for strongly typed arc. */
195987
196254
  handleArc3d(arc0) {
195988
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196255
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
195989
196256
  this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
195990
196257
  }
195991
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196258
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
195992
196259
  this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
195993
196260
  }
195994
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196261
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
195995
196262
  this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
195996
196263
  }
195997
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
196264
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
195998
196265
  this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
195999
196266
  }
196267
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196268
+ this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
196269
+ }
196270
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196271
+ this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
196272
+ }
196000
196273
  return undefined;
196001
196274
  }
196002
196275
  /** Double dispatch handler for strongly typed bspline curve. */
196003
196276
  handleBSplineCurve3d(curve) {
196004
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196277
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
196005
196278
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
196006
196279
  }
196007
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196280
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
196008
196281
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
196009
196282
  }
196010
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196283
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
196011
196284
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
196012
196285
  }
196013
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3dBase) {
196286
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3dBase) {
196014
196287
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
196015
196288
  }
196289
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196290
+ this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
196291
+ }
196292
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196293
+ this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
196294
+ }
196016
196295
  return undefined;
196017
196296
  }
196297
+ /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
196298
+ handleCurveChainWithDistanceIndex(chain) {
196299
+ super.handleCurveChainWithDistanceIndex(chain);
196300
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
196301
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
196302
+ }
196018
196303
  /** Double dispatch handler for strongly typed homogeneous bspline curve. */
196019
196304
  handleBSplineCurve3dH(_curve) {
196020
196305
  /*
@@ -196033,11 +196318,11 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
196033
196318
  return undefined;
196034
196319
  }
196035
196320
  }
196036
- CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_10__.Vector2d.create();
196037
- CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196038
- CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196039
- CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196040
- CurveCurveIntersectXYZ._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196321
+ CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__.Vector2d.create();
196322
+ CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196323
+ CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196324
+ CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196325
+ CurveCurveIntersectXYZ._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196041
196326
 
196042
196327
 
196043
196328
 
@@ -196402,10 +196687,9 @@ class MultiChainCollector {
196402
196687
  captureCurve(candidate) {
196403
196688
  if (candidate instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
196404
196689
  this.captureCurvePrimitive(candidate);
196405
- else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
196406
- for (const c of candidate.children) {
196690
+ else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection) {
196691
+ for (const c of candidate.children)
196407
196692
  this.captureCurve(c);
196408
- }
196409
196693
  }
196410
196694
  }
196411
196695
  /** If allowed by the geometry type, move an endpoint. */
@@ -222608,7 +222892,7 @@ class Point4d extends _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__.Plane3d {
222608
222892
  return undefined;
222609
222893
  }
222610
222894
  /**
222611
- * * Return xyz projection of spacePoint to the plane of the DPoint4d (understood as coefficients, not point coordinates)
222895
+ * * Return xyz projection of spacePoint to the plane (this Point4d is understood as plane coefficients, not point coordinates)
222612
222896
  * * If the xyz part of `this` are all zero, (a clone of) `spacePoint` is returned.
222613
222897
  */
222614
222898
  projectPointToPlane(spacePoint, result) {
@@ -223128,14 +223412,15 @@ class BezierCoffs {
223128
223412
  for (let i = 0; i < this.coffs.length; i++)
223129
223413
  this.coffs[i] += a;
223130
223414
  }
223131
- /** Compute parameter values where the bezier value matches _targetValue.
223415
+ /** Compute parameter values where the bezier value matches targetValue.
223132
223416
  * * The base class finds roots only in 01. (i.e. ignores _restrictTo01)
223133
- * * Order-specific implementations apply special case analytic logic, e.g. for degree 1,2,3,4.
223417
+ * * Order-specific implementations apply special case analytic logic, e.g. for degree 1,2,3,4.
223134
223418
  */
223135
223419
  roots(targetValue, _restrictTo01) {
223136
223420
  const bezier = UnivariateBezier.create(this);
223137
223421
  bezier.addInPlace(-targetValue);
223138
- return UnivariateBezier.deflateRoots01(bezier);
223422
+ const roots = UnivariateBezier.deflateRoots(bezier);
223423
+ return this.filter01(roots, true);
223139
223424
  }
223140
223425
  /** Given an array of numbers, optionally remove those not in the 0..1 interval.
223141
223426
  * @param roots candidate values
@@ -223163,7 +223448,9 @@ class BezierCoffs {
223163
223448
  return undefined;
223164
223449
  }
223165
223450
  /** zero out all coefficients. */
223166
- zero() { this.coffs.fill(0); }
223451
+ zero() {
223452
+ this.coffs.fill(0);
223453
+ }
223167
223454
  /** Subdivide -- write results into caller-supplied bezier coffs (which must be of the same order) */
223168
223455
  subdivide(u, left, right) {
223169
223456
  const order = this.order;
@@ -223686,11 +223973,10 @@ class UnivariateBezier extends BezierCoffs {
223686
223973
  // first c0*b0 = a0
223687
223974
  // last c[orderC-1]*b1 = a[orderA-1]
223688
223975
  /** Find roots of a bezier polynomial
223689
- * * Only look for roots in 0..1
223690
223976
  * * As roots are found, deflate the polynomial.
223691
223977
  * * bezier coffs are changed (and order reduced) at each step.
223692
223978
  */
223693
- static deflateRoots01(bezier) {
223979
+ static deflateRoots(bezier) {
223694
223980
  const roots = [];
223695
223981
  const coffs = bezier.coffs;
223696
223982
  let a0, a1, segmentFraction, globalStartFraction, newtonFraction;
@@ -288085,7 +288371,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
288085
288371
  /***/ ((module) => {
288086
288372
 
288087
288373
  "use strict";
288088
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.4","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.3.0-dev.4","@itwin/core-bentley":"workspace:^4.3.0-dev.4","@itwin/core-common":"workspace:^4.3.0-dev.4","@itwin/core-geometry":"workspace:^4.3.0-dev.4","@itwin/core-orbitgt":"workspace:^4.3.0-dev.4","@itwin/core-quantity":"workspace:^4.3.0-dev.4"},"//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.3.10","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.1.0","@itwin/object-storage-core":"^2.1.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"}}');
288374
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.6","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.3.0-dev.6","@itwin/core-bentley":"workspace:^4.3.0-dev.6","@itwin/core-common":"workspace:^4.3.0-dev.6","@itwin/core-geometry":"workspace:^4.3.0-dev.6","@itwin/core-orbitgt":"workspace:^4.3.0-dev.6","@itwin/core-quantity":"workspace:^4.3.0-dev.6"},"//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.3.10","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.1.0","@itwin/object-storage-core":"^2.1.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"}}');
288089
288375
 
288090
288376
  /***/ })
288091
288377