@itwin/rpcinterface-full-stack-tests 4.10.0-dev.26 → 4.10.0-dev.28

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.
@@ -54607,7 +54607,7 @@ var ElementGeometry;
54607
54607
  transform = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());
54608
54608
  if (undefined !== localToWorld) {
54609
54609
  if (undefined !== transform)
54610
- transform.multiplyTransformTransform(localToWorld, transform);
54610
+ localToWorld.multiplyTransformTransform(transform, transform);
54611
54611
  else
54612
54612
  transform = localToWorld;
54613
54613
  }
@@ -54640,7 +54640,7 @@ var ElementGeometry;
54640
54640
  function fromBRep(brep, worldToLocal) {
54641
54641
  if (undefined !== worldToLocal) {
54642
54642
  const entityTrans = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Transform.fromJSON(brep.transform);
54643
- const localTrans = entityTrans.multiplyTransformTransform(worldToLocal);
54643
+ const localTrans = worldToLocal.multiplyTransformTransform(entityTrans);
54644
54644
  brep = {
54645
54645
  data: brep.data,
54646
54646
  type: brep.type,
@@ -54725,7 +54725,7 @@ var ElementGeometry;
54725
54725
  if (null !== entityTransform)
54726
54726
  transform = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());
54727
54727
  if (undefined !== transform)
54728
- transform.multiplyTransformTransform(inputTransform, transform);
54728
+ inputTransform.multiplyTransformTransform(transform, transform);
54729
54729
  else
54730
54730
  transform = inputTransform;
54731
54731
  const transformOffset = _ElementGeometryFB__WEBPACK_IMPORTED_MODULE_3__.EGFBAccessors.Transform.createTransform(fbb, transform.matrix.coffs[0], transform.matrix.coffs[1], transform.matrix.coffs[2], transform.origin.x, transform.matrix.coffs[3], transform.matrix.coffs[4], transform.matrix.coffs[5], transform.origin.y, transform.matrix.coffs[6], transform.matrix.coffs[7], transform.matrix.coffs[8], transform.origin.z);
@@ -60268,7 +60268,7 @@ class GeometryStreamBuilder {
60268
60268
  return true;
60269
60269
  }
60270
60270
  const entityTrans = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Transform.fromJSON(brep.transform);
60271
- const localTrans = entityTrans.multiplyTransformTransform(this._worldToLocal);
60271
+ const localTrans = this._worldToLocal.multiplyTransformTransform(entityTrans);
60272
60272
  const localBrep = {
60273
60273
  data: brep.data,
60274
60274
  type: brep.type,
@@ -60494,7 +60494,7 @@ class GeometryStreamIterator {
60494
60494
  else if (entry.brep) {
60495
60495
  if (this.entry.localToWorld !== undefined) {
60496
60496
  const entityTrans = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Transform.fromJSON(entry.brep.transform);
60497
- entry.brep.transform = entityTrans.multiplyTransformTransform(this.entry.localToWorld).toJSON();
60497
+ entry.brep.transform = this.entry.localToWorld.multiplyTransformTransform(entityTrans).toJSON();
60498
60498
  }
60499
60499
  this.entry.setBRep(entry.brep);
60500
60500
  return { value: this.entry, done: false };
@@ -60846,6 +60846,9 @@ class Placement3d {
60846
60846
  return range;
60847
60847
  }
60848
60848
  /** Multiply the Transform of this Placement3d by the specified *other* Transform.
60849
+ * * Specifically `this.angles` is set to the rotation specified by `other.matrix * this.transform.matrix`
60850
+ * and `this.origin` is set to the origin of `other * this.transform`.
60851
+ * * Since the placement transform is local-to-world, this means `other` is a world-to-world transform.
60849
60852
  * @throws [[IModelError]] if the Transform is invalid for a GeometricElement3d.
60850
60853
  */
60851
60854
  multiplyTransform(other) {
@@ -72822,9 +72825,8 @@ __webpack_require__.r(__webpack_exports__);
72822
72825
  /* harmony import */ var _Deserialization_XmlSerializationUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Deserialization/XmlSerializationUtils */ "../../core/ecschema-metadata/lib/esm/Deserialization/XmlSerializationUtils.js");
72823
72826
  /* harmony import */ var _ECObjects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ECObjects */ "../../core/ecschema-metadata/lib/esm/ECObjects.js");
72824
72827
  /* harmony import */ var _Exception__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Exception */ "../../core/ecschema-metadata/lib/esm/Exception.js");
72825
- /* harmony import */ var _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @itwin/core-quantity */ "../../core/quantity/lib/esm/core-quantity.js");
72826
- /* harmony import */ var _OverrideFormat__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./OverrideFormat */ "../../core/ecschema-metadata/lib/esm/Metadata/OverrideFormat.js");
72827
- /* harmony import */ var _SchemaItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SchemaItem */ "../../core/ecschema-metadata/lib/esm/Metadata/SchemaItem.js");
72828
+ /* harmony import */ var _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OverrideFormat */ "../../core/ecschema-metadata/lib/esm/Metadata/OverrideFormat.js");
72829
+ /* harmony import */ var _SchemaItem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SchemaItem */ "../../core/ecschema-metadata/lib/esm/Metadata/SchemaItem.js");
72828
72830
  /*---------------------------------------------------------------------------------------------
72829
72831
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
72830
72832
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -72838,11 +72840,10 @@ __webpack_require__.r(__webpack_exports__);
72838
72840
 
72839
72841
 
72840
72842
 
72841
-
72842
72843
  /** A Typescript class representation of a KindOfQuantity.
72843
72844
  * @beta
72844
72845
  */
72845
- class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem {
72846
+ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_5__.SchemaItem {
72846
72847
  /** The first presentation format in the list of Formats. */
72847
72848
  get defaultPresentationFormat() { return this.presentationFormats[0]; }
72848
72849
  /** A list of presentation formats. */
@@ -72865,57 +72866,6 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
72865
72866
  // TODO: Add some sort of validation?
72866
72867
  (isDefault) ? this._presentationFormats.splice(0, 0, format) : this._presentationFormats.push(format);
72867
72868
  }
72868
- /** Parses the format string into the parts that make up an Override Format
72869
- * @param formatString
72870
- */
72871
- parseFormatString(formatString) {
72872
- const match = formatString.split(_itwin_core_quantity__WEBPACK_IMPORTED_MODULE_4__.formatStringRgx); // split string based on regex groups
72873
- if (undefined === match[1])
72874
- throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, `The format string, ${formatString}, on KindOfQuantity '${this.fullName}' is missing a format.`);
72875
- const returnValue = { name: match[1] };
72876
- if (undefined !== match[2] && undefined !== match[3]) {
72877
- const overrideString = match[2];
72878
- const tokens = [];
72879
- let prevPos = 1; // Initial position is the character directly after the opening '(' in the override string.
72880
- let currPos;
72881
- // TODO need to include `,` as a valid search argument.
72882
- while (-1 !== (currPos = overrideString.indexOf(")", prevPos))) { // eslint-disable-line
72883
- tokens.push(overrideString.substring(prevPos, currPos));
72884
- prevPos = currPos + 1;
72885
- }
72886
- if (overrideString.length > 0 && undefined === tokens.find((token) => {
72887
- return "" !== token; // there is at least one token that is not empty.
72888
- })) {
72889
- throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, ``);
72890
- }
72891
- // The first override parameter overrides the default precision of the format
72892
- const precisionIndx = 0;
72893
- if (tokens.length >= precisionIndx + 1) {
72894
- if (tokens[precisionIndx].length > 0) {
72895
- const precision = Number.parseInt(tokens[precisionIndx], 10);
72896
- if (Number.isNaN(precision))
72897
- throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, `The format string '${formatString}' on KindOfQuantity '${this.fullName}' has a precision override '${tokens[precisionIndx]}' that is not number.`);
72898
- returnValue.precision = precision;
72899
- }
72900
- }
72901
- }
72902
- let i = 4;
72903
- while (i < match.length - 1) { // The regex match ends with an empty last value, which causes problems when exactly 4 unit overrides as specified, so ignore this last empty value
72904
- if (undefined === match[i])
72905
- break;
72906
- // Unit override required
72907
- if (undefined === match[i + 1])
72908
- throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, ``);
72909
- if (undefined === returnValue.unitAndLabels)
72910
- returnValue.unitAndLabels = [];
72911
- if (undefined !== match[i + 2]) // matches '|'
72912
- returnValue.unitAndLabels.push([match[i + 1], match[i + 3] ?? ""]); // add unit name and label override (if '|' matches and next value is undefined, save it as an empty string)
72913
- else
72914
- returnValue.unitAndLabels.push([match[i + 1], undefined]); // add unit name
72915
- i += 4;
72916
- }
72917
- return returnValue;
72918
- }
72919
72869
  /** Creates an OverrideFormat in the context of this KindOfQuantity.
72920
72870
  * @param parent The Format to override.
72921
72871
  * @param precision The precision override
@@ -72927,12 +72877,12 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
72927
72877
  if (parent.units && 0 === parent.units.length && unitLabelOverrides && 0 < unitLabelOverrides.length)
72928
72878
  throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, `Cannot add a presentation format to KindOfQuantity '${this.name}' without any units and no unit overrides.`);
72929
72879
  // TODO: Check compatibility of Unit overrides with the persistence unit
72930
- return new _OverrideFormat__WEBPACK_IMPORTED_MODULE_5__.OverrideFormat(parent, precision, unitLabelOverrides);
72880
+ return new _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat(parent, precision, unitLabelOverrides);
72931
72881
  }
72932
72882
  async processPresentationUnits(presentationUnitsJson) {
72933
72883
  const presUnitsArr = Array.isArray(presentationUnitsJson) ? presentationUnitsJson : presentationUnitsJson.split(";");
72934
72884
  for (const formatString of presUnitsArr) {
72935
- const presFormatOverride = this.parseFormatString(formatString);
72885
+ const presFormatOverride = _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat.parseFormatString(formatString);
72936
72886
  const format = await this.schema.lookupItem(presFormatOverride.name);
72937
72887
  if (undefined === format || format.schemaItemType !== _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaItemType.Format)
72938
72888
  throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, `Unable to locate Format '${presFormatOverride.name}' for the presentation unit on KindOfQuantity ${this.fullName}.`);
@@ -72959,7 +72909,7 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
72959
72909
  processPresentationUnitsSync(presentationUnitsJson) {
72960
72910
  const presUnitsArr = Array.isArray(presentationUnitsJson) ? presentationUnitsJson : presentationUnitsJson.split(";");
72961
72911
  for (const formatString of presUnitsArr) {
72962
- const presFormatOverride = this.parseFormatString(formatString);
72912
+ const presFormatOverride = _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat.parseFormatString(formatString);
72963
72913
  const format = this.schema.lookupItemSync(presFormatOverride.name);
72964
72914
  if (undefined === format || format.schemaItemType !== _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaItemType.Format)
72965
72915
  throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, `Unable to locate Format '${presFormatOverride.name}' for the presentation unit on KindOfQuantity ${this.fullName}.`);
@@ -73006,7 +72956,7 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
73006
72956
  }
73007
72957
  if (undefined !== this.presentationFormats) {
73008
72958
  const presUnitStrings = this.presentationFormats.map((format) => {
73009
- if (!_OverrideFormat__WEBPACK_IMPORTED_MODULE_5__.OverrideFormat.isOverrideFormat(format))
72959
+ if (!_OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat.isOverrideFormat(format))
73010
72960
  return _Deserialization_XmlSerializationUtils__WEBPACK_IMPORTED_MODULE_1__.XmlSerializationUtils.createXmlTypedName(this.schema, format.schema, format.name);
73011
72961
  return format.fullNameXml(this.schema);
73012
72962
  });
@@ -73201,6 +73151,8 @@ __webpack_require__.r(__webpack_exports__);
73201
73151
  /* harmony export */ });
73202
73152
  /* harmony import */ var _Deserialization_XmlSerializationUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Deserialization/XmlSerializationUtils */ "../../core/ecschema-metadata/lib/esm/Deserialization/XmlSerializationUtils.js");
73203
73153
  /* harmony import */ var _ECObjects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ECObjects */ "../../core/ecschema-metadata/lib/esm/ECObjects.js");
73154
+ /* harmony import */ var _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @itwin/core-quantity */ "../../core/quantity/lib/esm/core-quantity.js");
73155
+ /* harmony import */ var _Exception__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Exception */ "../../core/ecschema-metadata/lib/esm/Exception.js");
73204
73156
  /*---------------------------------------------------------------------------------------------
73205
73157
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
73206
73158
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -73210,6 +73162,8 @@ __webpack_require__.r(__webpack_exports__);
73210
73162
  */
73211
73163
 
73212
73164
 
73165
+
73166
+
73213
73167
  /**
73214
73168
  * Overrides of a Format, from a Schema, and is SchemaItem that is used specifically on KindOfQuantity.
73215
73169
  * @beta
@@ -73278,6 +73232,57 @@ class OverrideFormat {
73278
73232
  fullName += `[${unit.fullName}|${unitLabel}]`;
73279
73233
  return fullName;
73280
73234
  }
73235
+ /** Parses the format string into the parts that make up an Override Format
73236
+ * @param formatString
73237
+ */
73238
+ static parseFormatString(formatString) {
73239
+ const match = formatString.split(_itwin_core_quantity__WEBPACK_IMPORTED_MODULE_2__.formatStringRgx); // split string based on regex groups
73240
+ if (undefined === match[1])
73241
+ throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, `The format string, ${formatString}, on KindOfQuantity is missing a format.`);
73242
+ const returnValue = { name: match[1] };
73243
+ if (undefined !== match[2] && undefined !== match[3]) {
73244
+ const overrideString = match[2];
73245
+ const tokens = [];
73246
+ let prevPos = 1; // Initial position is the character directly after the opening '(' in the override string.
73247
+ let currPos;
73248
+ // TODO need to include `,` as a valid search argument.
73249
+ while (-1 !== (currPos = overrideString.indexOf(")", prevPos))) { // eslint-disable-line
73250
+ tokens.push(overrideString.substring(prevPos, currPos));
73251
+ prevPos = currPos + 1;
73252
+ }
73253
+ if (overrideString.length > 0 && undefined === tokens.find((token) => {
73254
+ return "" !== token; // there is at least one token that is not empty.
73255
+ })) {
73256
+ throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, ``);
73257
+ }
73258
+ // The first override parameter overrides the default precision of the format
73259
+ const precisionIndx = 0;
73260
+ if (tokens.length >= precisionIndx + 1) {
73261
+ if (tokens[precisionIndx].length > 0) {
73262
+ const precision = Number.parseInt(tokens[precisionIndx], 10);
73263
+ if (Number.isNaN(precision))
73264
+ throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, `The format string '${formatString}' on KindOfQuantity has a precision override '${tokens[precisionIndx]}' that is not number.`);
73265
+ returnValue.precision = precision;
73266
+ }
73267
+ }
73268
+ }
73269
+ let i = 4;
73270
+ while (i < match.length - 1) { // The regex match ends with an empty last value, which causes problems when exactly 4 unit overrides as specified, so ignore this last empty value
73271
+ if (undefined === match[i])
73272
+ break;
73273
+ // Unit override required
73274
+ if (undefined === match[i + 1])
73275
+ throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, ``);
73276
+ if (undefined === returnValue.unitAndLabels)
73277
+ returnValue.unitAndLabels = [];
73278
+ if (undefined !== match[i + 2]) // matches '|'
73279
+ returnValue.unitAndLabels.push([match[i + 1], match[i + 3] ?? ""]); // add unit name and label override (if '|' matches and next value is undefined, save it as an empty string)
73280
+ else
73281
+ returnValue.unitAndLabels.push([match[i + 1], undefined]); // add unit name
73282
+ i += 4;
73283
+ }
73284
+ return returnValue;
73285
+ }
73281
73286
  /**
73282
73287
  * @internal
73283
73288
  */
@@ -84742,14 +84747,14 @@ class SectionAttachment {
84742
84747
  return this._drawingExtents.z;
84743
84748
  }
84744
84749
  get drawingRange() {
84745
- const frustum3d = this._originalFrustum.transformBy(this._toDrawing);
84750
+ const frustum3d = this._originalFrustum.transformBy(this.toDrawing);
84746
84751
  return frustum3d.toRange();
84747
84752
  }
84748
84753
  constructor(view, toDrawing, fromDrawing, toSheet) {
84749
84754
  this._viewRect = new _common_ViewRect__WEBPACK_IMPORTED_MODULE_13__.ViewRect(0, 0, 1, 1);
84750
84755
  this._originalFrustum = new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.Frustum();
84751
84756
  // Save the input for clone(). Attach a copy to the viewport.
84752
- this._toDrawing = toDrawing;
84757
+ this.toDrawing = toDrawing;
84753
84758
  this._fromDrawing = fromDrawing;
84754
84759
  this.viewport = _Viewport__WEBPACK_IMPORTED_MODULE_12__.OffScreenViewport.createViewport(view, new SectionTarget(this), true);
84755
84760
  this.symbologyOverrides = new _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_8__.FeatureSymbology.Overrides(view);
@@ -84757,13 +84762,14 @@ class SectionAttachment {
84757
84762
  let clip = this.view.getViewClip();
84758
84763
  if (clip) {
84759
84764
  clip = clip.clone();
84760
- const clipTransform = toSheet ? toSheet.multiplyTransformTransform(this._toDrawing) : this._toDrawing;
84765
+ const clipTransform = toSheet ? toSheet.multiplyTransformTransform(this.toDrawing) : this.toDrawing;
84761
84766
  clip.transformInPlace(clipTransform);
84762
84767
  clipVolume = _IModelApp__WEBPACK_IMPORTED_MODULE_7__.IModelApp.renderSystem.createClipVolume(clip);
84763
84768
  }
84764
84769
  this._branchOptions = {
84765
84770
  clipVolume,
84766
84771
  hline: view.getDisplayStyle3d().settings.hiddenLineSettings,
84772
+ viewAttachmentId: view.id,
84767
84773
  frustum: {
84768
84774
  is3d: true,
84769
84775
  scale: { x: 1, y: 1 },
@@ -84773,7 +84779,7 @@ class SectionAttachment {
84773
84779
  // Save off the original frustum (potentially adjusted by viewport).
84774
84780
  this.viewport.setupFromView();
84775
84781
  this.viewport.viewingSpace.getFrustum(_CoordSystem__WEBPACK_IMPORTED_MODULE_4__.CoordSystem.World, true, this._originalFrustum);
84776
- const drawingFrustum = this._originalFrustum.transformBy(this._toDrawing);
84782
+ const drawingFrustum = this._originalFrustum.transformBy(this.toDrawing);
84777
84783
  const drawingRange = drawingFrustum.toRange();
84778
84784
  this._drawingExtents = drawingRange.diagonal();
84779
84785
  this._drawingExtents.z = Math.abs(this._drawingExtents.z);
@@ -84788,7 +84794,7 @@ class SectionAttachment {
84788
84794
  if (0 === pixelSize)
84789
84795
  return;
84790
84796
  // Adjust offscreen viewport's frustum based on intersection with drawing view frustum.
84791
- const frustum3d = this._originalFrustum.transformBy(this._toDrawing);
84797
+ const frustum3d = this._originalFrustum.transformBy(this.toDrawing);
84792
84798
  const frustumRange3d = frustum3d.toRange();
84793
84799
  const frustum2d = context.viewport.getWorldFrustum();
84794
84800
  const frustumRange2d = frustum2d.toRange();
@@ -84821,7 +84827,7 @@ class SectionAttachment {
84821
84827
  graphics.symbologyOverrides = this.symbologyOverrides;
84822
84828
  for (const graphic of source)
84823
84829
  graphics.entries.push(graphic);
84824
- const branch = context.createGraphicBranch(graphics, this._toDrawing, this._branchOptions);
84830
+ const branch = context.createGraphicBranch(graphics, this.toDrawing, this._branchOptions);
84825
84831
  context.outputGraphic(branch);
84826
84832
  };
84827
84833
  outputGraphics(scene.foreground);
@@ -84994,6 +85000,17 @@ class DrawingViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewStat
84994
85000
  get secondaryViewports() {
84995
85001
  return this._attachment ? [this._attachment.viewport] : super.secondaryViewports;
84996
85002
  }
85003
+ /** @internal */
85004
+ getAttachmentViewport(id) {
85005
+ return id === this._attachment?.view.id ? this._attachment.viewport : undefined;
85006
+ }
85007
+ /** @internal */
85008
+ computeDisplayTransform(args) {
85009
+ if (args.viewAttachmentId === undefined || args.viewAttachmentId !== this._attachment?.view.id) {
85010
+ return undefined;
85011
+ }
85012
+ return this._attachment.toDrawing;
85013
+ }
84997
85014
  }
84998
85015
  /** Exposed strictly for testing and debugging. Indicates that when loading the view, the spatial view should be displayed even
84999
85016
  * if `SectionDrawing.displaySpatialView` is not `true`.
@@ -87700,8 +87717,7 @@ class HitDetail {
87700
87717
  * @alpha
87701
87718
  */
87702
87719
  get isClassifier() { return this._props.isClassifier; }
87703
- /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.
87704
- * @note Only [[SheetViewState]]s can have view attachments.
87720
+ /** Information about the attached view within which the hit geometry resides, if any.
87705
87721
  * @beta
87706
87722
  */
87707
87723
  get viewAttachment() { return this._props.viewAttachment; }
@@ -98385,7 +98401,9 @@ class ViewState extends _EntityState__WEBPACK_IMPORTED_MODULE_5__.ElementState {
98385
98401
  get secondaryViewports() {
98386
98402
  return [];
98387
98403
  }
98388
- /** Find the viewport that renders the contents of the view attachment with the specified element Id into this view.
98404
+ /** Find the viewport that renders the contents of the attached view with the specified element Id into this view.
98405
+ * For a sheet view, the Id refers to a ViewAttachment.
98406
+ * For a section drawing, it refers to a SpatialViewDefinition.
98389
98407
  * @internal
98390
98408
  */
98391
98409
  getAttachmentViewport(_id) {
@@ -99572,6 +99590,9 @@ class ViewingSpace {
99572
99590
  zMax = Math.max(zMax, 1.0); // make sure we have at least +-1m. Data may be purely planar
99573
99591
  delta.z = 2.0 * zMax;
99574
99592
  origin.z = -zMax;
99593
+ const ds = this.view.displayStyle;
99594
+ if (ds.getIsBackgroundMapVisible() && undefined !== ds.getBackgroundMapGeometry())
99595
+ this.adjustZPlanes(origin, delta); // make sure view volume includes background map
99575
99596
  }
99576
99597
  else {
99577
99598
  if (view.isCameraOn)
@@ -193559,7 +193580,6 @@ __webpack_require__.r(__webpack_exports__);
193559
193580
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
193560
193581
  /* harmony export */ "AkimaCurve3d": () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_97__.AkimaCurve3d),
193561
193582
  /* harmony export */ "AkimaCurve3dOptions": () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_97__.AkimaCurve3dOptions),
193562
- /* harmony export */ "AnalyticRoots": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.AnalyticRoots),
193563
193583
  /* harmony export */ "Angle": () => (/* reexport safe */ _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle),
193564
193584
  /* harmony export */ "AngleSweep": () => (/* reexport safe */ _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep),
193565
193585
  /* harmony export */ "AnnotatedLineString3d": () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_73__.AnnotatedLineString3d),
@@ -193589,7 +193609,6 @@ __webpack_require__.r(__webpack_exports__);
193589
193609
  /* harmony export */ "BezierCurveBase": () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_99__.BezierCurveBase),
193590
193610
  /* harmony export */ "BezierPolynomialAlgebra": () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierPolynomialAlgebra),
193591
193611
  /* harmony export */ "BilinearPatch": () => (/* reexport safe */ _geometry3d_BilinearPatch__WEBPACK_IMPORTED_MODULE_4__.BilinearPatch),
193592
- /* harmony export */ "BilinearPolynomial": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.BilinearPolynomial),
193593
193612
  /* harmony export */ "BooleanClipFactory": () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__.BooleanClipFactory),
193594
193613
  /* harmony export */ "Box": () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_88__.Box),
193595
193614
  /* harmony export */ "BoxTopology": () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_110__.BoxTopology),
@@ -193631,9 +193650,6 @@ __webpack_require__.r(__webpack_exports__);
193631
193650
  /* harmony export */ "CutLoop": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoop),
193632
193651
  /* harmony export */ "CutLoopMergeContext": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoopMergeContext),
193633
193652
  /* harmony export */ "DeepCompare": () => (/* reexport safe */ _serialization_DeepCompare__WEBPACK_IMPORTED_MODULE_127__.DeepCompare),
193634
- /* harmony export */ "Degree2PowerPolynomial": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree2PowerPolynomial),
193635
- /* harmony export */ "Degree3PowerPolynomial": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree3PowerPolynomial),
193636
- /* harmony export */ "Degree4PowerPolynomial": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.Degree4PowerPolynomial),
193637
193653
  /* harmony export */ "DirectSpiral3d": () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_85__.DirectSpiral3d),
193638
193654
  /* harmony export */ "DuplicateFacetClusterSelector": () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_119__.DuplicateFacetClusterSelector),
193639
193655
  /* harmony export */ "Ellipsoid": () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.Ellipsoid),
@@ -193644,7 +193660,7 @@ __webpack_require__.r(__webpack_exports__);
193644
193660
  /* harmony export */ "FacetIntersectOptions": () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_113__.FacetIntersectOptions),
193645
193661
  /* harmony export */ "FacetLocationDetailPair": () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_113__.FacetLocationDetailPair),
193646
193662
  /* harmony export */ "FrameBuilder": () => (/* reexport safe */ _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_6__.FrameBuilder),
193647
- /* harmony export */ "GaussMapper": () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.GaussMapper),
193663
+ /* harmony export */ "GaussMapper": () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_55__.GaussMapper),
193648
193664
  /* harmony export */ "GeodesicPathPoint": () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathPoint),
193649
193665
  /* harmony export */ "GeodesicPathSolver": () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathSolver),
193650
193666
  /* harmony export */ "Geometry": () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.Geometry),
@@ -193657,7 +193673,6 @@ __webpack_require__.r(__webpack_exports__);
193657
193673
  /* harmony export */ "GrowableXYArray": () => (/* reexport safe */ _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYArray),
193658
193674
  /* harmony export */ "GrowableXYZArray": () => (/* reexport safe */ _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray),
193659
193675
  /* harmony export */ "IModelJson": () => (/* reexport safe */ _serialization_IModelJsonSchema__WEBPACK_IMPORTED_MODULE_126__.IModelJson),
193660
- /* harmony export */ "ImplicitLineXY": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.ImplicitLineXY),
193661
193676
  /* harmony export */ "IndexedCollectionInterval": () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedCollectionInterval),
193662
193677
  /* harmony export */ "IndexedPolyface": () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_112__.IndexedPolyface),
193663
193678
  /* harmony export */ "IndexedPolyfaceSubsetVisitor": () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_114__.IndexedPolyfaceSubsetVisitor),
@@ -193727,11 +193742,10 @@ __webpack_require__.r(__webpack_exports__);
193727
193742
  /* harmony export */ "PolygonLocationDetailPair": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonLocationDetailPair),
193728
193743
  /* harmony export */ "PolygonOps": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonOps),
193729
193744
  /* harmony export */ "PolylineOps": () => (/* reexport safe */ _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_26__.PolylineOps),
193730
- /* harmony export */ "PowerPolynomial": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.PowerPolynomial),
193731
193745
  /* harmony export */ "ProxyCurve": () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_81__.ProxyCurve),
193732
- /* harmony export */ "Quadrature": () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__.Quadrature),
193746
+ /* harmony export */ "Quadrature": () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_55__.Quadrature),
193733
193747
  /* harmony export */ "Range1d": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range1d),
193734
- /* harmony export */ "Range1dArray": () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.Range1dArray),
193748
+ /* harmony export */ "Range1dArray": () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_56__.Range1dArray),
193735
193749
  /* harmony export */ "Range2d": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range2d),
193736
193750
  /* harmony export */ "Range3d": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d),
193737
193751
  /* harmony export */ "RangeBase": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.RangeBase),
@@ -193748,13 +193762,11 @@ __webpack_require__.r(__webpack_exports__);
193748
193762
  /* harmony export */ "Sample": () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.Sample),
193749
193763
  /* harmony export */ "Segment1d": () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__.Segment1d),
193750
193764
  /* harmony export */ "SerializationHelpers": () => (/* reexport safe */ _serialization_SerializationHelpers__WEBPACK_IMPORTED_MODULE_129__.SerializationHelpers),
193751
- /* harmony export */ "SineCosinePolynomial": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SineCosinePolynomial),
193752
- /* harmony export */ "SmallSystem": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SmallSystem),
193765
+ /* harmony export */ "SmallSystem": () => (/* reexport safe */ _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_57__.SmallSystem),
193753
193766
  /* harmony export */ "SmoothTransformBetweenFrusta": () => (/* reexport safe */ _geometry3d_FrustumAnimation__WEBPACK_IMPORTED_MODULE_7__.SmoothTransformBetweenFrusta),
193754
193767
  /* harmony export */ "SolidPrimitive": () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_93__.SolidPrimitive),
193755
193768
  /* harmony export */ "SpacePolygonTriangulation": () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__.SpacePolygonTriangulation),
193756
193769
  /* harmony export */ "Sphere": () => (/* reexport safe */ _solid_Sphere__WEBPACK_IMPORTED_MODULE_94__.Sphere),
193757
- /* harmony export */ "SphereImplicit": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SphereImplicit),
193758
193770
  /* harmony export */ "StandardViewIndex": () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.StandardViewIndex),
193759
193771
  /* harmony export */ "SteppedIndexFunctionFactory": () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.SteppedIndexFunctionFactory),
193760
193772
  /* harmony export */ "StringifiedClipVector": () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.StringifiedClipVector),
@@ -193764,14 +193776,12 @@ __webpack_require__.r(__webpack_exports__);
193764
193776
  /* harmony export */ "SweepLineStringToFacetsOptions": () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_119__.SweepLineStringToFacetsOptions),
193765
193777
  /* harmony export */ "TaggedNumericConstants": () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_124__.TaggedNumericConstants),
193766
193778
  /* harmony export */ "TaggedNumericData": () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_124__.TaggedNumericData),
193767
- /* harmony export */ "TorusImplicit": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TorusImplicit),
193768
193779
  /* harmony export */ "TorusPipe": () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_96__.TorusPipe),
193769
193780
  /* harmony export */ "Transform": () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__.Transform),
193770
193781
  /* harmony export */ "TransitionSpiral3d": () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_83__.TransitionSpiral3d),
193771
193782
  /* harmony export */ "TriDiagonalSystem": () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__.TriDiagonalSystem),
193772
193783
  /* harmony export */ "TriangleLocationDetail": () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.TriangleLocationDetail),
193773
193784
  /* harmony export */ "TriangularFacetLocationDetail": () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_113__.TriangularFacetLocationDetail),
193774
- /* harmony export */ "TrigPolynomial": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.TrigPolynomial),
193775
193785
  /* harmony export */ "UVSelect": () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_106__.UVSelect),
193776
193786
  /* harmony export */ "UVSurfaceOps": () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__.UVSurfaceOps),
193777
193787
  /* harmony export */ "UnionOfConvexClipPlaneSets": () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__.UnionOfConvexClipPlaneSets),
@@ -193785,7 +193795,7 @@ __webpack_require__.r(__webpack_exports__);
193785
193795
  /* harmony export */ "XYAndZ": () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__.XYAndZ),
193786
193796
  /* harmony export */ "XYZ": () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.XYZ),
193787
193797
  /* harmony export */ "YawPitchRollAngles": () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__.YawPitchRollAngles),
193788
- /* harmony export */ "compareRange1dLexicalLowHigh": () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__.compareRange1dLexicalLowHigh)
193798
+ /* harmony export */ "compareRange1dLexicalLowHigh": () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_56__.compareRange1dLexicalLowHigh)
193789
193799
  /* harmony export */ });
193790
193800
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
193791
193801
  /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
@@ -193842,9 +193852,9 @@ __webpack_require__.r(__webpack_exports__);
193842
193852
  /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
193843
193853
  /* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
193844
193854
  /* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
193845
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
193846
- /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
193847
- /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
193855
+ /* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
193856
+ /* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
193857
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
193848
193858
  /* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
193849
193859
  /* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
193850
193860
  /* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
@@ -194194,20 +194204,21 @@ __webpack_require__.r(__webpack_exports__);
194194
194204
  /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
194195
194205
  /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
194196
194206
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
194197
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
194207
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
194198
194208
  /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
194199
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
194200
- /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
194209
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
194210
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
194211
+ /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
194201
194212
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
194202
194213
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
194203
- /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
194204
- /* harmony import */ var _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/EllipticalArcApproximationContext */ "../../core/geometry/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js");
194205
- /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
194214
+ /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
194215
+ /* harmony import */ var _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./internalContexts/EllipticalArcApproximationContext */ "../../core/geometry/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js");
194216
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
194206
194217
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
194207
194218
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
194208
- /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
194209
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
194210
- /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
194219
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
194220
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
194221
+ /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
194211
194222
  /*---------------------------------------------------------------------------------------------
194212
194223
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
194213
194224
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -194231,6 +194242,7 @@ __webpack_require__.r(__webpack_exports__);
194231
194242
 
194232
194243
 
194233
194244
 
194245
+
194234
194246
 
194235
194247
 
194236
194248
  /**
@@ -194651,7 +194663,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
194651
194663
  const ac2 = vectorAC.magnitudeSquared();
194652
194664
  const normal = vectorAB.sizedCrossProduct(vectorAC, Math.sqrt(Math.sqrt(ab2 * ac2)));
194653
194665
  if (normal) {
194654
- const vectorToCenter = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.linearSystem3d(normal.x, normal.y, normal.z, vectorAB.x, vectorAB.y, vectorAB.z, vectorAC.x, vectorAC.y, vectorAC.z, 0, // vectorToCenter DOT normal = 0 (ensure normal is perp to the plane of the 3 points)
194666
+ const vectorToCenter = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.linearSystem3d(normal.x, normal.y, normal.z, vectorAB.x, vectorAB.y, vectorAB.z, vectorAC.x, vectorAC.y, vectorAC.z, 0, // vectorToCenter DOT normal = 0 (ensure normal is perp to the plane of the 3 points)
194655
194667
  0.5 * ab2, // vectorToCenter DOT vectorAB = ab2 / 2 (ensure the projection of vectorToCenter on AB bisects AB)
194656
194668
  0.5 * ac2);
194657
194669
  if (vectorToCenter) { // i.e., the negative of vectorX
@@ -194886,7 +194898,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
194886
194898
  const uu = this._matrix.columnXMagnitudeSquared();
194887
194899
  const uv = this._matrix.columnXDotColumnY();
194888
194900
  const vv = this._matrix.columnYMagnitudeSquared();
194889
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(uv, vv - uu, -uv, this._matrix.dotColumnY(vectorQ), -this._matrix.dotColumnX(vectorQ), 0.0, radians);
194901
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__.TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(uv, vv - uu, -uv, this._matrix.dotColumnY(vectorQ), -this._matrix.dotColumnX(vectorQ), 0.0, radians);
194890
194902
  if (endpoints) {
194891
194903
  radians.push(this.sweep.startRadians);
194892
194904
  radians.push(this.sweep.endRadians);
@@ -194903,14 +194915,14 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
194903
194915
  closestPoint(spacePoint, extend, result) {
194904
194916
  result = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.create(this, result);
194905
194917
  const allRadians = this.allPerpendicularAngles(spacePoint, true, true);
194906
- let extend0 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__.CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 0);
194907
- let extend1 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__.CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 1);
194918
+ let extend0 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 0);
194919
+ let extend1 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 1);
194908
194920
  // distinct extends for cyclic space are awkward ....
194909
194921
  if (this._sweep.isFullCircle) {
194910
- extend0 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__.CurveExtendMode.None;
194911
- extend1 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__.CurveExtendMode.None;
194922
+ extend0 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None;
194923
+ extend1 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None;
194912
194924
  }
194913
- if (extend0 !== _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__.CurveExtendMode.None && extend1 !== _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__.CurveExtendMode.None) {
194925
+ if (extend0 !== _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None && extend1 !== _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None) {
194914
194926
  allRadians.push(this._sweep.startRadians);
194915
194927
  allRadians.push(this._sweep.endRadians);
194916
194928
  }
@@ -194924,7 +194936,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
194924
194936
  let dMin = Number.MAX_VALUE;
194925
194937
  let d = 0;
194926
194938
  for (const radians of allRadians) {
194927
- const fraction = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__.CurveExtendOptions.resolveRadiansToSweepFraction(extend, radians, this.sweep);
194939
+ const fraction = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendOptions.resolveRadiansToSweepFraction(extend, radians, this.sweep);
194928
194940
  if (fraction !== undefined) {
194929
194941
  this.fractionToPointAndDerivative(fraction, workRay);
194930
194942
  d = spacePoint.distance(workRay.origin);
@@ -195036,7 +195048,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195036
195048
  * @param transform optional transform to apply to the arc.
195037
195049
  */
195038
195050
  extendRangeInSweep(range, sweep, transform) {
195039
- const trigForm = new _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SineCosinePolynomial(0, 0, 0);
195051
+ const trigForm = new _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__.SineCosinePolynomial(0, 0, 0);
195040
195052
  const center = this._center.clone(Arc3d._workPointA);
195041
195053
  const vectorU = this._matrix.columnX(Arc3d._workVectorU);
195042
195054
  const vectorV = this._matrix.columnY(Arc3d._workVectorV);
@@ -195047,7 +195059,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195047
195059
  }
195048
195060
  const lowPoint = Arc3d._workPointB;
195049
195061
  const highPoint = Arc3d._workPointC;
195050
- const range1 = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range1d.createNull();
195062
+ const range1 = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_15__.Range1d.createNull();
195051
195063
  for (let i = 0; i < 3; i++) {
195052
195064
  trigForm.set(center.at(i), vectorU.at(i), vectorV.at(i));
195053
195065
  trigForm.rangeInSweep(sweep, range1);
@@ -195063,7 +195075,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195063
195075
  */
195064
195076
  rangeBetweenFractions(fraction0, fraction1, transform) {
195065
195077
  const sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__.AngleSweep.createStartEndRadians(this.sweep.fractionToRadians(fraction0), this.sweep.fractionToRadians(fraction1));
195066
- const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.create();
195078
+ const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_15__.Range3d.create();
195067
195079
  this.extendRangeInSweep(range, sweep, transform);
195068
195080
  return range;
195069
195081
  }
@@ -195076,7 +195088,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195076
195088
  */
195077
195089
  getPlaneAltitudeSineCosinePolynomial(plane, result) {
195078
195090
  if (!result)
195079
- result = new _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SineCosinePolynomial(0, 0, 0);
195091
+ result = new _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__.SineCosinePolynomial(0, 0, 0);
195080
195092
  // altitude function of angle t, given plane with origin o and unit normal n:
195081
195093
  // A(t) = (c + u cos(t) + v sin(t)) . n = (c-o).n + u.n cos(t) + v.n sin(t)
195082
195094
  // Note the different functions for computing dot product against a point vs. a vector!
@@ -195229,7 +195241,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195229
195241
  numStroke = options.applyTolerancesToArc(rMax, this._sweep.sweepRadians);
195230
195242
  }
195231
195243
  else {
195232
- numStroke = _StrokeOptions__WEBPACK_IMPORTED_MODULE_15__.StrokeOptions.applyAngleTol(undefined, 1, this._sweep.sweepRadians);
195244
+ numStroke = _StrokeOptions__WEBPACK_IMPORTED_MODULE_16__.StrokeOptions.applyAngleTol(undefined, 1, this._sweep.sweepRadians);
195233
195245
  }
195234
195246
  return numStroke;
195235
195247
  }
@@ -195368,7 +195380,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195368
195380
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
195369
195381
  */
195370
195382
  constructOffsetXY(offsetDistanceOrOptions) {
195371
- const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_16__.OffsetOptions.create(offsetDistanceOrOptions);
195383
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
195372
195384
  if (this.isCircular || options.preserveEllipticalArcs) {
195373
195385
  const arcXY = this.cloneAtZ();
195374
195386
  const sign = arcXY.sweep.sweepRadians * arcXY.matrixRef.coffs[8] >= 0.0 ? 1.0 : -1.0;
@@ -195390,7 +195402,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195390
195402
  }
195391
195403
  }
195392
195404
  // default impl
195393
- const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_17__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
195405
+ const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_18__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
195394
195406
  this.emitStrokableParts(handler, options.strokeOptions);
195395
195407
  return handler.claimResult();
195396
195408
  }
@@ -195401,7 +195413,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195401
195413
  * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
195402
195414
  */
195403
195415
  projectedParameterRange(ray, lowHigh) {
195404
- return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
195416
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_19__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
195405
195417
  }
195406
195418
  /**
195407
195419
  * Construct a circular arc chain approximation to the instance elliptical arc.
@@ -195411,10 +195423,10 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
195411
195423
  constructCircularArcChainApproximation(options) {
195412
195424
  if (!options)
195413
195425
  options = EllipticalArcApproximationOptions.create();
195414
- const context = _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_19__.EllipticalArcApproximationContext.create(this);
195426
+ const context = _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_20__.EllipticalArcApproximationContext.create(this);
195415
195427
  const result = context.constructCircularArcChainApproximation(options);
195416
195428
  if (!result && this.isCircular)
195417
- return (this.sweep.isFullCircle && options.forcePath) ? _Path__WEBPACK_IMPORTED_MODULE_20__.Path.create(this) : this;
195429
+ return (this.sweep.isFullCircle && options.forcePath) ? _Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(this) : this;
195418
195430
  return result;
195419
195431
  }
195420
195432
  }
@@ -197196,7 +197208,7 @@ __webpack_require__.r(__webpack_exports__);
197196
197208
  /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
197197
197209
  /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
197198
197210
  /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
197199
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
197211
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
197200
197212
  /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
197201
197213
  /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
197202
197214
  /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
@@ -197729,7 +197741,7 @@ class CurveFactory {
197729
197741
  const vectorA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitAB, sA, unitPerpAB, tA);
197730
197742
  const vectorB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitCB, sB, unitPerpCB, tB);
197731
197743
  const uv = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Vector2d.create();
197732
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem2d(unitAB.x, -unitCB.x, unitAB.y, -unitCB.y, vectorB.x - vectorA.x, vectorB.y - vectorA.y, uv)) {
197744
+ if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem2d(unitAB.x, -unitCB.x, unitAB.y, -unitCB.y, vectorB.x - vectorA.x, vectorB.y - vectorA.y, uv)) {
197733
197745
  const tangencyAB = pointB.plusScaled(unitAB, uv.x);
197734
197746
  const tangencyCB = pointB.plusScaled(unitCB, uv.y);
197735
197747
  const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createOriginAndMatrixColumns(tangencyAB, unitAB, unitPerpAB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
@@ -197765,7 +197777,7 @@ class CurveFactory {
197765
197777
  const normalCx = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAy, normalAz, normalBy, normalBz);
197766
197778
  const normalCy = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAz, normalAx, normalBz, normalBx);
197767
197779
  const normalCz = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAx, normalAy, normalBx, normalBy);
197768
- const rayOrigin = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem3d(normalAx, normalAy, normalAz, normalBx, normalBy, normalBz, normalCx, normalCy, normalCz, -altitudeA, -altitudeB, 0.0);
197780
+ const rayOrigin = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem3d(normalAx, normalAy, normalAz, normalBx, normalBy, normalBz, normalCx, normalCy, normalCz, -altitudeA, -altitudeB, 0.0);
197769
197781
  if (rayOrigin !== undefined) {
197770
197782
  return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__.Ray3d.createXYZUVW(rayOrigin.x, rayOrigin.y, rayOrigin.z, normalCx, normalCy, normalCz);
197771
197783
  }
@@ -199423,7 +199435,7 @@ __webpack_require__.r(__webpack_exports__);
199423
199435
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
199424
199436
  /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
199425
199437
  /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
199426
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
199438
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
199427
199439
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
199428
199440
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
199429
199441
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
@@ -199655,7 +199667,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePr
199655
199667
  const unboundedFractions = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Vector2d.create();
199656
199668
  if (result === undefined)
199657
199669
  result = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair.createCapture(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.create(), _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.create());
199658
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dClosestApproachUnbounded(segmentA._point0, segmentA._point1, segmentB._point0, segmentB._point1, unboundedFractions)) {
199670
+ if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dClosestApproachUnbounded(segmentA._point0, segmentA._point1, segmentB._point0, segmentB._point1, unboundedFractions)) {
199659
199671
  // There is a simple approach between the unbounded segments. Maybe its a really easy case ...
199660
199672
  const fractionA = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_5__.CurveExtendOptions.correctFraction(extendA, unboundedFractions.x);
199661
199673
  const fractionB = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_5__.CurveExtendOptions.correctFraction(extendB, unboundedFractions.y);
@@ -206581,17 +206593,18 @@ __webpack_require__.r(__webpack_exports__);
206581
206593
  /* harmony export */ "CurveCurveCloseApproachXY": () => (/* binding */ CurveCurveCloseApproachXY)
206582
206594
  /* harmony export */ });
206583
206595
  /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
206584
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
206596
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
206585
206597
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
206586
206598
  /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
206587
206599
  /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
206588
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
206589
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
206600
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
206601
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
206590
206602
  /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
206591
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
206603
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
206604
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
206592
206605
  /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
206593
- /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
206594
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
206606
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
206607
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
206595
206608
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
206596
206609
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
206597
206610
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
@@ -206617,6 +206630,7 @@ __webpack_require__.r(__webpack_exports__);
206617
206630
 
206618
206631
 
206619
206632
 
206633
+
206620
206634
  // cspell:word XYRR currentdFdX
206621
206635
  /**
206622
206636
  * Handler class for XY close approach between _geometryB and another geometry.
@@ -207045,7 +207059,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207045
207059
  const arcPoint = arc.radiansToPoint(radians1);
207046
207060
  const fArc = arc.sweep.radiansToSignedPeriodicFraction(radians1);
207047
207061
  if (this.acceptFraction(fArc)) { // reject solution outside arc sweep
207048
- const fLine = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0, pointA1, arcPoint);
207062
+ const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0, pointA1, arcPoint);
207049
207063
  if (fLine !== undefined && this.acceptFraction(fLine))
207050
207064
  this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
207051
207065
  }
@@ -207086,12 +207100,12 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207086
207100
  const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__.GrowableFloat64Array(2);
207087
207101
  const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__.GrowableFloat64Array(2);
207088
207102
  const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__.GrowableFloat64Array(2);
207089
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(// solve the equation
207103
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_10__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(// solve the equation
207090
207104
  alpha, beta, gamma, cosines, sines, radians);
207091
207105
  for (let i = 0; i < numRoots; i++) {
207092
207106
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
207093
207107
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
207094
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
207108
+ const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
207095
207109
  // only add if the point is within the start and end fractions of both line segment and arc
207096
207110
  if (lineFraction !== undefined && this.acceptFraction(lineFraction) && this.acceptFraction(arcFraction)) {
207097
207111
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, arcFraction, arc, 0, 1, reversed);
@@ -207213,7 +207227,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207213
207227
  /** Low level dispatch of curve collection. */
207214
207228
  dispatchCurveCollection(geomA, geomAHandler) {
207215
207229
  const geomB = this._geometryB; // save
207216
- if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_10__.CurveCollection))
207230
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection))
207217
207231
  return;
207218
207232
  for (const child of geomB.children) {
207219
207233
  this.resetGeometry(child);
@@ -207223,9 +207237,9 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207223
207237
  }
207224
207238
  /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
207225
207239
  dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
207226
- if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex))
207240
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex))
207227
207241
  return;
207228
- if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
207242
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
207229
207243
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "call handleCurveChainWithDistanceIndex(geomA) instead");
207230
207244
  return;
207231
207245
  }
@@ -207236,7 +207250,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207236
207250
  geomAHandler(geomA);
207237
207251
  }
207238
207252
  this.resetGeometry(geomB); // restore
207239
- this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
207253
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
207240
207254
  }
207241
207255
  /** Double dispatch handler for strongly typed segment. */
207242
207256
  handleLineSegment3d(segmentA) {
@@ -207250,13 +207264,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207250
207264
  else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
207251
207265
  this.dispatchSegmentArc(segmentA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._geometryB, false);
207252
207266
  }
207253
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
207267
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3d) {
207254
207268
  this.dispatchSegmentBsplineCurve(segmentA, this._geometryB, false);
207255
207269
  }
207256
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_10__.CurveCollection) {
207270
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
207257
207271
  this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
207258
207272
  }
207259
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
207273
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
207260
207274
  this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
207261
207275
  }
207262
207276
  return undefined;
@@ -207299,7 +207313,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207299
207313
  return;
207300
207314
  let bitB0;
207301
207315
  let bitB1;
207302
- const rangeA1 = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.createNull();
207316
+ const rangeA1 = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
207303
207317
  const pointA0 = CurveCurveCloseApproachXY._workPointAA0;
207304
207318
  const pointA1 = CurveCurveCloseApproachXY._workPointAA1;
207305
207319
  const pointB0 = CurveCurveCloseApproachXY._workPointBB0;
@@ -207349,13 +207363,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207349
207363
  else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
207350
207364
  this.computeArcLineString(this._geometryB, lsA, true);
207351
207365
  }
207352
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
207366
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3d) {
207353
207367
  this.dispatchLineStringBSplineCurve(lsA, this._geometryB, false);
207354
207368
  }
207355
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_10__.CurveCollection) {
207369
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
207356
207370
  this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
207357
207371
  }
207358
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
207372
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
207359
207373
  this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
207360
207374
  }
207361
207375
  return undefined;
@@ -207371,13 +207385,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207371
207385
  else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
207372
207386
  this.dispatchArcArc(arc0, this._geometryB, false);
207373
207387
  }
207374
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
207388
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3d) {
207375
207389
  this.dispatchArcBsplineCurve3d(arc0, this._geometryB, false);
207376
207390
  }
207377
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_10__.CurveCollection) {
207391
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
207378
207392
  this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
207379
207393
  }
207380
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
207394
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
207381
207395
  this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
207382
207396
  }
207383
207397
  return undefined;
@@ -207393,13 +207407,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207393
207407
  else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
207394
207408
  this.dispatchArcBsplineCurve3d(this._geometryB, curve, true);
207395
207409
  }
207396
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3dBase) {
207410
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3dBase) {
207397
207411
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
207398
207412
  }
207399
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_10__.CurveCollection) {
207413
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
207400
207414
  this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
207401
207415
  }
207402
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
207416
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
207403
207417
  this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
207404
207418
  }
207405
207419
  return undefined;
@@ -207408,7 +207422,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207408
207422
  handleCurveChainWithDistanceIndex(chain) {
207409
207423
  super.handleCurveChainWithDistanceIndex(chain);
207410
207424
  // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
207411
- this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
207425
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
207412
207426
  }
207413
207427
  /** Double dispatch handler for strongly typed homogeneous bspline curve .. */
207414
207428
  handleBSplineCurve3dH(_curve) {
@@ -207428,11 +207442,11 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
207428
207442
  return undefined;
207429
207443
  }
207430
207444
  }
207431
- CurveCurveCloseApproachXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.create();
207432
- CurveCurveCloseApproachXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.create();
207433
- CurveCurveCloseApproachXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.create();
207434
- CurveCurveCloseApproachXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.create();
207435
- CurveCurveCloseApproachXY._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.create();
207445
+ CurveCurveCloseApproachXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
207446
+ CurveCurveCloseApproachXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
207447
+ CurveCurveCloseApproachXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
207448
+ CurveCurveCloseApproachXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
207449
+ CurveCurveCloseApproachXY._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
207436
207450
 
207437
207451
 
207438
207452
  /***/ }),
@@ -207449,26 +207463,27 @@ __webpack_require__.r(__webpack_exports__);
207449
207463
  /* harmony export */ "CurveCurveIntersectXY": () => (/* binding */ CurveCurveIntersectXY)
207450
207464
  /* harmony export */ });
207451
207465
  /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
207452
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
207466
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
207453
207467
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
207454
207468
  /* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
207455
207469
  /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
207456
207470
  /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
207457
- /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
207458
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
207459
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
207460
- /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
207461
- /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
207462
- /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
207463
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
207464
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
207465
- /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
207466
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
207471
+ /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
207472
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
207473
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
207474
+ /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
207475
+ /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
207476
+ /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
207477
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
207478
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
207479
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
207480
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
207481
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
207467
207482
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
207468
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
207469
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
207470
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
207471
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
207483
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
207484
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
207485
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
207486
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
207472
207487
  /*---------------------------------------------------------------------------------------------
207473
207488
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
207474
207489
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -207495,6 +207510,7 @@ __webpack_require__.r(__webpack_exports__);
207495
207510
 
207496
207511
 
207497
207512
 
207513
+
207498
207514
 
207499
207515
 
207500
207516
  // cspell:word XYRR
@@ -207651,7 +207667,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207651
207667
  this.recordPointWithLocalFractions(overlap.detailA.fraction, cpA, fractionA0, fractionA1, overlap.detailB.fraction, cpB, fractionB0, fractionB1, reversed, overlap);
207652
207668
  }
207653
207669
  }
207654
- else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
207670
+ else if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
207655
207671
  if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance) &&
207656
207672
  this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
207657
207673
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
@@ -207671,7 +207687,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207671
207687
  this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1, hA1);
207672
207688
  this._worldToLocalPerspective.multiplyPoint3d(pointB0, 1, hB0);
207673
207689
  this._worldToLocalPerspective.multiplyPoint3d(pointB1, 1, hB1);
207674
- const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
207690
+ const fractionAB = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
207675
207691
  if (fractionAB !== undefined) {
207676
207692
  const fractionA = fractionAB.x;
207677
207693
  const fractionB = fractionAB.y;
@@ -207720,11 +207736,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207720
207736
  const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
207721
207737
  const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
207722
207738
  const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
207723
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
207739
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
207724
207740
  for (let i = 0; i < numRoots; i++) {
207725
207741
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
207726
207742
  const arcFraction = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
207727
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
207743
+ const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
207728
207744
  if (lineFraction !== undefined &&
207729
207745
  this.acceptFraction(extendA0, lineFraction, extendA1) &&
207730
207746
  this.acceptFraction(extendB0, arcFraction, extendB1)) {
@@ -207746,13 +207762,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207746
207762
  const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
207747
207763
  const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
207748
207764
  const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
207749
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
207765
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
207750
207766
  const lineFractionTol = 1.0e-10; // TODO: why are we loosening tolerances here?
207751
207767
  const arcFractionTol = 1.0e-7;
207752
207768
  for (let i = 0; i < numRoots; i++) {
207753
207769
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
207754
207770
  const arcFraction = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
207755
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
207771
+ const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
207756
207772
  if (lineFraction !== undefined &&
207757
207773
  this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol) &&
207758
207774
  this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
@@ -207776,7 +207792,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207776
207792
  const ellipseRadians = [];
207777
207793
  const circleRadians = [];
207778
207794
  // find the intersection of the transformed arcs
207779
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
207795
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
207780
207796
  localB.coffs[0], localB.coffs[3], localB.coffs[6], // vector0 xyw
207781
207797
  localB.coffs[1], localB.coffs[4], localB.coffs[7], // vector90 xyw
207782
207798
  ellipseRadians, circleRadians);
@@ -207803,14 +207819,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207803
207819
  if (this._worldToLocalPerspective) {
207804
207820
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
207805
207821
  const dataB = cpB.toTransformedPoint4d(this._worldToLocalPerspective);
207806
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_7__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
207807
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_7__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
207822
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
207823
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
207808
207824
  }
207809
207825
  else {
207810
207826
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
207811
207827
  const dataB = cpB.toTransformedVectors(this._worldToLocalAffine);
207812
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_7__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
207813
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_7__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
207828
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
207829
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
207814
207830
  }
207815
207831
  const conditionA = matrixA.conditionNumber();
207816
207832
  const conditionB = matrixB.conditionNumber();
@@ -207841,11 +207857,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207841
207857
  let matrixA;
207842
207858
  if (this._worldToLocalPerspective) {
207843
207859
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
207844
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_7__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
207860
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
207845
207861
  }
207846
207862
  else {
207847
207863
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
207848
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_7__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
207864
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
207849
207865
  }
207850
207866
  // The worldToLocal has moved the arc vectors into local space.
207851
207867
  // matrixA captures the xyw parts (ignoring z)
@@ -207856,7 +207872,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207856
207872
  const orderF = cpB.order; // order of the beziers for simple coordinates
207857
207873
  const orderG = 2 * orderF - 1; // order of the (single) bezier for squared coordinates.
207858
207874
  const coffF = new Float64Array(orderF);
207859
- const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_8__.UnivariateBezier(orderG);
207875
+ const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderG);
207860
207876
  const axx = matrixAInverse.at(0, 0);
207861
207877
  const axy = matrixAInverse.at(0, 1);
207862
207878
  const axz = 0.0;
@@ -207927,13 +207943,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207927
207943
  dispatchBezierBezierStrokeFirst(bezierA, bcurveA, strokeCountA, bezierB, bcurveB, _strokeCountB, univariateBezierB, // caller-allocated for univariate coefficients.
207928
207944
  reversed) {
207929
207945
  if (!this._xyzwA0)
207930
- this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
207946
+ this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
207931
207947
  if (!this._xyzwA1)
207932
- this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
207948
+ this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
207933
207949
  if (!this._xyzwPlane)
207934
- this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
207950
+ this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
207935
207951
  if (!this._xyzwB)
207936
- this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
207952
+ this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
207937
207953
  /*
207938
207954
  const roots = univariateBezierG.roots(0.0, true);
207939
207955
  if (roots) {
@@ -207959,7 +207975,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207959
207975
  for (let i = 1; i <= strokeCountA; i++, f0 = f1, this._xyzwA0.setFrom(this._xyzwA1)) {
207960
207976
  f1 = i * df;
207961
207977
  bezierA.fractionToPoint4d(f1, this._xyzwA1);
207962
- _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
207978
+ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
207963
207979
  bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
207964
207980
  let errors = 0;
207965
207981
  const roots = univariateBezierB.roots(0.0, true);
@@ -207967,13 +207983,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
207967
207983
  for (const r of roots) {
207968
207984
  let bezierBFraction = r;
207969
207985
  bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
207970
- const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
207986
+ const segmentAFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
207971
207987
  if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
207972
207988
  let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(f0, segmentAFraction, f1);
207973
207989
  // We have a near intersection at fractions on the two beziers
207974
207990
  // Iterate on the curves for a true intersection
207975
- const xyMatchingFunction = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_10__.CurveCurveIntersectionXYRRToRRD(bezierA, bezierB);
207976
- const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_10__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
207991
+ const xyMatchingFunction = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_11__.CurveCurveIntersectionXYRRToRRD(bezierA, bezierB);
207992
+ const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_11__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
207977
207993
  newtonSearcher.setUV(bezierAFraction, bezierBFraction);
207978
207994
  if (newtonSearcher.runIterations()) {
207979
207995
  bezierAFraction = newtonSearcher.getU();
@@ -208001,8 +208017,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208001
208017
  const rangeB = this.getRanges(bezierSpanB);
208002
208018
  const orderA = bcurveA.order;
208003
208019
  const orderB = bcurveB.order;
208004
- const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_8__.UnivariateBezier(orderA);
208005
- const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_8__.UnivariateBezier(orderB);
208020
+ const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderA);
208021
+ const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderB);
208006
208022
  for (let a = 0; a < numA; a++) {
208007
208023
  for (let b = 0; b < numB; b++) {
208008
208024
  if (rangeA[a].intersectsRangeXY(rangeB[b])) {
@@ -208026,7 +208042,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208026
208042
  return this._worldToLocalPerspective.multiplyPoint3d(xyz, w);
208027
208043
  if (this._worldToLocalAffine)
208028
208044
  return this._worldToLocalAffine.multiplyXYZW(xyz.x, xyz.y, xyz.z, w);
208029
- return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.createFromPointAndWeight(xyz, w);
208045
+ return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createFromPointAndWeight(xyz, w);
208030
208046
  }
208031
208047
  mapNPCPlaneToWorld(npcPlane, worldPlane) {
208032
208048
  // for NPC pointY, Y^ * H = 0 is "on" plane H. (Hat is transpose)
@@ -208050,7 +208066,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208050
208066
  dispatchSegmentBsplineCurve(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, bcurve, extendB0, extendB1, reversed) {
208051
208067
  const pointA0H = this.projectPoint(pointA0);
208052
208068
  const pointA1H = this.projectPoint(pointA1);
208053
- const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
208069
+ const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
208054
208070
  this.mapNPCPlaneToWorld(planeCoffs, planeCoffs);
208055
208071
  // NOW .. we have a plane in world space. Intersect it with the bspline:
208056
208072
  const intersections = [];
@@ -208062,7 +208078,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208062
208078
  const fractionB = detail.fraction;
208063
208079
  const curvePoint = detail.point;
208064
208080
  const curvePointH = this.projectPoint(curvePoint);
208065
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
208081
+ const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
208066
208082
  if (lineFraction !== undefined) {
208067
208083
  if (this.acceptFraction(extendA0, lineFraction, extendA1) && this.acceptFraction(extendB0, fractionB, extendB1)) {
208068
208084
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed);
@@ -208171,14 +208187,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208171
208187
  */
208172
208188
  dispatchCurveCollection(geomA, geomAHandler) {
208173
208189
  const geomB = this._geometryB; // save
208174
- if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection))
208190
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection))
208175
208191
  return;
208176
208192
  const children = geomB.children;
208177
208193
  const extendB0 = this._extendB0; // save
208178
208194
  const extendB1 = this._extendB1; // save
208179
208195
  for (let i = 0; i < children.length; i++) {
208180
208196
  this.resetGeometry(children[i]);
208181
- if (geomB instanceof _Path__WEBPACK_IMPORTED_MODULE_12__.Path && children.length > 1) {
208197
+ if (geomB instanceof _Path__WEBPACK_IMPORTED_MODULE_13__.Path && children.length > 1) {
208182
208198
  if (i === 0)
208183
208199
  this._extendB1 = false; // first child can only extend from start
208184
208200
  else if (i === children.length - 1)
@@ -208186,7 +208202,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208186
208202
  else
208187
208203
  this._extendB0 = this._extendB1 = false; // middle children cannot extend
208188
208204
  }
208189
- else if (geomB instanceof _Loop__WEBPACK_IMPORTED_MODULE_13__.Loop) {
208205
+ else if (geomB instanceof _Loop__WEBPACK_IMPORTED_MODULE_14__.Loop) {
208190
208206
  this._extendB0 = this._extendB1 = false; // Loops cannot extend
208191
208207
  }
208192
208208
  geomAHandler(geomA);
@@ -208200,9 +208216,9 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208200
208216
  * We take care of extend variables of geometry's children here if geometry.path is Path or Loop.
208201
208217
  */
208202
208218
  dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
208203
- if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex))
208219
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex))
208204
208220
  return;
208205
- if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex) {
208221
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
208206
208222
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "call handleCurveChainWithDistanceIndex(geomA) instead");
208207
208223
  return;
208208
208224
  }
@@ -208211,7 +208227,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208211
208227
  this.resetGeometry(geomB.path);
208212
208228
  this.dispatchCurveCollection(geomA, geomAHandler);
208213
208229
  this.resetGeometry(geomB); // restore
208214
- this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
208230
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
208215
208231
  }
208216
208232
  /**
208217
208233
  * Invoke `child.dispatchToGeometryHandler(this)` for each child in the array returned by the query `g.children`.
@@ -208223,7 +208239,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208223
208239
  const extendA1 = this._extendA1; // save
208224
208240
  if (children)
208225
208241
  for (let i = 0; i < children.length; i++) {
208226
- if (g instanceof _Path__WEBPACK_IMPORTED_MODULE_12__.Path && children.length > 1) {
208242
+ if (g instanceof _Path__WEBPACK_IMPORTED_MODULE_13__.Path && children.length > 1) {
208227
208243
  if (i === 0)
208228
208244
  this._extendA1 = false; // first child can only extend from start
208229
208245
  else if (i === children.length - 1)
@@ -208231,7 +208247,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208231
208247
  else
208232
208248
  this._extendA0 = this._extendA1 = false; // middle children cannot extend
208233
208249
  }
208234
- else if (g instanceof _Loop__WEBPACK_IMPORTED_MODULE_13__.Loop) {
208250
+ else if (g instanceof _Loop__WEBPACK_IMPORTED_MODULE_14__.Loop) {
208235
208251
  this._extendA0 = this._extendA1 = false; // Loops cannot extend
208236
208252
  }
208237
208253
  children[i].dispatchToGeometryHandler(this);
@@ -208241,90 +208257,90 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208241
208257
  }
208242
208258
  /** Double dispatch handler for strongly typed segment. */
208243
208259
  handleLineSegment3d(segmentA) {
208244
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__.LineSegment3d) {
208260
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
208245
208261
  const segmentB = this._geometryB;
208246
208262
  this.dispatchSegmentSegment(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, segmentB, this._extendB0, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB1, false);
208247
208263
  }
208248
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
208264
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
208249
208265
  this.computeSegmentLineString(segmentA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
208250
208266
  }
208251
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_17__.Arc3d) {
208267
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
208252
208268
  this.dispatchSegmentArc(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
208253
208269
  }
208254
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_18__.BSplineCurve3d) {
208270
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3d) {
208255
208271
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
208256
208272
  }
208257
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
208273
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
208258
208274
  this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
208259
208275
  }
208260
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex) {
208276
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
208261
208277
  this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
208262
208278
  }
208263
208279
  return undefined;
208264
208280
  }
208265
208281
  /** Double dispatch handler for strongly typed linestring. */
208266
208282
  handleLineString3d(lsA) {
208267
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
208283
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
208268
208284
  const lsB = this._geometryB;
208269
208285
  this.computeLineStringLineString(lsA, lsB, false);
208270
208286
  }
208271
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__.LineSegment3d) {
208287
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
208272
208288
  this.computeSegmentLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
208273
208289
  }
208274
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_17__.Arc3d) {
208290
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
208275
208291
  this.computeArcLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
208276
208292
  }
208277
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_18__.BSplineCurve3d) {
208293
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3d) {
208278
208294
  this.dispatchLineStringBSplineCurve(lsA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
208279
208295
  }
208280
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
208296
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
208281
208297
  this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
208282
208298
  }
208283
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex) {
208299
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
208284
208300
  this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
208285
208301
  }
208286
208302
  return undefined;
208287
208303
  }
208288
208304
  /** Double dispatch handler for strongly typed arc. */
208289
208305
  handleArc3d(arc0) {
208290
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__.LineSegment3d) {
208306
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
208291
208307
  this.dispatchSegmentArc(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, arc0, this._extendA0, this._extendA1, true);
208292
208308
  }
208293
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
208309
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
208294
208310
  this.computeArcLineString(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
208295
208311
  }
208296
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_17__.Arc3d) {
208312
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
208297
208313
  this.dispatchArcArc(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
208298
208314
  }
208299
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_18__.BSplineCurve3d) {
208315
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3d) {
208300
208316
  this.dispatchArcBsplineCurve3d(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
208301
208317
  }
208302
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
208318
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
208303
208319
  this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
208304
208320
  }
208305
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex) {
208321
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
208306
208322
  this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
208307
208323
  }
208308
208324
  return undefined;
208309
208325
  }
208310
208326
  /** Double dispatch handler for strongly typed bspline curve. */
208311
208327
  handleBSplineCurve3d(curve) {
208312
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__.LineSegment3d) {
208328
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
208313
208329
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, curve, this._extendA0, this._extendA1, true);
208314
208330
  }
208315
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
208331
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
208316
208332
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
208317
208333
  }
208318
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_17__.Arc3d) {
208334
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
208319
208335
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
208320
208336
  }
208321
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_18__.BSplineCurve3dBase) {
208337
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3dBase) {
208322
208338
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
208323
208339
  }
208324
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
208340
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
208325
208341
  this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
208326
208342
  }
208327
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex) {
208343
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
208328
208344
  this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
208329
208345
  }
208330
208346
  return undefined;
@@ -208333,7 +208349,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208333
208349
  handleCurveChainWithDistanceIndex(chain) {
208334
208350
  super.handleCurveChainWithDistanceIndex(chain);
208335
208351
  // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
208336
- this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_14__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
208352
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
208337
208353
  }
208338
208354
  /** Double dispatch handler for strongly typed homogeneous bspline curve. */
208339
208355
  handleBSplineCurve3dH(_curve) {
@@ -208353,19 +208369,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
208353
208369
  return undefined;
208354
208370
  }
208355
208371
  }
208356
- CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_19__.Vector2d.create();
208357
- CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
208358
- CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
208359
- CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
208360
- CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_9__.Point4d.create();
208361
- CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208362
- CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208363
- CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208364
- CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208365
- CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208366
- CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208367
- CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208368
- CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_20__.Point3d.create();
208372
+ CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_20__.Vector2d.create();
208373
+ CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
208374
+ CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
208375
+ CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
208376
+ CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
208377
+ CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208378
+ CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208379
+ CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208380
+ CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208381
+ CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208382
+ CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208383
+ CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208384
+ CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
208369
208385
 
208370
208386
 
208371
208387
  /***/ }),
@@ -208382,21 +208398,22 @@ __webpack_require__.r(__webpack_exports__);
208382
208398
  /* harmony export */ "CurveCurveIntersectXYZ": () => (/* binding */ CurveCurveIntersectXYZ)
208383
208399
  /* harmony export */ });
208384
208400
  /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
208385
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
208401
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
208386
208402
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
208387
208403
  /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
208388
208404
  /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
208389
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
208405
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
208390
208406
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
208391
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
208392
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
208393
- /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
208394
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
208407
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
208408
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
208409
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
208410
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
208411
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
208395
208412
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
208396
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
208397
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
208398
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
208399
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
208413
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
208414
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
208415
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
208416
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
208400
208417
  /*---------------------------------------------------------------------------------------------
208401
208418
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
208402
208419
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -208420,6 +208437,7 @@ __webpack_require__.r(__webpack_exports__);
208420
208437
 
208421
208438
 
208422
208439
 
208440
+
208423
208441
  // cspell:word XYRR
208424
208442
  /**
208425
208443
  * Handler class for XYZ intersections between _geometryB and another geometry.
@@ -208514,7 +208532,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
208514
208532
  */
208515
208533
  computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed) {
208516
208534
  const uv = CurveCurveIntersectXYZ._workVector2dA;
208517
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
208535
+ if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
208518
208536
  this.acceptFraction(extendA0, uv.x, extendA1) && this.acceptFraction(extendB0, uv.y, extendB1)) {
208519
208537
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
208520
208538
  }
@@ -208565,7 +208583,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
208565
208583
  for (const c of candidates) {
208566
208584
  const arcFraction = arc.sweep.fractionToSignedPeriodicFraction(c.fraction, extendB0);
208567
208585
  if (this.acceptFraction(extendB0, arcFraction, extendB1)) {
208568
- lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
208586
+ lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
208569
208587
  if (lineFraction !== undefined) {
208570
208588
  linePoint = pointA0.interpolate(lineFraction, pointA1, linePoint);
208571
208589
  if (linePoint.isAlmostEqualMetric(c.point) && this.acceptFraction(extendA0, lineFraction, extendA1)) {
@@ -208585,7 +208603,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
208585
208603
  if (otherVectors !== undefined) {
208586
208604
  const ellipseRadians = [];
208587
208605
  const circleRadians = [];
208588
- _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);
208606
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.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);
208589
208607
  for (let i = 0; i < ellipseRadians.length; i++) {
208590
208608
  const fractionA = cpA.sweep.radiansToSignedFraction(circleRadians[i], extendA0);
208591
208609
  const fractionB = cpB.sweep.radiansToSignedFraction(ellipseRadians[i], extendB0);
@@ -209016,14 +209034,14 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209016
209034
  */
209017
209035
  dispatchCurveCollection(geomA, geomAHandler) {
209018
209036
  const geomB = this._geometryB; // save
209019
- if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection))
209037
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection))
209020
209038
  return;
209021
209039
  const children = geomB.children;
209022
209040
  const extendB0 = this._extendB0; // save
209023
209041
  const extendB1 = this._extendB1; // save
209024
209042
  for (let i = 0; i < children.length; i++) {
209025
209043
  this.resetGeometry(children[i]);
209026
- if (geomB instanceof _Path__WEBPACK_IMPORTED_MODULE_8__.Path && children.length > 1) {
209044
+ if (geomB instanceof _Path__WEBPACK_IMPORTED_MODULE_9__.Path && children.length > 1) {
209027
209045
  if (i === 0)
209028
209046
  this._extendB1 = false; // first child can only extend from start
209029
209047
  else if (i === children.length - 1)
@@ -209031,7 +209049,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209031
209049
  else
209032
209050
  this._extendB0 = this._extendB1 = false; // middle children cannot extend
209033
209051
  }
209034
- else if (geomB instanceof _Loop__WEBPACK_IMPORTED_MODULE_9__.Loop) {
209052
+ else if (geomB instanceof _Loop__WEBPACK_IMPORTED_MODULE_10__.Loop) {
209035
209053
  this._extendB0 = this._extendB1 = false; // Loops cannot extend
209036
209054
  }
209037
209055
  geomAHandler(geomA);
@@ -209045,9 +209063,9 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209045
209063
  * We take care of extend variables of geometry's children here if geometry.path is Path or Loop.
209046
209064
  */
209047
209065
  dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
209048
- if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex))
209066
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex))
209049
209067
  return;
209050
- if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
209068
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
209051
209069
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "call handleCurveChainWithDistanceIndex(geomA) instead");
209052
209070
  return;
209053
209071
  }
@@ -209056,7 +209074,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209056
209074
  this.resetGeometry(geomB.path);
209057
209075
  this.dispatchCurveCollection(geomA, geomAHandler);
209058
209076
  this.resetGeometry(geomB); // restore
209059
- this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
209077
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
209060
209078
  }
209061
209079
  /**
209062
209080
  * Invoke `child.dispatchToGeometryHandler(this)` for each child in the array returned by the query `g.children`.
@@ -209068,7 +209086,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209068
209086
  const extendA1 = this._extendA1; // save
209069
209087
  if (children)
209070
209088
  for (let i = 0; i < children.length; i++) {
209071
- if (g instanceof _Path__WEBPACK_IMPORTED_MODULE_8__.Path && children.length > 1) {
209089
+ if (g instanceof _Path__WEBPACK_IMPORTED_MODULE_9__.Path && children.length > 1) {
209072
209090
  if (i === 0)
209073
209091
  this._extendA1 = false; // first child can only extend from start
209074
209092
  else if (i === children.length - 1)
@@ -209076,7 +209094,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209076
209094
  else
209077
209095
  this._extendA0 = this._extendA1 = false; // middle children cannot extend
209078
209096
  }
209079
- else if (g instanceof _Loop__WEBPACK_IMPORTED_MODULE_9__.Loop) {
209097
+ else if (g instanceof _Loop__WEBPACK_IMPORTED_MODULE_10__.Loop) {
209080
209098
  this._extendA0 = this._extendA1 = false; // Loops cannot extend
209081
209099
  }
209082
209100
  children[i].dispatchToGeometryHandler(this);
@@ -209086,90 +209104,90 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209086
209104
  }
209087
209105
  /** Double dispatch handler for strongly typed segment. */
209088
209106
  handleLineSegment3d(segmentA) {
209089
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
209107
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
209090
209108
  const segmentB = this._geometryB;
209091
209109
  this.dispatchSegmentSegment(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, segmentB, this._extendB0, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB1, false);
209092
209110
  }
209093
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
209111
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
209094
209112
  this.computeSegmentLineString(segmentA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
209095
209113
  }
209096
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
209114
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
209097
209115
  this.dispatchSegmentArc(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
209098
209116
  }
209099
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
209117
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3d) {
209100
209118
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
209101
209119
  }
209102
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
209120
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
209103
209121
  this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
209104
209122
  }
209105
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
209123
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
209106
209124
  this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
209107
209125
  }
209108
209126
  return undefined;
209109
209127
  }
209110
209128
  /** double dispatch handler for strongly typed linestring. */
209111
209129
  handleLineString3d(lsA) {
209112
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
209130
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
209113
209131
  const lsB = this._geometryB;
209114
209132
  this.computeLineStringLineString(lsA, lsB, false);
209115
209133
  }
209116
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
209134
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
209117
209135
  this.computeSegmentLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
209118
209136
  }
209119
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
209137
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
209120
209138
  this.computeArcLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
209121
209139
  }
209122
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
209140
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3d) {
209123
209141
  this.dispatchLineStringBSplineCurve(lsA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
209124
209142
  }
209125
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
209143
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
209126
209144
  this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
209127
209145
  }
209128
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
209146
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
209129
209147
  this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
209130
209148
  }
209131
209149
  return undefined;
209132
209150
  }
209133
209151
  /** Double dispatch handler for strongly typed arc. */
209134
209152
  handleArc3d(arc0) {
209135
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
209153
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
209136
209154
  this.dispatchSegmentArc(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, arc0, this._extendA0, this._extendA1, true);
209137
209155
  }
209138
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
209156
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
209139
209157
  this.computeArcLineString(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
209140
209158
  }
209141
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
209159
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
209142
209160
  this.dispatchArcArc(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
209143
209161
  }
209144
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
209162
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3d) {
209145
209163
  this.dispatchArcBsplineCurve3d(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
209146
209164
  }
209147
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
209165
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
209148
209166
  this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
209149
209167
  }
209150
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
209168
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
209151
209169
  this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
209152
209170
  }
209153
209171
  return undefined;
209154
209172
  }
209155
209173
  /** Double dispatch handler for strongly typed bspline curve. */
209156
209174
  handleBSplineCurve3d(curve) {
209157
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
209175
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
209158
209176
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB0, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB1, curve, this._extendA0, this._extendA1, true);
209159
209177
  }
209160
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
209178
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
209161
209179
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
209162
209180
  }
209163
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
209181
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
209164
209182
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
209165
209183
  }
209166
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3dBase) {
209184
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3dBase) {
209167
209185
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
209168
209186
  }
209169
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
209187
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
209170
209188
  this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
209171
209189
  }
209172
- else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
209190
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
209173
209191
  this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
209174
209192
  }
209175
209193
  return undefined;
@@ -209178,7 +209196,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209178
209196
  handleCurveChainWithDistanceIndex(chain) {
209179
209197
  super.handleCurveChainWithDistanceIndex(chain);
209180
209198
  // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
209181
- this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
209199
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
209182
209200
  }
209183
209201
  /** Double dispatch handler for strongly typed homogeneous bspline curve. */
209184
209202
  handleBSplineCurve3dH(_curve) {
@@ -209203,7 +209221,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
209203
209221
  return undefined;
209204
209222
  }
209205
209223
  }
209206
- CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__.Vector2d.create();
209224
+ CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_16__.Vector2d.create();
209207
209225
  CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
209208
209226
  CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
209209
209227
  CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
@@ -216102,7 +216120,7 @@ __webpack_require__.r(__webpack_exports__);
216102
216120
  /* harmony import */ var _bspline_SurfaceLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../bspline/SurfaceLocationDetail */ "../../core/geometry/lib/esm/bspline/SurfaceLocationDetail.js");
216103
216121
  /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
216104
216122
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
216105
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
216123
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
216106
216124
  /* harmony import */ var _Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
216107
216125
  /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
216108
216126
  /*---------------------------------------------------------------------------------------------
@@ -216277,9 +216295,9 @@ class BilinearPatch {
216277
216295
  // swap rows so that the equation with largest ray.direction coefficient is first.
216278
216296
  BilinearPatch.conditionalPivot(0, coffs, 0, 1);
216279
216297
  BilinearPatch.conditionalPivot(0, coffs, 0, 2);
216280
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.eliminateFromPivot(coffs[0], 0, coffs[1], -1.0);
216281
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.eliminateFromPivot(coffs[0], 0, coffs[2], -1.0);
216282
- const uvArray = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.solveBilinearPair(coffs[1][1], coffs[1][2], coffs[1][3], coffs[1][4], coffs[2][1], coffs[2][2], coffs[2][3], coffs[2][4]);
216298
+ _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.eliminateFromPivot(coffs[0], 0, coffs[1], -1.0);
216299
+ _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.eliminateFromPivot(coffs[0], 0, coffs[2], -1.0);
216300
+ const uvArray = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.solveBilinearPair(coffs[1][1], coffs[1][2], coffs[1][3], coffs[1][4], coffs[2][1], coffs[2][2], coffs[2][3], coffs[2][4]);
216283
216301
  if (uvArray) {
216284
216302
  const result = [];
216285
216303
  for (const uv of uvArray) {
@@ -223780,8 +223798,8 @@ class Matrix3d {
223780
223798
  return Math.sqrt(sumLow) <= _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallAngleRadians * (1.0 + Math.sqrt(sumAll));
223781
223799
  }
223782
223800
  /**
223783
- * If the matrix is diagonal and all diagonals are almost equal, return the first diagonal (entry 0
223784
- * which is same as entry 4 and 8). Otherwise return `undefined`.
223801
+ * If the matrix is diagonal with almost equal diagonal entries, return the first diagonal entry.
223802
+ * Otherwise return `undefined`.
223785
223803
  */
223786
223804
  sameDiagonalScale() {
223787
223805
  const sumAll = this.sumSquares();
@@ -223794,32 +223812,31 @@ class Matrix3d {
223794
223812
  return undefined;
223795
223813
  }
223796
223814
  /**
223797
- * Test if all rows and columns are unit length and are perpendicular to each other, i.e., the matrix is either
223798
- * a `pure rotation` (determinant is +1) or is a `mirror` (determinant is -1).
223799
- * * **Note:** such a matrix is called `orthogonal` and its inverse is its transpose.
223815
+ * Test if all rows and columns are unit length and perpendicular to each other.
223816
+ * * If so, the matrix is either a rotation (determinant is +1) or a mirror (determinant is -1).
223817
+ * * Such a matrix is called "orthogonal" and its inverse is its transpose.
223800
223818
  */
223801
223819
  testPerpendicularUnitRowsAndColumns() {
223802
223820
  const product = this.multiplyMatrixMatrixTranspose(this);
223803
223821
  return product.isIdentity;
223804
223822
  }
223805
223823
  /**
223806
- * Test if the matrix is a `rigid` matrix (or `pure rotation`, i.e., columns and rows are unit length and
223807
- * pairwise perpendicular and determinant is +1).
223808
- * @param allowMirror whether to widen the test to return true if the matrix is a `mirror` (determinant is -1).
223824
+ * Test if the matrix is a rigid matrix.
223825
+ * * A rigid matrix is a rotation: its columns and rows are unit length and pairwise perpendicular, and its
223826
+ * determinant is +1.
223827
+ * @param allowMirror whether to widen the test to also return true if the matrix is a mirror (determinant is -1).
223809
223828
  */
223810
223829
  isRigid(allowMirror = false) {
223811
223830
  return this.testPerpendicularUnitRowsAndColumns() && (allowMirror || this.determinant() > 0);
223812
223831
  }
223813
223832
  /**
223814
- * Test if all rows and columns are perpendicular to each other and have equal length.
223815
- * If so, the length (or its negative) is the `scale` factor from a set of `orthonormal axes` to
223816
- * the set of axes created by columns of `this` matrix. Otherwise, returns `undefined`.
223833
+ * Test if the instance is the product of a rigid matrix and a signed scale, and return both.
223834
+ * * Specifically, this is a test of whether the instance rows and columns are pairwise perpendicular and have equal
223835
+ * length. If so, the scale factor is this length, or its negative if the instance is a mirror, and dividing the
223836
+ * columns by this scale factor produces a rigid matrix (a rotation).
223817
223837
  * @param result optional pre-allocated object to populate and return
223818
- * @returns returns `{ rigidAxes, scale }` where `rigidAxes` is a Matrix3d with its columns as the rigid axes
223819
- * (with the scale factor removed) and `scale` is the scale factor.
223820
- * * Note that determinant of a rigid matrix is +1.
223821
- * * The context for this method is to determine if the matrix is the product a `rotation` matrix and a uniform
223822
- * `scale` matrix (diagonal matrix with all diagonal entries the same nonzero number).
223838
+ * @returns the factorization `{ rigidAxes, scale }` where `rigidAxes` is the instance matrix with `scale` factor
223839
+ * removed, or undefined if the factorization failed.
223823
223840
  */
223824
223841
  factorRigidWithSignedScale(result) {
223825
223842
  const product = this.multiplyMatrixMatrixTranspose(this);
@@ -223830,6 +223847,25 @@ class Matrix3d {
223830
223847
  const scaleInverse = 1.0 / scale;
223831
223848
  return { rigidAxes: this.scaleColumns(scaleInverse, scaleInverse, scaleInverse, result), scale };
223832
223849
  }
223850
+ /**
223851
+ * Compute the factorization M = R*G, where R is rigid (a rotation) and G is whatever is left over (skew, scale,
223852
+ * mirror, etc).
223853
+ * * The rotation is computed from the instance by passing `axisOrder` into [[createRigidFromMatrix3d]].
223854
+ * @param rotation the rigid factor R
223855
+ * @param skew the non-rotation factor G = R^t * M (since R transposed is its inverse)
223856
+ * @param axisOrder optional cross product ordering for computing R
223857
+ * @return whether [[createRigidFromMatrix3d]] succeeded; if not, `rotation` is set to the identity, and `skew` is
223858
+ * set to this instance.
223859
+ */
223860
+ factorRigidSkew(rotation, skew, axisOrder = _Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisOrder.XYZ) {
223861
+ if (Matrix3d.createRigidFromMatrix3d(this, axisOrder, rotation)) {
223862
+ rotation.multiplyMatrixTransposeMatrix(this, skew);
223863
+ return true;
223864
+ }
223865
+ rotation.setIdentity();
223866
+ skew.setFrom(this);
223867
+ return false;
223868
+ }
223833
223869
  /** Test if `this` matrix reorders and/or negates the columns of the `identity` matrix. */
223834
223870
  get isSignedPermutation() {
223835
223871
  let count = 0;
@@ -233242,7 +233278,7 @@ __webpack_require__.r(__webpack_exports__);
233242
233278
  /* harmony export */ });
233243
233279
  /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
233244
233280
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
233245
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
233281
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
233246
233282
  /* harmony import */ var _Matrix3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
233247
233283
  /* harmony import */ var _Point2dVector2d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
233248
233284
  /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
@@ -233714,7 +233750,7 @@ class Ray3d {
233714
233750
  let fractionA, fractionB;
233715
233751
  let pointA, pointB;
233716
233752
  let pairType;
233717
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.ray3dXYZUVWClosestApproachUnbounded(rayA.origin.x, rayA.origin.y, rayA.origin.z, rayA.direction.x, rayA.direction.y, rayA.direction.z, rayB.origin.x, rayB.origin.y, rayB.origin.z, rayB.direction.x, rayB.direction.y, rayB.direction.z, intersectionFractions)) {
233753
+ if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.ray3dXYZUVWClosestApproachUnbounded(rayA.origin.x, rayA.origin.y, rayA.origin.z, rayA.direction.x, rayA.direction.y, rayA.direction.z, rayB.origin.x, rayB.origin.y, rayB.origin.z, rayB.direction.x, rayB.direction.y, rayB.direction.z, intersectionFractions)) {
233718
233754
  fractionA = intersectionFractions.x;
233719
233755
  fractionB = intersectionFractions.y;
233720
233756
  pointA = rayA.fractionToPoint(fractionA);
@@ -237452,7 +237488,8 @@ class Point4d extends _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__.Plane3d {
237452
237488
  projectPointToPlane(spacePoint, result) {
237453
237489
  const h = this.altitude(spacePoint);
237454
237490
  const nn = this.magnitudeSquaredXYZ();
237455
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideCoordinate(-h, nn);
237491
+ // this unusual tol is needed so that toPlane3dByOriginAndUnitNormal agrees with its original implementation
237492
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideCoordinate(-h, nn, _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.largeFractionResult * _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.largeFractionResult);
237456
237493
  if (alpha === undefined)
237457
237494
  return spacePoint.clone(result);
237458
237495
  return spacePoint.plusXYZ(alpha * this.x, alpha * this.y, alpha * this.z, result);
@@ -240038,14 +240075,11 @@ __webpack_require__.r(__webpack_exports__);
240038
240075
  /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
240039
240076
  /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
240040
240077
  /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
240041
- /* harmony import */ var _Polynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
240078
+ /* harmony import */ var _SmallSystem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
240042
240079
  /*---------------------------------------------------------------------------------------------
240043
240080
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
240044
240081
  * See LICENSE.md in the project root for license terms and full copyright notice.
240045
240082
  *--------------------------------------------------------------------------------------------*/
240046
- /** @packageDocumentation
240047
- * @module Numerics
240048
- */
240049
240083
 
240050
240084
 
240051
240085
 
@@ -240294,7 +240328,7 @@ class Newton2dUnboundedWithDerivative extends AbstractNewtonIterator {
240294
240328
  const jCol1 = fA.vectorV;
240295
240329
  const fX = fA.origin;
240296
240330
  // Given X_{n+1} = X_n - dX = X_n - JInv(X_n) F(X_n), we solve J(X_n) dX = F(X_n) for dX:
240297
- if (_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.linearSystem2d(jCol0.x, jCol1.x, jCol0.y, jCol1.y, fX.x, fX.y, this._currentStep))
240331
+ if (_SmallSystem__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.linearSystem2d(jCol0.x, jCol1.x, jCol0.y, jCol1.y, fX.x, fX.y, this._currentStep))
240298
240332
  return true;
240299
240333
  return false;
240300
240334
  }
@@ -240571,19 +240605,19 @@ __webpack_require__.r(__webpack_exports__);
240571
240605
  /* harmony export */ "ImplicitLineXY": () => (/* binding */ ImplicitLineXY),
240572
240606
  /* harmony export */ "PowerPolynomial": () => (/* binding */ PowerPolynomial),
240573
240607
  /* harmony export */ "SineCosinePolynomial": () => (/* binding */ SineCosinePolynomial),
240574
- /* harmony export */ "SmallSystem": () => (/* binding */ SmallSystem),
240575
240608
  /* harmony export */ "SphereImplicit": () => (/* binding */ SphereImplicit),
240576
240609
  /* harmony export */ "TorusImplicit": () => (/* binding */ TorusImplicit),
240577
240610
  /* harmony export */ "TrigPolynomial": () => (/* binding */ TrigPolynomial)
240578
240611
  /* harmony export */ });
240579
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
240580
- /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
240581
- /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
240582
- /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
240583
- /* harmony import */ var _geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/LongitudeLatitudeAltitude */ "../../core/geometry/lib/esm/geometry3d/LongitudeLatitudeAltitude.js");
240584
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
240585
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
240586
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
240612
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
240613
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
240614
+ /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
240615
+ /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
240616
+ /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
240617
+ /* harmony import */ var _geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/LongitudeLatitudeAltitude */ "../../core/geometry/lib/esm/geometry3d/LongitudeLatitudeAltitude.js");
240618
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
240619
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
240620
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
240587
240621
  /*---------------------------------------------------------------------------------------------
240588
240622
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
240589
240623
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -240599,9 +240633,8 @@ __webpack_require__.r(__webpack_exports__);
240599
240633
 
240600
240634
 
240601
240635
 
240602
- // cspell:word Cardano
240603
- // cspell:word CCminusSS
240604
- /* eslint-disable @typescript-eslint/naming-convention */
240636
+
240637
+ // cspell:words Cardano internaldocs
240605
240638
  /**
240606
240639
  * degree 2 (quadratic) polynomial in for y = c0 + c1*x + c2*x^2
240607
240640
  * @internal
@@ -240616,8 +240649,8 @@ class Degree2PowerPolynomial {
240616
240649
  * @returns 0, 1, or 2 solutions of the usual quadratic (a*x*x + b * x + c = 0)
240617
240650
  */
240618
240651
  static solveQuadratic(a, b, c) {
240619
- const b1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(b, a);
240620
- const c1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(c, a);
240652
+ const b1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(b, a);
240653
+ const c1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(c, a);
240621
240654
  if (b1 !== undefined && c1 !== undefined) {
240622
240655
  // now solving xx + b1*x + c1 = 0 -- i.e. implied "a" coefficient is 1 . .
240623
240656
  const q = b1 * b1 - 4 * c1;
@@ -240632,7 +240665,7 @@ class Degree2PowerPolynomial {
240632
240665
  return [root, root];
240633
240666
  }
240634
240667
  // "divide by a" failed. solve bx + c = 0
240635
- const x = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-c, b);
240668
+ const x = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-c, b);
240636
240669
  if (x !== undefined)
240637
240670
  return [x];
240638
240671
  return undefined;
@@ -240672,7 +240705,7 @@ class Degree2PowerPolynomial {
240672
240705
  }
240673
240706
  /** Factor the polynomial in to the form `y0 + c * (x-x0)^2)`, i.e. complete the square. */
240674
240707
  tryGetVertexFactorization() {
240675
- const x = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-this.coffs[1], 2.0 * this.coffs[2]);
240708
+ const x = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-this.coffs[1], 2.0 * this.coffs[2]);
240676
240709
  if (x !== undefined) {
240677
240710
  const y = this.evaluate(x);
240678
240711
  return { c: this.coffs[2], x0: x, y0: y };
@@ -240813,7 +240846,7 @@ class TorusImplicit {
240813
240846
  // theta=0 point
240814
240847
  const x0 = this.majorRadius + this.minorRadius * Math.cos(phiRadians);
240815
240848
  const z0 = this.minorRadius * Math.sin(phiRadians);
240816
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(c * x0, s * x0, z0);
240849
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(c * x0, s * x0, z0);
240817
240850
  }
240818
240851
  /** Evaluate partial derivatives at angles (int radians) on major and minor circles. */
240819
240852
  evaluateDerivativesThetaPhi(thetaRadians, phiRadians, dxdTheta, dxdPhi) {
@@ -240822,8 +240855,8 @@ class TorusImplicit {
240822
240855
  const bx = this.minorRadius * Math.cos(phiRadians);
240823
240856
  const bz = this.minorRadius * Math.sin(phiRadians);
240824
240857
  const x0 = this.majorRadius + bx;
240825
- _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(-x0 * sTheta, x0 * cTheta, 0.0, dxdTheta);
240826
- _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(-cTheta * bz, -sTheta * bz, bx, dxdPhi);
240858
+ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-x0 * sTheta, x0 * cTheta, 0.0, dxdTheta);
240859
+ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-cTheta * bz, -sTheta * bz, bx, dxdPhi);
240827
240860
  }
240828
240861
  /** Evaluate space point at major and minor angles (in radians) and distance from major hoop. */
240829
240862
  evaluateThetaPhiDistance(thetaRadians, phiRadians, distance) {
@@ -240832,7 +240865,7 @@ class TorusImplicit {
240832
240865
  // theta=0 point
240833
240866
  const x0 = this.majorRadius + distance * Math.cos(phiRadians);
240834
240867
  const z0 = distance * Math.sin(phiRadians);
240835
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(c * x0, s * x0, z0);
240868
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(c * x0, s * x0, z0);
240836
240869
  }
240837
240870
  /** Given an xyz coordinate in the local system of the toroid, compute the torus parametrization
240838
240871
  * * theta = angular coordinate in xy plane
@@ -240844,19 +240877,19 @@ class TorusImplicit {
240844
240877
  */
240845
240878
  xyzToThetaPhiDistance(xyz) {
240846
240879
  const rho = xyz.magnitudeXY();
240847
- const majorRadiusFactor = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(this.majorRadius, rho);
240880
+ const majorRadiusFactor = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(this.majorRadius, rho);
240848
240881
  let safeMajor;
240849
240882
  let majorCirclePoint;
240850
240883
  if (majorRadiusFactor) {
240851
240884
  safeMajor = true;
240852
- majorCirclePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(majorRadiusFactor * xyz.x, majorRadiusFactor * xyz.y, 0.0);
240885
+ majorCirclePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(majorRadiusFactor * xyz.x, majorRadiusFactor * xyz.y, 0.0);
240853
240886
  }
240854
240887
  else {
240855
240888
  safeMajor = false;
240856
- majorCirclePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(xyz.x, xyz.y, 0.0);
240889
+ majorCirclePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(xyz.x, xyz.y, 0.0);
240857
240890
  }
240858
240891
  const theta = safeMajor ? Math.atan2(xyz.y, xyz.x) : 0.0;
240859
- const vectorFromMajorCircle = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(majorCirclePoint, xyz);
240892
+ const vectorFromMajorCircle = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(majorCirclePoint, xyz);
240860
240893
  const distance = vectorFromMajorCircle.magnitude();
240861
240894
  const dRho = rho - this.majorRadius;
240862
240895
  let safePhi;
@@ -240920,10 +240953,10 @@ class SphereImplicit {
240920
240953
  }
240921
240954
  /** Return the range of a uv-aligned patch of the sphere. */
240922
240955
  static patchRangeStartEndRadians(center, radius, theta0Radians, theta1Radians, phi0Radians, phi1Radians, result) {
240923
- const thetaSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__.AngleSweep.createStartEndRadians(theta0Radians, theta1Radians);
240924
- const phiSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__.AngleSweep.createStartEndRadians(phi0Radians, phi1Radians);
240925
- const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_3__.Range3d.createNull(result);
240926
- const xyz = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
240956
+ const thetaSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(theta0Radians, theta1Radians);
240957
+ const phiSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(phi0Radians, phi1Radians);
240958
+ const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createNull(result);
240959
+ const xyz = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
240927
240960
  if (thetaSweep.isFullCircle && phiSweep.isFullLatitudeSweep) {
240928
240961
  // full sphere, no trimming -- build directly
240929
240962
  range.extendPoint(center);
@@ -240951,7 +240984,7 @@ class SphereImplicit {
240951
240984
  }
240952
240985
  // 4 boundary curves, each with 3 components ...
240953
240986
  // BUT: phi should not extend beyond poles. Hence z extremes on constant theta curve will never be different from z of constant phi curve or of poles as tested above.
240954
- const axisRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_3__.Range1d.createNull();
240987
+ const axisRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createNull();
240955
240988
  const cosPhi0 = Math.cos(phi0Radians);
240956
240989
  const cosPhi1 = Math.cos(phi1Radians);
240957
240990
  const sinPhi0 = Math.sin(phi0Radians);
@@ -241002,9 +241035,9 @@ class SphereImplicit {
241002
241035
  const ux = ray.direction.x;
241003
241036
  const uy = ray.direction.y;
241004
241037
  const uz = ray.direction.z;
241005
- const a0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(vx, vy, vz) - radius * radius;
241006
- const a1 = 2.0 * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(ux, uy, uz, vx, vy, vz);
241007
- const a2 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(ux, uy, uz);
241038
+ const a0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseSquaredXYZ(vx, vy, vz) - radius * radius;
241039
+ const a1 = 2.0 * _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.dotProductXYZXYZ(ux, uy, uz, vx, vy, vz);
241040
+ const a2 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseSquaredXYZ(ux, uy, uz);
241008
241041
  const parameters = Degree2PowerPolynomial.solveQuadratic(a2, a1, a0);
241009
241042
  if (rayFractions !== undefined)
241010
241043
  rayFractions.length = 0;
@@ -241026,7 +241059,7 @@ class SphereImplicit {
241026
241059
  xyz.push(point);
241027
241060
  if (thetaPhiRadians !== undefined) {
241028
241061
  const data = sphere.xyzToThetaPhiR(point);
241029
- thetaPhiRadians.push(_geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_4__.LongitudeLatitudeNumber.createRadians(data.thetaRadians, data.phiRadians));
241062
+ thetaPhiRadians.push(_geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_5__.LongitudeLatitudeNumber.createRadians(data.thetaRadians, data.phiRadians));
241030
241063
  }
241031
241064
  }
241032
241065
  }
@@ -241060,7 +241093,7 @@ class SphereImplicit {
241060
241093
  const rs = this.radius * Math.sin(thetaRadians);
241061
241094
  const cosPhi = Math.cos(phiRadians);
241062
241095
  const sinPhi = Math.sin(phiRadians);
241063
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(rc * cosPhi, rs * cosPhi, this.radius * sinPhi, result);
241096
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(rc * cosPhi, rs * cosPhi, this.radius * sinPhi, result);
241064
241097
  }
241065
241098
  /**
241066
241099
  * * convert radians to xyz on unit sphere
@@ -241085,8 +241118,8 @@ class SphereImplicit {
241085
241118
  const rs = this.radius * Math.sin(thetaRadians);
241086
241119
  const cosPhi = Math.cos(phiRadians);
241087
241120
  const sinPhi = Math.sin(phiRadians);
241088
- _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(-rs * cosPhi, rc * cosPhi, 0.0, dxdTheta);
241089
- _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(-rc * sinPhi, -rs * sinPhi, this.radius * cosPhi, dxdPhi);
241121
+ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-rs * cosPhi, rc * cosPhi, 0.0, dxdTheta);
241122
+ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-rc * sinPhi, -rs * sinPhi, this.radius * cosPhi, dxdPhi);
241090
241123
  }
241091
241124
  }
241092
241125
  /** AnalyticRoots has static methods for solving quadratic, cubic, and quartic equations.
@@ -241215,7 +241248,7 @@ class AnalyticRoots {
241215
241248
  * @param values array to expand
241216
241249
  */
241217
241250
  static appendLinearRoot(c0, c1, values) {
241218
- AnalyticRoots.appendSolution(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-c0, c1), values);
241251
+ AnalyticRoots.appendSolution(_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-c0, c1), values);
241219
241252
  }
241220
241253
  /**
241221
241254
  * * Compute the mean of all the entries in `data`
@@ -241246,7 +241279,7 @@ class AnalyticRoots {
241246
241279
  */
241247
241280
  static appendQuadraticRoots(c, values) {
241248
241281
  // Normal form: x^2 + 2px + q = 0
241249
- const divFactor = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(1.0, c[2]);
241282
+ const divFactor = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(1.0, c[2]);
241250
241283
  if (!divFactor) {
241251
241284
  this.appendLinearRoot(c[0], c[1], values);
241252
241285
  return;
@@ -241262,8 +241295,8 @@ class AnalyticRoots {
241262
241295
  return;
241263
241296
  }
241264
241297
  else if (D > 0) {
241265
- const sqrt_D = Math.sqrt(D);
241266
- this.append2Solutions(sqrt_D - p, -sqrt_D - p, values);
241298
+ const sqrtD = Math.sqrt(D);
241299
+ this.append2Solutions(sqrtD - p, -sqrtD - p, values);
241267
241300
  return;
241268
241301
  }
241269
241302
  return;
@@ -241329,7 +241362,7 @@ class AnalyticRoots {
241329
241362
  */
241330
241363
  /*
241331
241364
  private static _appendCubicRootsUnsorted(c: Float64Array | number[], results: GrowableFloat64Array) {
241332
- let sq_A: number;
241365
+ let AA: number;
241333
241366
  let p: number;
241334
241367
  let q: number;
241335
241368
 
@@ -241350,9 +241383,9 @@ class AnalyticRoots {
241350
241383
  // f' = 3y^2 + p
241351
241384
  // local min/max at Y = +-sqrt (-p)
241352
241385
  // f(+Y) = -p sqrt(-p) + 3p sqrt (-p) + 2q = 2 p sqrt (-p) + 2q
241353
- sq_A = A * A;
241354
- p = (3.0 * B - sq_A) / 9.0;
241355
- q = 1.0 / 2 * (2.0 / 27 * A * sq_A - 1.0 / 3 * A * B + C);
241386
+ AA = A * A;
241387
+ p = (3.0 * B - AA) / 9.0;
241388
+ q = 1.0 / 2 * (2.0 / 27 * A * AA - 1.0 / 3 * A * B + C);
241356
241389
 
241357
241390
  // Use Cardano formula
241358
241391
  const cb_p: number = p * p * p;
@@ -241390,9 +241423,9 @@ class AnalyticRoots {
241390
241423
 
241391
241424
  return;
241392
241425
  } else { // One real solution
241393
- const sqrt_D = Math.sqrt(D);
241394
- const u = this.cbrt(sqrt_D - q);
241395
- const v = -(this.cbrt(sqrt_D + q));
241426
+ const sqrtD = Math.sqrt(D);
241427
+ const u = this.cbrt(sqrtD - q);
241428
+ const v = -(this.cbrt(sqrtD + q));
241396
241429
  results.push(origin + u + v);
241397
241430
  this.improveRoots(c, 3, results, false);
241398
241431
  return;
@@ -241401,7 +241434,7 @@ class AnalyticRoots {
241401
241434
  */
241402
241435
  /** Compute roots of cubic 'c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 */
241403
241436
  static appendCubicRoots(c, results) {
241404
- if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideCoordinate(1.0, c[3]) !== undefined) {
241437
+ if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideCoordinate(1.0, c[3]) !== undefined) {
241405
241438
  this.appendFullCubicSolutions(c[3], c[2], c[1], c[0], results);
241406
241439
  // EDL April 5, 2020 replace classic GraphicsGems solver by RWDNickalls.
241407
241440
  // Don't know if improveRoots is needed.
@@ -241433,11 +241466,11 @@ class AnalyticRoots {
241433
241466
  const D = c[0] * coffScale[0];
241434
241467
  const origin = -0.25 * A;
241435
241468
  // substitute x = y - A/4 to eliminate cubic term: y^4 + py^2 + qy + r = 0
241436
- const sq_A = A * A;
241437
- const p = -0.375 * sq_A + B;
241438
- const q = 0.125 * sq_A * A - 0.5 * A * B + C;
241439
- const r = -0.01171875 * sq_A * sq_A + 0.0625 * sq_A * B - 0.25 * A * C + D;
241440
- const cubicSolutions = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
241469
+ const AA = A * A;
241470
+ const p = -0.375 * AA + B;
241471
+ const q = 0.125 * AA * A - 0.5 * A * B + C;
241472
+ const r = -0.01171875 * AA * AA + 0.0625 * AA * B - 0.25 * A * C + D;
241473
+ const cubicSolutions = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array();
241441
241474
  if (this.isZero(r)) { // no absolute term: y(y^3 + py + q) = 0
241442
241475
  coffs[0] = q;
241443
241476
  coffs[1] = p;
@@ -241615,17 +241648,16 @@ class PowerPolynomial {
241615
241648
  */
241616
241649
  class TrigPolynomial {
241617
241650
  /**
241618
- * Solve a polynomial created from trigonometric condition using Trig.S, Trig.C, Trig.W.
241619
- * * Polynomial is of degree 4:
241620
- * `p(t) = coff[0] + coff[1] * t + coff[2] * t^2 + coff[3] * t^3 + coff[4] * t^4`
241621
- * * Solution logic includes inferring angular roots corresponding zero leading coefficients
241622
- * (roots at infinity).
241623
- * @param coff coefficients.
241624
- * @param nominalDegree degree of the polynomial under most complex root case. If there are
241625
- * any zero coefficients up to this degree, a single root "at infinity" is recorded as its
241626
- * corresponding angular parameter at negative pi/2.
241627
- * @param referenceCoefficient a number which represents the size of coefficients at various
241628
- * stages of computation. A small fraction of this will be used as a zero tolerance
241651
+ * Find the roots of a univariate polynomial created from substituting the rational parameterization of the unit
241652
+ * circle into a trigonometric polynomial. Roots are returned as radian angles.
241653
+ * * Currently implemented for polynomials of degree <= 4.
241654
+ * * For example, the ellipse-ellipse intersection problem reduces to finding the roots of a quartic polynomial:
241655
+ * `p(t) = coff[0] + coff[1] t + coff[2] t^2 + coff[3] t^3 + coff[4] t^4`.
241656
+ * * Particular care is given to report a root at t = +/-infinity, which corresponds to the returned angle -pi/2.
241657
+ * @param coff coefficients in the power basis
241658
+ * @param nominalDegree degree of the polynomial under the most complex root case.
241659
+ * @param referenceCoefficient a number which represents the size of coefficients at various stages of computation.
241660
+ * A small fraction of this number will be used as a zero tolerance.
241629
241661
  * @param radians roots are placed here.
241630
241662
  * @return false if equation is all zeros. This usually means any angle is a solution.
241631
241663
  */
@@ -241643,7 +241675,7 @@ class TrigPolynomial {
241643
241675
  let degree = nominalDegree;
241644
241676
  while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
241645
241677
  degree--;
241646
- const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
241678
+ const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array();
241647
241679
  if (degree === -1) {
241648
241680
  // do nothing
241649
241681
  }
@@ -241665,41 +241697,42 @@ class TrigPolynomial {
241665
241697
  }
241666
241698
  else {
241667
241699
  // TODO: WORK WITH BEZIER SOLVER
241700
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Unimplemented degree in trig solver");
241668
241701
  }
241669
241702
  if (roots.length > 0) {
241670
- // Each solution t represents an angle with Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
241671
- // Division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
241703
+ // each solution t represents an angle with Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
241704
+ // division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
241672
241705
  for (let i = 0; i < roots.length; i++) {
241673
241706
  const ss = PowerPolynomial.evaluate(this.S, roots.atUncheckedIndex(i));
241674
241707
  const cc = PowerPolynomial.evaluate(this.C, roots.atUncheckedIndex(i));
241675
241708
  radians.push(Math.atan2(ss, cc));
241676
241709
  }
241677
- // each leading zero at the front of the coefficient array corresponds to a root at -PI/2.
241678
- // only make one entry because we don't report multiplicity.
241679
- if (degree < nominalDegree)
241680
- radians.push(-0.5 * Math.PI);
241681
241710
  }
241711
+ // If the tail of the coff array is zero, we solved a polynomial of lesser degree above, and
241712
+ // we report the skipped "root at infinity" as the corresponding angle -pi/2 (without multiplicity).
241713
+ // See core\geometry\internaldocs\unitCircleEllipseIntersection.md for details.
241714
+ if (degree < nominalDegree)
241715
+ radians.push(-0.5 * Math.PI);
241682
241716
  }
241683
241717
  return radians.length > 0;
241684
241718
  }
241685
241719
  /**
241686
- * Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
241687
- * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a = 0`
241688
- * Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
241720
+ * Compute intersections of the unit circle `x^2 + y^2 = 1` with the general quadric (conic)
241721
+ * `axx x^2 + axy xy + ayy y^2 + ax x + ay y + a = 0`.
241689
241722
  * @param axx coefficient of x^2
241690
241723
  * @param axy coefficient of xy
241691
241724
  * @param ayy coefficient of y^2
241692
241725
  * @param ax coefficient of x
241693
241726
  * @param ay coefficient of y
241694
241727
  * @param a constant coefficient
241695
- * @param radians solution angles
241728
+ * @param radians up to 4 solution angles t in the quadric parameterization: x = cos(t), y = sin(t)
241696
241729
  */
241697
241730
  static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a, radians) {
241698
241731
  const coffs = new Float64Array(5);
241699
241732
  PowerPolynomial.zero(coffs);
241700
241733
  let degree;
241701
241734
  // see core\geometry\internaldocs\unitCircleEllipseIntersection.md for derivation of these coefficients
241702
- if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(ax, ay, a)) {
241735
+ if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXYZ(ax, ay, a)) {
241703
241736
  PowerPolynomial.accumulate(coffs, this.CW, ax);
241704
241737
  PowerPolynomial.accumulate(coffs, this.SW, ay);
241705
241738
  PowerPolynomial.accumulate(coffs, this.WW, a);
@@ -241747,9 +241780,9 @@ class TrigPolynomial {
241747
241780
  const acs = 2.0 * (ux * vx + uy * vy);
241748
241781
  const ass = vx * vx + vy * vy;
241749
241782
  const ac = 2.0 * (ux * cx + uy * cy);
241750
- const asi = 2.0 * (vx * cx + vy * cy);
241783
+ const as = 2.0 * (vx * cx + vy * cy);
241751
241784
  const a = cx * cx + cy * cy - 1.0;
241752
- const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, asi, a, ellipseRadians);
241785
+ const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, as, a, ellipseRadians);
241753
241786
  for (const radians of ellipseRadians) {
241754
241787
  const cc = Math.cos(radians);
241755
241788
  const ss = Math.sin(radians);
@@ -241816,328 +241849,8 @@ TrigPolynomial.CC = Float64Array.from([1.0, -4.0, 4.0]);
241816
241849
  /** Standard Basis coefficients for W(t) * W(t). */
241817
241850
  TrigPolynomial.WW = Float64Array.from([1.0, -4.0, 8.0, -8.0, 4.0]);
241818
241851
  /** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
241819
- TrigPolynomial.CCminusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]);
241852
+ TrigPolynomial.CCMinusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]); // eslint-disable-line @typescript-eslint/naming-convention
241820
241853
  TrigPolynomial._coefficientRelTol = 1.0e-12;
241821
- /**
241822
- * static methods for commonly appearing sets of equations in 2 or 3 variables
241823
- * @public
241824
- */
241825
- class SmallSystem {
241826
- /**
241827
- * Return true if lines (a0,a1) to (b0, b1) have a simple intersection.
241828
- * Return the fractional (not xy) coordinates in result.x, result.y
241829
- * @param a0 start point of line a
241830
- * @param a1 end point of line a
241831
- * @param b0 start point of line b
241832
- * @param b1 end point of line b
241833
- * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
241834
- */
241835
- static lineSegment2dXYTransverseIntersectionUnbounded(a0, a1, b0, b1, result) {
241836
- const ux = a1.x - a0.x;
241837
- const uy = a1.y - a0.y;
241838
- const vx = b1.x - b0.x;
241839
- const vy = b1.y - b0.y;
241840
- const cx = b0.x - a0.x;
241841
- const cy = b0.y - a0.y;
241842
- const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
241843
- const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
241844
- const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
241845
- const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
241846
- const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
241847
- if (s !== undefined && t !== undefined) {
241848
- result.set(s, -t);
241849
- return true;
241850
- }
241851
- result.set(0, 0);
241852
- return false;
241853
- }
241854
- /**
241855
- * * (ax0,ay0) to (ax0+ux,ay0+uy) are line A.
241856
- * * (bx0,by0) to (bx0+vx,by0+vy) are lineB.
241857
- * * Return true if the lines have a simple intersection.
241858
- * * Return the fractional (not xy) coordinates in result.x, result.y
241859
- * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
241860
- */
241861
- static lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, result) {
241862
- const cx = bx0 - ax0;
241863
- const cy = by0 - ay0;
241864
- const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
241865
- const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
241866
- const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
241867
- const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
241868
- const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
241869
- if (s !== undefined && t !== undefined) {
241870
- result.set(s, -t);
241871
- return true;
241872
- }
241873
- result.set(0, 0);
241874
- return false;
241875
- }
241876
- /**
241877
- * Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts
241878
- * Return the fractional (not xy) coordinates in result.x, result.y
241879
- * @param a0 start point of line a
241880
- * @param a1 end point of line a
241881
- * @param b0 start point of line b
241882
- * @param b1 end point of line b
241883
- * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
241884
- */
241885
- static lineSegment3dXYTransverseIntersectionUnbounded(a0, a1, b0, b1, result) {
241886
- const ux = a1.x - a0.x;
241887
- const uy = a1.y - a0.y;
241888
- const vx = b1.x - b0.x;
241889
- const vy = b1.y - b0.y;
241890
- const cx = b0.x - a0.x;
241891
- const cy = b0.y - a0.y;
241892
- const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
241893
- const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
241894
- const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
241895
- const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
241896
- const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
241897
- if (s !== undefined && t !== undefined) {
241898
- result.set(s, -t);
241899
- return true;
241900
- }
241901
- result.set(0, 0);
241902
- return false;
241903
- }
241904
- /**
241905
- * Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts of WEIGHTED 4D Points
241906
- * Return the fractional (not xy) coordinates in result.x, result.y
241907
- * @param hA0 homogeneous start point of line a
241908
- * @param hA1 homogeneous end point of line a
241909
- * @param hB0 homogeneous start point of line b
241910
- * @param hB1 homogeneous end point of line b
241911
- * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
241912
- */
241913
- static lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1, result) {
241914
- // Considering only x,y,w parts....
241915
- // Point Q along B is (in full homogeneous) `(1-lambda) B0 + lambda 1`
241916
- // PointQ is colinear with A0,A1 when the determinant det (A0,A1,Q) is zero. (Each column takes xyw parts)
241917
- const alpha0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA0.x, hA1.x, hB0.x, hA0.y, hA1.y, hB0.y, hA0.w, hA1.w, hB0.w);
241918
- const alpha1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA0.x, hA1.x, hB1.x, hA0.y, hA1.y, hB1.y, hA0.w, hA1.w, hB1.w);
241919
- const fractionB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-alpha0, alpha1 - alpha0);
241920
- if (fractionB !== undefined) {
241921
- const beta0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hB0.x, hB1.x, hA0.x, hB0.y, hB1.y, hA0.y, hB0.w, hB1.w, hA0.w);
241922
- const beta1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hB0.x, hB1.x, hA1.x, hB0.y, hB1.y, hA1.y, hB0.w, hB1.w, hA1.w);
241923
- const fractionA = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-beta0, beta1 - beta0);
241924
- if (fractionA !== undefined)
241925
- return _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_6__.Vector2d.create(fractionA, fractionB, result);
241926
- }
241927
- return undefined;
241928
- }
241929
- /**
241930
- * Return the line fraction at which the (homogeneous) line is closest to a space point as viewed in xy only.
241931
- * @param hA0 homogeneous start point of line a
241932
- * @param hA1 homogeneous end point of line a
241933
- * @param spacePoint homogeneous point in space
241934
- */
241935
- static lineSegment3dHXYClosestPointUnbounded(hA0, hA1, spacePoint) {
241936
- // Considering only x,y,w parts....
241937
- // weighted difference of (A1 w0 - A0 w1) is (cartesian) tangent vector along the line as viewed.
241938
- // The perpendicular (pure vector) W = (-y,x) flip is the direction of projection
241939
- // Point Q along A is (in full homogeneous) `(1-lambda) A0 + lambda 1 A1`
241940
- // PointQ is colinear with spacePoint and and W when the xyw homogeneous determinant | Q W spacePoint | is zero.
241941
- const tx = hA1.x * hA0.w - hA0.x * hA1.w;
241942
- const ty = hA1.y * hA0.w - hA0.y * hA1.w;
241943
- const det0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA0.x, -ty, spacePoint.x, hA0.y, tx, spacePoint.y, hA0.w, 0, spacePoint.w);
241944
- const det1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA1.x, -ty, spacePoint.x, hA1.y, tx, spacePoint.y, hA1.w, 0, spacePoint.w);
241945
- return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-det0, det1 - det0);
241946
- }
241947
- /**
241948
- * Return the line fraction at which the line is closest to a space point as viewed in xy only.
241949
- * @param pointA0 start point
241950
- * @param pointA1 end point
241951
- * @param spacePoint point in space
241952
- */
241953
- static lineSegment3dXYClosestPointUnbounded(pointA0, pointA1, spacePoint) {
241954
- // Considering only x,y parts....
241955
- const ux = pointA1.x - pointA0.x;
241956
- const uy = pointA1.y - pointA0.y;
241957
- const uu = ux * ux + uy * uy;
241958
- const vx = spacePoint.x - pointA0.x;
241959
- const vy = spacePoint.y - pointA0.y;
241960
- const uv = ux * vx + uy * vy;
241961
- return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(uv, uu);
241962
- }
241963
- /**
241964
- * Return the line fraction at which the line is closest to a space point
241965
- * @param pointA0 start point
241966
- * @param pointA1 end point
241967
- * @param spacePoint point in space
241968
- */
241969
- static lineSegment3dClosestPointUnbounded(pointA0, pointA1, spacePoint) {
241970
- const ux = pointA1.x - pointA0.x;
241971
- const uy = pointA1.y - pointA0.y;
241972
- const uz = pointA1.z - pointA0.z;
241973
- const uu = ux * ux + uy * uy + uz * uz;
241974
- const vx = spacePoint.x - pointA0.x;
241975
- const vy = spacePoint.y - pointA0.y;
241976
- const vz = spacePoint.z - pointA0.z;
241977
- const uv = ux * vx + uy * vy + uz * vz;
241978
- return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(uv, uu);
241979
- }
241980
- /**
241981
- * Return true if lines (a0,a1) to (b0, b1) have closest approach (go by each other) in 3d
241982
- * Return the fractional (not xy) coordinates in result.x, result.y
241983
- * @param a0 start point of line a
241984
- * @param a1 end point of line a
241985
- * @param b0 start point of line b
241986
- * @param b1 end point of line b
241987
- * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
241988
- */
241989
- static lineSegment3dClosestApproachUnbounded(a0, a1, b0, b1, result) {
241990
- return this.ray3dXYZUVWClosestApproachUnbounded(a0.x, a0.y, a0.z, a1.x - a0.x, a1.y - a0.y, a1.z - a0.z, b0.x, b0.y, b0.z, b1.x - b0.x, b1.y - b0.y, b1.z - b0.z, result);
241991
- }
241992
- /**
241993
- * Return true if the given rays have closest approach (go by each other) in 3d
241994
- * Return the fractional (not xy) coordinates as x and y parts of a Point2d.
241995
- * @param ax x-coordinate of the origin of the first ray
241996
- * @param ay y-coordinate of the origin of the first ray
241997
- * @param az z-coordinate of the origin of the first ray
241998
- * @param au x-coordinate of the direction vector of the first ray
241999
- * @param av y-coordinate of the direction vector of the first ray
242000
- * @param aw z-coordinate of the direction vector of the first ray
242001
- * @param bx x-coordinate of the origin of the second ray
242002
- * @param by y-coordinate of the origin of the second ray
242003
- * @param bz z-coordinate of the origin of the second ray
242004
- * @param bu x-coordinate of the direction vector of the second ray
242005
- * @param bv y-coordinate of the direction vector of the second ray
242006
- * @param bw z-coordinate of the direction vector of the second ray
242007
- * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
242008
- */
242009
- static ray3dXYZUVWClosestApproachUnbounded(ax, ay, az, au, av, aw, bx, by, bz, bu, bv, bw, result) {
242010
- const cx = bx - ax;
242011
- const cy = by - ay;
242012
- const cz = bz - az;
242013
- const uu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(au, av, aw);
242014
- const vv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(bu, bv, bw);
242015
- const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(au, av, aw, bu, bv, bw);
242016
- const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(cx, cy, cz, au, av, aw);
242017
- const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(cx, cy, cz, bu, bv, bw);
242018
- return SmallSystem.linearSystem2d(uu, -uv, uv, -vv, cu, cv, result);
242019
- }
242020
- /**
242021
- * Solve the pair of linear equations
242022
- * * `ux * x + vx * y = cx`
242023
- * * `uy * x + vy * y = cy`
242024
- * @param ux xx coefficient
242025
- * @param vx xy coefficient
242026
- * @param uy yx coefficient
242027
- * @param vy yy coefficient
242028
- * @param cx x right hand side
242029
- * @param cy y right hand side
242030
- * @param result (x,y) solution (MUST be preallocated by caller)
242031
- */
242032
- static linearSystem2d(ux, vx, // first row of matrix
242033
- uy, vy, // second row of matrix
242034
- cx, cy, // right side
242035
- result) {
242036
- const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
242037
- const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
242038
- const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
242039
- const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
242040
- const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
242041
- if (s !== undefined && t !== undefined) {
242042
- result.set(s, t);
242043
- return true;
242044
- }
242045
- result.set(0, 0);
242046
- return false;
242047
- }
242048
- /**
242049
- * Solve a linear system:
242050
- * * x equation: `axx * u + axy * v + axz * w = cx`
242051
- * * y equation: `ayx * u + ayy * v + ayz * w = cy`
242052
- * * z equation: `azx * u + azy * v + azz * w = cz`
242053
- * @param axx row 0, column 0 coefficient
242054
- * @param axy row 0, column 1 coefficient
242055
- * @param axz row 0, column 1 coefficient
242056
- * @param ayx row 1, column 0 coefficient
242057
- * @param ayy row 1, column 1 coefficient
242058
- * @param ayz row 1, column 2 coefficient
242059
- * @param azx row 2, column 0 coefficient
242060
- * @param azy row 2, column 1 coefficient
242061
- * @param azz row 2, column 2 coefficient
242062
- * @param cx right hand side row 0 coefficient
242063
- * @param cy right hand side row 1 coefficient
242064
- * @param cz right hand side row 2 coefficient
242065
- * @param result optional result.
242066
- * @returns solution vector (u,v,w) or `undefined` if system is singular.
242067
- */
242068
- static linearSystem3d(axx, axy, axz, // first row of matrix
242069
- ayx, ayy, ayz, // second row of matrix
242070
- azx, azy, azz, // second row of matrix
242071
- cx, cy, cz, // right side
242072
- result) {
242073
- // determinants of various combinations of columns ...
242074
- const detXYZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, axy, ayy, azy, axz, ayz, azz);
242075
- const detCYZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(cx, cy, cz, axy, ayy, azy, axz, ayz, azz);
242076
- const detXCZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, cx, cy, cz, axz, ayz, azz);
242077
- const detXYC = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, axy, ayy, azy, cx, cy, cz);
242078
- const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detCYZ, detXYZ);
242079
- const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detXCZ, detXYZ);
242080
- const u = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detXYC, detXYZ);
242081
- if (s !== undefined && t !== undefined && u !== undefined) {
242082
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(s, t, u, result);
242083
- }
242084
- return undefined;
242085
- }
242086
- /**
242087
- * Compute the intersection of three planes.
242088
- * @param xyzA point on the first plane
242089
- * @param normalA normal of the first plane
242090
- * @param xyzB point on the second plane
242091
- * @param normalB normal of the second plane
242092
- * @param xyzC point on the third plane
242093
- * @param normalC normal of the third plane
242094
- * @param result optional result
242095
- * @returns intersection point of the three planes (as a Vector3d), or undefined if at least two planes are parallel.
242096
- */
242097
- static intersect3Planes(xyzA, normalA, xyzB, normalB, xyzC, normalC, result) {
242098
- return this.linearSystem3d(normalA.x, normalA.y, normalA.z, normalB.x, normalB.y, normalB.z, normalC.x, normalC.y, normalC.z, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(xyzA.x, xyzA.y, xyzA.z, normalA.x, normalA.y, normalA.z), _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(xyzB.x, xyzB.y, xyzB.z, normalB.x, normalB.y, normalB.z), _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(xyzC.x, xyzC.y, xyzC.z, normalC.x, normalC.y, normalC.z), result);
242099
- }
242100
- /**
242101
- * * in rowB, replace `rowB[j] += a * rowB[pivot] * rowA[j] / rowA[pivot]` for `j>pivot`
242102
- * @param rowA row that does not change
242103
- * @param pivotIndex index of pivot (divisor) in rowA.
242104
- * @param rowB row where elimination occurs.
242105
- */
242106
- static eliminateFromPivot(rowA, pivotIndex, rowB, a) {
242107
- const n = rowA.length;
242108
- let q = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(rowB[pivotIndex], rowA[pivotIndex]);
242109
- if (q === undefined)
242110
- return false;
242111
- q *= a;
242112
- for (let j = pivotIndex + 1; j < n; j++)
242113
- rowB[j] += q * rowA[j];
242114
- return true;
242115
- }
242116
- /**
242117
- * Solve a pair of bilinear equations
242118
- * * First equation: `a0 + b0 * u + c0 * v + d0 * u * v = 0`
242119
- * * Second equation: `a0 + b0 * u + c0 * v + d0 * u * v = 0`
242120
- */
242121
- static solveBilinearPair(a0, b0, c0, d0, a1, b1, c1, d1) {
242122
- // constant linear, and quadratic coefficients for c0 + c1 * u + c2 * u*u = 0
242123
- const e0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(a0, a1, c0, c1);
242124
- const e1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(b0, b1, c0, c1) + _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(a0, a1, d0, d1);
242125
- const e2 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(b0, b1, d0, d1);
242126
- const uRoots = Degree2PowerPolynomial.solveQuadratic(e2, e1, e0);
242127
- if (uRoots === undefined)
242128
- return undefined;
242129
- const uv = [];
242130
- for (const u of uRoots) {
242131
- const v0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-(a0 + b0 * u), c0 + d0 * u);
242132
- const v1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-(a1 + b1 * u), c1 + d1 * u);
242133
- if (v0 !== undefined)
242134
- uv.push(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_6__.Point2d.create(u, v0));
242135
- else if (v1 !== undefined)
242136
- uv.push(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_6__.Point2d.create(u, v1));
242137
- }
242138
- return uv;
242139
- }
242140
- }
242141
241854
  /**
242142
241855
  * * bilinear expression
242143
241856
  * * `f(u,v) = a + b * u * c * v + d * u * v`
@@ -242168,6 +241881,30 @@ class BilinearPolynomial {
242168
241881
  static createUnitSquareValues(f00, f10, f01, f11) {
242169
241882
  return new BilinearPolynomial(f00, f10, f10, f11 - f10 - f01);
242170
241883
  }
241884
+ /**
241885
+ * Solve a pair of bilinear equations
241886
+ * * First equation: `a0 + b0 * u + c0 * v + d0 * u * v = 0`
241887
+ * * Second equation: `a1 + b1 * u + c1 * v + d1 * u * v = 0`
241888
+ */
241889
+ static solveBilinearPair(a0, b0, c0, d0, a1, b1, c1, d1) {
241890
+ // constant linear, and quadratic coefficients for c0 + c1 * u + c2 * u*u = 0
241891
+ const e0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(a0, a1, c0, c1);
241892
+ const e1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(b0, b1, c0, c1) + _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(a0, a1, d0, d1);
241893
+ const e2 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(b0, b1, d0, d1);
241894
+ const uRoots = Degree2PowerPolynomial.solveQuadratic(e2, e1, e0);
241895
+ if (uRoots === undefined)
241896
+ return undefined;
241897
+ const uv = [];
241898
+ for (const u of uRoots) {
241899
+ const v0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-(a0 + b0 * u), c0 + d0 * u);
241900
+ const v1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-(a1 + b1 * u), c1 + d1 * u);
241901
+ if (v0 !== undefined)
241902
+ uv.push(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create(u, v0));
241903
+ else if (v1 !== undefined)
241904
+ uv.push(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create(u, v1));
241905
+ }
241906
+ return uv;
241907
+ }
242171
241908
  /**
242172
241909
  * Solve the simultaneous equations
242173
241910
  * * `p(u,v) = pValue`
@@ -242178,7 +241915,7 @@ class BilinearPolynomial {
242178
241915
  * @param qValue
242179
241916
  */
242180
241917
  static solvePair(p, pValue, q, qValue) {
242181
- return SmallSystem.solveBilinearPair(p.a - pValue, p.b, p.c, p.d, q.a - qValue, q.b, q.c, q.d);
241918
+ return BilinearPolynomial.solveBilinearPair(p.a - pValue, p.b, p.c, p.d, q.a - qValue, q.b, q.c, q.d);
242182
241919
  }
242183
241920
  }
242184
241921
  /**
@@ -242209,21 +241946,21 @@ class SineCosinePolynomial {
242209
241946
  }
242210
241947
  /** Return the range of function values over the entire angle range. */
242211
241948
  range(result) {
242212
- const q = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXY(this.cosineCoff, this.sineCoff);
242213
- return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_3__.Range1d.createXX(this.a - q, this.a + q, result);
241949
+ const q = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXY(this.cosineCoff, this.sineCoff);
241950
+ return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createXX(this.a - q, this.a + q, result);
242214
241951
  }
242215
241952
  /** Return the min and max values of the function over theta range from radians0 to radians1 inclusive. */
242216
241953
  rangeInStartEndRadians(radians0, radians1, result) {
242217
- if (_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_7__.Angle.isFullCircleRadians(radians1 - radians0))
241954
+ if (_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_8__.Angle.isFullCircleRadians(radians1 - radians0))
242218
241955
  return this.range(result);
242219
- result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_3__.Range1d.createXX(this.evaluateRadians(radians0), this.evaluateRadians(radians1), result);
241956
+ result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createXX(this.evaluateRadians(radians0), this.evaluateRadians(radians1), result);
242220
241957
  // angles of min and max ...
242221
241958
  // angles for min and max of the sine wave . ..
242222
241959
  const alphaA = Math.atan2(this.sineCoff, this.cosineCoff);
242223
241960
  const alphaB = alphaA + Math.PI;
242224
- if (_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__.AngleSweep.isRadiansInStartEnd(alphaA, radians0, radians1))
241961
+ if (_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.isRadiansInStartEnd(alphaA, radians0, radians1))
242225
241962
  result.extendX(this.evaluateRadians(alphaA));
242226
- if (_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__.AngleSweep.isRadiansInStartEnd(alphaB, radians0, radians1))
241963
+ if (_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.isRadiansInStartEnd(alphaB, radians0, radians1))
242227
241964
  result.extendX(this.evaluateRadians(alphaB));
242228
241965
  return result;
242229
241966
  }
@@ -242259,14 +241996,14 @@ class ImplicitLineXY {
242259
241996
  */
242260
241997
  convertToSegmentPoints(b) {
242261
241998
  const q = Math.sqrt(this.ax * this.ax + this.ay * this.ay);
242262
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideCoordinate(1.0, q, 1.0e10);
241999
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideCoordinate(1.0, q, 1.0e10);
242263
242000
  if (alpha === undefined)
242264
242001
  return undefined;
242265
242002
  const ux = alpha * this.ax;
242266
242003
  const uy = alpha * this.ay;
242267
242004
  const px = -alpha * ux;
242268
242005
  const py = -alpha * uy;
242269
- return [_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(px - b * uy, py + b * ux), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(px + b * uy, py - b * ux)];
242006
+ return [_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(px - b * uy, py + b * ux), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(px + b * uy, py - b * ux)];
242270
242007
  }
242271
242008
  /**
242272
242009
  * Evaluate the half-space function at an xy point
@@ -242878,6 +242615,341 @@ function compareRange1dLexicalLowHigh(a, b) {
242878
242615
  }
242879
242616
 
242880
242617
 
242618
+ /***/ }),
242619
+
242620
+ /***/ "../../core/geometry/lib/esm/numerics/SmallSystem.js":
242621
+ /*!***********************************************************!*\
242622
+ !*** ../../core/geometry/lib/esm/numerics/SmallSystem.js ***!
242623
+ \***********************************************************/
242624
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
242625
+
242626
+ "use strict";
242627
+ __webpack_require__.r(__webpack_exports__);
242628
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
242629
+ /* harmony export */ "SmallSystem": () => (/* binding */ SmallSystem)
242630
+ /* harmony export */ });
242631
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
242632
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
242633
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
242634
+ /* harmony import */ var _Polynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
242635
+ /*---------------------------------------------------------------------------------------------
242636
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
242637
+ * See LICENSE.md in the project root for license terms and full copyright notice.
242638
+ *--------------------------------------------------------------------------------------------*/
242639
+ /** @packageDocumentation
242640
+ * @module Numerics
242641
+ */
242642
+
242643
+
242644
+
242645
+
242646
+ // cspell:word XYUV
242647
+ /**
242648
+ * static methods for commonly appearing sets of equations in 2 or 3 variables
242649
+ * @public
242650
+ */
242651
+ class SmallSystem {
242652
+ /**
242653
+ * Return true if lines (a0,a1) to (b0, b1) have a simple intersection.
242654
+ * Return the fractional (not xy) coordinates in result.x, result.y
242655
+ * @param a0 start point of line a
242656
+ * @param a1 end point of line a
242657
+ * @param b0 start point of line b
242658
+ * @param b1 end point of line b
242659
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
242660
+ */
242661
+ static lineSegment2dXYTransverseIntersectionUnbounded(a0, a1, b0, b1, result) {
242662
+ const ux = a1.x - a0.x;
242663
+ const uy = a1.y - a0.y;
242664
+ const vx = b1.x - b0.x;
242665
+ const vy = b1.y - b0.y;
242666
+ const cx = b0.x - a0.x;
242667
+ const cy = b0.y - a0.y;
242668
+ const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
242669
+ const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
242670
+ const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
242671
+ const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
242672
+ const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
242673
+ if (s !== undefined && t !== undefined) {
242674
+ result.set(s, -t);
242675
+ return true;
242676
+ }
242677
+ result.set(0, 0);
242678
+ return false;
242679
+ }
242680
+ /**
242681
+ * * (ax0,ay0) to (ax0+ux,ay0+uy) are line A.
242682
+ * * (bx0,by0) to (bx0+vx,by0+vy) are lineB.
242683
+ * * Return true if the lines have a simple intersection.
242684
+ * * Return the fractional (not xy) coordinates in result.x, result.y
242685
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
242686
+ */
242687
+ static lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, result) {
242688
+ const cx = bx0 - ax0;
242689
+ const cy = by0 - ay0;
242690
+ const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
242691
+ const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
242692
+ const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
242693
+ const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
242694
+ const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
242695
+ if (s !== undefined && t !== undefined) {
242696
+ result.set(s, -t);
242697
+ return true;
242698
+ }
242699
+ result.set(0, 0);
242700
+ return false;
242701
+ }
242702
+ /**
242703
+ * Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts
242704
+ * Return the fractional (not xy) coordinates in result.x, result.y
242705
+ * @param a0 start point of line a
242706
+ * @param a1 end point of line a
242707
+ * @param b0 start point of line b
242708
+ * @param b1 end point of line b
242709
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
242710
+ */
242711
+ static lineSegment3dXYTransverseIntersectionUnbounded(a0, a1, b0, b1, result) {
242712
+ const ux = a1.x - a0.x;
242713
+ const uy = a1.y - a0.y;
242714
+ const vx = b1.x - b0.x;
242715
+ const vy = b1.y - b0.y;
242716
+ const cx = b0.x - a0.x;
242717
+ const cy = b0.y - a0.y;
242718
+ const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
242719
+ const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
242720
+ const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
242721
+ const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
242722
+ const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
242723
+ if (s !== undefined && t !== undefined) {
242724
+ result.set(s, -t);
242725
+ return true;
242726
+ }
242727
+ result.set(0, 0);
242728
+ return false;
242729
+ }
242730
+ /**
242731
+ * Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts of WEIGHTED 4D Points
242732
+ * Return the fractional (not xy) coordinates in result.x, result.y
242733
+ * @param hA0 homogeneous start point of line a
242734
+ * @param hA1 homogeneous end point of line a
242735
+ * @param hB0 homogeneous start point of line b
242736
+ * @param hB1 homogeneous end point of line b
242737
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
242738
+ */
242739
+ static lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1, result) {
242740
+ // Considering only x,y,w parts....
242741
+ // Point Q along B is (in full homogeneous) `(1-lambda) B0 + lambda 1`
242742
+ // PointQ is colinear with A0,A1 when the determinant det (A0,A1,Q) is zero. (Each column takes xyw parts)
242743
+ const alpha0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA0.x, hA1.x, hB0.x, hA0.y, hA1.y, hB0.y, hA0.w, hA1.w, hB0.w);
242744
+ const alpha1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA0.x, hA1.x, hB1.x, hA0.y, hA1.y, hB1.y, hA0.w, hA1.w, hB1.w);
242745
+ const fractionB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-alpha0, alpha1 - alpha0);
242746
+ if (fractionB !== undefined) {
242747
+ const beta0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hB0.x, hB1.x, hA0.x, hB0.y, hB1.y, hA0.y, hB0.w, hB1.w, hA0.w);
242748
+ const beta1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hB0.x, hB1.x, hA1.x, hB0.y, hB1.y, hA1.y, hB0.w, hB1.w, hA1.w);
242749
+ const fractionA = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-beta0, beta1 - beta0);
242750
+ if (fractionA !== undefined)
242751
+ return _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.Vector2d.create(fractionA, fractionB, result);
242752
+ }
242753
+ return undefined;
242754
+ }
242755
+ /**
242756
+ * Return the line fraction at which the (homogeneous) line is closest to a space point as viewed in xy only.
242757
+ * @param hA0 homogeneous start point of line a
242758
+ * @param hA1 homogeneous end point of line a
242759
+ * @param spacePoint homogeneous point in space
242760
+ */
242761
+ static lineSegment3dHXYClosestPointUnbounded(hA0, hA1, spacePoint) {
242762
+ // Considering only x,y,w parts....
242763
+ // weighted difference of (A1 w0 - A0 w1) is (cartesian) tangent vector along the line as viewed.
242764
+ // The perpendicular (pure vector) W = (-y,x) flip is the direction of projection
242765
+ // Point Q along A is (in full homogeneous) `(1-lambda) A0 + lambda 1 A1`
242766
+ // PointQ is colinear with spacePoint and and W when the xyw homogeneous determinant | Q W spacePoint | is zero.
242767
+ const tx = hA1.x * hA0.w - hA0.x * hA1.w;
242768
+ const ty = hA1.y * hA0.w - hA0.y * hA1.w;
242769
+ const det0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA0.x, -ty, spacePoint.x, hA0.y, tx, spacePoint.y, hA0.w, 0, spacePoint.w);
242770
+ const det1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA1.x, -ty, spacePoint.x, hA1.y, tx, spacePoint.y, hA1.w, 0, spacePoint.w);
242771
+ return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-det0, det1 - det0);
242772
+ }
242773
+ /**
242774
+ * Return the line fraction at which the line is closest to a space point as viewed in xy only.
242775
+ * @param pointA0 start point
242776
+ * @param pointA1 end point
242777
+ * @param spacePoint point in space
242778
+ */
242779
+ static lineSegment3dXYClosestPointUnbounded(pointA0, pointA1, spacePoint) {
242780
+ // Considering only x,y parts....
242781
+ const ux = pointA1.x - pointA0.x;
242782
+ const uy = pointA1.y - pointA0.y;
242783
+ const uu = ux * ux + uy * uy;
242784
+ const vx = spacePoint.x - pointA0.x;
242785
+ const vy = spacePoint.y - pointA0.y;
242786
+ const uv = ux * vx + uy * vy;
242787
+ return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(uv, uu);
242788
+ }
242789
+ /**
242790
+ * Return the line fraction at which the line is closest to a space point
242791
+ * @param pointA0 start point
242792
+ * @param pointA1 end point
242793
+ * @param spacePoint point in space
242794
+ */
242795
+ static lineSegment3dClosestPointUnbounded(pointA0, pointA1, spacePoint) {
242796
+ const ux = pointA1.x - pointA0.x;
242797
+ const uy = pointA1.y - pointA0.y;
242798
+ const uz = pointA1.z - pointA0.z;
242799
+ const uu = ux * ux + uy * uy + uz * uz;
242800
+ const vx = spacePoint.x - pointA0.x;
242801
+ const vy = spacePoint.y - pointA0.y;
242802
+ const vz = spacePoint.z - pointA0.z;
242803
+ const uv = ux * vx + uy * vy + uz * vz;
242804
+ return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(uv, uu);
242805
+ }
242806
+ /**
242807
+ * Return true if lines (a0,a1) to (b0, b1) have closest approach (go by each other) in 3d
242808
+ * Return the fractional (not xy) coordinates in result.x, result.y
242809
+ * @param a0 start point of line a
242810
+ * @param a1 end point of line a
242811
+ * @param b0 start point of line b
242812
+ * @param b1 end point of line b
242813
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
242814
+ */
242815
+ static lineSegment3dClosestApproachUnbounded(a0, a1, b0, b1, result) {
242816
+ return this.ray3dXYZUVWClosestApproachUnbounded(a0.x, a0.y, a0.z, a1.x - a0.x, a1.y - a0.y, a1.z - a0.z, b0.x, b0.y, b0.z, b1.x - b0.x, b1.y - b0.y, b1.z - b0.z, result);
242817
+ }
242818
+ /**
242819
+ * Return true if the given rays have closest approach (go by each other) in 3d
242820
+ * Return the fractional (not xy) coordinates as x and y parts of a Point2d.
242821
+ * @param ax x-coordinate of the origin of the first ray
242822
+ * @param ay y-coordinate of the origin of the first ray
242823
+ * @param az z-coordinate of the origin of the first ray
242824
+ * @param au x-coordinate of the direction vector of the first ray
242825
+ * @param av y-coordinate of the direction vector of the first ray
242826
+ * @param aw z-coordinate of the direction vector of the first ray
242827
+ * @param bx x-coordinate of the origin of the second ray
242828
+ * @param by y-coordinate of the origin of the second ray
242829
+ * @param bz z-coordinate of the origin of the second ray
242830
+ * @param bu x-coordinate of the direction vector of the second ray
242831
+ * @param bv y-coordinate of the direction vector of the second ray
242832
+ * @param bw z-coordinate of the direction vector of the second ray
242833
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
242834
+ */
242835
+ static ray3dXYZUVWClosestApproachUnbounded(ax, ay, az, au, av, aw, bx, by, bz, bu, bv, bw, result) {
242836
+ const cx = bx - ax;
242837
+ const cy = by - ay;
242838
+ const cz = bz - az;
242839
+ const uu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(au, av, aw);
242840
+ const vv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(bu, bv, bw);
242841
+ const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(au, av, aw, bu, bv, bw);
242842
+ const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(cx, cy, cz, au, av, aw);
242843
+ const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(cx, cy, cz, bu, bv, bw);
242844
+ return SmallSystem.linearSystem2d(uu, -uv, uv, -vv, cu, cv, result);
242845
+ }
242846
+ /**
242847
+ * Solve the pair of linear equations
242848
+ * * `ux * x + vx * y = cx`
242849
+ * * `uy * x + vy * y = cy`
242850
+ * @param ux xx coefficient
242851
+ * @param vx xy coefficient
242852
+ * @param uy yx coefficient
242853
+ * @param vy yy coefficient
242854
+ * @param cx x right hand side
242855
+ * @param cy y right hand side
242856
+ * @param result (x,y) solution (MUST be preallocated by caller)
242857
+ */
242858
+ static linearSystem2d(ux, vx, // first row of matrix
242859
+ uy, vy, // second row of matrix
242860
+ cx, cy, // right side
242861
+ result) {
242862
+ const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
242863
+ const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
242864
+ const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
242865
+ const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
242866
+ const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
242867
+ if (s !== undefined && t !== undefined) {
242868
+ result.set(s, t);
242869
+ return true;
242870
+ }
242871
+ result.set(0, 0);
242872
+ return false;
242873
+ }
242874
+ /**
242875
+ * Solve a linear system:
242876
+ * * x equation: `axx * u + axy * v + axz * w = cx`
242877
+ * * y equation: `ayx * u + ayy * v + ayz * w = cy`
242878
+ * * z equation: `azx * u + azy * v + azz * w = cz`
242879
+ * @param axx row 0, column 0 coefficient
242880
+ * @param axy row 0, column 1 coefficient
242881
+ * @param axz row 0, column 1 coefficient
242882
+ * @param ayx row 1, column 0 coefficient
242883
+ * @param ayy row 1, column 1 coefficient
242884
+ * @param ayz row 1, column 2 coefficient
242885
+ * @param azx row 2, column 0 coefficient
242886
+ * @param azy row 2, column 1 coefficient
242887
+ * @param azz row 2, column 2 coefficient
242888
+ * @param cx right hand side row 0 coefficient
242889
+ * @param cy right hand side row 1 coefficient
242890
+ * @param cz right hand side row 2 coefficient
242891
+ * @param result optional result.
242892
+ * @returns solution vector (u,v,w) or `undefined` if system is singular.
242893
+ */
242894
+ static linearSystem3d(axx, axy, axz, // first row of matrix
242895
+ ayx, ayy, ayz, // second row of matrix
242896
+ azx, azy, azz, // second row of matrix
242897
+ cx, cy, cz, // right side
242898
+ result) {
242899
+ // determinants of various combinations of columns ...
242900
+ const detXYZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, axy, ayy, azy, axz, ayz, azz);
242901
+ const detCYZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(cx, cy, cz, axy, ayy, azy, axz, ayz, azz);
242902
+ const detXCZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, cx, cy, cz, axz, ayz, azz);
242903
+ const detXYC = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, axy, ayy, azy, cx, cy, cz);
242904
+ const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detCYZ, detXYZ);
242905
+ const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detXCZ, detXYZ);
242906
+ const u = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detXYC, detXYZ);
242907
+ if (s !== undefined && t !== undefined && u !== undefined) {
242908
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(s, t, u, result);
242909
+ }
242910
+ return undefined;
242911
+ }
242912
+ /**
242913
+ * Compute the intersection of three planes.
242914
+ * @param xyzA point on the first plane
242915
+ * @param normalA normal of the first plane
242916
+ * @param xyzB point on the second plane
242917
+ * @param normalB normal of the second plane
242918
+ * @param xyzC point on the third plane
242919
+ * @param normalC normal of the third plane
242920
+ * @param result optional result
242921
+ * @returns intersection point of the three planes (as a Vector3d), or undefined if at least two planes are parallel.
242922
+ */
242923
+ static intersect3Planes(xyzA, normalA, xyzB, normalB, xyzC, normalC, result) {
242924
+ return this.linearSystem3d(normalA.x, normalA.y, normalA.z, normalB.x, normalB.y, normalB.z, normalC.x, normalC.y, normalC.z, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(xyzA.x, xyzA.y, xyzA.z, normalA.x, normalA.y, normalA.z), _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(xyzB.x, xyzB.y, xyzB.z, normalB.x, normalB.y, normalB.z), _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(xyzC.x, xyzC.y, xyzC.z, normalC.x, normalC.y, normalC.z), result);
242925
+ }
242926
+ /**
242927
+ * * in rowB, replace `rowB[j] += a * rowB[pivot] * rowA[j] / rowA[pivot]` for `j>pivot`
242928
+ * @param rowA row that does not change
242929
+ * @param pivotIndex index of pivot (divisor) in rowA.
242930
+ * @param rowB row where elimination occurs.
242931
+ */
242932
+ static eliminateFromPivot(rowA, pivotIndex, rowB, a) {
242933
+ const n = rowA.length;
242934
+ let q = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(rowB[pivotIndex], rowA[pivotIndex]);
242935
+ if (q === undefined)
242936
+ return false;
242937
+ q *= a;
242938
+ for (let j = pivotIndex + 1; j < n; j++)
242939
+ rowB[j] += q * rowA[j];
242940
+ return true;
242941
+ }
242942
+ /**
242943
+ * Solve a pair of bilinear equations
242944
+ * * First equation: `a0 + b0 * u + c0 * v + d0 * u * v = 0`
242945
+ * * Second equation: `a1 + b1 * u + c1 * v + d1 * u * v = 0`
242946
+ */
242947
+ static solveBilinearPair(a0, b0, c0, d0, a1, b1, c1, d1) {
242948
+ return _Polynomials__WEBPACK_IMPORTED_MODULE_3__.BilinearPolynomial.solveBilinearPair(a0, b0, c0, d0, a1, b1, c1, d1);
242949
+ }
242950
+ }
242951
+
242952
+
242881
242953
  /***/ }),
242882
242954
 
242883
242955
  /***/ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js":
@@ -253427,16 +253499,16 @@ __webpack_require__.r(__webpack_exports__);
253427
253499
  /* harmony export */ "OffsetMeshContext": () => (/* binding */ OffsetMeshContext),
253428
253500
  /* harmony export */ "SectorOffsetProperties": () => (/* binding */ SectorOffsetProperties)
253429
253501
  /* harmony export */ });
253430
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
253502
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
253503
+ /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
253431
253504
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
253432
253505
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
253433
253506
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
253507
+ /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
253434
253508
  /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
253509
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
253435
253510
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
253436
253511
  /* harmony import */ var _topology_HalfEdgeGraphFromIndexedLoopsContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../topology/HalfEdgeGraphFromIndexedLoopsContext */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js");
253437
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
253438
- /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
253439
- /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
253440
253512
  /*---------------------------------------------------------------------------------------------
253441
253513
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
253442
253514
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -254177,7 +254249,7 @@ class OffsetMeshContext {
254177
254249
  const sectorA = nodeA.edgeTag;
254178
254250
  const sectorB = nodeB.edgeTag;
254179
254251
  const sectorC = nodeC.edgeTag;
254180
- const vector = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
254252
+ const vector = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
254181
254253
  return vector;
254182
254254
  }
254183
254255
  /** Compute the point of intersection of the planes in the sectors of 3 half edges */
@@ -254190,7 +254262,7 @@ class OffsetMeshContext {
254190
254262
  for (const sector of [sectorA, sectorB, sectorC])
254191
254263
  emitSector(sector);
254192
254264
  }
254193
- const vector = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
254265
+ const vector = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
254194
254266
  if (OffsetMeshContext.stringDebugFunction !== undefined) {
254195
254267
  if (vector === undefined)
254196
254268
  OffsetMeshContext.stringDebugFunction(" NO INTERSECTION");
@@ -254204,7 +254276,7 @@ class OffsetMeshContext {
254204
254276
  const sectorA = nodeA.edgeTag;
254205
254277
  const sectorB = nodeB.edgeTag;
254206
254278
  const normalC = sectorA.normal.crossProduct(sectorB.normal);
254207
- return _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorB.xyz, normalC, result);
254279
+ return _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorB.xyz, normalC, result);
254208
254280
  }
254209
254281
  /**
254210
254282
  * * at input, graph has all original faces and edges
@@ -269142,7 +269214,7 @@ __webpack_require__.r(__webpack_exports__);
269142
269214
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
269143
269215
  /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
269144
269216
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
269145
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
269217
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
269146
269218
  /* harmony import */ var _MaskManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./MaskManager */ "../../core/geometry/lib/esm/topology/MaskManager.js");
269147
269219
  /*---------------------------------------------------------------------------------------------
269148
269220
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -270235,7 +270307,7 @@ class HalfEdge {
270235
270307
  // (nodeA1.x - nodeA0.x)ta + (nodeB0.x - nodeB1.x)tb = nodeB0.x - nodeA0.x
270236
270308
  // (nodeA1.y - nodeA0.y)ta + (nodeB0.y - nodeB1.y)tb = nodeB0.y - nodeA0.y
270237
270309
  // Proof can be found at geometry/internaldocs/Graph.md
270238
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.linearSystem2d(nodeA1.x - nodeA0.x, nodeB0.x - nodeB1.x, nodeA1.y - nodeA0.y, nodeB0.y - nodeB1.y, nodeB0.x - nodeA0.x, nodeB0.y - nodeA0.y, result))
270310
+ if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.linearSystem2d(nodeA1.x - nodeA0.x, nodeB0.x - nodeB1.x, nodeA1.y - nodeA0.y, nodeB0.y - nodeB1.y, nodeB0.x - nodeA0.x, nodeB0.y - nodeA0.y, result))
270239
270311
  return result;
270240
270312
  return undefined;
270241
270313
  }
@@ -272350,7 +272422,7 @@ __webpack_require__.r(__webpack_exports__);
272350
272422
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
272351
272423
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
272352
272424
  /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
272353
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
272425
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
272354
272426
  /* harmony import */ var _Graph__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
272355
272427
  /* harmony import */ var _HalfEdgeMarkSet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HalfEdgeMarkSet */ "../../core/geometry/lib/esm/topology/HalfEdgeMarkSet.js");
272356
272428
  /* harmony import */ var _HalfEdgePointInGraphSearch__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./HalfEdgePointInGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgePointInGraphSearch.js");
@@ -272454,7 +272526,7 @@ class InsertAndRetriangulateContext {
272454
272526
  let distanceC;
272455
272527
  for (const nodeA of this._graph.allHalfEdges) {
272456
272528
  const nodeB = nodeA.faceSuccessor;
272457
- fractionC = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYClosestPointUnbounded(nodeA, nodeB, xyz);
272529
+ fractionC = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYClosestPointUnbounded(nodeA, nodeB, xyz);
272458
272530
  if (fractionC !== undefined) {
272459
272531
  if (fractionC > 1.0) {
272460
272532
  distanceC = xyz.distanceXY(nodeB);
@@ -272820,7 +272892,7 @@ __webpack_require__.r(__webpack_exports__);
272820
272892
  /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
272821
272893
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
272822
272894
  /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
272823
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
272895
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
272824
272896
  /* harmony import */ var _Graph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
272825
272897
  /* harmony import */ var _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HalfEdgePriorityQueue */ "../../core/geometry/lib/esm/topology/HalfEdgePriorityQueue.js");
272826
272898
  /* harmony import */ var _RegularizeFace__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./RegularizeFace */ "../../core/geometry/lib/esm/topology/RegularizeFace.js");
@@ -273298,7 +273370,7 @@ class HalfEdgeGraphMerge {
273298
273370
  const vx = nodeB1.x - bx0;
273299
273371
  const vy = nodeB1.y - by0;
273300
273372
  // cspell:word lineSegmentXYUVTransverseIntersectionUnbounded
273301
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, fractions)) {
273373
+ if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, fractions)) {
273302
273374
  pointA.x = ax0 + fractions.x * ux;
273303
273375
  pointA.y = ay0 + fractions.x * uy;
273304
273376
  pointB.x = bx0 + fractions.y * vx;
@@ -296380,7 +296452,7 @@ class TestContext {
296380
296452
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
296381
296453
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
296382
296454
  await core_frontend_1.NoRenderApp.startup({
296383
- applicationVersion: "4.10.0-dev.26",
296455
+ applicationVersion: "4.10.0-dev.28",
296384
296456
  applicationId: this.settings.gprid,
296385
296457
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
296386
296458
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -301111,6 +301183,10 @@ class ContentFormatter {
301111
301183
  displayValues[field.name] = "@Presentation:label.varies@";
301112
301184
  continue;
301113
301185
  }
301186
+ // do not add undefined value to display values
301187
+ if (value === undefined) {
301188
+ continue;
301189
+ }
301114
301190
  // format display values of nested content field
301115
301191
  if (field.isNestedContentField()) {
301116
301192
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_3__.Value.isNestedContent(value));
@@ -321249,7 +321325,7 @@ function __disposeResources(env) {
321249
321325
  /***/ ((module) => {
321250
321326
 
321251
321327
  "use strict";
321252
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.26","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -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.10.0-dev.26","@itwin/core-bentley":"workspace:^4.10.0-dev.26","@itwin/core-common":"workspace:^4.10.0-dev.26","@itwin/core-geometry":"workspace:^4.10.0-dev.26","@itwin/core-orbitgt":"workspace:^4.10.0-dev.26","@itwin/core-quantity":"workspace:^4.10.0-dev.26"},"//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.2","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.2","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7.1.1","cpx2":"^3.0.0","eslint":"^8.56.0","glob":"^10.3.12","mocha":"^10.2.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^17.0.2","source-map-loader":"^4.0.0","typescript":"~5.3.3","typemoq":"^2.1.0","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.2.4","@itwin/object-storage-core":"^2.2.5","@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","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
321328
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.28","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -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.10.0-dev.28","@itwin/core-bentley":"workspace:^4.10.0-dev.28","@itwin/core-common":"workspace:^4.10.0-dev.28","@itwin/core-geometry":"workspace:^4.10.0-dev.28","@itwin/core-orbitgt":"workspace:^4.10.0-dev.28","@itwin/core-quantity":"workspace:^4.10.0-dev.28"},"//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.2","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.2","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7.1.1","cpx2":"^3.0.0","eslint":"^8.56.0","glob":"^10.3.12","mocha":"^10.2.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^17.0.2","source-map-loader":"^4.0.0","typescript":"~5.3.3","typemoq":"^2.1.0","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.2.4","@itwin/object-storage-core":"^2.2.5","@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","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
321253
321329
 
321254
321330
  /***/ }),
321255
321331