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