@itwin/ecschema-rpcinterface-tests 4.3.0-dev.4 → 4.3.0-dev.5
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.
- package/lib/dist/bundled-tests.js +616 -330
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_4_14_node_modules_loaders_gl_draco_d-aa4ff5.bundled-tests.js.map +1 -1
- package/package.json +15 -15
|
@@ -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
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
|
|
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(
|
|
149578
|
-
const childIds = this.getPotentialChildIds(
|
|
149579
|
-
if (
|
|
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(
|
|
150879
|
-
const childIds = this.getPotentialChildIds(
|
|
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?.[
|
|
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
|
-
* @
|
|
151280
|
+
* @beta
|
|
151266
151281
|
*/
|
|
151267
151282
|
class ImageryMapLayerTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_4__.MapLayerTileTreeReference {
|
|
151268
|
-
|
|
151269
|
-
|
|
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
|
-
/**
|
|
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.
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
151558
|
-
*
|
|
151559
|
-
|
|
151560
|
-
|
|
151561
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
|
|
151888
|
-
|
|
151930
|
+
/**
|
|
151931
|
+
* This value is used internally for various computations, this should not get overriden.
|
|
151932
|
+
* @internal
|
|
151933
|
+
*/
|
|
151889
151934
|
this.defaultMinimumZoomLevel = 0;
|
|
151890
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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(
|
|
151911
|
-
const childLevel =
|
|
151912
|
-
return
|
|
151966
|
+
getPotentialChildIds(quadId) {
|
|
151967
|
+
const childLevel = quadId.level + 1;
|
|
151968
|
+
return quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
|
|
151913
151969
|
}
|
|
151914
|
-
/**
|
|
151915
|
-
|
|
151916
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
152045
|
-
|
|
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
|
-
/**
|
|
152050
|
-
|
|
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
|
-
/**
|
|
152056
|
-
|
|
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
|
-
/**
|
|
152061
|
-
|
|
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
|
-
/**
|
|
152067
|
-
|
|
152068
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
* -
|
|
183791
|
-
* The two instantiable forms of `CurveChain` are
|
|
183792
|
-
* -
|
|
183793
|
-
*
|
|
183794
|
-
*
|
|
183795
|
-
*
|
|
183796
|
-
* -
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
-
|
|
186537
|
-
|
|
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 (
|
|
193806
|
-
|
|
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 (
|
|
193811
|
-
|
|
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 (
|
|
193858
|
-
|
|
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 (
|
|
193863
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
194494
|
-
/* harmony import */ var
|
|
194495
|
-
/* harmony import */ var
|
|
194496
|
-
/* harmony import */ var
|
|
194497
|
-
/* harmony import */ var
|
|
194498
|
-
/* harmony import */ var
|
|
194499
|
-
/* harmony import */ var
|
|
194500
|
-
/* harmony import */ var
|
|
194501
|
-
/* harmony import */ var
|
|
194502
|
-
/* harmony import */ var
|
|
194503
|
-
/* harmony import */ var
|
|
194504
|
-
/* harmony import */ var
|
|
194505
|
-
/* harmony import */ var
|
|
194506
|
-
/* harmony import */ var
|
|
194507
|
-
/* harmony import */ var
|
|
194508
|
-
/* harmony import */ var
|
|
194509
|
-
/* harmony import */ var
|
|
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
|
|
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 =
|
|
194543
|
-
this._rayB =
|
|
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
|
|
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 =
|
|
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 =
|
|
194743
|
+
this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__.CoincidentGeometryQuery.create(tolerance);
|
|
194580
194744
|
this._results = [];
|
|
194581
194745
|
}
|
|
194582
|
-
/** Reset the geometry
|
|
194583
|
-
resetGeometry(
|
|
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 =
|
|
194758
|
+
acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
|
|
194597
194759
|
if (!extend0 && fraction < 0) {
|
|
194598
|
-
return
|
|
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
|
|
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 =
|
|
194638
|
-
globalFractionB =
|
|
194639
|
-
globalFractionA1 =
|
|
194640
|
-
globalFractionB1 =
|
|
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 =
|
|
194644
|
-
globalFractionB = globalFractionB1 =
|
|
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 (
|
|
194653
|
-
|
|
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 (
|
|
194658
|
-
|
|
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 =
|
|
194663
|
-
const detailB =
|
|
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(
|
|
194670
|
-
detailB.setIntervalRole(
|
|
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
|
|
194832
|
+
this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailB, detailA));
|
|
194674
194833
|
}
|
|
194675
194834
|
else {
|
|
194676
|
-
this._results.push(new
|
|
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 (
|
|
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 =
|
|
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 =
|
|
194768
|
-
const beta =
|
|
194769
|
-
const gamma =
|
|
194770
|
-
const cosines = new
|
|
194771
|
-
const sines = new
|
|
194772
|
-
const radians = new
|
|
194773
|
-
const numRoots =
|
|
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 =
|
|
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 =
|
|
194794
|
-
const beta =
|
|
194795
|
-
const gamma =
|
|
194796
|
-
const cosines = new
|
|
194797
|
-
const sines = new
|
|
194798
|
-
const radians = new
|
|
194799
|
-
const numRoots =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
194858
|
-
matrixB =
|
|
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 =
|
|
194864
|
-
matrixB =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
195139
|
+
this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
194981
195140
|
if (!this._xyzwA1)
|
|
194982
|
-
this._xyzwA1 =
|
|
195141
|
+
this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
194983
195142
|
if (!this._xyzwPlane)
|
|
194984
|
-
this._xyzwPlane =
|
|
195143
|
+
this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
194985
195144
|
if (!this._xyzwB)
|
|
194986
|
-
this._xyzwB =
|
|
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
|
-
|
|
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 =
|
|
195021
|
-
if (segmentAFraction &&
|
|
195022
|
-
let bezierAFraction =
|
|
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
|
|
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
|
|
195068
|
-
const univariateCoffsB = new
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
195317
|
-
CurveCurveIntersectXY._workPointA0H =
|
|
195318
|
-
CurveCurveIntersectXY._workPointA1H =
|
|
195319
|
-
CurveCurveIntersectXY._workPointB0H =
|
|
195320
|
-
CurveCurveIntersectXY._workPointB1H =
|
|
195321
|
-
CurveCurveIntersectXY._workPointAA0 =
|
|
195322
|
-
CurveCurveIntersectXY._workPointAA1 =
|
|
195323
|
-
CurveCurveIntersectXY._workPointBB0 =
|
|
195324
|
-
CurveCurveIntersectXY._workPointBB1 =
|
|
195325
|
-
CurveCurveIntersectXY._workPointA0 =
|
|
195326
|
-
CurveCurveIntersectXY._workPointA1 =
|
|
195327
|
-
CurveCurveIntersectXY._workPointB0 =
|
|
195328
|
-
CurveCurveIntersectXY._workPointB1 =
|
|
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
|
|
195346
|
-
/* harmony import */ var
|
|
195347
|
-
/* harmony import */ var
|
|
195348
|
-
/* harmony import */ var
|
|
195349
|
-
/* harmony import */ var
|
|
195350
|
-
/* harmony import */ var
|
|
195351
|
-
/* harmony import */ var
|
|
195352
|
-
/* harmony import */ var
|
|
195353
|
-
/* harmony import */ var
|
|
195354
|
-
/* harmony import */ var
|
|
195355
|
-
/* harmony import */ var
|
|
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
|
|
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 =
|
|
195419
|
-
const globalFractionB =
|
|
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
|
|
195424
|
-
const
|
|
195650
|
+
const oldDetailA = this._results[numPrevious - 1].detailA;
|
|
195651
|
+
const oldDetailB = this._results[numPrevious - 1].detailB;
|
|
195425
195652
|
if (reversed) {
|
|
195426
|
-
if (
|
|
195427
|
-
|
|
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 (
|
|
195432
|
-
|
|
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 =
|
|
195441
|
-
detailA.setIntervalRole(
|
|
195442
|
-
const detailB =
|
|
195443
|
-
detailB.setIntervalRole(
|
|
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
|
|
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
|
|
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 (
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
195551
|
-
const planeB =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
196037
|
-
CurveCurveIntersectXYZ._workPointAA0 =
|
|
196038
|
-
CurveCurveIntersectXYZ._workPointAA1 =
|
|
196039
|
-
CurveCurveIntersectXYZ._workPointBB0 =
|
|
196040
|
-
CurveCurveIntersectXYZ._workPointBB1 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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() {
|
|
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
|
|
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.
|
|
288374
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.5","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.5","@itwin/core-bentley":"workspace:^4.3.0-dev.5","@itwin/core-common":"workspace:^4.3.0-dev.5","@itwin/core-geometry":"workspace:^4.3.0-dev.5","@itwin/core-orbitgt":"workspace:^4.3.0-dev.5","@itwin/core-quantity":"workspace:^4.3.0-dev.5"},"//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
|
|