@itwin/rpcinterface-full-stack-tests 4.3.0-dev.4 → 4.3.0-dev.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/bundled-tests.js +617 -331
- 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 +13 -13
|
@@ -149719,7 +149719,8 @@ var TileGraphicType;
|
|
|
149719
149719
|
*/
|
|
149720
149720
|
class TileTreeReference /* implements RenderMemory.Consumer */ {
|
|
149721
149721
|
/** Force a new tree owner / tile tree to be created for the current tile tree reference
|
|
149722
|
-
|
|
149722
|
+
* @internal
|
|
149723
|
+
*/
|
|
149723
149724
|
resetTreeOwner() { }
|
|
149724
149725
|
/** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.
|
|
149725
149726
|
* Override this and call super if you have such auxiliary trees.
|
|
@@ -150845,7 +150846,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
150845
150846
|
/** @packageDocumentation
|
|
150846
150847
|
* @module Tiles
|
|
150847
150848
|
*/
|
|
150848
|
-
/**
|
|
150849
|
+
/**
|
|
150850
|
+
* Class representing an ArcGIS error code.
|
|
150851
|
+
* @internal
|
|
150852
|
+
*/
|
|
150849
150853
|
var ArcGisErrorCode;
|
|
150850
150854
|
(function (ArcGisErrorCode) {
|
|
150851
150855
|
ArcGisErrorCode[ArcGisErrorCode["InvalidCredentials"] = 401] = "InvalidCredentials";
|
|
@@ -150854,7 +150858,10 @@ var ArcGisErrorCode;
|
|
|
150854
150858
|
ArcGisErrorCode[ArcGisErrorCode["UnknownError"] = 1000] = "UnknownError";
|
|
150855
150859
|
ArcGisErrorCode[ArcGisErrorCode["NoTokenService"] = 1001] = "NoTokenService";
|
|
150856
150860
|
})(ArcGisErrorCode || (ArcGisErrorCode = {}));
|
|
150857
|
-
/**
|
|
150861
|
+
/**
|
|
150862
|
+
* Class containing utilities relating to ArcGIS services and coordinate systems.
|
|
150863
|
+
* @internal
|
|
150864
|
+
*/
|
|
150858
150865
|
class ArcGisUtilities {
|
|
150859
150866
|
static getBBoxString(range) {
|
|
150860
150867
|
if (!range)
|
|
@@ -150912,6 +150919,12 @@ class ArcGisUtilities {
|
|
|
150912
150919
|
}
|
|
150913
150920
|
return sources;
|
|
150914
150921
|
}
|
|
150922
|
+
/**
|
|
150923
|
+
* Get map layer sources from an ArcGIS query.
|
|
150924
|
+
* @param range Range for the query.
|
|
150925
|
+
* @param url URL for the query.
|
|
150926
|
+
* @returns List of map layer sources.
|
|
150927
|
+
*/
|
|
150915
150928
|
static async getSourcesFromQuery(range, url = "https://usgs.maps.arcgis.com/sharing/rest/search") {
|
|
150916
150929
|
const sources = new Array();
|
|
150917
150930
|
for (let start = 1; start > 0;) {
|
|
@@ -150931,11 +150944,11 @@ class ArcGisUtilities {
|
|
|
150931
150944
|
return sources;
|
|
150932
150945
|
}
|
|
150933
150946
|
/**
|
|
150934
|
-
* Parse the URL to check if it
|
|
150947
|
+
* Parse the URL to check if it represents a valid ArcGIS service
|
|
150935
150948
|
* @param url URL to validate.
|
|
150936
150949
|
* @param serviceType Service type to validate (i.e FeatureServer, MapServer)
|
|
150937
150950
|
* @return Validation Status.
|
|
150938
|
-
|
|
150951
|
+
*/
|
|
150939
150952
|
static validateUrl(url, serviceType) {
|
|
150940
150953
|
const urlObj = new URL(url.toLowerCase());
|
|
150941
150954
|
if (urlObj.pathname.includes("/rest/services/")) {
|
|
@@ -150958,10 +150971,10 @@ class ArcGisUtilities {
|
|
|
150958
150971
|
* @param capabilitiesFilter List of capabilities 'keyword' that needs to be advertised in the service's metadata
|
|
150959
150972
|
* in order to be valid. For example: 'Map', 'Query', etc
|
|
150960
150973
|
* @param userName Username to use for legacy token based security.
|
|
150961
|
-
* @param password
|
|
150974
|
+
* @param password Password to use for legacy token based security.
|
|
150962
150975
|
* @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
|
|
150963
150976
|
* @return Validation Status. If successful, a list of available sub-layers will also be returned.
|
|
150964
|
-
|
|
150977
|
+
*/
|
|
150965
150978
|
static async validateSource(url, formatId, capabilitiesFilter, userName, password, ignoreCache) {
|
|
150966
150979
|
const metadata = await this.getServiceJson(url, formatId, userName, password, ignoreCache);
|
|
150967
150980
|
const json = metadata?.content;
|
|
@@ -151005,9 +151018,7 @@ class ArcGisUtilities {
|
|
|
151005
151018
|
}
|
|
151006
151019
|
return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.Valid, subLayers };
|
|
151007
151020
|
}
|
|
151008
|
-
/**
|
|
151009
|
-
* Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible.
|
|
151010
|
-
*/
|
|
151021
|
+
/** Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible. */
|
|
151011
151022
|
static isEpsg3857Compatible(tileInfo) {
|
|
151012
151023
|
if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))
|
|
151013
151024
|
return false;
|
|
@@ -151015,11 +151026,17 @@ class ArcGisUtilities {
|
|
|
151015
151026
|
return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;
|
|
151016
151027
|
}
|
|
151017
151028
|
/**
|
|
151018
|
-
*
|
|
151029
|
+
* Fetches an ArcGIS service metadata, and returns its JSON representation.
|
|
151019
151030
|
* If an access client has been configured for the specified formatId,
|
|
151020
151031
|
* it will be used to apply required security token.
|
|
151021
151032
|
* By default, response for each URL are cached.
|
|
151022
|
-
|
|
151033
|
+
* @param url URL of the ArcGIS service
|
|
151034
|
+
* @param formatId Format ID of the service
|
|
151035
|
+
* @param userName Username to use for legacy token based security
|
|
151036
|
+
* @param password Password to use for legacy token based security
|
|
151037
|
+
* @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
|
|
151038
|
+
* @param requireToken Flag to indicate if a token is required
|
|
151039
|
+
*/
|
|
151023
151040
|
static async getServiceJson(url, formatId, userName, password, ignoreCache, requireToken) {
|
|
151024
151041
|
if (!ignoreCache) {
|
|
151025
151042
|
const cached = ArcGisUtilities._serviceCache.get(url);
|
|
@@ -151066,8 +151083,7 @@ class ArcGisUtilities {
|
|
|
151066
151083
|
return undefined;
|
|
151067
151084
|
}
|
|
151068
151085
|
}
|
|
151069
|
-
/** Read a response from ArcGIS server and check for error code in the response.
|
|
151070
|
-
*/
|
|
151086
|
+
/** Read a response from ArcGIS server and check for error code in the response. */
|
|
151071
151087
|
static async checkForResponseErrorCode(response) {
|
|
151072
151088
|
const tmpResponse = response;
|
|
151073
151089
|
if (response.headers && tmpResponse.headers.get("content-type")?.toLowerCase().includes("json")) {
|
|
@@ -151108,8 +151124,7 @@ class ArcGisUtilities {
|
|
|
151108
151124
|
* @param latitude Latitude in degrees to use to compute scales (i.e 0 for Equator)
|
|
151109
151125
|
* @param tileSize Size of a tile in pixels (i.e 256)
|
|
151110
151126
|
* @param screenDpi Monitor resolution in dots per inch (i.e. typically 96dpi is used by Google Maps)
|
|
151111
|
-
*
|
|
151112
|
-
* @returns An array containing resolution and scale values for each requested zoom level
|
|
151127
|
+
* @returns An array containing resolution and scale values for each requested zoom level
|
|
151113
151128
|
*/
|
|
151114
151129
|
static computeZoomLevelsScales(startZoom = 0, endZoom = 20, latitude = 0, tileSize = 256, screenDpi = 96) {
|
|
151115
151130
|
// Note: There is probably a more direct way to compute this, but I prefer to go for a simple and well documented approach.
|
|
@@ -151128,12 +151143,12 @@ class ArcGisUtilities {
|
|
|
151128
151143
|
return results;
|
|
151129
151144
|
}
|
|
151130
151145
|
/**
|
|
151131
|
-
* Match the provided minScale,maxScale values to corresponding wgs84 zoom levels
|
|
151146
|
+
* Match the provided minScale, maxScale values to corresponding wgs84 zoom levels
|
|
151132
151147
|
* @param defaultMaxLod Value of the last LOD (i.e 22)
|
|
151133
151148
|
* @param tileSize Size of a tile in pixels (i.e 256)
|
|
151134
151149
|
* @param minScale Minimum scale value that needs to be matched to a LOD level
|
|
151135
151150
|
* @param maxScale Maximum scale value that needs to be matched to a LOD level
|
|
151136
|
-
|
|
151151
|
+
* @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale
|
|
151137
151152
|
*/
|
|
151138
151153
|
static getZoomLevelsScales(defaultMaxLod, tileSize, minScale, maxScale, tolerance = 0) {
|
|
151139
151154
|
let minLod, maxLod;
|
|
@@ -152150,9 +152165,9 @@ class ArcGISMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2
|
|
|
152150
152165
|
return undefined;
|
|
152151
152166
|
}
|
|
152152
152167
|
}
|
|
152153
|
-
_generateChildIds(
|
|
152154
|
-
const childIds = this.getPotentialChildIds(
|
|
152155
|
-
if (
|
|
152168
|
+
_generateChildIds(quadId, resolveChildren) {
|
|
152169
|
+
const childIds = this.getPotentialChildIds(quadId);
|
|
152170
|
+
if (quadId.level < Math.max(1, this.minimumZoomLevel - 1)) {
|
|
152156
152171
|
resolveChildren(childIds);
|
|
152157
152172
|
return;
|
|
152158
152173
|
}
|
|
@@ -153451,14 +153466,14 @@ class WmtsMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2__
|
|
|
153451
153466
|
getDisplayedTileMatrixSetAndLimits() {
|
|
153452
153467
|
return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);
|
|
153453
153468
|
}
|
|
153454
|
-
_generateChildIds(
|
|
153455
|
-
const childIds = this.getPotentialChildIds(
|
|
153469
|
+
_generateChildIds(quadId, resolveChildren) {
|
|
153470
|
+
const childIds = this.getPotentialChildIds(quadId);
|
|
153456
153471
|
const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();
|
|
153457
153472
|
if (!matrixSetAndLimits) {
|
|
153458
153473
|
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false); // Must always hava a matrix set.
|
|
153459
153474
|
return;
|
|
153460
153475
|
}
|
|
153461
|
-
const limits = matrixSetAndLimits.limits?.[
|
|
153476
|
+
const limits = matrixSetAndLimits.limits?.[quadId.level + 1]?.limits;
|
|
153462
153477
|
if (!limits) {
|
|
153463
153478
|
resolveChildren(childIds);
|
|
153464
153479
|
return;
|
|
@@ -153838,17 +153853,24 @@ class ImageryMapLayerTreeSupplier {
|
|
|
153838
153853
|
}
|
|
153839
153854
|
const imageryTreeSupplier = new ImageryMapLayerTreeSupplier();
|
|
153840
153855
|
/** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.
|
|
153841
|
-
* @
|
|
153856
|
+
* @beta
|
|
153842
153857
|
*/
|
|
153843
153858
|
class ImageryMapLayerTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_4__.MapLayerTileTreeReference {
|
|
153844
|
-
|
|
153845
|
-
|
|
153859
|
+
/**
|
|
153860
|
+
* Constructor for an ImageryMapLayerTreeReference.
|
|
153861
|
+
* @param layerSettings Map layer settings that are applied to the ImageryMapLayerTreeReference.
|
|
153862
|
+
* @param layerIndex The index of the associated map layer. Usually passed in through [[createMapLayerTreeReference]] in [[MapTileTree]]'s constructor.
|
|
153863
|
+
* @param iModel The iModel containing the ImageryMapLayerTreeReference.
|
|
153864
|
+
*/
|
|
153865
|
+
constructor(args) {
|
|
153866
|
+
super(args.layerSettings, args.layerIndex, args.iModel);
|
|
153846
153867
|
}
|
|
153847
153868
|
get castsShadows() { return false; }
|
|
153848
153869
|
/** Return the owner of the TileTree to draw. */
|
|
153849
153870
|
get treeOwner() {
|
|
153850
153871
|
return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
|
|
153851
153872
|
}
|
|
153873
|
+
/* @internal */
|
|
153852
153874
|
resetTreeOwner() {
|
|
153853
153875
|
return this.iModel.tiles.resetTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
|
|
153854
153876
|
}
|
|
@@ -154115,32 +154137,52 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
154115
154137
|
|
|
154116
154138
|
|
|
154117
154139
|
const loggerCategory = "ArcGISFeatureProvider";
|
|
154118
|
-
/**
|
|
154140
|
+
/**
|
|
154141
|
+
* Class representing a map-layer format.
|
|
154119
154142
|
* Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].
|
|
154120
154143
|
* When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.
|
|
154121
154144
|
* The MapLayerFormat object can later be used to validate a source, or create a provider.
|
|
154122
154145
|
*
|
|
154123
|
-
* Subclasses should override formatId and [[MapLayerFormat.
|
|
154146
|
+
* Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].
|
|
154124
154147
|
* @public
|
|
154125
154148
|
*/
|
|
154126
154149
|
class MapLayerFormat {
|
|
154127
|
-
/** Register the current format in the [[MapLayerFormatRegistry]].
|
|
154128
|
-
*/
|
|
154150
|
+
/** Register the current format in the [[MapLayerFormatRegistry]]. */
|
|
154129
154151
|
static register() { _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.register(this); }
|
|
154130
|
-
/**
|
|
154131
|
-
|
|
154152
|
+
/**
|
|
154153
|
+
* Allow a source of a specific format to be validated before being attached as a map-layer.
|
|
154154
|
+
* @param _url The URL of the source.
|
|
154155
|
+
* @param _userName The username to access the source if needed.
|
|
154156
|
+
* @param _password The password to access the source if needed.
|
|
154157
|
+
* @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).
|
|
154158
|
+
* @returns Validation Status. If successful, a list of available sub-layers may also be returned.
|
|
154159
|
+
*/
|
|
154132
154160
|
static async validateSource(_url, _userName, _password, _ignoreCache) { return { status: _internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerSourceStatus.Valid }; }
|
|
154133
|
-
/**
|
|
154134
|
-
*
|
|
154135
|
-
|
|
154136
|
-
|
|
154137
|
-
|
|
154161
|
+
/**
|
|
154162
|
+
* Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.
|
|
154163
|
+
* @param _settings The map layer settings to be applied to the imagery provider.
|
|
154164
|
+
* @returns Returns the new imagery provider.
|
|
154165
|
+
* @beta
|
|
154166
|
+
*/
|
|
154167
|
+
static createImageryProvider(_settings) {
|
|
154168
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
|
|
154169
|
+
return undefined;
|
|
154170
|
+
}
|
|
154171
|
+
/**
|
|
154172
|
+
* Creates a MapLayerTileTreeReference for this map layer format.
|
|
154173
|
+
* @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
|
|
154174
|
+
* @param _layerIndex The index of the associated map layer.
|
|
154175
|
+
* @param _iModel The iModel containing the MapLayerTileTreeReference.
|
|
154176
|
+
* @returns Returns the new tile tree reference.
|
|
154177
|
+
* @beta
|
|
154178
|
+
*/
|
|
154138
154179
|
static createMapLayerTree(_layerSettings, _layerIndex, _iModel) {
|
|
154139
|
-
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false);
|
|
154180
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
|
|
154140
154181
|
return undefined;
|
|
154141
154182
|
}
|
|
154142
154183
|
}
|
|
154143
|
-
/**
|
|
154184
|
+
/**
|
|
154185
|
+
* A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
|
|
154144
154186
|
* @public
|
|
154145
154187
|
*/
|
|
154146
154188
|
class MapLayerFormatRegistry {
|
|
@@ -154183,7 +154225,8 @@ class MapLayerFormatRegistry {
|
|
|
154183
154225
|
}
|
|
154184
154226
|
return format.createMapLayerTree(layerSettings, layerIndex, iModel);
|
|
154185
154227
|
}
|
|
154186
|
-
/**
|
|
154228
|
+
/**
|
|
154229
|
+
* Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.
|
|
154187
154230
|
* @internal
|
|
154188
154231
|
*/
|
|
154189
154232
|
createImageryProvider(layerSettings) {
|
|
@@ -154228,7 +154271,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
154228
154271
|
class ImageryMapLayerFormat extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerFormat {
|
|
154229
154272
|
/** @internal */
|
|
154230
154273
|
static createMapLayerTree(layerSettings, layerIndex, iModel) {
|
|
154231
|
-
return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);
|
|
154274
|
+
return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference({ layerSettings, layerIndex, iModel });
|
|
154232
154275
|
}
|
|
154233
154276
|
}
|
|
154234
154277
|
class WmsMapLayerFormat extends ImageryMapLayerFormat {
|
|
@@ -154460,15 +154503,23 @@ class MapLayerImageryProvider {
|
|
|
154460
154503
|
this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme();
|
|
154461
154504
|
/** @internal */
|
|
154462
154505
|
this._status = MapLayerImageryProviderStatus.Valid;
|
|
154463
|
-
|
|
154464
|
-
|
|
154506
|
+
/**
|
|
154507
|
+
* This value is used internally for various computations, this should not get overriden.
|
|
154508
|
+
* @internal
|
|
154509
|
+
*/
|
|
154465
154510
|
this.defaultMinimumZoomLevel = 0;
|
|
154466
|
-
/**
|
|
154511
|
+
/**
|
|
154512
|
+
* This value is used internally for various computations, this should not get overriden.
|
|
154513
|
+
* @internal
|
|
154514
|
+
*/
|
|
154467
154515
|
this.defaultMaximumZoomLevel = 22;
|
|
154468
154516
|
this._mercatorTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.WebMercatorTilingScheme();
|
|
154469
154517
|
this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme(2, 1, true);
|
|
154470
154518
|
}
|
|
154471
|
-
/**
|
|
154519
|
+
/**
|
|
154520
|
+
* Initialize the provider by loading the first tile at its default maximum zoom level.
|
|
154521
|
+
* @beta
|
|
154522
|
+
*/
|
|
154472
154523
|
async initialize() {
|
|
154473
154524
|
this.loadTile(0, 0, this.defaultMaximumZoomLevel).then((tileData) => {
|
|
154474
154525
|
if (tileData !== undefined)
|
|
@@ -154476,20 +154527,31 @@ class MapLayerImageryProvider {
|
|
|
154476
154527
|
});
|
|
154477
154528
|
}
|
|
154478
154529
|
get tilingScheme() { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }
|
|
154479
|
-
/**
|
|
154530
|
+
/**
|
|
154531
|
+
* Add attribution logo cards for the data supplied by this provider to the [[Viewport]]'s logo div.
|
|
154532
|
+
* @param _cards Logo cards HTML element that may contain custom data attributes.
|
|
154533
|
+
* @param _viewport Viewport to add logo cards to.
|
|
154534
|
+
* @beta
|
|
154535
|
+
*/
|
|
154480
154536
|
addLogoCards(_cards, _viewport) { }
|
|
154481
154537
|
/** @internal */
|
|
154482
154538
|
get transparentBackgroundString() { return this._settings.transparentBackground ? "true" : "false"; }
|
|
154483
154539
|
/** @internal */
|
|
154484
154540
|
async _areChildrenAvailable(_tile) { return true; }
|
|
154485
154541
|
/** @internal */
|
|
154486
|
-
getPotentialChildIds(
|
|
154487
|
-
const childLevel =
|
|
154488
|
-
return
|
|
154542
|
+
getPotentialChildIds(quadId) {
|
|
154543
|
+
const childLevel = quadId.level + 1;
|
|
154544
|
+
return quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
|
|
154489
154545
|
}
|
|
154490
|
-
/**
|
|
154491
|
-
|
|
154492
|
-
|
|
154546
|
+
/**
|
|
154547
|
+
* Get child IDs of a quad and generate tiles based on these child IDs.
|
|
154548
|
+
* See [[ImageryTileTree._loadChildren]] for the definition of `resolveChildren` where this function is commonly called.
|
|
154549
|
+
* @param quadId quad to generate child IDs for.
|
|
154550
|
+
* @param resolveChildren Function that creates tiles from child IDs.
|
|
154551
|
+
* @beta
|
|
154552
|
+
*/
|
|
154553
|
+
_generateChildIds(quadId, resolveChildren) {
|
|
154554
|
+
resolveChildren(this.getPotentialChildIds(quadId));
|
|
154493
154555
|
}
|
|
154494
154556
|
/** @internal */
|
|
154495
154557
|
generateChildIds(tile, resolveChildren) {
|
|
@@ -154497,9 +154559,16 @@ class MapLayerImageryProvider {
|
|
|
154497
154559
|
tile.setLeaf();
|
|
154498
154560
|
return;
|
|
154499
154561
|
}
|
|
154500
|
-
this._generateChildIds(tile, resolveChildren);
|
|
154562
|
+
this._generateChildIds(tile.quadId, resolveChildren);
|
|
154501
154563
|
}
|
|
154502
|
-
/**
|
|
154564
|
+
/**
|
|
154565
|
+
* Get tooltip text for a specific quad and cartographic position.
|
|
154566
|
+
* @param strings List of strings to contain tooltip text.
|
|
154567
|
+
* @param quadId Quad ID to get tooltip for.
|
|
154568
|
+
* @param _carto Cartographic that may be used to retrieve and/or format tooltip text.
|
|
154569
|
+
* @param tree Tree associated with the quad to get the tooltip for.
|
|
154570
|
+
* @internal
|
|
154571
|
+
*/
|
|
154503
154572
|
async getToolTip(strings, quadId, _carto, tree) {
|
|
154504
154573
|
if (doDebugToolTips) {
|
|
154505
154574
|
const range = quadId.getLatLongRangeDegrees(tree.tilingScheme);
|
|
@@ -154534,7 +154603,8 @@ class MapLayerImageryProvider {
|
|
|
154534
154603
|
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Invalid tile content type");
|
|
154535
154604
|
return undefined;
|
|
154536
154605
|
}
|
|
154537
|
-
/**
|
|
154606
|
+
/**
|
|
154607
|
+
* Change the status of this provider.
|
|
154538
154608
|
* Sub-classes should override 'onStatusUpdated' instead of this method.
|
|
154539
154609
|
* @internal
|
|
154540
154610
|
*/
|
|
@@ -154617,31 +154687,49 @@ class MapLayerImageryProvider {
|
|
|
154617
154687
|
}
|
|
154618
154688
|
return true;
|
|
154619
154689
|
}
|
|
154620
|
-
/**
|
|
154621
|
-
|
|
154690
|
+
/**
|
|
154691
|
+
* Calculates the projected x cartesian coordinate in EPSG:3857 from the longitude in EPSG:4326 (WGS84)
|
|
154692
|
+
* @param longitude Longitude in EPSG:4326 (WGS84)
|
|
154693
|
+
* @internal
|
|
154694
|
+
*/
|
|
154622
154695
|
getEPSG3857X(longitude) {
|
|
154623
154696
|
return longitude * 20037508.34 / 180.0;
|
|
154624
154697
|
}
|
|
154625
|
-
/**
|
|
154626
|
-
|
|
154698
|
+
/**
|
|
154699
|
+
* Calculates the projected y cartesian coordinate in EPSG:3857 from the latitude in EPSG:4326 (WGS84)
|
|
154700
|
+
* @param latitude Latitude in EPSG:4326 (WGS84)
|
|
154701
|
+
* @internal
|
|
154702
|
+
*/
|
|
154627
154703
|
getEPSG3857Y(latitude) {
|
|
154628
154704
|
const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);
|
|
154629
154705
|
return y * 20037508.34 / 180.0;
|
|
154630
154706
|
}
|
|
154631
|
-
/**
|
|
154632
|
-
|
|
154707
|
+
/**
|
|
154708
|
+
* Calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
|
|
154709
|
+
* @param x3857 Projected x cartesian coordinate in EPSG:3857
|
|
154710
|
+
* @internal
|
|
154711
|
+
*/
|
|
154633
154712
|
getEPSG4326Lon(x3857) {
|
|
154634
154713
|
return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(x3857 / earthRadius);
|
|
154635
154714
|
}
|
|
154636
|
-
/**
|
|
154637
|
-
|
|
154715
|
+
/**
|
|
154716
|
+
* Calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
|
|
154717
|
+
* @param y3857 Projected y cartesian coordinate in EPSG:3857
|
|
154718
|
+
* @internal
|
|
154719
|
+
*/
|
|
154638
154720
|
getEPSG4326Lat(y3857) {
|
|
154639
154721
|
const y = 2 * Math.atan(Math.exp(y3857 / earthRadius)) - (Math.PI / 2);
|
|
154640
154722
|
return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(y);
|
|
154641
154723
|
}
|
|
154642
|
-
/**
|
|
154643
|
-
|
|
154644
|
-
|
|
154724
|
+
/**
|
|
154725
|
+
* Get the bounding box/extents of a tile in EPSG:4326 (WGS84) format.
|
|
154726
|
+
* Map tile providers like Bing and Mapbox allow the URL to be constructed directly from the zoom level and tile coordinates.
|
|
154727
|
+
* However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
|
|
154728
|
+
* @param row Row of the tile
|
|
154729
|
+
* @param column Column of the tile
|
|
154730
|
+
* @param zoomLevel Desired zoom level of the tile
|
|
154731
|
+
* @internal
|
|
154732
|
+
*/
|
|
154645
154733
|
getEPSG4326Extent(row, column, zoomLevel) {
|
|
154646
154734
|
// Shift left (this.tileSize << zoomLevel) overflow when using 512 pixels tile at higher resolution,
|
|
154647
154735
|
// so use Math.pow instead (I assume the performance lost to be minimal)
|
|
@@ -154656,7 +154744,13 @@ class MapLayerImageryProvider {
|
|
|
154656
154744
|
const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;
|
|
154657
154745
|
return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };
|
|
154658
154746
|
}
|
|
154659
|
-
/**
|
|
154747
|
+
/**
|
|
154748
|
+
* Get the bounding box/extents of a tile in EPSG:3857 format.
|
|
154749
|
+
* @param row Row of the tile
|
|
154750
|
+
* @param column Column of the tile
|
|
154751
|
+
* @param zoomLevel Desired zoom level of the tile
|
|
154752
|
+
* @internal
|
|
154753
|
+
*/
|
|
154660
154754
|
getEPSG3857Extent(row, column, zoomLevel) {
|
|
154661
154755
|
const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);
|
|
154662
154756
|
const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);
|
|
@@ -154933,24 +155027,45 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
154933
155027
|
|
|
154934
155028
|
|
|
154935
155029
|
|
|
154936
|
-
/**
|
|
155030
|
+
/**
|
|
155031
|
+
* A [[TileTreeReference]] to be used specifically for [[MapTileTree]]s.
|
|
155032
|
+
* The reference refers to its MapTileTree by way of the tree's [[TileTreeOwner]].
|
|
155033
|
+
* Multiple MapLayerTileTreeReferences can refer to the same TileTree if the map layer settings are equivalent, meaning
|
|
155034
|
+
* they have identical format IDs, URLs, credentials, etc.
|
|
155035
|
+
* @beta
|
|
155036
|
+
*/
|
|
154937
155037
|
class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.TileTreeReference {
|
|
155038
|
+
/**
|
|
155039
|
+
* Constructor for a MapLayerTileTreeReference.
|
|
155040
|
+
* @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
|
|
155041
|
+
* @param _layerIndex The index of the associated map layer.
|
|
155042
|
+
* @param iModel The iModel containing the MapLayerTileTreeReference.
|
|
155043
|
+
* @internal
|
|
155044
|
+
*/
|
|
154938
155045
|
constructor(_layerSettings, _layerIndex, iModel) {
|
|
154939
155046
|
super();
|
|
154940
155047
|
this._layerSettings = _layerSettings;
|
|
154941
155048
|
this._layerIndex = _layerIndex;
|
|
154942
155049
|
this.iModel = iModel;
|
|
154943
155050
|
}
|
|
155051
|
+
/* @internal */
|
|
154944
155052
|
get _transparency() { return this._layerSettings.transparency ? this._layerSettings.transparency : undefined; }
|
|
155053
|
+
/** Returns true if the associated map layer, including its sublayers, is opaque. */
|
|
154945
155054
|
get isOpaque() {
|
|
154946
155055
|
return this._layerSettings.visible && (!this._layerSettings.allSubLayersInvisible) && !this._layerSettings.transparentBackground && 0 === this._layerSettings.transparency;
|
|
154947
155056
|
}
|
|
155057
|
+
/* Returns the map layer name. */
|
|
154948
155058
|
get layerName() { return this._layerSettings.name; }
|
|
155059
|
+
/** Returns the imagery provider for the tile tree. */
|
|
154949
155060
|
get imageryProvider() { return undefined; }
|
|
154950
155061
|
set layerSettings(layerSettings) { this._layerSettings = layerSettings; }
|
|
155062
|
+
/** Returns the layer settings for the map layer. */
|
|
154951
155063
|
get layerSettings() { return this._layerSettings; }
|
|
155064
|
+
/** Returns the index of the map layer associated with the tile tree. */
|
|
154952
155065
|
get layerIndex() { return this._layerIndex; }
|
|
155066
|
+
/** Returns the transparency value of the map layer. */
|
|
154953
155067
|
get transparency() { return this._transparency; }
|
|
155068
|
+
/* Returns a tooltip describing the hit with the map layer name. */
|
|
154954
155069
|
async getToolTip(hit) {
|
|
154955
155070
|
const tree = this.treeOwner.tileTree;
|
|
154956
155071
|
if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.sourceId)
|
|
@@ -154962,7 +155077,14 @@ class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.T
|
|
|
154962
155077
|
return div;
|
|
154963
155078
|
}
|
|
154964
155079
|
}
|
|
154965
|
-
/**
|
|
155080
|
+
/**
|
|
155081
|
+
* Creates a MapLayerTileTreeReference.
|
|
155082
|
+
* @param layerSettings Model or image map layer settings that are applied to the MapLayerTileTreeReference.
|
|
155083
|
+
* @param layerIndex The index of the associated map layer.
|
|
155084
|
+
* @param iModel The iModel containing the new MapLayerTileTreeReference.
|
|
155085
|
+
* @returns Returns the new tile tree reference, either a ModelMapLayerTileTreeReference or an ImageryMapLayerTreeReference.
|
|
155086
|
+
* @internal
|
|
155087
|
+
*/
|
|
154966
155088
|
function createMapLayerTreeReference(layerSettings, layerIndex, iModel) {
|
|
154967
155089
|
if (layerSettings instanceof _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ModelMapLayerSettings) {
|
|
154968
155090
|
return (0,_internal__WEBPACK_IMPORTED_MODULE_3__.createModelMapLayerTileTreeReference)(layerSettings, layerIndex, iModel);
|
|
@@ -185965,11 +186087,28 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
185965
186087
|
curveLengthBetweenFractions(fraction0, fraction1) {
|
|
185966
186088
|
return Math.abs(fraction1 - fraction0) * this._totalLength;
|
|
185967
186089
|
}
|
|
186090
|
+
/** Flatten CurveChainWithDistanceIndex children in the input chain.
|
|
186091
|
+
* @return cloned flattened CurveChain, or reference to the input chain if no nesting
|
|
186092
|
+
*/
|
|
186093
|
+
static flattenNestedChains(chain) {
|
|
186094
|
+
if (-1 === chain.children.findIndex((child) => { return child instanceof CurveChainWithDistanceIndex; }))
|
|
186095
|
+
return chain;
|
|
186096
|
+
const flatChain = chain.clone();
|
|
186097
|
+
const flatChildren = flatChain.children.flatMap((child) => {
|
|
186098
|
+
if (child instanceof CurveChainWithDistanceIndex)
|
|
186099
|
+
return child.path.children;
|
|
186100
|
+
else
|
|
186101
|
+
return [child];
|
|
186102
|
+
});
|
|
186103
|
+
flatChain.children.splice(0, Infinity, ...flatChildren);
|
|
186104
|
+
return flatChain;
|
|
186105
|
+
}
|
|
185968
186106
|
/**
|
|
185969
186107
|
* Capture (not clone) a path into a new `CurveChainWithDistanceIndex`
|
|
185970
186108
|
* @param path primitive array to be CAPTURED (not cloned)
|
|
185971
186109
|
*/
|
|
185972
186110
|
static createCapture(path, options) {
|
|
186111
|
+
path = this.flattenNestedChains(path); // nested chains not allowed
|
|
185973
186112
|
const fragments = DistanceIndexConstructionContext.createPathFragmentIndex(path, options);
|
|
185974
186113
|
const result = new CurveChainWithDistanceIndex(path, fragments);
|
|
185975
186114
|
return result;
|
|
@@ -186305,6 +186444,36 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
186305
186444
|
}
|
|
186306
186445
|
return undefined;
|
|
186307
186446
|
}
|
|
186447
|
+
/**
|
|
186448
|
+
* Given a parent chain, convert the corresponding child details in the specified pairs.
|
|
186449
|
+
* * Converted details refer to the chain's global parameterization instead of the child's.
|
|
186450
|
+
* * It is assumed that for all i >= index0, `pairs[i].detailA.curve` is a child of chainA (similarly for chainB).
|
|
186451
|
+
* @param pairs array to mutate
|
|
186452
|
+
* @param index0 convert details of pairs in the tail of the array, starting at index0
|
|
186453
|
+
* @param chainA convert each specified detailA to the global parameterization of chainA
|
|
186454
|
+
* @param chainB convert each specified detailB to the global parameterization of chainB
|
|
186455
|
+
* @param compressAdjacent whether to remove adjacent duplicate pairs after conversion
|
|
186456
|
+
* @return the converted array
|
|
186457
|
+
* @internal
|
|
186458
|
+
*/
|
|
186459
|
+
static convertChildDetailToChainDetail(pairs, index0, chainA, chainB, compressAdjacent) {
|
|
186460
|
+
for (let i = index0; i < pairs.length; ++i) {
|
|
186461
|
+
const childDetailPair = pairs[i];
|
|
186462
|
+
if (chainA) {
|
|
186463
|
+
const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
|
|
186464
|
+
if (chainDetail)
|
|
186465
|
+
childDetailPair.detailA = chainDetail;
|
|
186466
|
+
}
|
|
186467
|
+
if (chainB) {
|
|
186468
|
+
const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
|
|
186469
|
+
if (chainDetail)
|
|
186470
|
+
childDetailPair.detailB = chainDetail;
|
|
186471
|
+
}
|
|
186472
|
+
}
|
|
186473
|
+
if (compressAdjacent)
|
|
186474
|
+
pairs = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveLocationDetailPair.removeAdjacentDuplicates(pairs, index0);
|
|
186475
|
+
return pairs;
|
|
186476
|
+
}
|
|
186308
186477
|
}
|
|
186309
186478
|
CurveChainWithDistanceIndex._numCalls = 0;
|
|
186310
186479
|
CurveChainWithDistanceIndex._numTested = 0;
|
|
@@ -186363,15 +186532,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
186363
186532
|
|
|
186364
186533
|
/**
|
|
186365
186534
|
* A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures:
|
|
186366
|
-
* -
|
|
186367
|
-
* The two instantiable forms of `CurveChain` are
|
|
186368
|
-
* -
|
|
186369
|
-
*
|
|
186370
|
-
*
|
|
186371
|
-
*
|
|
186372
|
-
* -
|
|
186373
|
-
* - `UnionRegion` -- a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
|
|
186374
|
-
* - `BagOfCurves` -- a collection of `AnyCurve` with no implied structure.
|
|
186535
|
+
* - [[CurveChain]] - a non-instantiable intermediate class for a sequence of [[CurvePrimitive]] joining head-to-tail.
|
|
186536
|
+
* The two instantiable forms of `CurveChain` are:
|
|
186537
|
+
* - [[Path]] - a chain of curves. Does not have to be closed or planar. A closed `Path` is not treated as bounding a surface.
|
|
186538
|
+
* - [[Loop]] - a closed and planar chain of curves. A `Loop` is treated as bounding a planar area.
|
|
186539
|
+
* - [[ParityRegion]] - a collection of coplanar `Loop`, with "in/out" classification by parity rules.
|
|
186540
|
+
* - [[UnionRegion]] - a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
|
|
186541
|
+
* - [[BagOfCurves]] - a collection of [[AnyCurve]] with no implied structure.
|
|
186375
186542
|
*
|
|
186376
186543
|
* @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
|
|
186377
186544
|
* @public
|
|
@@ -186381,7 +186548,6 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
|
|
|
186381
186548
|
super(...arguments);
|
|
186382
186549
|
/** String name for schema properties */
|
|
186383
186550
|
this.geometryCategory = "curveCollection";
|
|
186384
|
-
/* eslint-disable @typescript-eslint/naming-convention, no-empty */
|
|
186385
186551
|
/** Flag for inner loop status. Only used by `Loop`. */
|
|
186386
186552
|
this.isInner = false;
|
|
186387
186553
|
}
|
|
@@ -186758,11 +186924,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
186758
186924
|
/* harmony export */ CurveCurve: () => (/* binding */ CurveCurve)
|
|
186759
186925
|
/* harmony export */ });
|
|
186760
186926
|
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
186761
|
-
/* harmony import */ var
|
|
186762
|
-
/* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
|
|
186763
|
-
/* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
|
|
186927
|
+
/* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
|
|
186764
186928
|
/* harmony import */ var _internalContexts_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js");
|
|
186765
|
-
/* harmony import */ var
|
|
186929
|
+
/* harmony import */ var _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js");
|
|
186766
186930
|
/*---------------------------------------------------------------------------------------------
|
|
186767
186931
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
186768
186932
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -186774,8 +186938,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
186774
186938
|
|
|
186775
186939
|
|
|
186776
186940
|
|
|
186777
|
-
|
|
186778
|
-
|
|
186779
186941
|
/**
|
|
186780
186942
|
* `CurveCurve` has static method for various computations that work on a pair of curves or curve collections.
|
|
186781
186943
|
* @public
|
|
@@ -186790,22 +186952,11 @@ class CurveCurve {
|
|
|
186790
186952
|
* @param tolerance optional distance tolerance for coincidence
|
|
186791
186953
|
*/
|
|
186792
186954
|
static intersectionXYPairs(curveA, extendA, curveB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
|
|
186793
|
-
|
|
186794
|
-
if (curveB instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive) {
|
|
186795
|
-
curveA.dispatchToGeometryHandler(handler);
|
|
186796
|
-
}
|
|
186797
|
-
else if (curveB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.CurveCollection) {
|
|
186798
|
-
const allCurves = curveB.collectCurvePrimitives();
|
|
186799
|
-
for (const child of allCurves) {
|
|
186800
|
-
handler.resetGeometry(false, child, false);
|
|
186801
|
-
curveA.dispatchToGeometryHandler(handler);
|
|
186802
|
-
}
|
|
186803
|
-
}
|
|
186804
|
-
return handler.grabPairedResults();
|
|
186955
|
+
return CurveCurve.intersectionProjectedXYPairs(undefined, curveA, extendA, curveB, extendB, tolerance);
|
|
186805
186956
|
}
|
|
186806
186957
|
/**
|
|
186807
186958
|
* Return xy intersections of 2 projected curves.
|
|
186808
|
-
* @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections
|
|
186959
|
+
* @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections
|
|
186809
186960
|
* @param curveA first curve
|
|
186810
186961
|
* @param extendA true to allow curveA to extend
|
|
186811
186962
|
* @param curveB second curve
|
|
@@ -186829,7 +186980,7 @@ class CurveCurve {
|
|
|
186829
186980
|
* @returns array of intersections structured as CurveLocationDetailPair[]
|
|
186830
186981
|
*/
|
|
186831
186982
|
static intersectionXYZPairs(curveA, extendA, curveB, extendB) {
|
|
186832
|
-
const handler = new
|
|
186983
|
+
const handler = new _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__.CurveCurveIntersectXYZ(extendA, curveB, extendB);
|
|
186833
186984
|
curveA.dispatchToGeometryHandler(handler);
|
|
186834
186985
|
return handler.grabPairedResults();
|
|
186835
186986
|
}
|
|
@@ -186843,7 +186994,7 @@ class CurveCurve {
|
|
|
186843
186994
|
for (let i = 0; i < primitives.length; i++) {
|
|
186844
186995
|
const curveA = primitives[i];
|
|
186845
186996
|
for (let j = i + 1; j < primitives.length; j++) {
|
|
186846
|
-
handler.resetGeometry(
|
|
186997
|
+
handler.resetGeometry(primitives[j]);
|
|
186847
186998
|
curveA.dispatchToGeometryHandler(handler);
|
|
186848
186999
|
}
|
|
186849
187000
|
}
|
|
@@ -186863,7 +187014,7 @@ class CurveCurve {
|
|
|
186863
187014
|
* Close approaches further than this xy-distance are not returned.
|
|
186864
187015
|
*/
|
|
186865
187016
|
static closeApproachProjectedXYPairs(curveA, curveB, maxDistance) {
|
|
186866
|
-
const handler = new
|
|
187017
|
+
const handler = new _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__.CurveCurveCloseApproachXY(curveB);
|
|
186867
187018
|
handler.maxDistanceToAccept = maxDistance;
|
|
186868
187019
|
curveA.dispatchToGeometryHandler(handler);
|
|
186869
187020
|
return handler.grabPairedResults();
|
|
@@ -187997,6 +188148,10 @@ class CurveLocationDetail {
|
|
|
187997
188148
|
}
|
|
187998
188149
|
return detailB;
|
|
187999
188150
|
}
|
|
188151
|
+
/** Compare only the curve and fraction of this detail with `other`. */
|
|
188152
|
+
isSameCurveAndFraction(other) {
|
|
188153
|
+
return this.curve === other.curve && _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(this.fraction, other.fraction);
|
|
188154
|
+
}
|
|
188000
188155
|
}
|
|
188001
188156
|
/**
|
|
188002
188157
|
* Enumeration of configurations for intersections and min/max distance-between-curve
|
|
@@ -188059,6 +188214,30 @@ class CurveLocationDetailPair {
|
|
|
188059
188214
|
this.detailA = this.detailB;
|
|
188060
188215
|
this.detailB = q;
|
|
188061
188216
|
}
|
|
188217
|
+
/**
|
|
188218
|
+
* Mutate the input array by removing the second of two adjacent duplicate pairs.
|
|
188219
|
+
* * Ignores details representing coincident intervals (e.g., for which `fraction1` is defined).
|
|
188220
|
+
* * Comparison is performed by [[CurveLocationDetail.isSameCurveAndFraction]].
|
|
188221
|
+
* * No sorting is performed.
|
|
188222
|
+
* @param pairs array to de-duplicate in place
|
|
188223
|
+
* @param index0 look for duplicates in the tail of the array starting at index0
|
|
188224
|
+
* @return reference to input array
|
|
188225
|
+
* @internal
|
|
188226
|
+
*/
|
|
188227
|
+
static removeAdjacentDuplicates(pairs, index0 = 0) {
|
|
188228
|
+
return pairs.flatMap((pair, i, arr) => {
|
|
188229
|
+
if (i >= index0 && i > 0) {
|
|
188230
|
+
if (!pair.detailA.hasFraction1 && !pair.detailB.hasFraction1) {
|
|
188231
|
+
if (pair.detailA.isSameCurveAndFraction(arr[i - 1].detailA)) {
|
|
188232
|
+
if (pair.detailB.isSameCurveAndFraction(arr[i - 1].detailB)) {
|
|
188233
|
+
return []; // remove the i_th pair
|
|
188234
|
+
}
|
|
188235
|
+
}
|
|
188236
|
+
}
|
|
188237
|
+
}
|
|
188238
|
+
return [pair]; // preserve the i_th pair
|
|
188239
|
+
});
|
|
188240
|
+
}
|
|
188062
188241
|
}
|
|
188063
188242
|
/**
|
|
188064
188243
|
* Data bundle for a pair of arrays of CurveLocationDetail structures.
|
|
@@ -189109,10 +189288,8 @@ class CurveWireMomentsXYZ {
|
|
|
189109
189288
|
if (root instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_3__.CurvePrimitive)
|
|
189110
189289
|
root.emitStrokableParts(this);
|
|
189111
189290
|
else if (root instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_4__.CurveCollection) {
|
|
189112
|
-
|
|
189113
|
-
|
|
189114
|
-
this.visitLeaves(child);
|
|
189115
|
-
}
|
|
189291
|
+
for (const child of root.children)
|
|
189292
|
+
this.visitLeaves(child);
|
|
189116
189293
|
}
|
|
189117
189294
|
}
|
|
189118
189295
|
}
|
|
@@ -190501,10 +190678,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
190501
190678
|
isInPlane(plane) {
|
|
190502
190679
|
return this._points.isCloseToPlane(plane, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
|
|
190503
190680
|
}
|
|
190504
|
-
/**
|
|
190505
|
-
* Push a hit, fixing up the prior entry if needed.
|
|
190506
|
-
* Return the incremented counter.
|
|
190507
|
-
*/
|
|
190681
|
+
/** Push a hit, fixing up the prior entry if needed. */
|
|
190508
190682
|
static pushVertexHit(result, counter, cp, fraction, point) {
|
|
190509
190683
|
const detail = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.createCurveFractionPoint(cp, fraction, point);
|
|
190510
190684
|
result.push(detail);
|
|
@@ -196324,10 +196498,6 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
196324
196498
|
this._results = [];
|
|
196325
196499
|
return result;
|
|
196326
196500
|
}
|
|
196327
|
-
/** Returns `true` if `detail` has same curve and fraction. */
|
|
196328
|
-
sameCurveAndFraction(cp, fraction, detail) {
|
|
196329
|
-
return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
|
|
196330
|
-
}
|
|
196331
196501
|
/**
|
|
196332
196502
|
* If distance between pointA and pointB is less than maxDistance, record CurveLocationDetailPair which is
|
|
196333
196503
|
* the approach from pointA to pointB.
|
|
@@ -196378,13 +196548,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
196378
196548
|
const oldDetailA = this._results[numPrevious - 1].detailA;
|
|
196379
196549
|
const oldDetailB = this._results[numPrevious - 1].detailB;
|
|
196380
196550
|
if (reversed) {
|
|
196381
|
-
if (
|
|
196382
|
-
|
|
196551
|
+
if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
196552
|
+
oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
196383
196553
|
return;
|
|
196384
196554
|
}
|
|
196385
196555
|
else {
|
|
196386
|
-
if (
|
|
196387
|
-
|
|
196556
|
+
if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
196557
|
+
oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
196388
196558
|
return;
|
|
196389
196559
|
}
|
|
196390
196560
|
}
|
|
@@ -196430,13 +196600,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
196430
196600
|
const oldDetailA = this._results[numPrevious - 1].detailA;
|
|
196431
196601
|
const oldDetailB = this._results[numPrevious - 1].detailB;
|
|
196432
196602
|
if (reversed) {
|
|
196433
|
-
if (
|
|
196434
|
-
|
|
196603
|
+
if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
196604
|
+
oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
196435
196605
|
return;
|
|
196436
196606
|
}
|
|
196437
196607
|
else {
|
|
196438
|
-
if (
|
|
196439
|
-
|
|
196608
|
+
if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
196609
|
+
oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
196440
196610
|
return;
|
|
196441
196611
|
}
|
|
196442
196612
|
}
|
|
@@ -196822,38 +196992,22 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
196822
196992
|
}
|
|
196823
196993
|
this._geometryB = geomB; // restore
|
|
196824
196994
|
}
|
|
196825
|
-
/**
|
|
196826
|
-
* Given a parent chain, convert the corresponding child details so that they refer to the chain's global parameterization.
|
|
196827
|
-
* * It is assumed that `this._results[i].detailA.curve` is a child of chainA, and similarly for detailB/chainB.
|
|
196828
|
-
* @param chainA convert each detailA to the global parameterization of chainA
|
|
196829
|
-
* @param chainB convert each detailB to the global parameterization of chainB
|
|
196830
|
-
*/
|
|
196831
|
-
convertChildDetailToChainDetail(chainA, chainB) {
|
|
196832
|
-
for (const childDetailPair of this._results) {
|
|
196833
|
-
if (chainA) {
|
|
196834
|
-
const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
|
|
196835
|
-
if (chainDetail)
|
|
196836
|
-
childDetailPair.detailA = chainDetail;
|
|
196837
|
-
}
|
|
196838
|
-
if (chainB) {
|
|
196839
|
-
const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
|
|
196840
|
-
if (chainDetail)
|
|
196841
|
-
childDetailPair.detailB = chainDetail;
|
|
196842
|
-
}
|
|
196843
|
-
}
|
|
196844
|
-
}
|
|
196845
196995
|
/** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
|
|
196846
196996
|
dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
|
|
196847
196997
|
if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex))
|
|
196848
196998
|
return;
|
|
196999
|
+
if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
|
|
197000
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
|
|
197001
|
+
return;
|
|
197002
|
+
}
|
|
197003
|
+
const index0 = this._results.length;
|
|
196849
197004
|
const geomB = this._geometryB; // save
|
|
196850
197005
|
for (const child of geomB.path.children) {
|
|
196851
197006
|
this.resetGeometry(child);
|
|
196852
197007
|
geomAHandler(geomA);
|
|
196853
197008
|
}
|
|
196854
197009
|
this.resetGeometry(geomB); // restore
|
|
196855
|
-
|
|
196856
|
-
this.convertChildDetailToChainDetail(undefined, geomB);
|
|
197010
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
|
|
196857
197011
|
}
|
|
196858
197012
|
/** Double dispatch handler for strongly typed segment. */
|
|
196859
197013
|
handleLineSegment3d(segmentA) {
|
|
@@ -197024,7 +197178,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
197024
197178
|
/** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
|
|
197025
197179
|
handleCurveChainWithDistanceIndex(chain) {
|
|
197026
197180
|
super.handleCurveChainWithDistanceIndex(chain);
|
|
197027
|
-
|
|
197181
|
+
// if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
|
|
197182
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
|
|
197028
197183
|
}
|
|
197029
197184
|
/** Double dispatch handler for strongly typed homogeneous bspline curve .. */
|
|
197030
197185
|
handleBSplineCurve3dH(_curve) {
|
|
@@ -197066,27 +197221,36 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197066
197221
|
/* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* binding */ BezierBezierIntersectionXYRRToRRD),
|
|
197067
197222
|
/* harmony export */ CurveCurveIntersectXY: () => (/* binding */ CurveCurveIntersectXY)
|
|
197068
197223
|
/* harmony export */ });
|
|
197069
|
-
/* harmony import */ var
|
|
197070
|
-
/* harmony import */ var
|
|
197071
|
-
/* harmony import */ var
|
|
197072
|
-
/* harmony import */ var
|
|
197073
|
-
/* harmony import */ var
|
|
197074
|
-
/* harmony import */ var
|
|
197075
|
-
/* harmony import */ var
|
|
197076
|
-
/* harmony import */ var
|
|
197077
|
-
/* harmony import */ var
|
|
197078
|
-
/* harmony import */ var
|
|
197079
|
-
/* harmony import */ var
|
|
197080
|
-
/* harmony import */ var
|
|
197081
|
-
/* harmony import */ var
|
|
197082
|
-
/* harmony import */ var
|
|
197083
|
-
/* harmony import */ var
|
|
197084
|
-
/* harmony import */ var
|
|
197085
|
-
/* harmony import */ var
|
|
197224
|
+
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
197225
|
+
/* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
|
|
197226
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
197227
|
+
/* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
|
|
197228
|
+
/* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
|
|
197229
|
+
/* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
|
|
197230
|
+
/* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
|
|
197231
|
+
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
197232
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
197233
|
+
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
197234
|
+
/* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
|
|
197235
|
+
/* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
|
|
197236
|
+
/* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
|
|
197237
|
+
/* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
|
|
197238
|
+
/* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
|
|
197239
|
+
/* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
|
|
197240
|
+
/* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
|
|
197241
|
+
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
197242
|
+
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
197243
|
+
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
197086
197244
|
/*---------------------------------------------------------------------------------------------
|
|
197087
197245
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
197088
197246
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
197089
197247
|
*--------------------------------------------------------------------------------------------*/
|
|
197248
|
+
/** @packageDocumentation
|
|
197249
|
+
* @module Curve
|
|
197250
|
+
*/
|
|
197251
|
+
|
|
197252
|
+
|
|
197253
|
+
|
|
197090
197254
|
|
|
197091
197255
|
|
|
197092
197256
|
|
|
@@ -197110,13 +197274,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197110
197274
|
* * The inputs are assumed pre-transformed so that the target condition is to match x and y coordinates.
|
|
197111
197275
|
* @internal
|
|
197112
197276
|
*/
|
|
197113
|
-
class BezierBezierIntersectionXYRRToRRD extends
|
|
197277
|
+
class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.NewtonEvaluatorRRtoRRD {
|
|
197114
197278
|
constructor(curveA, curveB) {
|
|
197115
197279
|
super();
|
|
197116
197280
|
this._curveA = curveA;
|
|
197117
197281
|
this._curveB = curveB;
|
|
197118
|
-
this._rayA =
|
|
197119
|
-
this._rayB =
|
|
197282
|
+
this._rayA = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
|
|
197283
|
+
this._rayB = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
|
|
197120
197284
|
}
|
|
197121
197285
|
evaluate(fractionA, fractionB) {
|
|
197122
197286
|
this._curveA.fractionToPointAndDerivative(fractionA, this._rayA);
|
|
@@ -197131,7 +197295,7 @@ class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORT
|
|
|
197131
197295
|
* * geometryB is saved for later reference.
|
|
197132
197296
|
* @internal
|
|
197133
197297
|
*/
|
|
197134
|
-
class CurveCurveIntersectXY extends
|
|
197298
|
+
class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__.RecurseToCurvesGeometryHandler {
|
|
197135
197299
|
/**
|
|
197136
197300
|
* The constructor.
|
|
197137
197301
|
* @param worldToLocal optional transform (possibly perspective) to project to xy plane for intersection.
|
|
@@ -197140,7 +197304,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197140
197304
|
* @param extendB flag for extension of geometryB.
|
|
197141
197305
|
* @param tolerance optional distance tolerance for coincidence.
|
|
197142
197306
|
*/
|
|
197143
|
-
constructor(worldToLocal, extendA, geometryB, extendB, tolerance =
|
|
197307
|
+
constructor(worldToLocal, extendA, geometryB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
|
|
197144
197308
|
super();
|
|
197145
197309
|
this._extendA = extendA;
|
|
197146
197310
|
this._geometryB = geometryB;
|
|
@@ -197152,14 +197316,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197152
197316
|
if (!this._worldToLocalAffine)
|
|
197153
197317
|
this._worldToLocalPerspective = worldToLocal.clone();
|
|
197154
197318
|
}
|
|
197155
|
-
this._coincidentGeometryContext =
|
|
197319
|
+
this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__.CoincidentGeometryQuery.create(tolerance);
|
|
197156
197320
|
this._results = [];
|
|
197157
197321
|
}
|
|
197158
|
-
/** Reset the geometry
|
|
197159
|
-
resetGeometry(
|
|
197160
|
-
this._extendA = extendA;
|
|
197322
|
+
/** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
|
|
197323
|
+
resetGeometry(geometryB) {
|
|
197161
197324
|
this._geometryB = geometryB;
|
|
197162
|
-
this._extendB = extendB;
|
|
197163
197325
|
}
|
|
197164
197326
|
acceptFraction(extend0, fraction, extend1, fractionTol = 1.0e-12) {
|
|
197165
197327
|
if (!extend0 && fraction < -fractionTol)
|
|
@@ -197169,12 +197331,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197169
197331
|
return true;
|
|
197170
197332
|
}
|
|
197171
197333
|
/** Test the fraction by strict parameter, but allow toleranced distance test at ends. */
|
|
197172
|
-
acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance =
|
|
197334
|
+
acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
|
|
197173
197335
|
if (!extend0 && fraction < 0) {
|
|
197174
|
-
return
|
|
197336
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol(fraction * pointA.distanceXY(pointB), tolerance);
|
|
197175
197337
|
}
|
|
197176
197338
|
else if (!extend1 && fraction > 1.0)
|
|
197177
|
-
return
|
|
197339
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol((fraction - 1.0) * pointA.distanceXY(pointB), tolerance);
|
|
197178
197340
|
return true;
|
|
197179
197341
|
}
|
|
197180
197342
|
/**
|
|
@@ -197187,9 +197349,6 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197187
197349
|
this._results = [];
|
|
197188
197350
|
return result;
|
|
197189
197351
|
}
|
|
197190
|
-
sameCurveAndFraction(cp, fraction, detail) {
|
|
197191
|
-
return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
|
|
197192
|
-
}
|
|
197193
197352
|
/**
|
|
197194
197353
|
* Record the pre-computed intersection between two curves. Filter by extension rules. Record with fraction mapping.
|
|
197195
197354
|
* @param localFractionA intersection fraction local to the subcurve of cpA between fractionA0 and fractionA1
|
|
@@ -197210,14 +197369,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197210
197369
|
intervalDetails.detailA.hasFraction1 &&
|
|
197211
197370
|
intervalDetails.detailB.hasFraction1;
|
|
197212
197371
|
if (isInterval) {
|
|
197213
|
-
globalFractionA =
|
|
197214
|
-
globalFractionB =
|
|
197215
|
-
globalFractionA1 =
|
|
197216
|
-
globalFractionB1 =
|
|
197372
|
+
globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
|
|
197373
|
+
globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
|
|
197374
|
+
globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
|
|
197375
|
+
globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction1, fractionB1);
|
|
197217
197376
|
}
|
|
197218
197377
|
else {
|
|
197219
|
-
globalFractionA = globalFractionA1 =
|
|
197220
|
-
globalFractionB = globalFractionB1 =
|
|
197378
|
+
globalFractionA = globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
|
|
197379
|
+
globalFractionB = globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
|
|
197221
197380
|
}
|
|
197222
197381
|
// ignore duplicate of most recent pair
|
|
197223
197382
|
const numPrevious = this._results.length;
|
|
@@ -197225,31 +197384,31 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197225
197384
|
const oldDetailA = this._results[numPrevious - 1].detailA;
|
|
197226
197385
|
const oldDetailB = this._results[numPrevious - 1].detailB;
|
|
197227
197386
|
if (reversed) {
|
|
197228
|
-
if (
|
|
197229
|
-
|
|
197387
|
+
if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
197388
|
+
oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
197230
197389
|
return;
|
|
197231
197390
|
}
|
|
197232
197391
|
else {
|
|
197233
|
-
if (
|
|
197234
|
-
|
|
197392
|
+
if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
197393
|
+
oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
197235
197394
|
return;
|
|
197236
197395
|
}
|
|
197237
197396
|
}
|
|
197238
|
-
const detailA =
|
|
197239
|
-
const detailB =
|
|
197397
|
+
const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, cpA.fractionToPoint(globalFractionA));
|
|
197398
|
+
const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, cpB.fractionToPoint(globalFractionB));
|
|
197240
197399
|
if (isInterval) {
|
|
197241
197400
|
detailA.captureFraction1Point1(globalFractionA1, cpA.fractionToPoint(globalFractionA1));
|
|
197242
197401
|
detailB.captureFraction1Point1(globalFractionB1, cpB.fractionToPoint(globalFractionB1));
|
|
197243
197402
|
}
|
|
197244
197403
|
else {
|
|
197245
|
-
detailA.setIntervalRole(
|
|
197246
|
-
detailB.setIntervalRole(
|
|
197404
|
+
detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
|
|
197405
|
+
detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
|
|
197247
197406
|
}
|
|
197248
197407
|
if (reversed) {
|
|
197249
|
-
this._results.push(new
|
|
197408
|
+
this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailB, detailA));
|
|
197250
197409
|
}
|
|
197251
197410
|
else {
|
|
197252
|
-
this._results.push(new
|
|
197411
|
+
this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailA, detailB));
|
|
197253
197412
|
}
|
|
197254
197413
|
}
|
|
197255
197414
|
/**
|
|
@@ -197277,7 +197436,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197277
197436
|
if (overlap) {
|
|
197278
197437
|
this.recordPointWithLocalFractions(overlap.detailA.fraction, cpA, fractionA0, fractionA1, overlap.detailB.fraction, cpB, fractionB0, fractionB1, reversed, overlap);
|
|
197279
197438
|
}
|
|
197280
|
-
else if (
|
|
197439
|
+
else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
|
|
197281
197440
|
if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance) &&
|
|
197282
197441
|
this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
|
|
197283
197442
|
this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
|
|
@@ -197297,7 +197456,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197297
197456
|
this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1, hA1);
|
|
197298
197457
|
this._worldToLocalPerspective.multiplyPoint3d(pointB0, 1, hB0);
|
|
197299
197458
|
this._worldToLocalPerspective.multiplyPoint3d(pointB1, 1, hB1);
|
|
197300
|
-
const fractionAB =
|
|
197459
|
+
const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
|
|
197301
197460
|
if (fractionAB !== undefined) {
|
|
197302
197461
|
const fractionA = fractionAB.x;
|
|
197303
197462
|
const fractionB = fractionAB.y;
|
|
@@ -197340,17 +197499,17 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197340
197499
|
const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
197341
197500
|
const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
|
|
197342
197501
|
const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
|
|
197343
|
-
const alpha =
|
|
197344
|
-
const beta =
|
|
197345
|
-
const gamma =
|
|
197346
|
-
const cosines = new
|
|
197347
|
-
const sines = new
|
|
197348
|
-
const radians = new
|
|
197349
|
-
const numRoots =
|
|
197502
|
+
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
|
|
197503
|
+
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
|
|
197504
|
+
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
|
|
197505
|
+
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
|
|
197506
|
+
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
|
|
197507
|
+
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
|
|
197508
|
+
const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
|
|
197350
197509
|
for (let i = 0; i < numRoots; i++) {
|
|
197351
197510
|
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
197352
197511
|
const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
|
|
197353
|
-
const lineFraction =
|
|
197512
|
+
const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
|
|
197354
197513
|
if (lineFraction !== undefined &&
|
|
197355
197514
|
this.acceptFraction(extendA0, lineFraction, extendA1) &&
|
|
197356
197515
|
this.acceptFraction(extendB0, arcFraction, extendB1)) {
|
|
@@ -197366,19 +197525,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197366
197525
|
pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
|
|
197367
197526
|
pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
|
|
197368
197527
|
}
|
|
197369
|
-
const alpha =
|
|
197370
|
-
const beta =
|
|
197371
|
-
const gamma =
|
|
197372
|
-
const cosines = new
|
|
197373
|
-
const sines = new
|
|
197374
|
-
const radians = new
|
|
197375
|
-
const numRoots =
|
|
197528
|
+
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
|
|
197529
|
+
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
|
|
197530
|
+
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
|
|
197531
|
+
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
|
|
197532
|
+
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
|
|
197533
|
+
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
|
|
197534
|
+
const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
|
|
197376
197535
|
const lineFractionTol = 1.0e-10;
|
|
197377
197536
|
const arcFractionTol = 1.0e-7;
|
|
197378
197537
|
for (let i = 0; i < numRoots; i++) {
|
|
197379
197538
|
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
197380
197539
|
const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
|
|
197381
|
-
const lineFraction =
|
|
197540
|
+
const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
|
|
197382
197541
|
if (lineFraction !== undefined &&
|
|
197383
197542
|
this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol) &&
|
|
197384
197543
|
this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
|
|
@@ -197399,7 +197558,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197399
197558
|
const localB = inverseA.multiplyMatrixMatrix(matrixB); // localB->localA transform
|
|
197400
197559
|
const ellipseRadians = [];
|
|
197401
197560
|
const circleRadians = [];
|
|
197402
|
-
|
|
197561
|
+
_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
|
|
197403
197562
|
localB.coffs[0], localB.coffs[3], localB.coffs[6], // vector0 xyw
|
|
197404
197563
|
localB.coffs[1], localB.coffs[4], localB.coffs[7], // vector90 xyw
|
|
197405
197564
|
ellipseRadians, circleRadians);
|
|
@@ -197430,14 +197589,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197430
197589
|
if (this._worldToLocalPerspective) {
|
|
197431
197590
|
const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
197432
197591
|
const dataB = cpB.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
197433
|
-
matrixA =
|
|
197434
|
-
matrixB =
|
|
197592
|
+
matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
|
|
197593
|
+
matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
|
|
197435
197594
|
}
|
|
197436
197595
|
else {
|
|
197437
197596
|
const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
|
|
197438
197597
|
const dataB = cpB.toTransformedVectors(this._worldToLocalAffine);
|
|
197439
|
-
matrixA =
|
|
197440
|
-
matrixB =
|
|
197598
|
+
matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
|
|
197599
|
+
matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
|
|
197441
197600
|
}
|
|
197442
197601
|
const conditionA = matrixA.conditionNumber();
|
|
197443
197602
|
const conditionB = matrixB.conditionNumber();
|
|
@@ -197467,11 +197626,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197467
197626
|
let matrixA;
|
|
197468
197627
|
if (this._worldToLocalPerspective) {
|
|
197469
197628
|
const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
197470
|
-
matrixA =
|
|
197629
|
+
matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
|
|
197471
197630
|
}
|
|
197472
197631
|
else {
|
|
197473
197632
|
const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
|
|
197474
|
-
matrixA =
|
|
197633
|
+
matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
|
|
197475
197634
|
}
|
|
197476
197635
|
// The worldToLocal has moved the arc vectors into local space.
|
|
197477
197636
|
// matrixA captures the xyw parts (ignoring z)
|
|
@@ -197482,7 +197641,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197482
197641
|
const orderF = cpB.order; // order of the beziers for simple coordinates
|
|
197483
197642
|
const orderG = 2 * orderF - 1; // order of the (single) bezier for squared coordinates.
|
|
197484
197643
|
const coffF = new Float64Array(orderF);
|
|
197485
|
-
const univariateBezierG = new
|
|
197644
|
+
const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderG);
|
|
197486
197645
|
const axx = matrixAInverse.at(0, 0);
|
|
197487
197646
|
const axy = matrixAInverse.at(0, 1);
|
|
197488
197647
|
const axz = 0.0;
|
|
@@ -197553,13 +197712,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197553
197712
|
dispatchBezierBezierStrokeFirst(bezierA, bcurveA, strokeCountA, bezierB, bcurveB, _strokeCountB, univariateBezierB, // caller-allocated for univariate coefficients.
|
|
197554
197713
|
reversed) {
|
|
197555
197714
|
if (!this._xyzwA0)
|
|
197556
|
-
this._xyzwA0 =
|
|
197715
|
+
this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
197557
197716
|
if (!this._xyzwA1)
|
|
197558
|
-
this._xyzwA1 =
|
|
197717
|
+
this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
197559
197718
|
if (!this._xyzwPlane)
|
|
197560
|
-
this._xyzwPlane =
|
|
197719
|
+
this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
197561
197720
|
if (!this._xyzwB)
|
|
197562
|
-
this._xyzwB =
|
|
197721
|
+
this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
197563
197722
|
/*
|
|
197564
197723
|
const roots = univariateBezierG.roots(0.0, true);
|
|
197565
197724
|
if (roots) {
|
|
@@ -197585,7 +197744,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197585
197744
|
for (let i = 1; i <= strokeCountA; i++, f0 = f1, this._xyzwA0.setFrom(this._xyzwA1)) {
|
|
197586
197745
|
f1 = i * df;
|
|
197587
197746
|
bezierA.fractionToPoint4d(f1, this._xyzwA1);
|
|
197588
|
-
|
|
197747
|
+
_geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
|
|
197589
197748
|
bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
|
|
197590
197749
|
let errors = 0;
|
|
197591
197750
|
const roots = univariateBezierB.roots(0.0, true);
|
|
@@ -197593,11 +197752,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197593
197752
|
for (const r of roots) {
|
|
197594
197753
|
let bezierBFraction = r;
|
|
197595
197754
|
bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
|
|
197596
|
-
const segmentAFraction =
|
|
197597
|
-
if (segmentAFraction &&
|
|
197598
|
-
let bezierAFraction =
|
|
197755
|
+
const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
|
|
197756
|
+
if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
|
|
197757
|
+
let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(f0, segmentAFraction, f1);
|
|
197599
197758
|
const xyMatchingFunction = new BezierBezierIntersectionXYRRToRRD(bezierA, bezierB);
|
|
197600
|
-
const newtonSearcher = new
|
|
197759
|
+
const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
|
|
197601
197760
|
newtonSearcher.setUV(bezierAFraction, bezierBFraction);
|
|
197602
197761
|
if (newtonSearcher.runIterations()) {
|
|
197603
197762
|
bezierAFraction = newtonSearcher.getU();
|
|
@@ -197640,8 +197799,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197640
197799
|
const rangeB = this.getRanges(bezierSpanB);
|
|
197641
197800
|
const orderA = bcurveA.order;
|
|
197642
197801
|
const orderB = bcurveB.order;
|
|
197643
|
-
const univariateCoffsA = new
|
|
197644
|
-
const univariateCoffsB = new
|
|
197802
|
+
const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderA);
|
|
197803
|
+
const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderB);
|
|
197645
197804
|
for (let a = 0; a < numA; a++) {
|
|
197646
197805
|
for (let b = 0; b < numB; b++) {
|
|
197647
197806
|
if (rangeA[a].intersectsRangeXY(rangeB[b])) {
|
|
@@ -197665,7 +197824,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197665
197824
|
return this._worldToLocalPerspective.multiplyPoint3d(xyz, w);
|
|
197666
197825
|
if (this._worldToLocalAffine)
|
|
197667
197826
|
return this._worldToLocalAffine.multiplyXYZW(xyz.x, xyz.y, xyz.z, w);
|
|
197668
|
-
return
|
|
197827
|
+
return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createFromPointAndWeight(xyz, w);
|
|
197669
197828
|
}
|
|
197670
197829
|
mapNPCPlaneToWorld(npcPlane, worldPlane) {
|
|
197671
197830
|
// for NPC pointY, Y^ * H = 0 is "on" plane H. (Hat is transpose)
|
|
@@ -197689,7 +197848,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197689
197848
|
dispatchSegmentBsplineCurve(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, bcurve, extendB, reversed) {
|
|
197690
197849
|
const pointA0H = this.projectPoint(pointA0);
|
|
197691
197850
|
const pointA1H = this.projectPoint(pointA1);
|
|
197692
|
-
const planeCoffs =
|
|
197851
|
+
const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
|
|
197693
197852
|
this.mapNPCPlaneToWorld(planeCoffs, planeCoffs);
|
|
197694
197853
|
// NOW .. we have a plane in world space. Intersect it with the bspline:
|
|
197695
197854
|
const intersections = [];
|
|
@@ -197701,7 +197860,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197701
197860
|
const fractionB = detail.fraction;
|
|
197702
197861
|
const curvePoint = detail.point;
|
|
197703
197862
|
const curvePointH = this.projectPoint(curvePoint);
|
|
197704
|
-
const lineFraction =
|
|
197863
|
+
const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
|
|
197705
197864
|
if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1) &&
|
|
197706
197865
|
this.acceptFraction(extendB, fractionB, extendB)) {
|
|
197707
197866
|
this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed);
|
|
@@ -197805,72 +197964,130 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197805
197964
|
transform.multiplyPoint3d(pointB0, this._workPointB0);
|
|
197806
197965
|
transform.multiplyPoint3d(pointB1, this._workPointB1);
|
|
197807
197966
|
}
|
|
197967
|
+
/** Low level dispatch of curve collection. */
|
|
197968
|
+
dispatchCurveCollection(geomA, geomAHandler) {
|
|
197969
|
+
const geomB = this._geometryB; // save
|
|
197970
|
+
if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection))
|
|
197971
|
+
return;
|
|
197972
|
+
for (const child of geomB.children) {
|
|
197973
|
+
this.resetGeometry(child);
|
|
197974
|
+
geomAHandler(geomA);
|
|
197975
|
+
}
|
|
197976
|
+
this._geometryB = geomB; // restore
|
|
197977
|
+
}
|
|
197978
|
+
/** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
|
|
197979
|
+
dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
|
|
197980
|
+
if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex))
|
|
197981
|
+
return;
|
|
197982
|
+
if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
|
|
197983
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
|
|
197984
|
+
return;
|
|
197985
|
+
}
|
|
197986
|
+
const index0 = this._results.length;
|
|
197987
|
+
const geomB = this._geometryB; // save
|
|
197988
|
+
for (const child of geomB.path.children) {
|
|
197989
|
+
this.resetGeometry(child);
|
|
197990
|
+
geomAHandler(geomA);
|
|
197991
|
+
}
|
|
197992
|
+
this.resetGeometry(geomB); // restore
|
|
197993
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
|
|
197994
|
+
}
|
|
197808
197995
|
/** Double dispatch handler for strongly typed segment. */
|
|
197809
197996
|
handleLineSegment3d(segmentA) {
|
|
197810
|
-
if (this._geometryB instanceof
|
|
197997
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
|
|
197811
197998
|
const segmentB = this._geometryB;
|
|
197812
197999
|
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);
|
|
197813
198000
|
}
|
|
197814
|
-
else if (this._geometryB instanceof
|
|
198001
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
|
|
197815
198002
|
this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
|
|
197816
198003
|
}
|
|
197817
|
-
else if (this._geometryB instanceof
|
|
198004
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
|
|
197818
198005
|
this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
|
|
197819
198006
|
}
|
|
197820
|
-
else if (this._geometryB instanceof
|
|
198007
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
|
|
197821
198008
|
this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
|
|
197822
198009
|
}
|
|
198010
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
198011
|
+
this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
|
|
198012
|
+
}
|
|
198013
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
|
|
198014
|
+
this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
|
|
198015
|
+
}
|
|
197823
198016
|
return undefined;
|
|
197824
198017
|
}
|
|
197825
198018
|
/** Double dispatch handler for strongly typed linestring. */
|
|
197826
198019
|
handleLineString3d(lsA) {
|
|
197827
|
-
if (this._geometryB instanceof
|
|
198020
|
+
if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
|
|
197828
198021
|
const lsB = this._geometryB;
|
|
197829
198022
|
this.computeLineStringLineString(lsA, lsB, false);
|
|
197830
198023
|
}
|
|
197831
|
-
else if (this._geometryB instanceof
|
|
198024
|
+
else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
|
|
197832
198025
|
this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
|
|
197833
198026
|
}
|
|
197834
|
-
else if (this._geometryB instanceof
|
|
198027
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
|
|
197835
198028
|
this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
|
|
197836
198029
|
}
|
|
197837
|
-
else if (this._geometryB instanceof
|
|
198030
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
|
|
197838
198031
|
this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
|
|
197839
198032
|
}
|
|
198033
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
198034
|
+
this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
|
|
198035
|
+
}
|
|
198036
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
|
|
198037
|
+
this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
|
|
198038
|
+
}
|
|
197840
198039
|
return undefined;
|
|
197841
198040
|
}
|
|
197842
198041
|
/** Double dispatch handler for strongly typed arc. */
|
|
197843
198042
|
handleArc3d(arc0) {
|
|
197844
|
-
if (this._geometryB instanceof
|
|
198043
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
|
|
197845
198044
|
this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
|
|
197846
198045
|
}
|
|
197847
|
-
else if (this._geometryB instanceof
|
|
198046
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
|
|
197848
198047
|
this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
|
|
197849
198048
|
}
|
|
197850
|
-
else if (this._geometryB instanceof
|
|
198049
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
|
|
197851
198050
|
this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
|
|
197852
198051
|
}
|
|
197853
|
-
else if (this._geometryB instanceof
|
|
198052
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
|
|
197854
198053
|
this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
|
|
197855
198054
|
}
|
|
198055
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
198056
|
+
this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
|
|
198057
|
+
}
|
|
198058
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
|
|
198059
|
+
this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
|
|
198060
|
+
}
|
|
197856
198061
|
return undefined;
|
|
197857
198062
|
}
|
|
197858
198063
|
/** Double dispatch handler for strongly typed bspline curve. */
|
|
197859
198064
|
handleBSplineCurve3d(curve) {
|
|
197860
|
-
if (this._geometryB instanceof
|
|
198065
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
|
|
197861
198066
|
this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
|
|
197862
198067
|
}
|
|
197863
|
-
else if (this._geometryB instanceof
|
|
198068
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
|
|
197864
198069
|
this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
|
|
197865
198070
|
}
|
|
197866
|
-
else if (this._geometryB instanceof
|
|
198071
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
|
|
197867
198072
|
this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
|
|
197868
198073
|
}
|
|
197869
|
-
else if (this._geometryB instanceof
|
|
198074
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3dBase) {
|
|
197870
198075
|
this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
|
|
197871
198076
|
}
|
|
198077
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
198078
|
+
this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
|
|
198079
|
+
}
|
|
198080
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
|
|
198081
|
+
this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
|
|
198082
|
+
}
|
|
197872
198083
|
return undefined;
|
|
197873
198084
|
}
|
|
198085
|
+
/** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
|
|
198086
|
+
handleCurveChainWithDistanceIndex(chain) {
|
|
198087
|
+
super.handleCurveChainWithDistanceIndex(chain);
|
|
198088
|
+
// if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
|
|
198089
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
|
|
198090
|
+
}
|
|
197874
198091
|
/** Double dispatch handler for strongly typed homogeneous bspline curve .. */
|
|
197875
198092
|
handleBSplineCurve3dH(_curve) {
|
|
197876
198093
|
/*
|
|
@@ -197889,19 +198106,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
197889
198106
|
return undefined;
|
|
197890
198107
|
}
|
|
197891
198108
|
}
|
|
197892
|
-
CurveCurveIntersectXY._workVector2dA =
|
|
197893
|
-
CurveCurveIntersectXY._workPointA0H =
|
|
197894
|
-
CurveCurveIntersectXY._workPointA1H =
|
|
197895
|
-
CurveCurveIntersectXY._workPointB0H =
|
|
197896
|
-
CurveCurveIntersectXY._workPointB1H =
|
|
197897
|
-
CurveCurveIntersectXY._workPointAA0 =
|
|
197898
|
-
CurveCurveIntersectXY._workPointAA1 =
|
|
197899
|
-
CurveCurveIntersectXY._workPointBB0 =
|
|
197900
|
-
CurveCurveIntersectXY._workPointBB1 =
|
|
197901
|
-
CurveCurveIntersectXY._workPointA0 =
|
|
197902
|
-
CurveCurveIntersectXY._workPointA1 =
|
|
197903
|
-
CurveCurveIntersectXY._workPointB0 =
|
|
197904
|
-
CurveCurveIntersectXY._workPointB1 =
|
|
198109
|
+
CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__.Vector2d.create();
|
|
198110
|
+
CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
198111
|
+
CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
198112
|
+
CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
198113
|
+
CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
|
|
198114
|
+
CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
198115
|
+
CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
198116
|
+
CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
198117
|
+
CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
198118
|
+
CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
198119
|
+
CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
198120
|
+
CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
198121
|
+
CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
|
|
197905
198122
|
|
|
197906
198123
|
|
|
197907
198124
|
|
|
@@ -197918,17 +198135,20 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197918
198135
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
197919
198136
|
/* harmony export */ CurveCurveIntersectXYZ: () => (/* binding */ CurveCurveIntersectXYZ)
|
|
197920
198137
|
/* harmony export */ });
|
|
197921
|
-
/* harmony import */ var
|
|
197922
|
-
/* harmony import */ var
|
|
197923
|
-
/* harmony import */ var
|
|
197924
|
-
/* harmony import */ var
|
|
197925
|
-
/* harmony import */ var
|
|
197926
|
-
/* harmony import */ var
|
|
197927
|
-
/* harmony import */ var
|
|
197928
|
-
/* harmony import */ var
|
|
197929
|
-
/* harmony import */ var
|
|
197930
|
-
/* harmony import */ var
|
|
197931
|
-
/* harmony import */ var
|
|
198138
|
+
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
198139
|
+
/* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
|
|
198140
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
198141
|
+
/* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
|
|
198142
|
+
/* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
|
|
198143
|
+
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
198144
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
198145
|
+
/* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
|
|
198146
|
+
/* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
|
|
198147
|
+
/* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
|
|
198148
|
+
/* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
|
|
198149
|
+
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
198150
|
+
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
198151
|
+
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
197932
198152
|
/*---------------------------------------------------------------------------------------------
|
|
197933
198153
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
197934
198154
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -197947,6 +198167,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197947
198167
|
|
|
197948
198168
|
|
|
197949
198169
|
|
|
198170
|
+
|
|
198171
|
+
|
|
198172
|
+
|
|
197950
198173
|
// cspell:word XYRR
|
|
197951
198174
|
/**
|
|
197952
198175
|
* Handler class for XYZ intersections between _geometryB and another geometry.
|
|
@@ -197954,7 +198177,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197954
198177
|
* * geometryB is saved for later reference.
|
|
197955
198178
|
* @internal
|
|
197956
198179
|
*/
|
|
197957
|
-
class CurveCurveIntersectXYZ extends
|
|
198180
|
+
class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__.RecurseToCurvesGeometryHandler {
|
|
197958
198181
|
/**
|
|
197959
198182
|
* @param extendA flag to enable using extension of the other geometry.
|
|
197960
198183
|
* @param geometryB second curve for intersection. Saved for reference by specific handler methods.
|
|
@@ -197967,6 +198190,10 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
197967
198190
|
this._extendB = extendB;
|
|
197968
198191
|
this._results = [];
|
|
197969
198192
|
}
|
|
198193
|
+
/** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
|
|
198194
|
+
resetGeometry(geometryB) {
|
|
198195
|
+
this._geometryB = geometryB;
|
|
198196
|
+
}
|
|
197970
198197
|
/**
|
|
197971
198198
|
* Return the results structure for the intersection calculation, structured as an array of CurveLocationDetailPair.
|
|
197972
198199
|
* @param reinitialize if true, a new results structure is created for use by later calls.
|
|
@@ -197991,21 +198218,21 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
197991
198218
|
* Record with fraction mapping.
|
|
197992
198219
|
*/
|
|
197993
198220
|
recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed) {
|
|
197994
|
-
const globalFractionA =
|
|
197995
|
-
const globalFractionB =
|
|
197996
|
-
// ignore duplicate of most recent point
|
|
198221
|
+
const globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
|
|
198222
|
+
const globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
|
|
198223
|
+
// ignore duplicate of most recent point
|
|
197997
198224
|
const numPrevious = this._results.length;
|
|
197998
198225
|
if (numPrevious > 0) {
|
|
197999
|
-
const
|
|
198000
|
-
const
|
|
198226
|
+
const oldDetailA = this._results[numPrevious - 1].detailA;
|
|
198227
|
+
const oldDetailB = this._results[numPrevious - 1].detailB;
|
|
198001
198228
|
if (reversed) {
|
|
198002
|
-
if (
|
|
198003
|
-
|
|
198229
|
+
if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
198230
|
+
oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
198004
198231
|
return;
|
|
198005
198232
|
}
|
|
198006
198233
|
else {
|
|
198007
|
-
if (
|
|
198008
|
-
|
|
198234
|
+
if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
|
|
198235
|
+
oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
|
|
198009
198236
|
return;
|
|
198010
198237
|
}
|
|
198011
198238
|
}
|
|
@@ -198013,16 +198240,16 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198013
198240
|
const pointB = cpB.fractionToPoint(globalFractionB);
|
|
198014
198241
|
if (!pointA.isAlmostEqualMetric(pointB))
|
|
198015
198242
|
return;
|
|
198016
|
-
const detailA =
|
|
198017
|
-
detailA.setIntervalRole(
|
|
198018
|
-
const detailB =
|
|
198019
|
-
detailB.setIntervalRole(
|
|
198243
|
+
const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, pointA);
|
|
198244
|
+
detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
|
|
198245
|
+
const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, pointB);
|
|
198246
|
+
detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
|
|
198020
198247
|
if (reversed) {
|
|
198021
|
-
const pair = new
|
|
198248
|
+
const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailB, detailA);
|
|
198022
198249
|
this._results.push(pair);
|
|
198023
198250
|
}
|
|
198024
198251
|
else {
|
|
198025
|
-
const pair = new
|
|
198252
|
+
const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailA, detailB);
|
|
198026
198253
|
this._results.push(pair);
|
|
198027
198254
|
}
|
|
198028
198255
|
}
|
|
@@ -198033,7 +198260,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198033
198260
|
*/
|
|
198034
198261
|
computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed) {
|
|
198035
198262
|
const uv = CurveCurveIntersectXYZ._workVector2dA;
|
|
198036
|
-
if (
|
|
198263
|
+
if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
|
|
198037
198264
|
this.acceptFraction(extendA0, uv.x, extendA1) && this.acceptFraction(extendB0, uv.y, extendB1)) {
|
|
198038
198265
|
this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
|
|
198039
198266
|
}
|
|
@@ -198060,20 +198287,20 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198060
198287
|
* @param vectorC second candidate for additional in-plane vector
|
|
198061
198288
|
*/
|
|
198062
198289
|
createPlaneWithPreferredPerpendicular(origin, vectorA, cosineValue, vectorB, vectorC) {
|
|
198063
|
-
cosineValue =
|
|
198290
|
+
cosineValue = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.restrictToInterval(Math.abs(cosineValue), 0.0, 1.0 - _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallFraction);
|
|
198064
198291
|
const dotAA = vectorA.magnitudeSquared();
|
|
198065
198292
|
const dotBB = vectorB.magnitudeSquared();
|
|
198066
198293
|
const dotAB = Math.abs(vectorA.dotProduct(vectorB));
|
|
198067
198294
|
const cross = vectorA.unitCrossProduct(dotAB * dotAB <= cosineValue * cosineValue * dotAA * dotBB ? vectorB : vectorC);
|
|
198068
198295
|
if (cross)
|
|
198069
|
-
return
|
|
198296
|
+
return _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(origin, cross);
|
|
198070
198297
|
return undefined;
|
|
198071
198298
|
}
|
|
198072
198299
|
// Caller accesses data from a linestring or segment and passes it here.
|
|
198073
198300
|
// The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
|
|
198074
198301
|
// The fraction and extend parameters allow all combinations to be passed in.
|
|
198075
198302
|
dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
198076
|
-
const lineVector =
|
|
198303
|
+
const lineVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Vector3d.createStartEnd(pointA0, pointA1);
|
|
198077
198304
|
const plane = this.createPlaneWithPreferredPerpendicular(pointA0, lineVector, 0.94, arc.perpendicularVector, arc.vector0);
|
|
198078
198305
|
if (plane !== undefined) {
|
|
198079
198306
|
const candidates = [];
|
|
@@ -198082,7 +198309,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198082
198309
|
let linePoint;
|
|
198083
198310
|
for (const c of candidates) {
|
|
198084
198311
|
if (this.acceptFraction(extendB0, c.fraction, extendB1)) {
|
|
198085
|
-
lineFraction =
|
|
198312
|
+
lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
|
|
198086
198313
|
if (lineFraction !== undefined) {
|
|
198087
198314
|
linePoint = pointA0.interpolate(lineFraction, pointA1, linePoint);
|
|
198088
198315
|
if (linePoint.isAlmostEqualMetric(c.point)
|
|
@@ -198103,7 +198330,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198103
198330
|
if (otherVectors !== undefined) {
|
|
198104
198331
|
const ellipseRadians = [];
|
|
198105
198332
|
const circleRadians = [];
|
|
198106
|
-
|
|
198333
|
+
_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);
|
|
198107
198334
|
for (let i = 0; i < ellipseRadians.length; i++) {
|
|
198108
198335
|
const fractionA = cpA.sweep.radiansToSignedPeriodicFraction(circleRadians[i]);
|
|
198109
198336
|
const fractionB = cpB.sweep.radiansToSignedPeriodicFraction(ellipseRadians[i]);
|
|
@@ -198123,8 +198350,8 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198123
198350
|
// 2) accept points that appear in both intersection sets.
|
|
198124
198351
|
// If arcs are in parallel planes -- no intersections.
|
|
198125
198352
|
// If arcs are in the same plane -- xy intersection in that plane.
|
|
198126
|
-
const planeA =
|
|
198127
|
-
const planeB =
|
|
198353
|
+
const planeA = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpA.center, cpA.perpendicularVector);
|
|
198354
|
+
const planeB = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpB.center, cpB.perpendicularVector);
|
|
198128
198355
|
if (planeA === undefined || planeB === undefined)
|
|
198129
198356
|
return;
|
|
198130
198357
|
if (planeA.getNormalRef().isParallelTo(planeB.getNormalRef())) {
|
|
@@ -198525,72 +198752,130 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198525
198752
|
}
|
|
198526
198753
|
}
|
|
198527
198754
|
}
|
|
198755
|
+
/** Low level dispatch of curve collection. */
|
|
198756
|
+
dispatchCurveCollection(geomA, geomAHandler) {
|
|
198757
|
+
const geomB = this._geometryB; // save
|
|
198758
|
+
if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection))
|
|
198759
|
+
return;
|
|
198760
|
+
for (const child of geomB.children) {
|
|
198761
|
+
this.resetGeometry(child);
|
|
198762
|
+
geomAHandler(geomA);
|
|
198763
|
+
}
|
|
198764
|
+
this._geometryB = geomB; // restore
|
|
198765
|
+
}
|
|
198766
|
+
/** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
|
|
198767
|
+
dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
|
|
198768
|
+
if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex))
|
|
198769
|
+
return;
|
|
198770
|
+
if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
|
|
198771
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
|
|
198772
|
+
return;
|
|
198773
|
+
}
|
|
198774
|
+
const index0 = this._results.length;
|
|
198775
|
+
const geomB = this._geometryB; // save
|
|
198776
|
+
for (const child of geomB.path.children) {
|
|
198777
|
+
this.resetGeometry(child);
|
|
198778
|
+
geomAHandler(geomA);
|
|
198779
|
+
}
|
|
198780
|
+
this.resetGeometry(geomB); // restore
|
|
198781
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
|
|
198782
|
+
}
|
|
198528
198783
|
/** Double dispatch handler for strongly typed segment. */
|
|
198529
198784
|
handleLineSegment3d(segmentA) {
|
|
198530
|
-
if (this._geometryB instanceof
|
|
198785
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
|
|
198531
198786
|
const segmentB = this._geometryB;
|
|
198532
198787
|
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);
|
|
198533
198788
|
}
|
|
198534
|
-
else if (this._geometryB instanceof
|
|
198789
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
|
|
198535
198790
|
this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
|
|
198536
198791
|
}
|
|
198537
|
-
else if (this._geometryB instanceof
|
|
198792
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
|
|
198538
198793
|
this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
|
|
198539
198794
|
}
|
|
198540
|
-
else if (this._geometryB instanceof
|
|
198795
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
|
|
198541
198796
|
this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
|
|
198542
198797
|
}
|
|
198798
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
|
|
198799
|
+
this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
|
|
198800
|
+
}
|
|
198801
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
|
|
198802
|
+
this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
|
|
198803
|
+
}
|
|
198543
198804
|
return undefined;
|
|
198544
198805
|
}
|
|
198545
198806
|
/** double dispatch handler for strongly typed linestring. */
|
|
198546
198807
|
handleLineString3d(lsA) {
|
|
198547
|
-
if (this._geometryB instanceof
|
|
198808
|
+
if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
|
|
198548
198809
|
const lsB = this._geometryB;
|
|
198549
198810
|
this.computeLineStringLineString(lsA, lsB, false);
|
|
198550
198811
|
}
|
|
198551
|
-
else if (this._geometryB instanceof
|
|
198812
|
+
else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
|
|
198552
198813
|
this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
|
|
198553
198814
|
}
|
|
198554
|
-
else if (this._geometryB instanceof
|
|
198815
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
|
|
198555
198816
|
this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
|
|
198556
198817
|
}
|
|
198557
|
-
else if (this._geometryB instanceof
|
|
198818
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
|
|
198558
198819
|
this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
|
|
198559
198820
|
}
|
|
198821
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
|
|
198822
|
+
this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
|
|
198823
|
+
}
|
|
198824
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
|
|
198825
|
+
this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
|
|
198826
|
+
}
|
|
198560
198827
|
return undefined;
|
|
198561
198828
|
}
|
|
198562
198829
|
/** Double dispatch handler for strongly typed arc. */
|
|
198563
198830
|
handleArc3d(arc0) {
|
|
198564
|
-
if (this._geometryB instanceof
|
|
198831
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
|
|
198565
198832
|
this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
|
|
198566
198833
|
}
|
|
198567
|
-
else if (this._geometryB instanceof
|
|
198834
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
|
|
198568
198835
|
this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
|
|
198569
198836
|
}
|
|
198570
|
-
else if (this._geometryB instanceof
|
|
198837
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
|
|
198571
198838
|
this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
|
|
198572
198839
|
}
|
|
198573
|
-
else if (this._geometryB instanceof
|
|
198840
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
|
|
198574
198841
|
this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
|
|
198575
198842
|
}
|
|
198843
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
|
|
198844
|
+
this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
|
|
198845
|
+
}
|
|
198846
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
|
|
198847
|
+
this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
|
|
198848
|
+
}
|
|
198576
198849
|
return undefined;
|
|
198577
198850
|
}
|
|
198578
198851
|
/** Double dispatch handler for strongly typed bspline curve. */
|
|
198579
198852
|
handleBSplineCurve3d(curve) {
|
|
198580
|
-
if (this._geometryB instanceof
|
|
198853
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
|
|
198581
198854
|
this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
|
|
198582
198855
|
}
|
|
198583
|
-
else if (this._geometryB instanceof
|
|
198856
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
|
|
198584
198857
|
this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
|
|
198585
198858
|
}
|
|
198586
|
-
else if (this._geometryB instanceof
|
|
198859
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
|
|
198587
198860
|
this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
|
|
198588
198861
|
}
|
|
198589
|
-
else if (this._geometryB instanceof
|
|
198862
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3dBase) {
|
|
198590
198863
|
this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
|
|
198591
198864
|
}
|
|
198865
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
|
|
198866
|
+
this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
|
|
198867
|
+
}
|
|
198868
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
|
|
198869
|
+
this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
|
|
198870
|
+
}
|
|
198592
198871
|
return undefined;
|
|
198593
198872
|
}
|
|
198873
|
+
/** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
|
|
198874
|
+
handleCurveChainWithDistanceIndex(chain) {
|
|
198875
|
+
super.handleCurveChainWithDistanceIndex(chain);
|
|
198876
|
+
// if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
|
|
198877
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
|
|
198878
|
+
}
|
|
198594
198879
|
/** Double dispatch handler for strongly typed homogeneous bspline curve. */
|
|
198595
198880
|
handleBSplineCurve3dH(_curve) {
|
|
198596
198881
|
/*
|
|
@@ -198609,11 +198894,11 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
198609
198894
|
return undefined;
|
|
198610
198895
|
}
|
|
198611
198896
|
}
|
|
198612
|
-
CurveCurveIntersectXYZ._workVector2dA =
|
|
198613
|
-
CurveCurveIntersectXYZ._workPointAA0 =
|
|
198614
|
-
CurveCurveIntersectXYZ._workPointAA1 =
|
|
198615
|
-
CurveCurveIntersectXYZ._workPointBB0 =
|
|
198616
|
-
CurveCurveIntersectXYZ._workPointBB1 =
|
|
198897
|
+
CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__.Vector2d.create();
|
|
198898
|
+
CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
|
|
198899
|
+
CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
|
|
198900
|
+
CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
|
|
198901
|
+
CurveCurveIntersectXYZ._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
|
|
198617
198902
|
|
|
198618
198903
|
|
|
198619
198904
|
|
|
@@ -198978,10 +199263,9 @@ class MultiChainCollector {
|
|
|
198978
199263
|
captureCurve(candidate) {
|
|
198979
199264
|
if (candidate instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
|
|
198980
199265
|
this.captureCurvePrimitive(candidate);
|
|
198981
|
-
else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection
|
|
198982
|
-
for (const c of candidate.children)
|
|
199266
|
+
else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection) {
|
|
199267
|
+
for (const c of candidate.children)
|
|
198983
199268
|
this.captureCurve(c);
|
|
198984
|
-
}
|
|
198985
199269
|
}
|
|
198986
199270
|
}
|
|
198987
199271
|
/** If allowed by the geometry type, move an endpoint. */
|
|
@@ -225184,7 +225468,7 @@ class Point4d extends _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__.Plane3d {
|
|
|
225184
225468
|
return undefined;
|
|
225185
225469
|
}
|
|
225186
225470
|
/**
|
|
225187
|
-
* * Return xyz projection of spacePoint to the plane
|
|
225471
|
+
* * Return xyz projection of spacePoint to the plane (this Point4d is understood as plane coefficients, not point coordinates)
|
|
225188
225472
|
* * If the xyz part of `this` are all zero, (a clone of) `spacePoint` is returned.
|
|
225189
225473
|
*/
|
|
225190
225474
|
projectPointToPlane(spacePoint, result) {
|
|
@@ -225704,14 +225988,15 @@ class BezierCoffs {
|
|
|
225704
225988
|
for (let i = 0; i < this.coffs.length; i++)
|
|
225705
225989
|
this.coffs[i] += a;
|
|
225706
225990
|
}
|
|
225707
|
-
/** Compute parameter values where the bezier value matches
|
|
225991
|
+
/** Compute parameter values where the bezier value matches targetValue.
|
|
225708
225992
|
* * The base class finds roots only in 01. (i.e. ignores _restrictTo01)
|
|
225709
|
-
* * Order-specific implementations apply special case
|
|
225993
|
+
* * Order-specific implementations apply special case analytic logic, e.g. for degree 1,2,3,4.
|
|
225710
225994
|
*/
|
|
225711
225995
|
roots(targetValue, _restrictTo01) {
|
|
225712
225996
|
const bezier = UnivariateBezier.create(this);
|
|
225713
225997
|
bezier.addInPlace(-targetValue);
|
|
225714
|
-
|
|
225998
|
+
const roots = UnivariateBezier.deflateRoots(bezier);
|
|
225999
|
+
return this.filter01(roots, true);
|
|
225715
226000
|
}
|
|
225716
226001
|
/** Given an array of numbers, optionally remove those not in the 0..1 interval.
|
|
225717
226002
|
* @param roots candidate values
|
|
@@ -225739,7 +226024,9 @@ class BezierCoffs {
|
|
|
225739
226024
|
return undefined;
|
|
225740
226025
|
}
|
|
225741
226026
|
/** zero out all coefficients. */
|
|
225742
|
-
zero() {
|
|
226027
|
+
zero() {
|
|
226028
|
+
this.coffs.fill(0);
|
|
226029
|
+
}
|
|
225743
226030
|
/** Subdivide -- write results into caller-supplied bezier coffs (which must be of the same order) */
|
|
225744
226031
|
subdivide(u, left, right) {
|
|
225745
226032
|
const order = this.order;
|
|
@@ -226262,11 +226549,10 @@ class UnivariateBezier extends BezierCoffs {
|
|
|
226262
226549
|
// first c0*b0 = a0
|
|
226263
226550
|
// last c[orderC-1]*b1 = a[orderA-1]
|
|
226264
226551
|
/** Find roots of a bezier polynomial
|
|
226265
|
-
* * Only look for roots in 0..1
|
|
226266
226552
|
* * As roots are found, deflate the polynomial.
|
|
226267
226553
|
* * bezier coffs are changed (and order reduced) at each step.
|
|
226268
226554
|
*/
|
|
226269
|
-
static
|
|
226555
|
+
static deflateRoots(bezier) {
|
|
226270
226556
|
const roots = [];
|
|
226271
226557
|
const coffs = bezier.coffs;
|
|
226272
226558
|
let a0, a1, segmentFraction, globalStartFraction, newtonFraction;
|
|
@@ -280381,7 +280667,7 @@ class TestContext {
|
|
|
280381
280667
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
280382
280668
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
280383
280669
|
await core_frontend_1.NoRenderApp.startup({
|
|
280384
|
-
applicationVersion: "4.3.0-dev.
|
|
280670
|
+
applicationVersion: "4.3.0-dev.6",
|
|
280385
280671
|
applicationId: this.settings.gprid,
|
|
280386
280672
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
280387
280673
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -299789,7 +300075,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
|
|
|
299789
300075
|
/***/ ((module) => {
|
|
299790
300076
|
|
|
299791
300077
|
"use strict";
|
|
299792
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.
|
|
300078
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.6","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.3.0-dev.6","@itwin/core-bentley":"workspace:^4.3.0-dev.6","@itwin/core-common":"workspace:^4.3.0-dev.6","@itwin/core-geometry":"workspace:^4.3.0-dev.6","@itwin/core-orbitgt":"workspace:^4.3.0-dev.6","@itwin/core-quantity":"workspace:^4.3.0-dev.6"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.1.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
|
|
299793
300079
|
|
|
299794
300080
|
/***/ }),
|
|
299795
300081
|
|