@itwin/rpcinterface-full-stack-tests 4.10.0-dev.26 → 4.10.0-dev.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/_bea9.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +749 -712
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_1_6_node_modules_loaders_gl_draco_di-0642a6.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_meshoptimizer_0_20_0_node_modules_meshoptimizer_index_m-a5ae61.bundled-tests.js.map +1 -1
- package/package.json +13 -13
|
@@ -72822,9 +72822,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
72822
72822
|
/* harmony import */ var _Deserialization_XmlSerializationUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Deserialization/XmlSerializationUtils */ "../../core/ecschema-metadata/lib/esm/Deserialization/XmlSerializationUtils.js");
|
|
72823
72823
|
/* harmony import */ var _ECObjects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ECObjects */ "../../core/ecschema-metadata/lib/esm/ECObjects.js");
|
|
72824
72824
|
/* harmony import */ var _Exception__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Exception */ "../../core/ecschema-metadata/lib/esm/Exception.js");
|
|
72825
|
-
/* harmony import */ var
|
|
72826
|
-
/* harmony import */ var
|
|
72827
|
-
/* harmony import */ var _SchemaItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SchemaItem */ "../../core/ecschema-metadata/lib/esm/Metadata/SchemaItem.js");
|
|
72825
|
+
/* harmony import */ var _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OverrideFormat */ "../../core/ecschema-metadata/lib/esm/Metadata/OverrideFormat.js");
|
|
72826
|
+
/* harmony import */ var _SchemaItem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SchemaItem */ "../../core/ecschema-metadata/lib/esm/Metadata/SchemaItem.js");
|
|
72828
72827
|
/*---------------------------------------------------------------------------------------------
|
|
72829
72828
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
72830
72829
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -72838,11 +72837,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
72838
72837
|
|
|
72839
72838
|
|
|
72840
72839
|
|
|
72841
|
-
|
|
72842
72840
|
/** A Typescript class representation of a KindOfQuantity.
|
|
72843
72841
|
* @beta
|
|
72844
72842
|
*/
|
|
72845
|
-
class KindOfQuantity extends
|
|
72843
|
+
class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_5__.SchemaItem {
|
|
72846
72844
|
/** The first presentation format in the list of Formats. */
|
|
72847
72845
|
get defaultPresentationFormat() { return this.presentationFormats[0]; }
|
|
72848
72846
|
/** A list of presentation formats. */
|
|
@@ -72865,57 +72863,6 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
|
|
|
72865
72863
|
// TODO: Add some sort of validation?
|
|
72866
72864
|
(isDefault) ? this._presentationFormats.splice(0, 0, format) : this._presentationFormats.push(format);
|
|
72867
72865
|
}
|
|
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
72866
|
/** Creates an OverrideFormat in the context of this KindOfQuantity.
|
|
72920
72867
|
* @param parent The Format to override.
|
|
72921
72868
|
* @param precision The precision override
|
|
@@ -72927,12 +72874,12 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
|
|
|
72927
72874
|
if (parent.units && 0 === parent.units.length && unitLabelOverrides && 0 < unitLabelOverrides.length)
|
|
72928
72875
|
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
72876
|
// TODO: Check compatibility of Unit overrides with the persistence unit
|
|
72930
|
-
return new
|
|
72877
|
+
return new _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat(parent, precision, unitLabelOverrides);
|
|
72931
72878
|
}
|
|
72932
72879
|
async processPresentationUnits(presentationUnitsJson) {
|
|
72933
72880
|
const presUnitsArr = Array.isArray(presentationUnitsJson) ? presentationUnitsJson : presentationUnitsJson.split(";");
|
|
72934
72881
|
for (const formatString of presUnitsArr) {
|
|
72935
|
-
const presFormatOverride =
|
|
72882
|
+
const presFormatOverride = _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat.parseFormatString(formatString);
|
|
72936
72883
|
const format = await this.schema.lookupItem(presFormatOverride.name);
|
|
72937
72884
|
if (undefined === format || format.schemaItemType !== _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaItemType.Format)
|
|
72938
72885
|
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 +72906,7 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
|
|
|
72959
72906
|
processPresentationUnitsSync(presentationUnitsJson) {
|
|
72960
72907
|
const presUnitsArr = Array.isArray(presentationUnitsJson) ? presentationUnitsJson : presentationUnitsJson.split(";");
|
|
72961
72908
|
for (const formatString of presUnitsArr) {
|
|
72962
|
-
const presFormatOverride =
|
|
72909
|
+
const presFormatOverride = _OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat.parseFormatString(formatString);
|
|
72963
72910
|
const format = this.schema.lookupItemSync(presFormatOverride.name);
|
|
72964
72911
|
if (undefined === format || format.schemaItemType !== _ECObjects__WEBPACK_IMPORTED_MODULE_2__.SchemaItemType.Format)
|
|
72965
72912
|
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 +72953,7 @@ class KindOfQuantity extends _SchemaItem__WEBPACK_IMPORTED_MODULE_6__.SchemaItem
|
|
|
73006
72953
|
}
|
|
73007
72954
|
if (undefined !== this.presentationFormats) {
|
|
73008
72955
|
const presUnitStrings = this.presentationFormats.map((format) => {
|
|
73009
|
-
if (!
|
|
72956
|
+
if (!_OverrideFormat__WEBPACK_IMPORTED_MODULE_4__.OverrideFormat.isOverrideFormat(format))
|
|
73010
72957
|
return _Deserialization_XmlSerializationUtils__WEBPACK_IMPORTED_MODULE_1__.XmlSerializationUtils.createXmlTypedName(this.schema, format.schema, format.name);
|
|
73011
72958
|
return format.fullNameXml(this.schema);
|
|
73012
72959
|
});
|
|
@@ -73201,6 +73148,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
73201
73148
|
/* harmony export */ });
|
|
73202
73149
|
/* harmony import */ var _Deserialization_XmlSerializationUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Deserialization/XmlSerializationUtils */ "../../core/ecschema-metadata/lib/esm/Deserialization/XmlSerializationUtils.js");
|
|
73203
73150
|
/* harmony import */ var _ECObjects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ECObjects */ "../../core/ecschema-metadata/lib/esm/ECObjects.js");
|
|
73151
|
+
/* harmony import */ var _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @itwin/core-quantity */ "../../core/quantity/lib/esm/core-quantity.js");
|
|
73152
|
+
/* harmony import */ var _Exception__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Exception */ "../../core/ecschema-metadata/lib/esm/Exception.js");
|
|
73204
73153
|
/*---------------------------------------------------------------------------------------------
|
|
73205
73154
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
73206
73155
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -73210,6 +73159,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
73210
73159
|
*/
|
|
73211
73160
|
|
|
73212
73161
|
|
|
73162
|
+
|
|
73163
|
+
|
|
73213
73164
|
/**
|
|
73214
73165
|
* Overrides of a Format, from a Schema, and is SchemaItem that is used specifically on KindOfQuantity.
|
|
73215
73166
|
* @beta
|
|
@@ -73278,6 +73229,57 @@ class OverrideFormat {
|
|
|
73278
73229
|
fullName += `[${unit.fullName}|${unitLabel}]`;
|
|
73279
73230
|
return fullName;
|
|
73280
73231
|
}
|
|
73232
|
+
/** Parses the format string into the parts that make up an Override Format
|
|
73233
|
+
* @param formatString
|
|
73234
|
+
*/
|
|
73235
|
+
static parseFormatString(formatString) {
|
|
73236
|
+
const match = formatString.split(_itwin_core_quantity__WEBPACK_IMPORTED_MODULE_2__.formatStringRgx); // split string based on regex groups
|
|
73237
|
+
if (undefined === match[1])
|
|
73238
|
+
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.`);
|
|
73239
|
+
const returnValue = { name: match[1] };
|
|
73240
|
+
if (undefined !== match[2] && undefined !== match[3]) {
|
|
73241
|
+
const overrideString = match[2];
|
|
73242
|
+
const tokens = [];
|
|
73243
|
+
let prevPos = 1; // Initial position is the character directly after the opening '(' in the override string.
|
|
73244
|
+
let currPos;
|
|
73245
|
+
// TODO need to include `,` as a valid search argument.
|
|
73246
|
+
while (-1 !== (currPos = overrideString.indexOf(")", prevPos))) { // eslint-disable-line
|
|
73247
|
+
tokens.push(overrideString.substring(prevPos, currPos));
|
|
73248
|
+
prevPos = currPos + 1;
|
|
73249
|
+
}
|
|
73250
|
+
if (overrideString.length > 0 && undefined === tokens.find((token) => {
|
|
73251
|
+
return "" !== token; // there is at least one token that is not empty.
|
|
73252
|
+
})) {
|
|
73253
|
+
throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, ``);
|
|
73254
|
+
}
|
|
73255
|
+
// The first override parameter overrides the default precision of the format
|
|
73256
|
+
const precisionIndx = 0;
|
|
73257
|
+
if (tokens.length >= precisionIndx + 1) {
|
|
73258
|
+
if (tokens[precisionIndx].length > 0) {
|
|
73259
|
+
const precision = Number.parseInt(tokens[precisionIndx], 10);
|
|
73260
|
+
if (Number.isNaN(precision))
|
|
73261
|
+
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.`);
|
|
73262
|
+
returnValue.precision = precision;
|
|
73263
|
+
}
|
|
73264
|
+
}
|
|
73265
|
+
}
|
|
73266
|
+
let i = 4;
|
|
73267
|
+
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
|
|
73268
|
+
if (undefined === match[i])
|
|
73269
|
+
break;
|
|
73270
|
+
// Unit override required
|
|
73271
|
+
if (undefined === match[i + 1])
|
|
73272
|
+
throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECObjectsStatus.InvalidECJson, ``);
|
|
73273
|
+
if (undefined === returnValue.unitAndLabels)
|
|
73274
|
+
returnValue.unitAndLabels = [];
|
|
73275
|
+
if (undefined !== match[i + 2]) // matches '|'
|
|
73276
|
+
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)
|
|
73277
|
+
else
|
|
73278
|
+
returnValue.unitAndLabels.push([match[i + 1], undefined]); // add unit name
|
|
73279
|
+
i += 4;
|
|
73280
|
+
}
|
|
73281
|
+
return returnValue;
|
|
73282
|
+
}
|
|
73281
73283
|
/**
|
|
73282
73284
|
* @internal
|
|
73283
73285
|
*/
|
|
@@ -99572,6 +99574,9 @@ class ViewingSpace {
|
|
|
99572
99574
|
zMax = Math.max(zMax, 1.0); // make sure we have at least +-1m. Data may be purely planar
|
|
99573
99575
|
delta.z = 2.0 * zMax;
|
|
99574
99576
|
origin.z = -zMax;
|
|
99577
|
+
const ds = this.view.displayStyle;
|
|
99578
|
+
if (ds.getIsBackgroundMapVisible() && undefined !== ds.getBackgroundMapGeometry())
|
|
99579
|
+
this.adjustZPlanes(origin, delta); // make sure view volume includes background map
|
|
99575
99580
|
}
|
|
99576
99581
|
else {
|
|
99577
99582
|
if (view.isCameraOn)
|
|
@@ -193559,7 +193564,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193559
193564
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
193560
193565
|
/* harmony export */ "AkimaCurve3d": () => (/* reexport safe */ _bspline_AkimaCurve3d__WEBPACK_IMPORTED_MODULE_97__.AkimaCurve3d),
|
|
193561
193566
|
/* 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
193567
|
/* harmony export */ "Angle": () => (/* reexport safe */ _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle),
|
|
193564
193568
|
/* harmony export */ "AngleSweep": () => (/* reexport safe */ _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep),
|
|
193565
193569
|
/* harmony export */ "AnnotatedLineString3d": () => (/* reexport safe */ _curve_LineString3d__WEBPACK_IMPORTED_MODULE_73__.AnnotatedLineString3d),
|
|
@@ -193589,7 +193593,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193589
193593
|
/* harmony export */ "BezierCurveBase": () => (/* reexport safe */ _bspline_BezierCurveBase__WEBPACK_IMPORTED_MODULE_99__.BezierCurveBase),
|
|
193590
193594
|
/* harmony export */ "BezierPolynomialAlgebra": () => (/* reexport safe */ _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_51__.BezierPolynomialAlgebra),
|
|
193591
193595
|
/* 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
193596
|
/* harmony export */ "BooleanClipFactory": () => (/* reexport safe */ _clipping_BooleanClipFactory__WEBPACK_IMPORTED_MODULE_38__.BooleanClipFactory),
|
|
193594
193597
|
/* harmony export */ "Box": () => (/* reexport safe */ _solid_Box__WEBPACK_IMPORTED_MODULE_88__.Box),
|
|
193595
193598
|
/* harmony export */ "BoxTopology": () => (/* reexport safe */ _polyface_BoxTopology__WEBPACK_IMPORTED_MODULE_110__.BoxTopology),
|
|
@@ -193631,9 +193634,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193631
193634
|
/* harmony export */ "CutLoop": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoop),
|
|
193632
193635
|
/* harmony export */ "CutLoopMergeContext": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.CutLoopMergeContext),
|
|
193633
193636
|
/* 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
193637
|
/* harmony export */ "DirectSpiral3d": () => (/* reexport safe */ _curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_85__.DirectSpiral3d),
|
|
193638
193638
|
/* harmony export */ "DuplicateFacetClusterSelector": () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_119__.DuplicateFacetClusterSelector),
|
|
193639
193639
|
/* harmony export */ "Ellipsoid": () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.Ellipsoid),
|
|
@@ -193644,7 +193644,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193644
193644
|
/* harmony export */ "FacetIntersectOptions": () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_113__.FacetIntersectOptions),
|
|
193645
193645
|
/* harmony export */ "FacetLocationDetailPair": () => (/* reexport safe */ _polyface_FacetLocationDetail__WEBPACK_IMPORTED_MODULE_113__.FacetLocationDetailPair),
|
|
193646
193646
|
/* harmony export */ "FrameBuilder": () => (/* reexport safe */ _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_6__.FrameBuilder),
|
|
193647
|
-
/* harmony export */ "GaussMapper": () => (/* reexport safe */
|
|
193647
|
+
/* harmony export */ "GaussMapper": () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_55__.GaussMapper),
|
|
193648
193648
|
/* harmony export */ "GeodesicPathPoint": () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathPoint),
|
|
193649
193649
|
/* harmony export */ "GeodesicPathSolver": () => (/* reexport safe */ _geometry3d_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__.GeodesicPathSolver),
|
|
193650
193650
|
/* harmony export */ "Geometry": () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.Geometry),
|
|
@@ -193657,7 +193657,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193657
193657
|
/* harmony export */ "GrowableXYArray": () => (/* reexport safe */ _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYArray),
|
|
193658
193658
|
/* harmony export */ "GrowableXYZArray": () => (/* reexport safe */ _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray),
|
|
193659
193659
|
/* 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
193660
|
/* harmony export */ "IndexedCollectionInterval": () => (/* reexport safe */ _geometry3d_IndexedCollectionInterval__WEBPACK_IMPORTED_MODULE_13__.IndexedCollectionInterval),
|
|
193662
193661
|
/* harmony export */ "IndexedPolyface": () => (/* reexport safe */ _polyface_Polyface__WEBPACK_IMPORTED_MODULE_112__.IndexedPolyface),
|
|
193663
193662
|
/* harmony export */ "IndexedPolyfaceSubsetVisitor": () => (/* reexport safe */ _polyface_IndexedPolyfaceVisitor__WEBPACK_IMPORTED_MODULE_114__.IndexedPolyfaceSubsetVisitor),
|
|
@@ -193727,11 +193726,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193727
193726
|
/* harmony export */ "PolygonLocationDetailPair": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonLocationDetailPair),
|
|
193728
193727
|
/* harmony export */ "PolygonOps": () => (/* reexport safe */ _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_27__.PolygonOps),
|
|
193729
193728
|
/* 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
193729
|
/* harmony export */ "ProxyCurve": () => (/* reexport safe */ _curve_ProxyCurve__WEBPACK_IMPORTED_MODULE_81__.ProxyCurve),
|
|
193732
|
-
/* harmony export */ "Quadrature": () => (/* reexport safe */
|
|
193730
|
+
/* harmony export */ "Quadrature": () => (/* reexport safe */ _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_55__.Quadrature),
|
|
193733
193731
|
/* harmony export */ "Range1d": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range1d),
|
|
193734
|
-
/* harmony export */ "Range1dArray": () => (/* reexport safe */
|
|
193732
|
+
/* harmony export */ "Range1dArray": () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_56__.Range1dArray),
|
|
193735
193733
|
/* harmony export */ "Range2d": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range2d),
|
|
193736
193734
|
/* harmony export */ "Range3d": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.Range3d),
|
|
193737
193735
|
/* harmony export */ "RangeBase": () => (/* reexport safe */ _geometry3d_Range__WEBPACK_IMPORTED_MODULE_28__.RangeBase),
|
|
@@ -193748,13 +193746,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193748
193746
|
/* harmony export */ "Sample": () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.Sample),
|
|
193749
193747
|
/* harmony export */ "Segment1d": () => (/* reexport safe */ _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_31__.Segment1d),
|
|
193750
193748
|
/* harmony export */ "SerializationHelpers": () => (/* reexport safe */ _serialization_SerializationHelpers__WEBPACK_IMPORTED_MODULE_129__.SerializationHelpers),
|
|
193751
|
-
/* harmony export */ "
|
|
193752
|
-
/* harmony export */ "SmallSystem": () => (/* reexport safe */ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_55__.SmallSystem),
|
|
193749
|
+
/* harmony export */ "SmallSystem": () => (/* reexport safe */ _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_57__.SmallSystem),
|
|
193753
193750
|
/* harmony export */ "SmoothTransformBetweenFrusta": () => (/* reexport safe */ _geometry3d_FrustumAnimation__WEBPACK_IMPORTED_MODULE_7__.SmoothTransformBetweenFrusta),
|
|
193754
193751
|
/* harmony export */ "SolidPrimitive": () => (/* reexport safe */ _solid_SolidPrimitive__WEBPACK_IMPORTED_MODULE_93__.SolidPrimitive),
|
|
193755
193752
|
/* harmony export */ "SpacePolygonTriangulation": () => (/* reexport safe */ _topology_SpaceTriangulation__WEBPACK_IMPORTED_MODULE_125__.SpacePolygonTriangulation),
|
|
193756
193753
|
/* 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
193754
|
/* harmony export */ "StandardViewIndex": () => (/* reexport safe */ _Geometry__WEBPACK_IMPORTED_MODULE_36__.StandardViewIndex),
|
|
193759
193755
|
/* harmony export */ "SteppedIndexFunctionFactory": () => (/* reexport safe */ _serialization_GeometrySamples__WEBPACK_IMPORTED_MODULE_128__.SteppedIndexFunctionFactory),
|
|
193760
193756
|
/* harmony export */ "StringifiedClipVector": () => (/* reexport safe */ _clipping_ClipVector__WEBPACK_IMPORTED_MODULE_43__.StringifiedClipVector),
|
|
@@ -193764,14 +193760,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193764
193760
|
/* harmony export */ "SweepLineStringToFacetsOptions": () => (/* reexport safe */ _polyface_PolyfaceQuery__WEBPACK_IMPORTED_MODULE_119__.SweepLineStringToFacetsOptions),
|
|
193765
193761
|
/* harmony export */ "TaggedNumericConstants": () => (/* reexport safe */ _polyface_TaggedNumericData__WEBPACK_IMPORTED_MODULE_124__.TaggedNumericConstants),
|
|
193766
193762
|
/* 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
193763
|
/* harmony export */ "TorusPipe": () => (/* reexport safe */ _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_96__.TorusPipe),
|
|
193769
193764
|
/* harmony export */ "Transform": () => (/* reexport safe */ _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_32__.Transform),
|
|
193770
193765
|
/* harmony export */ "TransitionSpiral3d": () => (/* reexport safe */ _curve_spiral_TransitionSpiral3d__WEBPACK_IMPORTED_MODULE_83__.TransitionSpiral3d),
|
|
193771
193766
|
/* harmony export */ "TriDiagonalSystem": () => (/* reexport safe */ _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__.TriDiagonalSystem),
|
|
193772
193767
|
/* harmony export */ "TriangleLocationDetail": () => (/* reexport safe */ _geometry3d_BarycentricTriangle__WEBPACK_IMPORTED_MODULE_3__.TriangleLocationDetail),
|
|
193773
193768
|
/* 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
193769
|
/* harmony export */ "UVSelect": () => (/* reexport safe */ _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_106__.UVSelect),
|
|
193776
193770
|
/* harmony export */ "UVSurfaceOps": () => (/* reexport safe */ _geometry3d_UVSurfaceOps__WEBPACK_IMPORTED_MODULE_33__.UVSurfaceOps),
|
|
193777
193771
|
/* harmony export */ "UnionOfConvexClipPlaneSets": () => (/* reexport safe */ _clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_41__.UnionOfConvexClipPlaneSets),
|
|
@@ -193785,7 +193779,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193785
193779
|
/* harmony export */ "XYAndZ": () => (/* reexport safe */ _geometry3d_XYZProps__WEBPACK_IMPORTED_MODULE_34__.XYAndZ),
|
|
193786
193780
|
/* harmony export */ "XYZ": () => (/* reexport safe */ _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_23__.XYZ),
|
|
193787
193781
|
/* harmony export */ "YawPitchRollAngles": () => (/* reexport safe */ _geometry3d_YawPitchRollAngles__WEBPACK_IMPORTED_MODULE_35__.YawPitchRollAngles),
|
|
193788
|
-
/* harmony export */ "compareRange1dLexicalLowHigh": () => (/* reexport safe */
|
|
193782
|
+
/* harmony export */ "compareRange1dLexicalLowHigh": () => (/* reexport safe */ _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_56__.compareRange1dLexicalLowHigh)
|
|
193789
193783
|
/* harmony export */ });
|
|
193790
193784
|
/* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
|
|
193791
193785
|
/* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
|
|
@@ -193842,9 +193836,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193842
193836
|
/* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
|
|
193843
193837
|
/* harmony import */ var _numerics_Complex__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./numerics/Complex */ "../../core/geometry/lib/esm/numerics/Complex.js");
|
|
193844
193838
|
/* harmony import */ var _numerics_PascalCoefficients__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./numerics/PascalCoefficients */ "../../core/geometry/lib/esm/numerics/PascalCoefficients.js");
|
|
193845
|
-
/* harmony import */ var
|
|
193846
|
-
/* harmony import */ var
|
|
193847
|
-
/* harmony import */ var
|
|
193839
|
+
/* harmony import */ var _numerics_Quadrature__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./numerics/Quadrature */ "../../core/geometry/lib/esm/numerics/Quadrature.js");
|
|
193840
|
+
/* harmony import */ var _numerics_Range1dArray__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./numerics/Range1dArray */ "../../core/geometry/lib/esm/numerics/Range1dArray.js");
|
|
193841
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
193848
193842
|
/* harmony import */ var _numerics_TriDiagonalSystem__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./numerics/TriDiagonalSystem */ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js");
|
|
193849
193843
|
/* harmony import */ var _curve_Arc3d__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./curve/Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
|
|
193850
193844
|
/* harmony import */ var _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./curve/ConstructCurveBetweenCurves */ "../../core/geometry/lib/esm/curve/ConstructCurveBetweenCurves.js");
|
|
@@ -194194,20 +194188,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
194194
194188
|
/* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
|
|
194195
194189
|
/* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
|
|
194196
194190
|
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
194197
|
-
/* harmony import */ var
|
|
194191
|
+
/* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
|
|
194198
194192
|
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
194199
|
-
/* harmony import */ var
|
|
194200
|
-
/* harmony import */ var
|
|
194193
|
+
/* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
|
|
194194
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
194195
|
+
/* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
|
|
194201
194196
|
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
194202
194197
|
/* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
|
|
194203
|
-
/* harmony import */ var
|
|
194204
|
-
/* harmony import */ var
|
|
194205
|
-
/* harmony import */ var
|
|
194198
|
+
/* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
|
|
194199
|
+
/* harmony import */ var _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./internalContexts/EllipticalArcApproximationContext */ "../../core/geometry/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js");
|
|
194200
|
+
/* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
|
|
194206
194201
|
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
194207
194202
|
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
194208
|
-
/* harmony import */ var
|
|
194209
|
-
/* harmony import */ var
|
|
194210
|
-
/* harmony import */ var
|
|
194203
|
+
/* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
|
|
194204
|
+
/* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
|
|
194205
|
+
/* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
|
|
194211
194206
|
/*---------------------------------------------------------------------------------------------
|
|
194212
194207
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
194213
194208
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -194231,6 +194226,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
194231
194226
|
|
|
194232
194227
|
|
|
194233
194228
|
|
|
194229
|
+
|
|
194234
194230
|
|
|
194235
194231
|
|
|
194236
194232
|
/**
|
|
@@ -194651,7 +194647,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
194651
194647
|
const ac2 = vectorAC.magnitudeSquared();
|
|
194652
194648
|
const normal = vectorAB.sizedCrossProduct(vectorAC, Math.sqrt(Math.sqrt(ab2 * ac2)));
|
|
194653
194649
|
if (normal) {
|
|
194654
|
-
const vectorToCenter =
|
|
194650
|
+
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
194651
|
0.5 * ab2, // vectorToCenter DOT vectorAB = ab2 / 2 (ensure the projection of vectorToCenter on AB bisects AB)
|
|
194656
194652
|
0.5 * ac2);
|
|
194657
194653
|
if (vectorToCenter) { // i.e., the negative of vectorX
|
|
@@ -194886,7 +194882,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
194886
194882
|
const uu = this._matrix.columnXMagnitudeSquared();
|
|
194887
194883
|
const uv = this._matrix.columnXDotColumnY();
|
|
194888
194884
|
const vv = this._matrix.columnYMagnitudeSquared();
|
|
194889
|
-
|
|
194885
|
+
_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__.TrigPolynomial.solveUnitCircleImplicitQuadricIntersection(uv, vv - uu, -uv, this._matrix.dotColumnY(vectorQ), -this._matrix.dotColumnX(vectorQ), 0.0, radians);
|
|
194890
194886
|
if (endpoints) {
|
|
194891
194887
|
radians.push(this.sweep.startRadians);
|
|
194892
194888
|
radians.push(this.sweep.endRadians);
|
|
@@ -194903,14 +194899,14 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
194903
194899
|
closestPoint(spacePoint, extend, result) {
|
|
194904
194900
|
result = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.create(this, result);
|
|
194905
194901
|
const allRadians = this.allPerpendicularAngles(spacePoint, true, true);
|
|
194906
|
-
let extend0 =
|
|
194907
|
-
let extend1 =
|
|
194902
|
+
let extend0 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 0);
|
|
194903
|
+
let extend1 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extend, 1);
|
|
194908
194904
|
// distinct extends for cyclic space are awkward ....
|
|
194909
194905
|
if (this._sweep.isFullCircle) {
|
|
194910
|
-
extend0 =
|
|
194911
|
-
extend1 =
|
|
194906
|
+
extend0 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None;
|
|
194907
|
+
extend1 = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None;
|
|
194912
194908
|
}
|
|
194913
|
-
if (extend0 !==
|
|
194909
|
+
if (extend0 !== _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None && extend1 !== _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendMode.None) {
|
|
194914
194910
|
allRadians.push(this._sweep.startRadians);
|
|
194915
194911
|
allRadians.push(this._sweep.endRadians);
|
|
194916
194912
|
}
|
|
@@ -194924,7 +194920,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
194924
194920
|
let dMin = Number.MAX_VALUE;
|
|
194925
194921
|
let d = 0;
|
|
194926
194922
|
for (const radians of allRadians) {
|
|
194927
|
-
const fraction =
|
|
194923
|
+
const fraction = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__.CurveExtendOptions.resolveRadiansToSweepFraction(extend, radians, this.sweep);
|
|
194928
194924
|
if (fraction !== undefined) {
|
|
194929
194925
|
this.fractionToPointAndDerivative(fraction, workRay);
|
|
194930
194926
|
d = spacePoint.distance(workRay.origin);
|
|
@@ -195036,7 +195032,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195036
195032
|
* @param transform optional transform to apply to the arc.
|
|
195037
195033
|
*/
|
|
195038
195034
|
extendRangeInSweep(range, sweep, transform) {
|
|
195039
|
-
const trigForm = new
|
|
195035
|
+
const trigForm = new _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__.SineCosinePolynomial(0, 0, 0);
|
|
195040
195036
|
const center = this._center.clone(Arc3d._workPointA);
|
|
195041
195037
|
const vectorU = this._matrix.columnX(Arc3d._workVectorU);
|
|
195042
195038
|
const vectorV = this._matrix.columnY(Arc3d._workVectorV);
|
|
@@ -195047,7 +195043,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195047
195043
|
}
|
|
195048
195044
|
const lowPoint = Arc3d._workPointB;
|
|
195049
195045
|
const highPoint = Arc3d._workPointC;
|
|
195050
|
-
const range1 =
|
|
195046
|
+
const range1 = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_15__.Range1d.createNull();
|
|
195051
195047
|
for (let i = 0; i < 3; i++) {
|
|
195052
195048
|
trigForm.set(center.at(i), vectorU.at(i), vectorV.at(i));
|
|
195053
195049
|
trigForm.rangeInSweep(sweep, range1);
|
|
@@ -195063,7 +195059,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195063
195059
|
*/
|
|
195064
195060
|
rangeBetweenFractions(fraction0, fraction1, transform) {
|
|
195065
195061
|
const sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__.AngleSweep.createStartEndRadians(this.sweep.fractionToRadians(fraction0), this.sweep.fractionToRadians(fraction1));
|
|
195066
|
-
const range =
|
|
195062
|
+
const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_15__.Range3d.create();
|
|
195067
195063
|
this.extendRangeInSweep(range, sweep, transform);
|
|
195068
195064
|
return range;
|
|
195069
195065
|
}
|
|
@@ -195076,7 +195072,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195076
195072
|
*/
|
|
195077
195073
|
getPlaneAltitudeSineCosinePolynomial(plane, result) {
|
|
195078
195074
|
if (!result)
|
|
195079
|
-
result = new
|
|
195075
|
+
result = new _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_13__.SineCosinePolynomial(0, 0, 0);
|
|
195080
195076
|
// altitude function of angle t, given plane with origin o and unit normal n:
|
|
195081
195077
|
// A(t) = (c + u cos(t) + v sin(t)) . n = (c-o).n + u.n cos(t) + v.n sin(t)
|
|
195082
195078
|
// Note the different functions for computing dot product against a point vs. a vector!
|
|
@@ -195229,7 +195225,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195229
195225
|
numStroke = options.applyTolerancesToArc(rMax, this._sweep.sweepRadians);
|
|
195230
195226
|
}
|
|
195231
195227
|
else {
|
|
195232
|
-
numStroke =
|
|
195228
|
+
numStroke = _StrokeOptions__WEBPACK_IMPORTED_MODULE_16__.StrokeOptions.applyAngleTol(undefined, 1, this._sweep.sweepRadians);
|
|
195233
195229
|
}
|
|
195234
195230
|
return numStroke;
|
|
195235
195231
|
}
|
|
@@ -195368,7 +195364,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195368
195364
|
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
|
|
195369
195365
|
*/
|
|
195370
195366
|
constructOffsetXY(offsetDistanceOrOptions) {
|
|
195371
|
-
const options =
|
|
195367
|
+
const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
|
|
195372
195368
|
if (this.isCircular || options.preserveEllipticalArcs) {
|
|
195373
195369
|
const arcXY = this.cloneAtZ();
|
|
195374
195370
|
const sign = arcXY.sweep.sweepRadians * arcXY.matrixRef.coffs[8] >= 0.0 ? 1.0 : -1.0;
|
|
@@ -195390,7 +195386,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195390
195386
|
}
|
|
195391
195387
|
}
|
|
195392
195388
|
// default impl
|
|
195393
|
-
const handler = new
|
|
195389
|
+
const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_18__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
|
|
195394
195390
|
this.emitStrokableParts(handler, options.strokeOptions);
|
|
195395
195391
|
return handler.claimResult();
|
|
195396
195392
|
}
|
|
@@ -195401,7 +195397,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195401
195397
|
* @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
195398
|
*/
|
|
195403
195399
|
projectedParameterRange(ray, lowHigh) {
|
|
195404
|
-
return
|
|
195400
|
+
return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_19__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
195405
195401
|
}
|
|
195406
195402
|
/**
|
|
195407
195403
|
* Construct a circular arc chain approximation to the instance elliptical arc.
|
|
@@ -195411,10 +195407,10 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
195411
195407
|
constructCircularArcChainApproximation(options) {
|
|
195412
195408
|
if (!options)
|
|
195413
195409
|
options = EllipticalArcApproximationOptions.create();
|
|
195414
|
-
const context =
|
|
195410
|
+
const context = _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_20__.EllipticalArcApproximationContext.create(this);
|
|
195415
195411
|
const result = context.constructCircularArcChainApproximation(options);
|
|
195416
195412
|
if (!result && this.isCircular)
|
|
195417
|
-
return (this.sweep.isFullCircle && options.forcePath) ?
|
|
195413
|
+
return (this.sweep.isFullCircle && options.forcePath) ? _Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(this) : this;
|
|
195418
195414
|
return result;
|
|
195419
195415
|
}
|
|
195420
195416
|
}
|
|
@@ -197196,7 +197192,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197196
197192
|
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
197197
197193
|
/* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
|
|
197198
197194
|
/* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
|
|
197199
|
-
/* harmony import */ var
|
|
197195
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
197200
197196
|
/* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
|
|
197201
197197
|
/* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
|
|
197202
197198
|
/* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
|
|
@@ -197729,7 +197725,7 @@ class CurveFactory {
|
|
|
197729
197725
|
const vectorA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitAB, sA, unitPerpAB, tA);
|
|
197730
197726
|
const vectorB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitCB, sB, unitPerpCB, tB);
|
|
197731
197727
|
const uv = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Vector2d.create();
|
|
197732
|
-
if (
|
|
197728
|
+
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
197729
|
const tangencyAB = pointB.plusScaled(unitAB, uv.x);
|
|
197734
197730
|
const tangencyCB = pointB.plusScaled(unitCB, uv.y);
|
|
197735
197731
|
const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createOriginAndMatrixColumns(tangencyAB, unitAB, unitPerpAB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
|
|
@@ -197765,7 +197761,7 @@ class CurveFactory {
|
|
|
197765
197761
|
const normalCx = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAy, normalAz, normalBy, normalBz);
|
|
197766
197762
|
const normalCy = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAz, normalAx, normalBz, normalBx);
|
|
197767
197763
|
const normalCz = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAx, normalAy, normalBx, normalBy);
|
|
197768
|
-
const rayOrigin =
|
|
197764
|
+
const rayOrigin = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem3d(normalAx, normalAy, normalAz, normalBx, normalBy, normalBz, normalCx, normalCy, normalCz, -altitudeA, -altitudeB, 0.0);
|
|
197769
197765
|
if (rayOrigin !== undefined) {
|
|
197770
197766
|
return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__.Ray3d.createXYZUVW(rayOrigin.x, rayOrigin.y, rayOrigin.z, normalCx, normalCy, normalCz);
|
|
197771
197767
|
}
|
|
@@ -199423,7 +199419,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
199423
199419
|
/* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
|
|
199424
199420
|
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
199425
199421
|
/* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
|
|
199426
|
-
/* harmony import */ var
|
|
199422
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
199427
199423
|
/* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
|
|
199428
199424
|
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
199429
199425
|
/* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
|
|
@@ -199655,7 +199651,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePr
|
|
|
199655
199651
|
const unboundedFractions = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Vector2d.create();
|
|
199656
199652
|
if (result === undefined)
|
|
199657
199653
|
result = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair.createCapture(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.create(), _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.create());
|
|
199658
|
-
if (
|
|
199654
|
+
if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dClosestApproachUnbounded(segmentA._point0, segmentA._point1, segmentB._point0, segmentB._point1, unboundedFractions)) {
|
|
199659
199655
|
// There is a simple approach between the unbounded segments. Maybe its a really easy case ...
|
|
199660
199656
|
const fractionA = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_5__.CurveExtendOptions.correctFraction(extendA, unboundedFractions.x);
|
|
199661
199657
|
const fractionB = _CurveExtendMode__WEBPACK_IMPORTED_MODULE_5__.CurveExtendOptions.correctFraction(extendB, unboundedFractions.y);
|
|
@@ -206581,17 +206577,18 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
206581
206577
|
/* harmony export */ "CurveCurveCloseApproachXY": () => (/* binding */ CurveCurveCloseApproachXY)
|
|
206582
206578
|
/* harmony export */ });
|
|
206583
206579
|
/* 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
|
|
206580
|
+
/* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
|
|
206585
206581
|
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
206586
206582
|
/* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
|
|
206587
206583
|
/* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
|
|
206588
|
-
/* harmony import */ var
|
|
206589
|
-
/* harmony import */ var
|
|
206584
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
206585
|
+
/* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
|
|
206590
206586
|
/* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
|
|
206591
|
-
/* harmony import */ var
|
|
206587
|
+
/* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
|
|
206588
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
206592
206589
|
/* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
|
|
206593
|
-
/* harmony import */ var
|
|
206594
|
-
/* harmony import */ var
|
|
206590
|
+
/* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
|
|
206591
|
+
/* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
|
|
206595
206592
|
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
206596
206593
|
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
206597
206594
|
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
@@ -206617,6 +206614,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
206617
206614
|
|
|
206618
206615
|
|
|
206619
206616
|
|
|
206617
|
+
|
|
206620
206618
|
// cspell:word XYRR currentdFdX
|
|
206621
206619
|
/**
|
|
206622
206620
|
* Handler class for XY close approach between _geometryB and another geometry.
|
|
@@ -207045,7 +207043,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207045
207043
|
const arcPoint = arc.radiansToPoint(radians1);
|
|
207046
207044
|
const fArc = arc.sweep.radiansToSignedPeriodicFraction(radians1);
|
|
207047
207045
|
if (this.acceptFraction(fArc)) { // reject solution outside arc sweep
|
|
207048
|
-
const fLine =
|
|
207046
|
+
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0, pointA1, arcPoint);
|
|
207049
207047
|
if (fLine !== undefined && this.acceptFraction(fLine))
|
|
207050
207048
|
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
207051
207049
|
}
|
|
@@ -207086,12 +207084,12 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207086
207084
|
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__.GrowableFloat64Array(2);
|
|
207087
207085
|
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__.GrowableFloat64Array(2);
|
|
207088
207086
|
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_9__.GrowableFloat64Array(2);
|
|
207089
|
-
const numRoots =
|
|
207087
|
+
const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_10__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(// solve the equation
|
|
207090
207088
|
alpha, beta, gamma, cosines, sines, radians);
|
|
207091
207089
|
for (let i = 0; i < numRoots; i++) {
|
|
207092
207090
|
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
207093
207091
|
const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
|
|
207094
|
-
const lineFraction =
|
|
207092
|
+
const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
|
|
207095
207093
|
// only add if the point is within the start and end fractions of both line segment and arc
|
|
207096
207094
|
if (lineFraction !== undefined && this.acceptFraction(lineFraction) && this.acceptFraction(arcFraction)) {
|
|
207097
207095
|
this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, arcFraction, arc, 0, 1, reversed);
|
|
@@ -207213,7 +207211,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207213
207211
|
/** Low level dispatch of curve collection. */
|
|
207214
207212
|
dispatchCurveCollection(geomA, geomAHandler) {
|
|
207215
207213
|
const geomB = this._geometryB; // save
|
|
207216
|
-
if (!geomB || !geomB.children || !(geomB instanceof
|
|
207214
|
+
if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection))
|
|
207217
207215
|
return;
|
|
207218
207216
|
for (const child of geomB.children) {
|
|
207219
207217
|
this.resetGeometry(child);
|
|
@@ -207223,9 +207221,9 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207223
207221
|
}
|
|
207224
207222
|
/** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
|
|
207225
207223
|
dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
|
|
207226
|
-
if (!this._geometryB || !(this._geometryB instanceof
|
|
207224
|
+
if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex))
|
|
207227
207225
|
return;
|
|
207228
|
-
if (geomA instanceof
|
|
207226
|
+
if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
|
|
207229
207227
|
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "call handleCurveChainWithDistanceIndex(geomA) instead");
|
|
207230
207228
|
return;
|
|
207231
207229
|
}
|
|
@@ -207236,7 +207234,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207236
207234
|
geomAHandler(geomA);
|
|
207237
207235
|
}
|
|
207238
207236
|
this.resetGeometry(geomB); // restore
|
|
207239
|
-
this._results =
|
|
207237
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
|
|
207240
207238
|
}
|
|
207241
207239
|
/** Double dispatch handler for strongly typed segment. */
|
|
207242
207240
|
handleLineSegment3d(segmentA) {
|
|
@@ -207250,13 +207248,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207250
207248
|
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
207251
207249
|
this.dispatchSegmentArc(segmentA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._geometryB, false);
|
|
207252
207250
|
}
|
|
207253
|
-
else if (this._geometryB instanceof
|
|
207251
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3d) {
|
|
207254
207252
|
this.dispatchSegmentBsplineCurve(segmentA, this._geometryB, false);
|
|
207255
207253
|
}
|
|
207256
|
-
else if (this._geometryB instanceof
|
|
207254
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
|
|
207257
207255
|
this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
|
|
207258
207256
|
}
|
|
207259
|
-
else if (this._geometryB instanceof
|
|
207257
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
|
|
207260
207258
|
this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
|
|
207261
207259
|
}
|
|
207262
207260
|
return undefined;
|
|
@@ -207299,7 +207297,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207299
207297
|
return;
|
|
207300
207298
|
let bitB0;
|
|
207301
207299
|
let bitB1;
|
|
207302
|
-
const rangeA1 =
|
|
207300
|
+
const rangeA1 = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
|
|
207303
207301
|
const pointA0 = CurveCurveCloseApproachXY._workPointAA0;
|
|
207304
207302
|
const pointA1 = CurveCurveCloseApproachXY._workPointAA1;
|
|
207305
207303
|
const pointB0 = CurveCurveCloseApproachXY._workPointBB0;
|
|
@@ -207349,13 +207347,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207349
207347
|
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
207350
207348
|
this.computeArcLineString(this._geometryB, lsA, true);
|
|
207351
207349
|
}
|
|
207352
|
-
else if (this._geometryB instanceof
|
|
207350
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3d) {
|
|
207353
207351
|
this.dispatchLineStringBSplineCurve(lsA, this._geometryB, false);
|
|
207354
207352
|
}
|
|
207355
|
-
else if (this._geometryB instanceof
|
|
207353
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
|
|
207356
207354
|
this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
|
|
207357
207355
|
}
|
|
207358
|
-
else if (this._geometryB instanceof
|
|
207356
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
|
|
207359
207357
|
this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
|
|
207360
207358
|
}
|
|
207361
207359
|
return undefined;
|
|
@@ -207371,13 +207369,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207371
207369
|
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
207372
207370
|
this.dispatchArcArc(arc0, this._geometryB, false);
|
|
207373
207371
|
}
|
|
207374
|
-
else if (this._geometryB instanceof
|
|
207372
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3d) {
|
|
207375
207373
|
this.dispatchArcBsplineCurve3d(arc0, this._geometryB, false);
|
|
207376
207374
|
}
|
|
207377
|
-
else if (this._geometryB instanceof
|
|
207375
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
|
|
207378
207376
|
this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
|
|
207379
207377
|
}
|
|
207380
|
-
else if (this._geometryB instanceof
|
|
207378
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
|
|
207381
207379
|
this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
|
|
207382
207380
|
}
|
|
207383
207381
|
return undefined;
|
|
@@ -207393,13 +207391,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207393
207391
|
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
207394
207392
|
this.dispatchArcBsplineCurve3d(this._geometryB, curve, true);
|
|
207395
207393
|
}
|
|
207396
|
-
else if (this._geometryB instanceof
|
|
207394
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_13__.BSplineCurve3dBase) {
|
|
207397
207395
|
this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
|
|
207398
207396
|
}
|
|
207399
|
-
else if (this._geometryB instanceof
|
|
207397
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_11__.CurveCollection) {
|
|
207400
207398
|
this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
|
|
207401
207399
|
}
|
|
207402
|
-
else if (this._geometryB instanceof
|
|
207400
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex) {
|
|
207403
207401
|
this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
|
|
207404
207402
|
}
|
|
207405
207403
|
return undefined;
|
|
@@ -207408,7 +207406,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207408
207406
|
handleCurveChainWithDistanceIndex(chain) {
|
|
207409
207407
|
super.handleCurveChainWithDistanceIndex(chain);
|
|
207410
207408
|
// if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
|
|
207411
|
-
this._results =
|
|
207409
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_12__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
|
|
207412
207410
|
}
|
|
207413
207411
|
/** Double dispatch handler for strongly typed homogeneous bspline curve .. */
|
|
207414
207412
|
handleBSplineCurve3dH(_curve) {
|
|
@@ -207428,11 +207426,11 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
207428
207426
|
return undefined;
|
|
207429
207427
|
}
|
|
207430
207428
|
}
|
|
207431
|
-
CurveCurveCloseApproachXY._workPointAA0 =
|
|
207432
|
-
CurveCurveCloseApproachXY._workPointAA1 =
|
|
207433
|
-
CurveCurveCloseApproachXY._workPointBB0 =
|
|
207434
|
-
CurveCurveCloseApproachXY._workPointBB1 =
|
|
207435
|
-
CurveCurveCloseApproachXY._workPointB =
|
|
207429
|
+
CurveCurveCloseApproachXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
|
|
207430
|
+
CurveCurveCloseApproachXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
|
|
207431
|
+
CurveCurveCloseApproachXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
|
|
207432
|
+
CurveCurveCloseApproachXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
|
|
207433
|
+
CurveCurveCloseApproachXY._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_15__.Point3d.create();
|
|
207436
207434
|
|
|
207437
207435
|
|
|
207438
207436
|
/***/ }),
|
|
@@ -207449,26 +207447,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
207449
207447
|
/* harmony export */ "CurveCurveIntersectXY": () => (/* binding */ CurveCurveIntersectXY)
|
|
207450
207448
|
/* harmony export */ });
|
|
207451
207449
|
/* 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
|
|
207450
|
+
/* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
|
|
207453
207451
|
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
207454
207452
|
/* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
|
|
207455
207453
|
/* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
|
|
207456
207454
|
/* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
|
|
207457
|
-
/* harmony import */ var
|
|
207458
|
-
/* harmony import */ var
|
|
207459
|
-
/* harmony import */ var
|
|
207460
|
-
/* harmony import */ var
|
|
207461
|
-
/* harmony import */ var
|
|
207462
|
-
/* harmony import */ var
|
|
207463
|
-
/* harmony import */ var
|
|
207464
|
-
/* harmony import */ var
|
|
207465
|
-
/* harmony import */ var
|
|
207466
|
-
/* harmony import */ var
|
|
207455
|
+
/* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
|
|
207456
|
+
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
207457
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
207458
|
+
/* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
|
|
207459
|
+
/* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
|
|
207460
|
+
/* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
|
|
207461
|
+
/* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
|
|
207462
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
207463
|
+
/* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
|
|
207464
|
+
/* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
|
|
207465
|
+
/* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
|
|
207467
207466
|
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
207468
|
-
/* harmony import */ var
|
|
207469
|
-
/* harmony import */ var
|
|
207470
|
-
/* harmony import */ var
|
|
207471
|
-
/* harmony import */ var
|
|
207467
|
+
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
207468
|
+
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
207469
|
+
/* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
|
|
207470
|
+
/* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
|
|
207472
207471
|
/*---------------------------------------------------------------------------------------------
|
|
207473
207472
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
207474
207473
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -207495,6 +207494,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
207495
207494
|
|
|
207496
207495
|
|
|
207497
207496
|
|
|
207497
|
+
|
|
207498
207498
|
|
|
207499
207499
|
|
|
207500
207500
|
// cspell:word XYRR
|
|
@@ -207651,7 +207651,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207651
207651
|
this.recordPointWithLocalFractions(overlap.detailA.fraction, cpA, fractionA0, fractionA1, overlap.detailB.fraction, cpB, fractionB0, fractionB1, reversed, overlap);
|
|
207652
207652
|
}
|
|
207653
207653
|
}
|
|
207654
|
-
else if (
|
|
207654
|
+
else if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
|
|
207655
207655
|
if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance) &&
|
|
207656
207656
|
this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
|
|
207657
207657
|
this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
|
|
@@ -207671,7 +207671,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207671
207671
|
this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1, hA1);
|
|
207672
207672
|
this._worldToLocalPerspective.multiplyPoint3d(pointB0, 1, hB0);
|
|
207673
207673
|
this._worldToLocalPerspective.multiplyPoint3d(pointB1, 1, hB1);
|
|
207674
|
-
const fractionAB =
|
|
207674
|
+
const fractionAB = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
|
|
207675
207675
|
if (fractionAB !== undefined) {
|
|
207676
207676
|
const fractionA = fractionAB.x;
|
|
207677
207677
|
const fractionB = fractionAB.y;
|
|
@@ -207720,11 +207720,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207720
207720
|
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
|
|
207721
207721
|
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
|
|
207722
207722
|
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
|
|
207723
|
-
const numRoots =
|
|
207723
|
+
const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
|
|
207724
207724
|
for (let i = 0; i < numRoots; i++) {
|
|
207725
207725
|
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
207726
207726
|
const arcFraction = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
|
|
207727
|
-
const lineFraction =
|
|
207727
|
+
const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
|
|
207728
207728
|
if (lineFraction !== undefined &&
|
|
207729
207729
|
this.acceptFraction(extendA0, lineFraction, extendA1) &&
|
|
207730
207730
|
this.acceptFraction(extendB0, arcFraction, extendB1)) {
|
|
@@ -207746,13 +207746,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207746
207746
|
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
|
|
207747
207747
|
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
|
|
207748
207748
|
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array(2);
|
|
207749
|
-
const numRoots =
|
|
207749
|
+
const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
|
|
207750
207750
|
const lineFractionTol = 1.0e-10; // TODO: why are we loosening tolerances here?
|
|
207751
207751
|
const arcFractionTol = 1.0e-7;
|
|
207752
207752
|
for (let i = 0; i < numRoots; i++) {
|
|
207753
207753
|
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
207754
207754
|
const arcFraction = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
|
|
207755
|
-
const lineFraction =
|
|
207755
|
+
const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
|
|
207756
207756
|
if (lineFraction !== undefined &&
|
|
207757
207757
|
this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol) &&
|
|
207758
207758
|
this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
|
|
@@ -207776,7 +207776,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207776
207776
|
const ellipseRadians = [];
|
|
207777
207777
|
const circleRadians = [];
|
|
207778
207778
|
// find the intersection of the transformed arcs
|
|
207779
|
-
|
|
207779
|
+
_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
|
|
207780
207780
|
localB.coffs[0], localB.coffs[3], localB.coffs[6], // vector0 xyw
|
|
207781
207781
|
localB.coffs[1], localB.coffs[4], localB.coffs[7], // vector90 xyw
|
|
207782
207782
|
ellipseRadians, circleRadians);
|
|
@@ -207803,14 +207803,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207803
207803
|
if (this._worldToLocalPerspective) {
|
|
207804
207804
|
const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
207805
207805
|
const dataB = cpB.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
207806
|
-
matrixA =
|
|
207807
|
-
matrixB =
|
|
207806
|
+
matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
|
|
207807
|
+
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
207808
|
}
|
|
207809
207809
|
else {
|
|
207810
207810
|
const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
|
|
207811
207811
|
const dataB = cpB.toTransformedVectors(this._worldToLocalAffine);
|
|
207812
|
-
matrixA =
|
|
207813
|
-
matrixB =
|
|
207812
|
+
matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
|
|
207813
|
+
matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
|
|
207814
207814
|
}
|
|
207815
207815
|
const conditionA = matrixA.conditionNumber();
|
|
207816
207816
|
const conditionB = matrixB.conditionNumber();
|
|
@@ -207841,11 +207841,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207841
207841
|
let matrixA;
|
|
207842
207842
|
if (this._worldToLocalPerspective) {
|
|
207843
207843
|
const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
207844
|
-
matrixA =
|
|
207844
|
+
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
207845
|
}
|
|
207846
207846
|
else {
|
|
207847
207847
|
const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
|
|
207848
|
-
matrixA =
|
|
207848
|
+
matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
|
|
207849
207849
|
}
|
|
207850
207850
|
// The worldToLocal has moved the arc vectors into local space.
|
|
207851
207851
|
// matrixA captures the xyw parts (ignoring z)
|
|
@@ -207856,7 +207856,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207856
207856
|
const orderF = cpB.order; // order of the beziers for simple coordinates
|
|
207857
207857
|
const orderG = 2 * orderF - 1; // order of the (single) bezier for squared coordinates.
|
|
207858
207858
|
const coffF = new Float64Array(orderF);
|
|
207859
|
-
const univariateBezierG = new
|
|
207859
|
+
const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderG);
|
|
207860
207860
|
const axx = matrixAInverse.at(0, 0);
|
|
207861
207861
|
const axy = matrixAInverse.at(0, 1);
|
|
207862
207862
|
const axz = 0.0;
|
|
@@ -207927,13 +207927,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207927
207927
|
dispatchBezierBezierStrokeFirst(bezierA, bcurveA, strokeCountA, bezierB, bcurveB, _strokeCountB, univariateBezierB, // caller-allocated for univariate coefficients.
|
|
207928
207928
|
reversed) {
|
|
207929
207929
|
if (!this._xyzwA0)
|
|
207930
|
-
this._xyzwA0 =
|
|
207930
|
+
this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
207931
207931
|
if (!this._xyzwA1)
|
|
207932
|
-
this._xyzwA1 =
|
|
207932
|
+
this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
207933
207933
|
if (!this._xyzwPlane)
|
|
207934
|
-
this._xyzwPlane =
|
|
207934
|
+
this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
207935
207935
|
if (!this._xyzwB)
|
|
207936
|
-
this._xyzwB =
|
|
207936
|
+
this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
207937
207937
|
/*
|
|
207938
207938
|
const roots = univariateBezierG.roots(0.0, true);
|
|
207939
207939
|
if (roots) {
|
|
@@ -207959,7 +207959,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207959
207959
|
for (let i = 1; i <= strokeCountA; i++, f0 = f1, this._xyzwA0.setFrom(this._xyzwA1)) {
|
|
207960
207960
|
f1 = i * df;
|
|
207961
207961
|
bezierA.fractionToPoint4d(f1, this._xyzwA1);
|
|
207962
|
-
|
|
207962
|
+
_geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
|
|
207963
207963
|
bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
|
|
207964
207964
|
let errors = 0;
|
|
207965
207965
|
const roots = univariateBezierB.roots(0.0, true);
|
|
@@ -207967,13 +207967,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
207967
207967
|
for (const r of roots) {
|
|
207968
207968
|
let bezierBFraction = r;
|
|
207969
207969
|
bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
|
|
207970
|
-
const segmentAFraction =
|
|
207970
|
+
const segmentAFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
|
|
207971
207971
|
if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
|
|
207972
207972
|
let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(f0, segmentAFraction, f1);
|
|
207973
207973
|
// We have a near intersection at fractions on the two beziers
|
|
207974
207974
|
// Iterate on the curves for a true intersection
|
|
207975
|
-
const xyMatchingFunction = new
|
|
207976
|
-
const newtonSearcher = new
|
|
207975
|
+
const xyMatchingFunction = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_11__.CurveCurveIntersectionXYRRToRRD(bezierA, bezierB);
|
|
207976
|
+
const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_11__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
|
|
207977
207977
|
newtonSearcher.setUV(bezierAFraction, bezierBFraction);
|
|
207978
207978
|
if (newtonSearcher.runIterations()) {
|
|
207979
207979
|
bezierAFraction = newtonSearcher.getU();
|
|
@@ -208001,8 +208001,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208001
208001
|
const rangeB = this.getRanges(bezierSpanB);
|
|
208002
208002
|
const orderA = bcurveA.order;
|
|
208003
208003
|
const orderB = bcurveB.order;
|
|
208004
|
-
const univariateCoffsA = new
|
|
208005
|
-
const univariateCoffsB = new
|
|
208004
|
+
const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderA);
|
|
208005
|
+
const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderB);
|
|
208006
208006
|
for (let a = 0; a < numA; a++) {
|
|
208007
208007
|
for (let b = 0; b < numB; b++) {
|
|
208008
208008
|
if (rangeA[a].intersectsRangeXY(rangeB[b])) {
|
|
@@ -208026,7 +208026,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208026
208026
|
return this._worldToLocalPerspective.multiplyPoint3d(xyz, w);
|
|
208027
208027
|
if (this._worldToLocalAffine)
|
|
208028
208028
|
return this._worldToLocalAffine.multiplyXYZW(xyz.x, xyz.y, xyz.z, w);
|
|
208029
|
-
return
|
|
208029
|
+
return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createFromPointAndWeight(xyz, w);
|
|
208030
208030
|
}
|
|
208031
208031
|
mapNPCPlaneToWorld(npcPlane, worldPlane) {
|
|
208032
208032
|
// for NPC pointY, Y^ * H = 0 is "on" plane H. (Hat is transpose)
|
|
@@ -208050,7 +208050,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208050
208050
|
dispatchSegmentBsplineCurve(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, bcurve, extendB0, extendB1, reversed) {
|
|
208051
208051
|
const pointA0H = this.projectPoint(pointA0);
|
|
208052
208052
|
const pointA1H = this.projectPoint(pointA1);
|
|
208053
|
-
const planeCoffs =
|
|
208053
|
+
const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
|
|
208054
208054
|
this.mapNPCPlaneToWorld(planeCoffs, planeCoffs);
|
|
208055
208055
|
// NOW .. we have a plane in world space. Intersect it with the bspline:
|
|
208056
208056
|
const intersections = [];
|
|
@@ -208062,7 +208062,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208062
208062
|
const fractionB = detail.fraction;
|
|
208063
208063
|
const curvePoint = detail.point;
|
|
208064
208064
|
const curvePointH = this.projectPoint(curvePoint);
|
|
208065
|
-
const lineFraction =
|
|
208065
|
+
const lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_5__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
|
|
208066
208066
|
if (lineFraction !== undefined) {
|
|
208067
208067
|
if (this.acceptFraction(extendA0, lineFraction, extendA1) && this.acceptFraction(extendB0, fractionB, extendB1)) {
|
|
208068
208068
|
this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed);
|
|
@@ -208171,14 +208171,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208171
208171
|
*/
|
|
208172
208172
|
dispatchCurveCollection(geomA, geomAHandler) {
|
|
208173
208173
|
const geomB = this._geometryB; // save
|
|
208174
|
-
if (!geomB || !geomB.children || !(geomB instanceof
|
|
208174
|
+
if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection))
|
|
208175
208175
|
return;
|
|
208176
208176
|
const children = geomB.children;
|
|
208177
208177
|
const extendB0 = this._extendB0; // save
|
|
208178
208178
|
const extendB1 = this._extendB1; // save
|
|
208179
208179
|
for (let i = 0; i < children.length; i++) {
|
|
208180
208180
|
this.resetGeometry(children[i]);
|
|
208181
|
-
if (geomB instanceof
|
|
208181
|
+
if (geomB instanceof _Path__WEBPACK_IMPORTED_MODULE_13__.Path && children.length > 1) {
|
|
208182
208182
|
if (i === 0)
|
|
208183
208183
|
this._extendB1 = false; // first child can only extend from start
|
|
208184
208184
|
else if (i === children.length - 1)
|
|
@@ -208186,7 +208186,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208186
208186
|
else
|
|
208187
208187
|
this._extendB0 = this._extendB1 = false; // middle children cannot extend
|
|
208188
208188
|
}
|
|
208189
|
-
else if (geomB instanceof
|
|
208189
|
+
else if (geomB instanceof _Loop__WEBPACK_IMPORTED_MODULE_14__.Loop) {
|
|
208190
208190
|
this._extendB0 = this._extendB1 = false; // Loops cannot extend
|
|
208191
208191
|
}
|
|
208192
208192
|
geomAHandler(geomA);
|
|
@@ -208200,9 +208200,9 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208200
208200
|
* We take care of extend variables of geometry's children here if geometry.path is Path or Loop.
|
|
208201
208201
|
*/
|
|
208202
208202
|
dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
|
|
208203
|
-
if (!this._geometryB || !(this._geometryB instanceof
|
|
208203
|
+
if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex))
|
|
208204
208204
|
return;
|
|
208205
|
-
if (geomA instanceof
|
|
208205
|
+
if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
|
|
208206
208206
|
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "call handleCurveChainWithDistanceIndex(geomA) instead");
|
|
208207
208207
|
return;
|
|
208208
208208
|
}
|
|
@@ -208211,7 +208211,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208211
208211
|
this.resetGeometry(geomB.path);
|
|
208212
208212
|
this.dispatchCurveCollection(geomA, geomAHandler);
|
|
208213
208213
|
this.resetGeometry(geomB); // restore
|
|
208214
|
-
this._results =
|
|
208214
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
|
|
208215
208215
|
}
|
|
208216
208216
|
/**
|
|
208217
208217
|
* Invoke `child.dispatchToGeometryHandler(this)` for each child in the array returned by the query `g.children`.
|
|
@@ -208223,7 +208223,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208223
208223
|
const extendA1 = this._extendA1; // save
|
|
208224
208224
|
if (children)
|
|
208225
208225
|
for (let i = 0; i < children.length; i++) {
|
|
208226
|
-
if (g instanceof
|
|
208226
|
+
if (g instanceof _Path__WEBPACK_IMPORTED_MODULE_13__.Path && children.length > 1) {
|
|
208227
208227
|
if (i === 0)
|
|
208228
208228
|
this._extendA1 = false; // first child can only extend from start
|
|
208229
208229
|
else if (i === children.length - 1)
|
|
@@ -208231,7 +208231,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208231
208231
|
else
|
|
208232
208232
|
this._extendA0 = this._extendA1 = false; // middle children cannot extend
|
|
208233
208233
|
}
|
|
208234
|
-
else if (g instanceof
|
|
208234
|
+
else if (g instanceof _Loop__WEBPACK_IMPORTED_MODULE_14__.Loop) {
|
|
208235
208235
|
this._extendA0 = this._extendA1 = false; // Loops cannot extend
|
|
208236
208236
|
}
|
|
208237
208237
|
children[i].dispatchToGeometryHandler(this);
|
|
@@ -208241,90 +208241,90 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208241
208241
|
}
|
|
208242
208242
|
/** Double dispatch handler for strongly typed segment. */
|
|
208243
208243
|
handleLineSegment3d(segmentA) {
|
|
208244
|
-
if (this._geometryB instanceof
|
|
208244
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
|
|
208245
208245
|
const segmentB = this._geometryB;
|
|
208246
208246
|
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
208247
|
}
|
|
208248
|
-
else if (this._geometryB instanceof
|
|
208248
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
|
|
208249
208249
|
this.computeSegmentLineString(segmentA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
208250
208250
|
}
|
|
208251
|
-
else if (this._geometryB instanceof
|
|
208251
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
|
|
208252
208252
|
this.dispatchSegmentArc(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
208253
208253
|
}
|
|
208254
|
-
else if (this._geometryB instanceof
|
|
208254
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3d) {
|
|
208255
208255
|
this.dispatchSegmentBsplineCurve(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
208256
208256
|
}
|
|
208257
|
-
else if (this._geometryB instanceof
|
|
208257
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
208258
208258
|
this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
|
|
208259
208259
|
}
|
|
208260
|
-
else if (this._geometryB instanceof
|
|
208260
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
|
|
208261
208261
|
this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
|
|
208262
208262
|
}
|
|
208263
208263
|
return undefined;
|
|
208264
208264
|
}
|
|
208265
208265
|
/** Double dispatch handler for strongly typed linestring. */
|
|
208266
208266
|
handleLineString3d(lsA) {
|
|
208267
|
-
if (this._geometryB instanceof
|
|
208267
|
+
if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
|
|
208268
208268
|
const lsB = this._geometryB;
|
|
208269
208269
|
this.computeLineStringLineString(lsA, lsB, false);
|
|
208270
208270
|
}
|
|
208271
|
-
else if (this._geometryB instanceof
|
|
208271
|
+
else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
|
|
208272
208272
|
this.computeSegmentLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
|
|
208273
208273
|
}
|
|
208274
|
-
else if (this._geometryB instanceof
|
|
208274
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
|
|
208275
208275
|
this.computeArcLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
|
|
208276
208276
|
}
|
|
208277
|
-
else if (this._geometryB instanceof
|
|
208277
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3d) {
|
|
208278
208278
|
this.dispatchLineStringBSplineCurve(lsA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
208279
208279
|
}
|
|
208280
|
-
else if (this._geometryB instanceof
|
|
208280
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
208281
208281
|
this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
|
|
208282
208282
|
}
|
|
208283
|
-
else if (this._geometryB instanceof
|
|
208283
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
|
|
208284
208284
|
this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
|
|
208285
208285
|
}
|
|
208286
208286
|
return undefined;
|
|
208287
208287
|
}
|
|
208288
208288
|
/** Double dispatch handler for strongly typed arc. */
|
|
208289
208289
|
handleArc3d(arc0) {
|
|
208290
|
-
if (this._geometryB instanceof
|
|
208290
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
|
|
208291
208291
|
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
208292
|
}
|
|
208293
|
-
else if (this._geometryB instanceof
|
|
208293
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
|
|
208294
208294
|
this.computeArcLineString(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
208295
208295
|
}
|
|
208296
|
-
else if (this._geometryB instanceof
|
|
208296
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
|
|
208297
208297
|
this.dispatchArcArc(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
208298
208298
|
}
|
|
208299
|
-
else if (this._geometryB instanceof
|
|
208299
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3d) {
|
|
208300
208300
|
this.dispatchArcBsplineCurve3d(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
208301
208301
|
}
|
|
208302
|
-
else if (this._geometryB instanceof
|
|
208302
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
208303
208303
|
this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
|
|
208304
208304
|
}
|
|
208305
|
-
else if (this._geometryB instanceof
|
|
208305
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
|
|
208306
208306
|
this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
|
|
208307
208307
|
}
|
|
208308
208308
|
return undefined;
|
|
208309
208309
|
}
|
|
208310
208310
|
/** Double dispatch handler for strongly typed bspline curve. */
|
|
208311
208311
|
handleBSplineCurve3d(curve) {
|
|
208312
|
-
if (this._geometryB instanceof
|
|
208312
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_16__.LineSegment3d) {
|
|
208313
208313
|
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
208314
|
}
|
|
208315
|
-
else if (this._geometryB instanceof
|
|
208315
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_17__.LineString3d) {
|
|
208316
208316
|
this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
|
|
208317
208317
|
}
|
|
208318
|
-
else if (this._geometryB instanceof
|
|
208318
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
|
|
208319
208319
|
this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
|
|
208320
208320
|
}
|
|
208321
|
-
else if (this._geometryB instanceof
|
|
208321
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_19__.BSplineCurve3dBase) {
|
|
208322
208322
|
this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
|
|
208323
208323
|
}
|
|
208324
|
-
else if (this._geometryB instanceof
|
|
208324
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
|
|
208325
208325
|
this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
|
|
208326
208326
|
}
|
|
208327
|
-
else if (this._geometryB instanceof
|
|
208327
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex) {
|
|
208328
208328
|
this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
|
|
208329
208329
|
}
|
|
208330
208330
|
return undefined;
|
|
@@ -208333,7 +208333,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208333
208333
|
handleCurveChainWithDistanceIndex(chain) {
|
|
208334
208334
|
super.handleCurveChainWithDistanceIndex(chain);
|
|
208335
208335
|
// if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
|
|
208336
|
-
this._results =
|
|
208336
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_15__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
|
|
208337
208337
|
}
|
|
208338
208338
|
/** Double dispatch handler for strongly typed homogeneous bspline curve. */
|
|
208339
208339
|
handleBSplineCurve3dH(_curve) {
|
|
@@ -208353,19 +208353,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
208353
208353
|
return undefined;
|
|
208354
208354
|
}
|
|
208355
208355
|
}
|
|
208356
|
-
CurveCurveIntersectXY._workVector2dA =
|
|
208357
|
-
CurveCurveIntersectXY._workPointA0H =
|
|
208358
|
-
CurveCurveIntersectXY._workPointA1H =
|
|
208359
|
-
CurveCurveIntersectXY._workPointB0H =
|
|
208360
|
-
CurveCurveIntersectXY._workPointB1H =
|
|
208361
|
-
CurveCurveIntersectXY._workPointAA0 =
|
|
208362
|
-
CurveCurveIntersectXY._workPointAA1 =
|
|
208363
|
-
CurveCurveIntersectXY._workPointBB0 =
|
|
208364
|
-
CurveCurveIntersectXY._workPointBB1 =
|
|
208365
|
-
CurveCurveIntersectXY._workPointA0 =
|
|
208366
|
-
CurveCurveIntersectXY._workPointA1 =
|
|
208367
|
-
CurveCurveIntersectXY._workPointB0 =
|
|
208368
|
-
CurveCurveIntersectXY._workPointB1 =
|
|
208356
|
+
CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_20__.Vector2d.create();
|
|
208357
|
+
CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
208358
|
+
CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
208359
|
+
CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
208360
|
+
CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
|
|
208361
|
+
CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208362
|
+
CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208363
|
+
CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208364
|
+
CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208365
|
+
CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208366
|
+
CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208367
|
+
CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208368
|
+
CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_21__.Point3d.create();
|
|
208369
208369
|
|
|
208370
208370
|
|
|
208371
208371
|
/***/ }),
|
|
@@ -208382,21 +208382,22 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
208382
208382
|
/* harmony export */ "CurveCurveIntersectXYZ": () => (/* binding */ CurveCurveIntersectXYZ)
|
|
208383
208383
|
/* harmony export */ });
|
|
208384
208384
|
/* 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
|
|
208385
|
+
/* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
|
|
208386
208386
|
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
208387
208387
|
/* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
|
|
208388
208388
|
/* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
|
|
208389
|
-
/* harmony import */ var
|
|
208389
|
+
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
208390
208390
|
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
208391
|
-
/* harmony import */ var
|
|
208392
|
-
/* harmony import */ var
|
|
208393
|
-
/* harmony import */ var
|
|
208394
|
-
/* harmony import */ var
|
|
208391
|
+
/* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
|
|
208392
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
208393
|
+
/* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
|
|
208394
|
+
/* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
|
|
208395
|
+
/* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
|
|
208395
208396
|
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
208396
|
-
/* harmony import */ var
|
|
208397
|
-
/* harmony import */ var
|
|
208398
|
-
/* harmony import */ var
|
|
208399
|
-
/* harmony import */ var
|
|
208397
|
+
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
208398
|
+
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
208399
|
+
/* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
|
|
208400
|
+
/* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Path */ "../../core/geometry/lib/esm/curve/Path.js");
|
|
208400
208401
|
/*---------------------------------------------------------------------------------------------
|
|
208401
208402
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
208402
208403
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -208420,6 +208421,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
208420
208421
|
|
|
208421
208422
|
|
|
208422
208423
|
|
|
208424
|
+
|
|
208423
208425
|
// cspell:word XYRR
|
|
208424
208426
|
/**
|
|
208425
208427
|
* Handler class for XYZ intersections between _geometryB and another geometry.
|
|
@@ -208514,7 +208516,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
208514
208516
|
*/
|
|
208515
208517
|
computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed) {
|
|
208516
208518
|
const uv = CurveCurveIntersectXYZ._workVector2dA;
|
|
208517
|
-
if (
|
|
208519
|
+
if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
|
|
208518
208520
|
this.acceptFraction(extendA0, uv.x, extendA1) && this.acceptFraction(extendB0, uv.y, extendB1)) {
|
|
208519
208521
|
this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
|
|
208520
208522
|
}
|
|
@@ -208565,7 +208567,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
208565
208567
|
for (const c of candidates) {
|
|
208566
208568
|
const arcFraction = arc.sweep.fractionToSignedPeriodicFraction(c.fraction, extendB0);
|
|
208567
208569
|
if (this.acceptFraction(extendB0, arcFraction, extendB1)) {
|
|
208568
|
-
lineFraction =
|
|
208570
|
+
lineFraction = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
|
|
208569
208571
|
if (lineFraction !== undefined) {
|
|
208570
208572
|
linePoint = pointA0.interpolate(lineFraction, pointA1, linePoint);
|
|
208571
208573
|
if (linePoint.isAlmostEqualMetric(c.point) && this.acceptFraction(extendA0, lineFraction, extendA1)) {
|
|
@@ -208585,7 +208587,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
208585
208587
|
if (otherVectors !== undefined) {
|
|
208586
208588
|
const ellipseRadians = [];
|
|
208587
208589
|
const circleRadians = [];
|
|
208588
|
-
|
|
208590
|
+
_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
208591
|
for (let i = 0; i < ellipseRadians.length; i++) {
|
|
208590
208592
|
const fractionA = cpA.sweep.radiansToSignedFraction(circleRadians[i], extendA0);
|
|
208591
208593
|
const fractionB = cpB.sweep.radiansToSignedFraction(ellipseRadians[i], extendB0);
|
|
@@ -209016,14 +209018,14 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209016
209018
|
*/
|
|
209017
209019
|
dispatchCurveCollection(geomA, geomAHandler) {
|
|
209018
209020
|
const geomB = this._geometryB; // save
|
|
209019
|
-
if (!geomB || !geomB.children || !(geomB instanceof
|
|
209021
|
+
if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection))
|
|
209020
209022
|
return;
|
|
209021
209023
|
const children = geomB.children;
|
|
209022
209024
|
const extendB0 = this._extendB0; // save
|
|
209023
209025
|
const extendB1 = this._extendB1; // save
|
|
209024
209026
|
for (let i = 0; i < children.length; i++) {
|
|
209025
209027
|
this.resetGeometry(children[i]);
|
|
209026
|
-
if (geomB instanceof
|
|
209028
|
+
if (geomB instanceof _Path__WEBPACK_IMPORTED_MODULE_9__.Path && children.length > 1) {
|
|
209027
209029
|
if (i === 0)
|
|
209028
209030
|
this._extendB1 = false; // first child can only extend from start
|
|
209029
209031
|
else if (i === children.length - 1)
|
|
@@ -209031,7 +209033,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209031
209033
|
else
|
|
209032
209034
|
this._extendB0 = this._extendB1 = false; // middle children cannot extend
|
|
209033
209035
|
}
|
|
209034
|
-
else if (geomB instanceof
|
|
209036
|
+
else if (geomB instanceof _Loop__WEBPACK_IMPORTED_MODULE_10__.Loop) {
|
|
209035
209037
|
this._extendB0 = this._extendB1 = false; // Loops cannot extend
|
|
209036
209038
|
}
|
|
209037
209039
|
geomAHandler(geomA);
|
|
@@ -209045,9 +209047,9 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209045
209047
|
* We take care of extend variables of geometry's children here if geometry.path is Path or Loop.
|
|
209046
209048
|
*/
|
|
209047
209049
|
dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
|
|
209048
|
-
if (!this._geometryB || !(this._geometryB instanceof
|
|
209050
|
+
if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex))
|
|
209049
209051
|
return;
|
|
209050
|
-
if (geomA instanceof
|
|
209052
|
+
if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
|
|
209051
209053
|
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "call handleCurveChainWithDistanceIndex(geomA) instead");
|
|
209052
209054
|
return;
|
|
209053
209055
|
}
|
|
@@ -209056,7 +209058,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209056
209058
|
this.resetGeometry(geomB.path);
|
|
209057
209059
|
this.dispatchCurveCollection(geomA, geomAHandler);
|
|
209058
209060
|
this.resetGeometry(geomB); // restore
|
|
209059
|
-
this._results =
|
|
209061
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
|
|
209060
209062
|
}
|
|
209061
209063
|
/**
|
|
209062
209064
|
* Invoke `child.dispatchToGeometryHandler(this)` for each child in the array returned by the query `g.children`.
|
|
@@ -209068,7 +209070,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209068
209070
|
const extendA1 = this._extendA1; // save
|
|
209069
209071
|
if (children)
|
|
209070
209072
|
for (let i = 0; i < children.length; i++) {
|
|
209071
|
-
if (g instanceof
|
|
209073
|
+
if (g instanceof _Path__WEBPACK_IMPORTED_MODULE_9__.Path && children.length > 1) {
|
|
209072
209074
|
if (i === 0)
|
|
209073
209075
|
this._extendA1 = false; // first child can only extend from start
|
|
209074
209076
|
else if (i === children.length - 1)
|
|
@@ -209076,7 +209078,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209076
209078
|
else
|
|
209077
209079
|
this._extendA0 = this._extendA1 = false; // middle children cannot extend
|
|
209078
209080
|
}
|
|
209079
|
-
else if (g instanceof
|
|
209081
|
+
else if (g instanceof _Loop__WEBPACK_IMPORTED_MODULE_10__.Loop) {
|
|
209080
209082
|
this._extendA0 = this._extendA1 = false; // Loops cannot extend
|
|
209081
209083
|
}
|
|
209082
209084
|
children[i].dispatchToGeometryHandler(this);
|
|
@@ -209086,90 +209088,90 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209086
209088
|
}
|
|
209087
209089
|
/** Double dispatch handler for strongly typed segment. */
|
|
209088
209090
|
handleLineSegment3d(segmentA) {
|
|
209089
|
-
if (this._geometryB instanceof
|
|
209091
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
|
|
209090
209092
|
const segmentB = this._geometryB;
|
|
209091
209093
|
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
209094
|
}
|
|
209093
|
-
else if (this._geometryB instanceof
|
|
209095
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
|
|
209094
209096
|
this.computeSegmentLineString(segmentA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
209095
209097
|
}
|
|
209096
|
-
else if (this._geometryB instanceof
|
|
209098
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
|
|
209097
209099
|
this.dispatchSegmentArc(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
209098
209100
|
}
|
|
209099
|
-
else if (this._geometryB instanceof
|
|
209101
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3d) {
|
|
209100
209102
|
this.dispatchSegmentBsplineCurve(segmentA, this._extendA0, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
209101
209103
|
}
|
|
209102
|
-
else if (this._geometryB instanceof
|
|
209104
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
|
|
209103
209105
|
this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
|
|
209104
209106
|
}
|
|
209105
|
-
else if (this._geometryB instanceof
|
|
209107
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
|
|
209106
209108
|
this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
|
|
209107
209109
|
}
|
|
209108
209110
|
return undefined;
|
|
209109
209111
|
}
|
|
209110
209112
|
/** double dispatch handler for strongly typed linestring. */
|
|
209111
209113
|
handleLineString3d(lsA) {
|
|
209112
|
-
if (this._geometryB instanceof
|
|
209114
|
+
if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
|
|
209113
209115
|
const lsB = this._geometryB;
|
|
209114
209116
|
this.computeLineStringLineString(lsA, lsB, false);
|
|
209115
209117
|
}
|
|
209116
|
-
else if (this._geometryB instanceof
|
|
209118
|
+
else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
|
|
209117
209119
|
this.computeSegmentLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
|
|
209118
209120
|
}
|
|
209119
|
-
else if (this._geometryB instanceof
|
|
209121
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
|
|
209120
209122
|
this.computeArcLineString(this._geometryB, this._extendB0, this._extendB1, lsA, this._extendA0, this._extendA1, true);
|
|
209121
209123
|
}
|
|
209122
|
-
else if (this._geometryB instanceof
|
|
209124
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3d) {
|
|
209123
209125
|
this.dispatchLineStringBSplineCurve(lsA, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
209124
209126
|
}
|
|
209125
|
-
else if (this._geometryB instanceof
|
|
209127
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
|
|
209126
209128
|
this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
|
|
209127
209129
|
}
|
|
209128
|
-
else if (this._geometryB instanceof
|
|
209130
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
|
|
209129
209131
|
this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
|
|
209130
209132
|
}
|
|
209131
209133
|
return undefined;
|
|
209132
209134
|
}
|
|
209133
209135
|
/** Double dispatch handler for strongly typed arc. */
|
|
209134
209136
|
handleArc3d(arc0) {
|
|
209135
|
-
if (this._geometryB instanceof
|
|
209137
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
|
|
209136
209138
|
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
209139
|
}
|
|
209138
|
-
else if (this._geometryB instanceof
|
|
209140
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
|
|
209139
209141
|
this.computeArcLineString(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
209140
209142
|
}
|
|
209141
|
-
else if (this._geometryB instanceof
|
|
209143
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
|
|
209142
209144
|
this.dispatchArcArc(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
209143
209145
|
}
|
|
209144
|
-
else if (this._geometryB instanceof
|
|
209146
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3d) {
|
|
209145
209147
|
this.dispatchArcBsplineCurve3d(arc0, this._extendA0, this._extendA1, this._geometryB, this._extendB0, this._extendB1, false);
|
|
209146
209148
|
}
|
|
209147
|
-
else if (this._geometryB instanceof
|
|
209149
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
|
|
209148
209150
|
this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
|
|
209149
209151
|
}
|
|
209150
|
-
else if (this._geometryB instanceof
|
|
209152
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
|
|
209151
209153
|
this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
|
|
209152
209154
|
}
|
|
209153
209155
|
return undefined;
|
|
209154
209156
|
}
|
|
209155
209157
|
/** Double dispatch handler for strongly typed bspline curve. */
|
|
209156
209158
|
handleBSplineCurve3d(curve) {
|
|
209157
|
-
if (this._geometryB instanceof
|
|
209159
|
+
if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
|
|
209158
209160
|
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
209161
|
}
|
|
209160
|
-
else if (this._geometryB instanceof
|
|
209162
|
+
else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_13__.LineString3d) {
|
|
209161
209163
|
this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
|
|
209162
209164
|
}
|
|
209163
|
-
else if (this._geometryB instanceof
|
|
209165
|
+
else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_14__.Arc3d) {
|
|
209164
209166
|
this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB0, this._extendB1, curve, this._extendA0, this._extendA1, true);
|
|
209165
209167
|
}
|
|
209166
|
-
else if (this._geometryB instanceof
|
|
209168
|
+
else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_15__.BSplineCurve3dBase) {
|
|
209167
209169
|
this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
|
|
209168
209170
|
}
|
|
209169
|
-
else if (this._geometryB instanceof
|
|
209171
|
+
else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
|
|
209170
209172
|
this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
|
|
209171
209173
|
}
|
|
209172
|
-
else if (this._geometryB instanceof
|
|
209174
|
+
else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex) {
|
|
209173
209175
|
this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
|
|
209174
209176
|
}
|
|
209175
209177
|
return undefined;
|
|
@@ -209178,7 +209180,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209178
209180
|
handleCurveChainWithDistanceIndex(chain) {
|
|
209179
209181
|
super.handleCurveChainWithDistanceIndex(chain);
|
|
209180
209182
|
// if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
|
|
209181
|
-
this._results =
|
|
209183
|
+
this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_11__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
|
|
209182
209184
|
}
|
|
209183
209185
|
/** Double dispatch handler for strongly typed homogeneous bspline curve. */
|
|
209184
209186
|
handleBSplineCurve3dH(_curve) {
|
|
@@ -209203,7 +209205,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
|
|
|
209203
209205
|
return undefined;
|
|
209204
209206
|
}
|
|
209205
209207
|
}
|
|
209206
|
-
CurveCurveIntersectXYZ._workVector2dA =
|
|
209208
|
+
CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_16__.Vector2d.create();
|
|
209207
209209
|
CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
|
|
209208
209210
|
CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
|
|
209209
209211
|
CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
|
|
@@ -216102,7 +216104,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
216102
216104
|
/* harmony import */ var _bspline_SurfaceLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../bspline/SurfaceLocationDetail */ "../../core/geometry/lib/esm/bspline/SurfaceLocationDetail.js");
|
|
216103
216105
|
/* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
216104
216106
|
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
216105
|
-
/* harmony import */ var
|
|
216107
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
216106
216108
|
/* harmony import */ var _Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
|
|
216107
216109
|
/* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
216108
216110
|
/*---------------------------------------------------------------------------------------------
|
|
@@ -216277,9 +216279,9 @@ class BilinearPatch {
|
|
|
216277
216279
|
// swap rows so that the equation with largest ray.direction coefficient is first.
|
|
216278
216280
|
BilinearPatch.conditionalPivot(0, coffs, 0, 1);
|
|
216279
216281
|
BilinearPatch.conditionalPivot(0, coffs, 0, 2);
|
|
216280
|
-
|
|
216281
|
-
|
|
216282
|
-
const uvArray =
|
|
216282
|
+
_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.eliminateFromPivot(coffs[0], 0, coffs[1], -1.0);
|
|
216283
|
+
_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_2__.SmallSystem.eliminateFromPivot(coffs[0], 0, coffs[2], -1.0);
|
|
216284
|
+
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
216285
|
if (uvArray) {
|
|
216284
216286
|
const result = [];
|
|
216285
216287
|
for (const uv of uvArray) {
|
|
@@ -233242,7 +233244,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
233242
233244
|
/* harmony export */ });
|
|
233243
233245
|
/* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
233244
233246
|
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
233245
|
-
/* harmony import */ var
|
|
233247
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
233246
233248
|
/* harmony import */ var _Matrix3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
|
|
233247
233249
|
/* harmony import */ var _Point2dVector2d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
233248
233250
|
/* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
@@ -233714,7 +233716,7 @@ class Ray3d {
|
|
|
233714
233716
|
let fractionA, fractionB;
|
|
233715
233717
|
let pointA, pointB;
|
|
233716
233718
|
let pairType;
|
|
233717
|
-
if (
|
|
233719
|
+
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
233720
|
fractionA = intersectionFractions.x;
|
|
233719
233721
|
fractionB = intersectionFractions.y;
|
|
233720
233722
|
pointA = rayA.fractionToPoint(fractionA);
|
|
@@ -240038,14 +240040,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
240038
240040
|
/* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
|
|
240039
240041
|
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
240040
240042
|
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
240041
|
-
/* harmony import */ var
|
|
240043
|
+
/* harmony import */ var _SmallSystem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
240042
240044
|
/*---------------------------------------------------------------------------------------------
|
|
240043
240045
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
240044
240046
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
240045
240047
|
*--------------------------------------------------------------------------------------------*/
|
|
240046
|
-
/** @packageDocumentation
|
|
240047
|
-
* @module Numerics
|
|
240048
|
-
*/
|
|
240049
240048
|
|
|
240050
240049
|
|
|
240051
240050
|
|
|
@@ -240294,7 +240293,7 @@ class Newton2dUnboundedWithDerivative extends AbstractNewtonIterator {
|
|
|
240294
240293
|
const jCol1 = fA.vectorV;
|
|
240295
240294
|
const fX = fA.origin;
|
|
240296
240295
|
// 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 (
|
|
240296
|
+
if (_SmallSystem__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.linearSystem2d(jCol0.x, jCol1.x, jCol0.y, jCol1.y, fX.x, fX.y, this._currentStep))
|
|
240298
240297
|
return true;
|
|
240299
240298
|
return false;
|
|
240300
240299
|
}
|
|
@@ -240571,19 +240570,19 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
240571
240570
|
/* harmony export */ "ImplicitLineXY": () => (/* binding */ ImplicitLineXY),
|
|
240572
240571
|
/* harmony export */ "PowerPolynomial": () => (/* binding */ PowerPolynomial),
|
|
240573
240572
|
/* harmony export */ "SineCosinePolynomial": () => (/* binding */ SineCosinePolynomial),
|
|
240574
|
-
/* harmony export */ "SmallSystem": () => (/* binding */ SmallSystem),
|
|
240575
240573
|
/* harmony export */ "SphereImplicit": () => (/* binding */ SphereImplicit),
|
|
240576
240574
|
/* harmony export */ "TorusImplicit": () => (/* binding */ TorusImplicit),
|
|
240577
240575
|
/* harmony export */ "TrigPolynomial": () => (/* binding */ TrigPolynomial)
|
|
240578
240576
|
/* harmony export */ });
|
|
240579
|
-
/* harmony import */ var
|
|
240580
|
-
/* harmony import */ var
|
|
240581
|
-
/* harmony import */ var
|
|
240582
|
-
/* harmony import */ var
|
|
240583
|
-
/* harmony import */ var
|
|
240584
|
-
/* harmony import */ var
|
|
240585
|
-
/* harmony import */ var
|
|
240586
|
-
/* harmony import */ var
|
|
240577
|
+
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
240578
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
240579
|
+
/* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
|
|
240580
|
+
/* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
|
|
240581
|
+
/* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
|
|
240582
|
+
/* harmony import */ var _geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/LongitudeLatitudeAltitude */ "../../core/geometry/lib/esm/geometry3d/LongitudeLatitudeAltitude.js");
|
|
240583
|
+
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
240584
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
240585
|
+
/* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
|
|
240587
240586
|
/*---------------------------------------------------------------------------------------------
|
|
240588
240587
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
240589
240588
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -240599,9 +240598,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
240599
240598
|
|
|
240600
240599
|
|
|
240601
240600
|
|
|
240602
|
-
|
|
240603
|
-
// cspell:
|
|
240604
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
|
240601
|
+
|
|
240602
|
+
// cspell:words Cardano internaldocs
|
|
240605
240603
|
/**
|
|
240606
240604
|
* degree 2 (quadratic) polynomial in for y = c0 + c1*x + c2*x^2
|
|
240607
240605
|
* @internal
|
|
@@ -240616,8 +240614,8 @@ class Degree2PowerPolynomial {
|
|
|
240616
240614
|
* @returns 0, 1, or 2 solutions of the usual quadratic (a*x*x + b * x + c = 0)
|
|
240617
240615
|
*/
|
|
240618
240616
|
static solveQuadratic(a, b, c) {
|
|
240619
|
-
const b1 =
|
|
240620
|
-
const c1 =
|
|
240617
|
+
const b1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(b, a);
|
|
240618
|
+
const c1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(c, a);
|
|
240621
240619
|
if (b1 !== undefined && c1 !== undefined) {
|
|
240622
240620
|
// now solving xx + b1*x + c1 = 0 -- i.e. implied "a" coefficient is 1 . .
|
|
240623
240621
|
const q = b1 * b1 - 4 * c1;
|
|
@@ -240632,7 +240630,7 @@ class Degree2PowerPolynomial {
|
|
|
240632
240630
|
return [root, root];
|
|
240633
240631
|
}
|
|
240634
240632
|
// "divide by a" failed. solve bx + c = 0
|
|
240635
|
-
const x =
|
|
240633
|
+
const x = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-c, b);
|
|
240636
240634
|
if (x !== undefined)
|
|
240637
240635
|
return [x];
|
|
240638
240636
|
return undefined;
|
|
@@ -240672,7 +240670,7 @@ class Degree2PowerPolynomial {
|
|
|
240672
240670
|
}
|
|
240673
240671
|
/** Factor the polynomial in to the form `y0 + c * (x-x0)^2)`, i.e. complete the square. */
|
|
240674
240672
|
tryGetVertexFactorization() {
|
|
240675
|
-
const x =
|
|
240673
|
+
const x = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-this.coffs[1], 2.0 * this.coffs[2]);
|
|
240676
240674
|
if (x !== undefined) {
|
|
240677
240675
|
const y = this.evaluate(x);
|
|
240678
240676
|
return { c: this.coffs[2], x0: x, y0: y };
|
|
@@ -240813,7 +240811,7 @@ class TorusImplicit {
|
|
|
240813
240811
|
// theta=0 point
|
|
240814
240812
|
const x0 = this.majorRadius + this.minorRadius * Math.cos(phiRadians);
|
|
240815
240813
|
const z0 = this.minorRadius * Math.sin(phiRadians);
|
|
240816
|
-
return
|
|
240814
|
+
return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(c * x0, s * x0, z0);
|
|
240817
240815
|
}
|
|
240818
240816
|
/** Evaluate partial derivatives at angles (int radians) on major and minor circles. */
|
|
240819
240817
|
evaluateDerivativesThetaPhi(thetaRadians, phiRadians, dxdTheta, dxdPhi) {
|
|
@@ -240822,8 +240820,8 @@ class TorusImplicit {
|
|
|
240822
240820
|
const bx = this.minorRadius * Math.cos(phiRadians);
|
|
240823
240821
|
const bz = this.minorRadius * Math.sin(phiRadians);
|
|
240824
240822
|
const x0 = this.majorRadius + bx;
|
|
240825
|
-
|
|
240826
|
-
|
|
240823
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-x0 * sTheta, x0 * cTheta, 0.0, dxdTheta);
|
|
240824
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-cTheta * bz, -sTheta * bz, bx, dxdPhi);
|
|
240827
240825
|
}
|
|
240828
240826
|
/** Evaluate space point at major and minor angles (in radians) and distance from major hoop. */
|
|
240829
240827
|
evaluateThetaPhiDistance(thetaRadians, phiRadians, distance) {
|
|
@@ -240832,7 +240830,7 @@ class TorusImplicit {
|
|
|
240832
240830
|
// theta=0 point
|
|
240833
240831
|
const x0 = this.majorRadius + distance * Math.cos(phiRadians);
|
|
240834
240832
|
const z0 = distance * Math.sin(phiRadians);
|
|
240835
|
-
return
|
|
240833
|
+
return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(c * x0, s * x0, z0);
|
|
240836
240834
|
}
|
|
240837
240835
|
/** Given an xyz coordinate in the local system of the toroid, compute the torus parametrization
|
|
240838
240836
|
* * theta = angular coordinate in xy plane
|
|
@@ -240844,19 +240842,19 @@ class TorusImplicit {
|
|
|
240844
240842
|
*/
|
|
240845
240843
|
xyzToThetaPhiDistance(xyz) {
|
|
240846
240844
|
const rho = xyz.magnitudeXY();
|
|
240847
|
-
const majorRadiusFactor =
|
|
240845
|
+
const majorRadiusFactor = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(this.majorRadius, rho);
|
|
240848
240846
|
let safeMajor;
|
|
240849
240847
|
let majorCirclePoint;
|
|
240850
240848
|
if (majorRadiusFactor) {
|
|
240851
240849
|
safeMajor = true;
|
|
240852
|
-
majorCirclePoint =
|
|
240850
|
+
majorCirclePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(majorRadiusFactor * xyz.x, majorRadiusFactor * xyz.y, 0.0);
|
|
240853
240851
|
}
|
|
240854
240852
|
else {
|
|
240855
240853
|
safeMajor = false;
|
|
240856
|
-
majorCirclePoint =
|
|
240854
|
+
majorCirclePoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(xyz.x, xyz.y, 0.0);
|
|
240857
240855
|
}
|
|
240858
240856
|
const theta = safeMajor ? Math.atan2(xyz.y, xyz.x) : 0.0;
|
|
240859
|
-
const vectorFromMajorCircle =
|
|
240857
|
+
const vectorFromMajorCircle = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(majorCirclePoint, xyz);
|
|
240860
240858
|
const distance = vectorFromMajorCircle.magnitude();
|
|
240861
240859
|
const dRho = rho - this.majorRadius;
|
|
240862
240860
|
let safePhi;
|
|
@@ -240920,10 +240918,10 @@ class SphereImplicit {
|
|
|
240920
240918
|
}
|
|
240921
240919
|
/** Return the range of a uv-aligned patch of the sphere. */
|
|
240922
240920
|
static patchRangeStartEndRadians(center, radius, theta0Radians, theta1Radians, phi0Radians, phi1Radians, result) {
|
|
240923
|
-
const thetaSweep =
|
|
240924
|
-
const phiSweep =
|
|
240925
|
-
const range =
|
|
240926
|
-
const xyz =
|
|
240921
|
+
const thetaSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(theta0Radians, theta1Radians);
|
|
240922
|
+
const phiSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(phi0Radians, phi1Radians);
|
|
240923
|
+
const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createNull(result);
|
|
240924
|
+
const xyz = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
|
|
240927
240925
|
if (thetaSweep.isFullCircle && phiSweep.isFullLatitudeSweep) {
|
|
240928
240926
|
// full sphere, no trimming -- build directly
|
|
240929
240927
|
range.extendPoint(center);
|
|
@@ -240951,7 +240949,7 @@ class SphereImplicit {
|
|
|
240951
240949
|
}
|
|
240952
240950
|
// 4 boundary curves, each with 3 components ...
|
|
240953
240951
|
// 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 =
|
|
240952
|
+
const axisRange = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createNull();
|
|
240955
240953
|
const cosPhi0 = Math.cos(phi0Radians);
|
|
240956
240954
|
const cosPhi1 = Math.cos(phi1Radians);
|
|
240957
240955
|
const sinPhi0 = Math.sin(phi0Radians);
|
|
@@ -241002,9 +241000,9 @@ class SphereImplicit {
|
|
|
241002
241000
|
const ux = ray.direction.x;
|
|
241003
241001
|
const uy = ray.direction.y;
|
|
241004
241002
|
const uz = ray.direction.z;
|
|
241005
|
-
const a0 =
|
|
241006
|
-
const a1 = 2.0 *
|
|
241007
|
-
const a2 =
|
|
241003
|
+
const a0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseSquaredXYZ(vx, vy, vz) - radius * radius;
|
|
241004
|
+
const a1 = 2.0 * _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.dotProductXYZXYZ(ux, uy, uz, vx, vy, vz);
|
|
241005
|
+
const a2 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseSquaredXYZ(ux, uy, uz);
|
|
241008
241006
|
const parameters = Degree2PowerPolynomial.solveQuadratic(a2, a1, a0);
|
|
241009
241007
|
if (rayFractions !== undefined)
|
|
241010
241008
|
rayFractions.length = 0;
|
|
@@ -241026,7 +241024,7 @@ class SphereImplicit {
|
|
|
241026
241024
|
xyz.push(point);
|
|
241027
241025
|
if (thetaPhiRadians !== undefined) {
|
|
241028
241026
|
const data = sphere.xyzToThetaPhiR(point);
|
|
241029
|
-
thetaPhiRadians.push(
|
|
241027
|
+
thetaPhiRadians.push(_geometry3d_LongitudeLatitudeAltitude__WEBPACK_IMPORTED_MODULE_5__.LongitudeLatitudeNumber.createRadians(data.thetaRadians, data.phiRadians));
|
|
241030
241028
|
}
|
|
241031
241029
|
}
|
|
241032
241030
|
}
|
|
@@ -241060,7 +241058,7 @@ class SphereImplicit {
|
|
|
241060
241058
|
const rs = this.radius * Math.sin(thetaRadians);
|
|
241061
241059
|
const cosPhi = Math.cos(phiRadians);
|
|
241062
241060
|
const sinPhi = Math.sin(phiRadians);
|
|
241063
|
-
return
|
|
241061
|
+
return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(rc * cosPhi, rs * cosPhi, this.radius * sinPhi, result);
|
|
241064
241062
|
}
|
|
241065
241063
|
/**
|
|
241066
241064
|
* * convert radians to xyz on unit sphere
|
|
@@ -241085,8 +241083,8 @@ class SphereImplicit {
|
|
|
241085
241083
|
const rs = this.radius * Math.sin(thetaRadians);
|
|
241086
241084
|
const cosPhi = Math.cos(phiRadians);
|
|
241087
241085
|
const sinPhi = Math.sin(phiRadians);
|
|
241088
|
-
|
|
241089
|
-
|
|
241086
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-rs * cosPhi, rc * cosPhi, 0.0, dxdTheta);
|
|
241087
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(-rc * sinPhi, -rs * sinPhi, this.radius * cosPhi, dxdPhi);
|
|
241090
241088
|
}
|
|
241091
241089
|
}
|
|
241092
241090
|
/** AnalyticRoots has static methods for solving quadratic, cubic, and quartic equations.
|
|
@@ -241215,7 +241213,7 @@ class AnalyticRoots {
|
|
|
241215
241213
|
* @param values array to expand
|
|
241216
241214
|
*/
|
|
241217
241215
|
static appendLinearRoot(c0, c1, values) {
|
|
241218
|
-
AnalyticRoots.appendSolution(
|
|
241216
|
+
AnalyticRoots.appendSolution(_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-c0, c1), values);
|
|
241219
241217
|
}
|
|
241220
241218
|
/**
|
|
241221
241219
|
* * Compute the mean of all the entries in `data`
|
|
@@ -241246,7 +241244,7 @@ class AnalyticRoots {
|
|
|
241246
241244
|
*/
|
|
241247
241245
|
static appendQuadraticRoots(c, values) {
|
|
241248
241246
|
// Normal form: x^2 + 2px + q = 0
|
|
241249
|
-
const divFactor =
|
|
241247
|
+
const divFactor = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(1.0, c[2]);
|
|
241250
241248
|
if (!divFactor) {
|
|
241251
241249
|
this.appendLinearRoot(c[0], c[1], values);
|
|
241252
241250
|
return;
|
|
@@ -241262,8 +241260,8 @@ class AnalyticRoots {
|
|
|
241262
241260
|
return;
|
|
241263
241261
|
}
|
|
241264
241262
|
else if (D > 0) {
|
|
241265
|
-
const
|
|
241266
|
-
this.append2Solutions(
|
|
241263
|
+
const sqrtD = Math.sqrt(D);
|
|
241264
|
+
this.append2Solutions(sqrtD - p, -sqrtD - p, values);
|
|
241267
241265
|
return;
|
|
241268
241266
|
}
|
|
241269
241267
|
return;
|
|
@@ -241329,7 +241327,7 @@ class AnalyticRoots {
|
|
|
241329
241327
|
*/
|
|
241330
241328
|
/*
|
|
241331
241329
|
private static _appendCubicRootsUnsorted(c: Float64Array | number[], results: GrowableFloat64Array) {
|
|
241332
|
-
let
|
|
241330
|
+
let AA: number;
|
|
241333
241331
|
let p: number;
|
|
241334
241332
|
let q: number;
|
|
241335
241333
|
|
|
@@ -241350,9 +241348,9 @@ class AnalyticRoots {
|
|
|
241350
241348
|
// f' = 3y^2 + p
|
|
241351
241349
|
// local min/max at Y = +-sqrt (-p)
|
|
241352
241350
|
// f(+Y) = -p sqrt(-p) + 3p sqrt (-p) + 2q = 2 p sqrt (-p) + 2q
|
|
241353
|
-
|
|
241354
|
-
p = (3.0 * B -
|
|
241355
|
-
q = 1.0 / 2 * (2.0 / 27 * A *
|
|
241351
|
+
AA = A * A;
|
|
241352
|
+
p = (3.0 * B - AA) / 9.0;
|
|
241353
|
+
q = 1.0 / 2 * (2.0 / 27 * A * AA - 1.0 / 3 * A * B + C);
|
|
241356
241354
|
|
|
241357
241355
|
// Use Cardano formula
|
|
241358
241356
|
const cb_p: number = p * p * p;
|
|
@@ -241390,9 +241388,9 @@ class AnalyticRoots {
|
|
|
241390
241388
|
|
|
241391
241389
|
return;
|
|
241392
241390
|
} else { // One real solution
|
|
241393
|
-
const
|
|
241394
|
-
const u = this.cbrt(
|
|
241395
|
-
const v = -(this.cbrt(
|
|
241391
|
+
const sqrtD = Math.sqrt(D);
|
|
241392
|
+
const u = this.cbrt(sqrtD - q);
|
|
241393
|
+
const v = -(this.cbrt(sqrtD + q));
|
|
241396
241394
|
results.push(origin + u + v);
|
|
241397
241395
|
this.improveRoots(c, 3, results, false);
|
|
241398
241396
|
return;
|
|
@@ -241401,7 +241399,7 @@ class AnalyticRoots {
|
|
|
241401
241399
|
*/
|
|
241402
241400
|
/** Compute roots of cubic 'c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 */
|
|
241403
241401
|
static appendCubicRoots(c, results) {
|
|
241404
|
-
if (
|
|
241402
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideCoordinate(1.0, c[3]) !== undefined) {
|
|
241405
241403
|
this.appendFullCubicSolutions(c[3], c[2], c[1], c[0], results);
|
|
241406
241404
|
// EDL April 5, 2020 replace classic GraphicsGems solver by RWDNickalls.
|
|
241407
241405
|
// Don't know if improveRoots is needed.
|
|
@@ -241433,11 +241431,11 @@ class AnalyticRoots {
|
|
|
241433
241431
|
const D = c[0] * coffScale[0];
|
|
241434
241432
|
const origin = -0.25 * A;
|
|
241435
241433
|
// substitute x = y - A/4 to eliminate cubic term: y^4 + py^2 + qy + r = 0
|
|
241436
|
-
const
|
|
241437
|
-
const p = -0.375 *
|
|
241438
|
-
const q = 0.125 *
|
|
241439
|
-
const r = -0.01171875 *
|
|
241440
|
-
const cubicSolutions = new
|
|
241434
|
+
const AA = A * A;
|
|
241435
|
+
const p = -0.375 * AA + B;
|
|
241436
|
+
const q = 0.125 * AA * A - 0.5 * A * B + C;
|
|
241437
|
+
const r = -0.01171875 * AA * AA + 0.0625 * AA * B - 0.25 * A * C + D;
|
|
241438
|
+
const cubicSolutions = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array();
|
|
241441
241439
|
if (this.isZero(r)) { // no absolute term: y(y^3 + py + q) = 0
|
|
241442
241440
|
coffs[0] = q;
|
|
241443
241441
|
coffs[1] = p;
|
|
@@ -241615,17 +241613,16 @@ class PowerPolynomial {
|
|
|
241615
241613
|
*/
|
|
241616
241614
|
class TrigPolynomial {
|
|
241617
241615
|
/**
|
|
241618
|
-
*
|
|
241619
|
-
*
|
|
241620
|
-
*
|
|
241621
|
-
* *
|
|
241622
|
-
* (
|
|
241623
|
-
*
|
|
241624
|
-
* @param
|
|
241625
|
-
*
|
|
241626
|
-
*
|
|
241627
|
-
*
|
|
241628
|
-
* stages of computation. A small fraction of this will be used as a zero tolerance
|
|
241616
|
+
* Find the roots of a univariate polynomial created from substituting the rational parameterization of the unit
|
|
241617
|
+
* circle into a trigonometric polynomial. Roots are returned as radian angles.
|
|
241618
|
+
* * Currently implemented for polynomials of degree <= 4.
|
|
241619
|
+
* * For example, the ellipse-ellipse intersection problem reduces to finding the roots of a quartic polynomial:
|
|
241620
|
+
* `p(t) = coff[0] + coff[1] t + coff[2] t^2 + coff[3] t^3 + coff[4] t^4`.
|
|
241621
|
+
* * Particular care is given to report a root at t = +/-infinity, which corresponds to the returned angle -pi/2.
|
|
241622
|
+
* @param coff coefficients in the power basis
|
|
241623
|
+
* @param nominalDegree degree of the polynomial under the most complex root case.
|
|
241624
|
+
* @param referenceCoefficient a number which represents the size of coefficients at various stages of computation.
|
|
241625
|
+
* A small fraction of this number will be used as a zero tolerance.
|
|
241629
241626
|
* @param radians roots are placed here.
|
|
241630
241627
|
* @return false if equation is all zeros. This usually means any angle is a solution.
|
|
241631
241628
|
*/
|
|
@@ -241643,7 +241640,7 @@ class TrigPolynomial {
|
|
|
241643
241640
|
let degree = nominalDegree;
|
|
241644
241641
|
while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
|
|
241645
241642
|
degree--;
|
|
241646
|
-
const roots = new
|
|
241643
|
+
const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array();
|
|
241647
241644
|
if (degree === -1) {
|
|
241648
241645
|
// do nothing
|
|
241649
241646
|
}
|
|
@@ -241665,41 +241662,42 @@ class TrigPolynomial {
|
|
|
241665
241662
|
}
|
|
241666
241663
|
else {
|
|
241667
241664
|
// TODO: WORK WITH BEZIER SOLVER
|
|
241665
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Unimplemented degree in trig solver");
|
|
241668
241666
|
}
|
|
241669
241667
|
if (roots.length > 0) {
|
|
241670
|
-
//
|
|
241671
|
-
//
|
|
241668
|
+
// each solution t represents an angle with Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
|
|
241669
|
+
// division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
|
|
241672
241670
|
for (let i = 0; i < roots.length; i++) {
|
|
241673
241671
|
const ss = PowerPolynomial.evaluate(this.S, roots.atUncheckedIndex(i));
|
|
241674
241672
|
const cc = PowerPolynomial.evaluate(this.C, roots.atUncheckedIndex(i));
|
|
241675
241673
|
radians.push(Math.atan2(ss, cc));
|
|
241676
241674
|
}
|
|
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
241675
|
}
|
|
241676
|
+
// If the tail of the coff array is zero, we solved a polynomial of lesser degree above, and
|
|
241677
|
+
// we report the skipped "root at infinity" as the corresponding angle -pi/2 (without multiplicity).
|
|
241678
|
+
// See core\geometry\internaldocs\unitCircleEllipseIntersection.md for details.
|
|
241679
|
+
if (degree < nominalDegree)
|
|
241680
|
+
radians.push(-0.5 * Math.PI);
|
|
241682
241681
|
}
|
|
241683
241682
|
return radians.length > 0;
|
|
241684
241683
|
}
|
|
241685
241684
|
/**
|
|
241686
|
-
* Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
|
|
241687
|
-
* `axx
|
|
241688
|
-
* Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
|
|
241685
|
+
* Compute intersections of the unit circle `x^2 + y^2 = 1` with the general quadric (conic)
|
|
241686
|
+
* `axx x^2 + axy xy + ayy y^2 + ax x + ay y + a = 0`.
|
|
241689
241687
|
* @param axx coefficient of x^2
|
|
241690
241688
|
* @param axy coefficient of xy
|
|
241691
241689
|
* @param ayy coefficient of y^2
|
|
241692
241690
|
* @param ax coefficient of x
|
|
241693
241691
|
* @param ay coefficient of y
|
|
241694
241692
|
* @param a constant coefficient
|
|
241695
|
-
* @param radians solution angles
|
|
241693
|
+
* @param radians up to 4 solution angles t in the quadric parameterization: x = cos(t), y = sin(t)
|
|
241696
241694
|
*/
|
|
241697
241695
|
static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a, radians) {
|
|
241698
241696
|
const coffs = new Float64Array(5);
|
|
241699
241697
|
PowerPolynomial.zero(coffs);
|
|
241700
241698
|
let degree;
|
|
241701
241699
|
// see core\geometry\internaldocs\unitCircleEllipseIntersection.md for derivation of these coefficients
|
|
241702
|
-
if (
|
|
241700
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXYZ(ax, ay, a)) {
|
|
241703
241701
|
PowerPolynomial.accumulate(coffs, this.CW, ax);
|
|
241704
241702
|
PowerPolynomial.accumulate(coffs, this.SW, ay);
|
|
241705
241703
|
PowerPolynomial.accumulate(coffs, this.WW, a);
|
|
@@ -241747,9 +241745,9 @@ class TrigPolynomial {
|
|
|
241747
241745
|
const acs = 2.0 * (ux * vx + uy * vy);
|
|
241748
241746
|
const ass = vx * vx + vy * vy;
|
|
241749
241747
|
const ac = 2.0 * (ux * cx + uy * cy);
|
|
241750
|
-
const
|
|
241748
|
+
const as = 2.0 * (vx * cx + vy * cy);
|
|
241751
241749
|
const a = cx * cx + cy * cy - 1.0;
|
|
241752
|
-
const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac,
|
|
241750
|
+
const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, as, a, ellipseRadians);
|
|
241753
241751
|
for (const radians of ellipseRadians) {
|
|
241754
241752
|
const cc = Math.cos(radians);
|
|
241755
241753
|
const ss = Math.sin(radians);
|
|
@@ -241816,328 +241814,8 @@ TrigPolynomial.CC = Float64Array.from([1.0, -4.0, 4.0]);
|
|
|
241816
241814
|
/** Standard Basis coefficients for W(t) * W(t). */
|
|
241817
241815
|
TrigPolynomial.WW = Float64Array.from([1.0, -4.0, 8.0, -8.0, 4.0]);
|
|
241818
241816
|
/** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
|
|
241819
|
-
TrigPolynomial.
|
|
241817
|
+
TrigPolynomial.CCMinusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]); // eslint-disable-line @typescript-eslint/naming-convention
|
|
241820
241818
|
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
241819
|
/**
|
|
242142
241820
|
* * bilinear expression
|
|
242143
241821
|
* * `f(u,v) = a + b * u * c * v + d * u * v`
|
|
@@ -242168,6 +241846,30 @@ class BilinearPolynomial {
|
|
|
242168
241846
|
static createUnitSquareValues(f00, f10, f01, f11) {
|
|
242169
241847
|
return new BilinearPolynomial(f00, f10, f10, f11 - f10 - f01);
|
|
242170
241848
|
}
|
|
241849
|
+
/**
|
|
241850
|
+
* Solve a pair of bilinear equations
|
|
241851
|
+
* * First equation: `a0 + b0 * u + c0 * v + d0 * u * v = 0`
|
|
241852
|
+
* * Second equation: `a1 + b1 * u + c1 * v + d1 * u * v = 0`
|
|
241853
|
+
*/
|
|
241854
|
+
static solveBilinearPair(a0, b0, c0, d0, a1, b1, c1, d1) {
|
|
241855
|
+
// constant linear, and quadratic coefficients for c0 + c1 * u + c2 * u*u = 0
|
|
241856
|
+
const e0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(a0, a1, c0, c1);
|
|
241857
|
+
const e1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(b0, b1, c0, c1) + _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(a0, a1, d0, d1);
|
|
241858
|
+
const e2 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(b0, b1, d0, d1);
|
|
241859
|
+
const uRoots = Degree2PowerPolynomial.solveQuadratic(e2, e1, e0);
|
|
241860
|
+
if (uRoots === undefined)
|
|
241861
|
+
return undefined;
|
|
241862
|
+
const uv = [];
|
|
241863
|
+
for (const u of uRoots) {
|
|
241864
|
+
const v0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-(a0 + b0 * u), c0 + d0 * u);
|
|
241865
|
+
const v1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(-(a1 + b1 * u), c1 + d1 * u);
|
|
241866
|
+
if (v0 !== undefined)
|
|
241867
|
+
uv.push(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create(u, v0));
|
|
241868
|
+
else if (v1 !== undefined)
|
|
241869
|
+
uv.push(_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create(u, v1));
|
|
241870
|
+
}
|
|
241871
|
+
return uv;
|
|
241872
|
+
}
|
|
242171
241873
|
/**
|
|
242172
241874
|
* Solve the simultaneous equations
|
|
242173
241875
|
* * `p(u,v) = pValue`
|
|
@@ -242178,7 +241880,7 @@ class BilinearPolynomial {
|
|
|
242178
241880
|
* @param qValue
|
|
242179
241881
|
*/
|
|
242180
241882
|
static solvePair(p, pValue, q, qValue) {
|
|
242181
|
-
return
|
|
241883
|
+
return BilinearPolynomial.solveBilinearPair(p.a - pValue, p.b, p.c, p.d, q.a - qValue, q.b, q.c, q.d);
|
|
242182
241884
|
}
|
|
242183
241885
|
}
|
|
242184
241886
|
/**
|
|
@@ -242209,21 +241911,21 @@ class SineCosinePolynomial {
|
|
|
242209
241911
|
}
|
|
242210
241912
|
/** Return the range of function values over the entire angle range. */
|
|
242211
241913
|
range(result) {
|
|
242212
|
-
const q =
|
|
242213
|
-
return
|
|
241914
|
+
const q = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXY(this.cosineCoff, this.sineCoff);
|
|
241915
|
+
return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createXX(this.a - q, this.a + q, result);
|
|
242214
241916
|
}
|
|
242215
241917
|
/** Return the min and max values of the function over theta range from radians0 to radians1 inclusive. */
|
|
242216
241918
|
rangeInStartEndRadians(radians0, radians1, result) {
|
|
242217
|
-
if (
|
|
241919
|
+
if (_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_8__.Angle.isFullCircleRadians(radians1 - radians0))
|
|
242218
241920
|
return this.range(result);
|
|
242219
|
-
result =
|
|
241921
|
+
result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createXX(this.evaluateRadians(radians0), this.evaluateRadians(radians1), result);
|
|
242220
241922
|
// angles of min and max ...
|
|
242221
241923
|
// angles for min and max of the sine wave . ..
|
|
242222
241924
|
const alphaA = Math.atan2(this.sineCoff, this.cosineCoff);
|
|
242223
241925
|
const alphaB = alphaA + Math.PI;
|
|
242224
|
-
if (
|
|
241926
|
+
if (_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.isRadiansInStartEnd(alphaA, radians0, radians1))
|
|
242225
241927
|
result.extendX(this.evaluateRadians(alphaA));
|
|
242226
|
-
if (
|
|
241928
|
+
if (_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.isRadiansInStartEnd(alphaB, radians0, radians1))
|
|
242227
241929
|
result.extendX(this.evaluateRadians(alphaB));
|
|
242228
241930
|
return result;
|
|
242229
241931
|
}
|
|
@@ -242259,14 +241961,14 @@ class ImplicitLineXY {
|
|
|
242259
241961
|
*/
|
|
242260
241962
|
convertToSegmentPoints(b) {
|
|
242261
241963
|
const q = Math.sqrt(this.ax * this.ax + this.ay * this.ay);
|
|
242262
|
-
const alpha =
|
|
241964
|
+
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideCoordinate(1.0, q, 1.0e10);
|
|
242263
241965
|
if (alpha === undefined)
|
|
242264
241966
|
return undefined;
|
|
242265
241967
|
const ux = alpha * this.ax;
|
|
242266
241968
|
const uy = alpha * this.ay;
|
|
242267
241969
|
const px = -alpha * ux;
|
|
242268
241970
|
const py = -alpha * uy;
|
|
242269
|
-
return [
|
|
241971
|
+
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
241972
|
}
|
|
242271
241973
|
/**
|
|
242272
241974
|
* Evaluate the half-space function at an xy point
|
|
@@ -242878,6 +242580,341 @@ function compareRange1dLexicalLowHigh(a, b) {
|
|
|
242878
242580
|
}
|
|
242879
242581
|
|
|
242880
242582
|
|
|
242583
|
+
/***/ }),
|
|
242584
|
+
|
|
242585
|
+
/***/ "../../core/geometry/lib/esm/numerics/SmallSystem.js":
|
|
242586
|
+
/*!***********************************************************!*\
|
|
242587
|
+
!*** ../../core/geometry/lib/esm/numerics/SmallSystem.js ***!
|
|
242588
|
+
\***********************************************************/
|
|
242589
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
242590
|
+
|
|
242591
|
+
"use strict";
|
|
242592
|
+
__webpack_require__.r(__webpack_exports__);
|
|
242593
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
242594
|
+
/* harmony export */ "SmallSystem": () => (/* binding */ SmallSystem)
|
|
242595
|
+
/* harmony export */ });
|
|
242596
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
242597
|
+
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
242598
|
+
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
242599
|
+
/* harmony import */ var _Polynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
|
|
242600
|
+
/*---------------------------------------------------------------------------------------------
|
|
242601
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
242602
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
242603
|
+
*--------------------------------------------------------------------------------------------*/
|
|
242604
|
+
/** @packageDocumentation
|
|
242605
|
+
* @module Numerics
|
|
242606
|
+
*/
|
|
242607
|
+
|
|
242608
|
+
|
|
242609
|
+
|
|
242610
|
+
|
|
242611
|
+
// cspell:word XYUV
|
|
242612
|
+
/**
|
|
242613
|
+
* static methods for commonly appearing sets of equations in 2 or 3 variables
|
|
242614
|
+
* @public
|
|
242615
|
+
*/
|
|
242616
|
+
class SmallSystem {
|
|
242617
|
+
/**
|
|
242618
|
+
* Return true if lines (a0,a1) to (b0, b1) have a simple intersection.
|
|
242619
|
+
* Return the fractional (not xy) coordinates in result.x, result.y
|
|
242620
|
+
* @param a0 start point of line a
|
|
242621
|
+
* @param a1 end point of line a
|
|
242622
|
+
* @param b0 start point of line b
|
|
242623
|
+
* @param b1 end point of line b
|
|
242624
|
+
* @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
|
|
242625
|
+
*/
|
|
242626
|
+
static lineSegment2dXYTransverseIntersectionUnbounded(a0, a1, b0, b1, result) {
|
|
242627
|
+
const ux = a1.x - a0.x;
|
|
242628
|
+
const uy = a1.y - a0.y;
|
|
242629
|
+
const vx = b1.x - b0.x;
|
|
242630
|
+
const vy = b1.y - b0.y;
|
|
242631
|
+
const cx = b0.x - a0.x;
|
|
242632
|
+
const cy = b0.y - a0.y;
|
|
242633
|
+
const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
|
|
242634
|
+
const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
|
|
242635
|
+
const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
|
|
242636
|
+
const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
|
|
242637
|
+
const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
|
|
242638
|
+
if (s !== undefined && t !== undefined) {
|
|
242639
|
+
result.set(s, -t);
|
|
242640
|
+
return true;
|
|
242641
|
+
}
|
|
242642
|
+
result.set(0, 0);
|
|
242643
|
+
return false;
|
|
242644
|
+
}
|
|
242645
|
+
/**
|
|
242646
|
+
* * (ax0,ay0) to (ax0+ux,ay0+uy) are line A.
|
|
242647
|
+
* * (bx0,by0) to (bx0+vx,by0+vy) are lineB.
|
|
242648
|
+
* * Return true if the lines have a simple intersection.
|
|
242649
|
+
* * Return the fractional (not xy) coordinates in result.x, result.y
|
|
242650
|
+
* @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
|
|
242651
|
+
*/
|
|
242652
|
+
static lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, result) {
|
|
242653
|
+
const cx = bx0 - ax0;
|
|
242654
|
+
const cy = by0 - ay0;
|
|
242655
|
+
const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
|
|
242656
|
+
const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
|
|
242657
|
+
const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
|
|
242658
|
+
const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
|
|
242659
|
+
const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
|
|
242660
|
+
if (s !== undefined && t !== undefined) {
|
|
242661
|
+
result.set(s, -t);
|
|
242662
|
+
return true;
|
|
242663
|
+
}
|
|
242664
|
+
result.set(0, 0);
|
|
242665
|
+
return false;
|
|
242666
|
+
}
|
|
242667
|
+
/**
|
|
242668
|
+
* Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts
|
|
242669
|
+
* Return the fractional (not xy) coordinates in result.x, result.y
|
|
242670
|
+
* @param a0 start point of line a
|
|
242671
|
+
* @param a1 end point of line a
|
|
242672
|
+
* @param b0 start point of line b
|
|
242673
|
+
* @param b1 end point of line b
|
|
242674
|
+
* @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
|
|
242675
|
+
*/
|
|
242676
|
+
static lineSegment3dXYTransverseIntersectionUnbounded(a0, a1, b0, b1, result) {
|
|
242677
|
+
const ux = a1.x - a0.x;
|
|
242678
|
+
const uy = a1.y - a0.y;
|
|
242679
|
+
const vx = b1.x - b0.x;
|
|
242680
|
+
const vy = b1.y - b0.y;
|
|
242681
|
+
const cx = b0.x - a0.x;
|
|
242682
|
+
const cy = b0.y - a0.y;
|
|
242683
|
+
const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
|
|
242684
|
+
const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
|
|
242685
|
+
const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
|
|
242686
|
+
const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
|
|
242687
|
+
const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
|
|
242688
|
+
if (s !== undefined && t !== undefined) {
|
|
242689
|
+
result.set(s, -t);
|
|
242690
|
+
return true;
|
|
242691
|
+
}
|
|
242692
|
+
result.set(0, 0);
|
|
242693
|
+
return false;
|
|
242694
|
+
}
|
|
242695
|
+
/**
|
|
242696
|
+
* Return true if lines (a0,a1) to (b0, b1) have a simple intersection using only xy parts of WEIGHTED 4D Points
|
|
242697
|
+
* Return the fractional (not xy) coordinates in result.x, result.y
|
|
242698
|
+
* @param hA0 homogeneous start point of line a
|
|
242699
|
+
* @param hA1 homogeneous end point of line a
|
|
242700
|
+
* @param hB0 homogeneous start point of line b
|
|
242701
|
+
* @param hB1 homogeneous end point of line b
|
|
242702
|
+
* @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
|
|
242703
|
+
*/
|
|
242704
|
+
static lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1, result) {
|
|
242705
|
+
// Considering only x,y,w parts....
|
|
242706
|
+
// Point Q along B is (in full homogeneous) `(1-lambda) B0 + lambda 1`
|
|
242707
|
+
// PointQ is colinear with A0,A1 when the determinant det (A0,A1,Q) is zero. (Each column takes xyw parts)
|
|
242708
|
+
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);
|
|
242709
|
+
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);
|
|
242710
|
+
const fractionB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-alpha0, alpha1 - alpha0);
|
|
242711
|
+
if (fractionB !== undefined) {
|
|
242712
|
+
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);
|
|
242713
|
+
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);
|
|
242714
|
+
const fractionA = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-beta0, beta1 - beta0);
|
|
242715
|
+
if (fractionA !== undefined)
|
|
242716
|
+
return _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.Vector2d.create(fractionA, fractionB, result);
|
|
242717
|
+
}
|
|
242718
|
+
return undefined;
|
|
242719
|
+
}
|
|
242720
|
+
/**
|
|
242721
|
+
* Return the line fraction at which the (homogeneous) line is closest to a space point as viewed in xy only.
|
|
242722
|
+
* @param hA0 homogeneous start point of line a
|
|
242723
|
+
* @param hA1 homogeneous end point of line a
|
|
242724
|
+
* @param spacePoint homogeneous point in space
|
|
242725
|
+
*/
|
|
242726
|
+
static lineSegment3dHXYClosestPointUnbounded(hA0, hA1, spacePoint) {
|
|
242727
|
+
// Considering only x,y,w parts....
|
|
242728
|
+
// weighted difference of (A1 w0 - A0 w1) is (cartesian) tangent vector along the line as viewed.
|
|
242729
|
+
// The perpendicular (pure vector) W = (-y,x) flip is the direction of projection
|
|
242730
|
+
// Point Q along A is (in full homogeneous) `(1-lambda) A0 + lambda 1 A1`
|
|
242731
|
+
// PointQ is colinear with spacePoint and and W when the xyw homogeneous determinant | Q W spacePoint | is zero.
|
|
242732
|
+
const tx = hA1.x * hA0.w - hA0.x * hA1.w;
|
|
242733
|
+
const ty = hA1.y * hA0.w - hA0.y * hA1.w;
|
|
242734
|
+
const det0 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA0.x, -ty, spacePoint.x, hA0.y, tx, spacePoint.y, hA0.w, 0, spacePoint.w);
|
|
242735
|
+
const det1 = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(hA1.x, -ty, spacePoint.x, hA1.y, tx, spacePoint.y, hA1.w, 0, spacePoint.w);
|
|
242736
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(-det0, det1 - det0);
|
|
242737
|
+
}
|
|
242738
|
+
/**
|
|
242739
|
+
* Return the line fraction at which the line is closest to a space point as viewed in xy only.
|
|
242740
|
+
* @param pointA0 start point
|
|
242741
|
+
* @param pointA1 end point
|
|
242742
|
+
* @param spacePoint point in space
|
|
242743
|
+
*/
|
|
242744
|
+
static lineSegment3dXYClosestPointUnbounded(pointA0, pointA1, spacePoint) {
|
|
242745
|
+
// Considering only x,y parts....
|
|
242746
|
+
const ux = pointA1.x - pointA0.x;
|
|
242747
|
+
const uy = pointA1.y - pointA0.y;
|
|
242748
|
+
const uu = ux * ux + uy * uy;
|
|
242749
|
+
const vx = spacePoint.x - pointA0.x;
|
|
242750
|
+
const vy = spacePoint.y - pointA0.y;
|
|
242751
|
+
const uv = ux * vx + uy * vy;
|
|
242752
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(uv, uu);
|
|
242753
|
+
}
|
|
242754
|
+
/**
|
|
242755
|
+
* Return the line fraction at which the line is closest to a space point
|
|
242756
|
+
* @param pointA0 start point
|
|
242757
|
+
* @param pointA1 end point
|
|
242758
|
+
* @param spacePoint point in space
|
|
242759
|
+
*/
|
|
242760
|
+
static lineSegment3dClosestPointUnbounded(pointA0, pointA1, spacePoint) {
|
|
242761
|
+
const ux = pointA1.x - pointA0.x;
|
|
242762
|
+
const uy = pointA1.y - pointA0.y;
|
|
242763
|
+
const uz = pointA1.z - pointA0.z;
|
|
242764
|
+
const uu = ux * ux + uy * uy + uz * uz;
|
|
242765
|
+
const vx = spacePoint.x - pointA0.x;
|
|
242766
|
+
const vy = spacePoint.y - pointA0.y;
|
|
242767
|
+
const vz = spacePoint.z - pointA0.z;
|
|
242768
|
+
const uv = ux * vx + uy * vy + uz * vz;
|
|
242769
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(uv, uu);
|
|
242770
|
+
}
|
|
242771
|
+
/**
|
|
242772
|
+
* Return true if lines (a0,a1) to (b0, b1) have closest approach (go by each other) in 3d
|
|
242773
|
+
* Return the fractional (not xy) coordinates in result.x, result.y
|
|
242774
|
+
* @param a0 start point of line a
|
|
242775
|
+
* @param a1 end point of line a
|
|
242776
|
+
* @param b0 start point of line b
|
|
242777
|
+
* @param b1 end point of line b
|
|
242778
|
+
* @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
|
|
242779
|
+
*/
|
|
242780
|
+
static lineSegment3dClosestApproachUnbounded(a0, a1, b0, b1, result) {
|
|
242781
|
+
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);
|
|
242782
|
+
}
|
|
242783
|
+
/**
|
|
242784
|
+
* Return true if the given rays have closest approach (go by each other) in 3d
|
|
242785
|
+
* Return the fractional (not xy) coordinates as x and y parts of a Point2d.
|
|
242786
|
+
* @param ax x-coordinate of the origin of the first ray
|
|
242787
|
+
* @param ay y-coordinate of the origin of the first ray
|
|
242788
|
+
* @param az z-coordinate of the origin of the first ray
|
|
242789
|
+
* @param au x-coordinate of the direction vector of the first ray
|
|
242790
|
+
* @param av y-coordinate of the direction vector of the first ray
|
|
242791
|
+
* @param aw z-coordinate of the direction vector of the first ray
|
|
242792
|
+
* @param bx x-coordinate of the origin of the second ray
|
|
242793
|
+
* @param by y-coordinate of the origin of the second ray
|
|
242794
|
+
* @param bz z-coordinate of the origin of the second ray
|
|
242795
|
+
* @param bu x-coordinate of the direction vector of the second ray
|
|
242796
|
+
* @param bv y-coordinate of the direction vector of the second ray
|
|
242797
|
+
* @param bw z-coordinate of the direction vector of the second ray
|
|
242798
|
+
* @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y is fraction on line b.
|
|
242799
|
+
*/
|
|
242800
|
+
static ray3dXYZUVWClosestApproachUnbounded(ax, ay, az, au, av, aw, bx, by, bz, bu, bv, bw, result) {
|
|
242801
|
+
const cx = bx - ax;
|
|
242802
|
+
const cy = by - ay;
|
|
242803
|
+
const cz = bz - az;
|
|
242804
|
+
const uu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(au, av, aw);
|
|
242805
|
+
const vv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseSquaredXYZ(bu, bv, bw);
|
|
242806
|
+
const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(au, av, aw, bu, bv, bw);
|
|
242807
|
+
const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(cx, cy, cz, au, av, aw);
|
|
242808
|
+
const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.dotProductXYZXYZ(cx, cy, cz, bu, bv, bw);
|
|
242809
|
+
return SmallSystem.linearSystem2d(uu, -uv, uv, -vv, cu, cv, result);
|
|
242810
|
+
}
|
|
242811
|
+
/**
|
|
242812
|
+
* Solve the pair of linear equations
|
|
242813
|
+
* * `ux * x + vx * y = cx`
|
|
242814
|
+
* * `uy * x + vy * y = cy`
|
|
242815
|
+
* @param ux xx coefficient
|
|
242816
|
+
* @param vx xy coefficient
|
|
242817
|
+
* @param uy yx coefficient
|
|
242818
|
+
* @param vy yy coefficient
|
|
242819
|
+
* @param cx x right hand side
|
|
242820
|
+
* @param cy y right hand side
|
|
242821
|
+
* @param result (x,y) solution (MUST be preallocated by caller)
|
|
242822
|
+
*/
|
|
242823
|
+
static linearSystem2d(ux, vx, // first row of matrix
|
|
242824
|
+
uy, vy, // second row of matrix
|
|
242825
|
+
cx, cy, // right side
|
|
242826
|
+
result) {
|
|
242827
|
+
const uv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, vx, vy);
|
|
242828
|
+
const cv = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(cx, cy, vx, vy);
|
|
242829
|
+
const cu = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(ux, uy, cx, cy);
|
|
242830
|
+
const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cv, uv);
|
|
242831
|
+
const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(cu, uv);
|
|
242832
|
+
if (s !== undefined && t !== undefined) {
|
|
242833
|
+
result.set(s, t);
|
|
242834
|
+
return true;
|
|
242835
|
+
}
|
|
242836
|
+
result.set(0, 0);
|
|
242837
|
+
return false;
|
|
242838
|
+
}
|
|
242839
|
+
/**
|
|
242840
|
+
* Solve a linear system:
|
|
242841
|
+
* * x equation: `axx * u + axy * v + axz * w = cx`
|
|
242842
|
+
* * y equation: `ayx * u + ayy * v + ayz * w = cy`
|
|
242843
|
+
* * z equation: `azx * u + azy * v + azz * w = cz`
|
|
242844
|
+
* @param axx row 0, column 0 coefficient
|
|
242845
|
+
* @param axy row 0, column 1 coefficient
|
|
242846
|
+
* @param axz row 0, column 1 coefficient
|
|
242847
|
+
* @param ayx row 1, column 0 coefficient
|
|
242848
|
+
* @param ayy row 1, column 1 coefficient
|
|
242849
|
+
* @param ayz row 1, column 2 coefficient
|
|
242850
|
+
* @param azx row 2, column 0 coefficient
|
|
242851
|
+
* @param azy row 2, column 1 coefficient
|
|
242852
|
+
* @param azz row 2, column 2 coefficient
|
|
242853
|
+
* @param cx right hand side row 0 coefficient
|
|
242854
|
+
* @param cy right hand side row 1 coefficient
|
|
242855
|
+
* @param cz right hand side row 2 coefficient
|
|
242856
|
+
* @param result optional result.
|
|
242857
|
+
* @returns solution vector (u,v,w) or `undefined` if system is singular.
|
|
242858
|
+
*/
|
|
242859
|
+
static linearSystem3d(axx, axy, axz, // first row of matrix
|
|
242860
|
+
ayx, ayy, ayz, // second row of matrix
|
|
242861
|
+
azx, azy, azz, // second row of matrix
|
|
242862
|
+
cx, cy, cz, // right side
|
|
242863
|
+
result) {
|
|
242864
|
+
// determinants of various combinations of columns ...
|
|
242865
|
+
const detXYZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, axy, ayy, azy, axz, ayz, azz);
|
|
242866
|
+
const detCYZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(cx, cy, cz, axy, ayy, azy, axz, ayz, azz);
|
|
242867
|
+
const detXCZ = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, cx, cy, cz, axz, ayz, azz);
|
|
242868
|
+
const detXYC = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(axx, ayx, azx, axy, ayy, azy, cx, cy, cz);
|
|
242869
|
+
const s = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detCYZ, detXYZ);
|
|
242870
|
+
const t = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detXCZ, detXYZ);
|
|
242871
|
+
const u = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(detXYC, detXYZ);
|
|
242872
|
+
if (s !== undefined && t !== undefined && u !== undefined) {
|
|
242873
|
+
return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(s, t, u, result);
|
|
242874
|
+
}
|
|
242875
|
+
return undefined;
|
|
242876
|
+
}
|
|
242877
|
+
/**
|
|
242878
|
+
* Compute the intersection of three planes.
|
|
242879
|
+
* @param xyzA point on the first plane
|
|
242880
|
+
* @param normalA normal of the first plane
|
|
242881
|
+
* @param xyzB point on the second plane
|
|
242882
|
+
* @param normalB normal of the second plane
|
|
242883
|
+
* @param xyzC point on the third plane
|
|
242884
|
+
* @param normalC normal of the third plane
|
|
242885
|
+
* @param result optional result
|
|
242886
|
+
* @returns intersection point of the three planes (as a Vector3d), or undefined if at least two planes are parallel.
|
|
242887
|
+
*/
|
|
242888
|
+
static intersect3Planes(xyzA, normalA, xyzB, normalB, xyzC, normalC, result) {
|
|
242889
|
+
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);
|
|
242890
|
+
}
|
|
242891
|
+
/**
|
|
242892
|
+
* * in rowB, replace `rowB[j] += a * rowB[pivot] * rowA[j] / rowA[pivot]` for `j>pivot`
|
|
242893
|
+
* @param rowA row that does not change
|
|
242894
|
+
* @param pivotIndex index of pivot (divisor) in rowA.
|
|
242895
|
+
* @param rowB row where elimination occurs.
|
|
242896
|
+
*/
|
|
242897
|
+
static eliminateFromPivot(rowA, pivotIndex, rowB, a) {
|
|
242898
|
+
const n = rowA.length;
|
|
242899
|
+
let q = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(rowB[pivotIndex], rowA[pivotIndex]);
|
|
242900
|
+
if (q === undefined)
|
|
242901
|
+
return false;
|
|
242902
|
+
q *= a;
|
|
242903
|
+
for (let j = pivotIndex + 1; j < n; j++)
|
|
242904
|
+
rowB[j] += q * rowA[j];
|
|
242905
|
+
return true;
|
|
242906
|
+
}
|
|
242907
|
+
/**
|
|
242908
|
+
* Solve a pair of bilinear equations
|
|
242909
|
+
* * First equation: `a0 + b0 * u + c0 * v + d0 * u * v = 0`
|
|
242910
|
+
* * Second equation: `a1 + b1 * u + c1 * v + d1 * u * v = 0`
|
|
242911
|
+
*/
|
|
242912
|
+
static solveBilinearPair(a0, b0, c0, d0, a1, b1, c1, d1) {
|
|
242913
|
+
return _Polynomials__WEBPACK_IMPORTED_MODULE_3__.BilinearPolynomial.solveBilinearPair(a0, b0, c0, d0, a1, b1, c1, d1);
|
|
242914
|
+
}
|
|
242915
|
+
}
|
|
242916
|
+
|
|
242917
|
+
|
|
242881
242918
|
/***/ }),
|
|
242882
242919
|
|
|
242883
242920
|
/***/ "../../core/geometry/lib/esm/numerics/TriDiagonalSystem.js":
|
|
@@ -253427,16 +253464,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
253427
253464
|
/* harmony export */ "OffsetMeshContext": () => (/* binding */ OffsetMeshContext),
|
|
253428
253465
|
/* harmony export */ "SectorOffsetProperties": () => (/* binding */ SectorOffsetProperties)
|
|
253429
253466
|
/* harmony export */ });
|
|
253430
|
-
/* harmony import */ var
|
|
253467
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
253468
|
+
/* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
|
|
253431
253469
|
/* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
|
|
253432
253470
|
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
253433
253471
|
/* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
|
|
253472
|
+
/* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
|
|
253434
253473
|
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
253474
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
253435
253475
|
/* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
|
|
253436
253476
|
/* 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
253477
|
/*---------------------------------------------------------------------------------------------
|
|
253441
253478
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
253442
253479
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -254177,7 +254214,7 @@ class OffsetMeshContext {
|
|
|
254177
254214
|
const sectorA = nodeA.edgeTag;
|
|
254178
254215
|
const sectorB = nodeB.edgeTag;
|
|
254179
254216
|
const sectorC = nodeC.edgeTag;
|
|
254180
|
-
const vector =
|
|
254217
|
+
const vector = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
|
|
254181
254218
|
return vector;
|
|
254182
254219
|
}
|
|
254183
254220
|
/** Compute the point of intersection of the planes in the sectors of 3 half edges */
|
|
@@ -254190,7 +254227,7 @@ class OffsetMeshContext {
|
|
|
254190
254227
|
for (const sector of [sectorA, sectorB, sectorC])
|
|
254191
254228
|
emitSector(sector);
|
|
254192
254229
|
}
|
|
254193
|
-
const vector =
|
|
254230
|
+
const vector = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorC.xyz, sectorC.normal, result);
|
|
254194
254231
|
if (OffsetMeshContext.stringDebugFunction !== undefined) {
|
|
254195
254232
|
if (vector === undefined)
|
|
254196
254233
|
OffsetMeshContext.stringDebugFunction(" NO INTERSECTION");
|
|
@@ -254204,7 +254241,7 @@ class OffsetMeshContext {
|
|
|
254204
254241
|
const sectorA = nodeA.edgeTag;
|
|
254205
254242
|
const sectorB = nodeB.edgeTag;
|
|
254206
254243
|
const normalC = sectorA.normal.crossProduct(sectorB.normal);
|
|
254207
|
-
return
|
|
254244
|
+
return _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.intersect3Planes(sectorA.xyz, sectorA.normal, sectorB.xyz, sectorB.normal, sectorB.xyz, normalC, result);
|
|
254208
254245
|
}
|
|
254209
254246
|
/**
|
|
254210
254247
|
* * at input, graph has all original faces and edges
|
|
@@ -269142,7 +269179,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
269142
269179
|
/* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
|
|
269143
269180
|
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
269144
269181
|
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
269145
|
-
/* harmony import */ var
|
|
269182
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
269146
269183
|
/* harmony import */ var _MaskManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./MaskManager */ "../../core/geometry/lib/esm/topology/MaskManager.js");
|
|
269147
269184
|
/*---------------------------------------------------------------------------------------------
|
|
269148
269185
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
@@ -270235,7 +270272,7 @@ class HalfEdge {
|
|
|
270235
270272
|
// (nodeA1.x - nodeA0.x)ta + (nodeB0.x - nodeB1.x)tb = nodeB0.x - nodeA0.x
|
|
270236
270273
|
// (nodeA1.y - nodeA0.y)ta + (nodeB0.y - nodeB1.y)tb = nodeB0.y - nodeA0.y
|
|
270237
270274
|
// Proof can be found at geometry/internaldocs/Graph.md
|
|
270238
|
-
if (
|
|
270275
|
+
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
270276
|
return result;
|
|
270240
270277
|
return undefined;
|
|
270241
270278
|
}
|
|
@@ -272350,7 +272387,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
272350
272387
|
/* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
272351
272388
|
/* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
|
|
272352
272389
|
/* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
|
|
272353
|
-
/* harmony import */ var
|
|
272390
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
272354
272391
|
/* harmony import */ var _Graph__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
|
|
272355
272392
|
/* harmony import */ var _HalfEdgeMarkSet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HalfEdgeMarkSet */ "../../core/geometry/lib/esm/topology/HalfEdgeMarkSet.js");
|
|
272356
272393
|
/* harmony import */ var _HalfEdgePointInGraphSearch__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./HalfEdgePointInGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgePointInGraphSearch.js");
|
|
@@ -272454,7 +272491,7 @@ class InsertAndRetriangulateContext {
|
|
|
272454
272491
|
let distanceC;
|
|
272455
272492
|
for (const nodeA of this._graph.allHalfEdges) {
|
|
272456
272493
|
const nodeB = nodeA.faceSuccessor;
|
|
272457
|
-
fractionC =
|
|
272494
|
+
fractionC = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYClosestPointUnbounded(nodeA, nodeB, xyz);
|
|
272458
272495
|
if (fractionC !== undefined) {
|
|
272459
272496
|
if (fractionC > 1.0) {
|
|
272460
272497
|
distanceC = xyz.distanceXY(nodeB);
|
|
@@ -272820,7 +272857,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
272820
272857
|
/* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
|
|
272821
272858
|
/* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
|
|
272822
272859
|
/* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
|
|
272823
|
-
/* harmony import */ var
|
|
272860
|
+
/* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
|
|
272824
272861
|
/* harmony import */ var _Graph__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
|
|
272825
272862
|
/* harmony import */ var _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HalfEdgePriorityQueue */ "../../core/geometry/lib/esm/topology/HalfEdgePriorityQueue.js");
|
|
272826
272863
|
/* harmony import */ var _RegularizeFace__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./RegularizeFace */ "../../core/geometry/lib/esm/topology/RegularizeFace.js");
|
|
@@ -273298,7 +273335,7 @@ class HalfEdgeGraphMerge {
|
|
|
273298
273335
|
const vx = nodeB1.x - bx0;
|
|
273299
273336
|
const vy = nodeB1.y - by0;
|
|
273300
273337
|
// cspell:word lineSegmentXYUVTransverseIntersectionUnbounded
|
|
273301
|
-
if (
|
|
273338
|
+
if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_8__.SmallSystem.lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, fractions)) {
|
|
273302
273339
|
pointA.x = ax0 + fractions.x * ux;
|
|
273303
273340
|
pointA.y = ay0 + fractions.x * uy;
|
|
273304
273341
|
pointB.x = bx0 + fractions.y * vx;
|
|
@@ -296380,7 +296417,7 @@ class TestContext {
|
|
|
296380
296417
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
296381
296418
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
296382
296419
|
await core_frontend_1.NoRenderApp.startup({
|
|
296383
|
-
applicationVersion: "4.10.0-dev.
|
|
296420
|
+
applicationVersion: "4.10.0-dev.27",
|
|
296384
296421
|
applicationId: this.settings.gprid,
|
|
296385
296422
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
296386
296423
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -321249,7 +321286,7 @@ function __disposeResources(env) {
|
|
|
321249
321286
|
/***/ ((module) => {
|
|
321250
321287
|
|
|
321251
321288
|
"use strict";
|
|
321252
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.
|
|
321289
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.27","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.27","@itwin/core-bentley":"workspace:^4.10.0-dev.27","@itwin/core-common":"workspace:^4.10.0-dev.27","@itwin/core-geometry":"workspace:^4.10.0-dev.27","@itwin/core-orbitgt":"workspace:^4.10.0-dev.27","@itwin/core-quantity":"workspace:^4.10.0-dev.27"},"//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
321290
|
|
|
321254
321291
|
/***/ }),
|
|
321255
321292
|
|