@itwin/ecschema-rpcinterface-tests 4.10.0-dev.11 → 4.10.0-dev.14
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 +165 -143
- 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 +16 -16
|
@@ -74509,6 +74509,7 @@ class AccuSnap {
|
|
|
74509
74509
|
snapDivisor: keypointDivisor,
|
|
74510
74510
|
subCategoryId: thisHit.subCategoryId,
|
|
74511
74511
|
geometryClass: thisHit.geometryClass,
|
|
74512
|
+
modelToWorld: thisHit.transformFromSourceIModel?.toJSON(),
|
|
74512
74513
|
};
|
|
74513
74514
|
const thisGeom = (thisHit.isElementHit ? _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.overrideElementGeometry(thisHit) : _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.getDecorationGeometry(thisHit));
|
|
74514
74515
|
if (undefined !== thisGeom) {
|
|
@@ -74558,12 +74559,15 @@ class AccuSnap {
|
|
|
74558
74559
|
const parsed = undefined !== json ? _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.IModelJson.Reader.parse(json) : undefined;
|
|
74559
74560
|
return parsed instanceof _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.GeometryQuery && "curvePrimitive" === parsed.geometryCategory ? parsed : undefined;
|
|
74560
74561
|
};
|
|
74562
|
+
let displayTransform;
|
|
74563
|
+
if (undefined !== thisHit.modelId) {
|
|
74564
|
+
displayTransform = thisHit.viewport.view.computeDisplayTransform({
|
|
74565
|
+
modelId: thisHit.modelId,
|
|
74566
|
+
elementId: thisHit.sourceId,
|
|
74567
|
+
viewAttachmentId: thisHit.viewAttachment?.id,
|
|
74568
|
+
});
|
|
74569
|
+
}
|
|
74561
74570
|
const snapPoint = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(result.snapPoint);
|
|
74562
|
-
const displayTransform = undefined !== thisHit.modelId ? thisHit.viewport.view.computeDisplayTransform({
|
|
74563
|
-
modelId: thisHit.modelId,
|
|
74564
|
-
elementId: thisHit.sourceId,
|
|
74565
|
-
viewAttachmentId: thisHit.viewAttachment?.id,
|
|
74566
|
-
}) : undefined;
|
|
74567
74571
|
displayTransform?.multiplyPoint3d(snapPoint, snapPoint);
|
|
74568
74572
|
const snap = new _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapDetail(thisHit, result.snapMode, result.heat, snapPoint);
|
|
74569
74573
|
snap.setCurvePrimitive(parseCurve(result.curve), displayTransform, result.geomType);
|
|
@@ -81190,6 +81194,8 @@ class HitDetail {
|
|
|
81190
81194
|
* @internal
|
|
81191
81195
|
*/
|
|
81192
81196
|
get sourceIModel() { return this._props.sourceIModel; }
|
|
81197
|
+
/** @internal */
|
|
81198
|
+
get transformFromSourceIModel() { return this._props.transformFromSourceIModel; }
|
|
81193
81199
|
/** @internal chiefly for debugging */
|
|
81194
81200
|
get tileId() { return this._props.tileId; }
|
|
81195
81201
|
/** True if the hit originated from a reality model classifier.
|
|
@@ -81238,6 +81244,7 @@ class HitDetail {
|
|
|
81238
81244
|
geometryClass: arg0.geometryClass,
|
|
81239
81245
|
modelId: arg0.modelId,
|
|
81240
81246
|
sourceIModel: arg0.sourceIModel,
|
|
81247
|
+
transformFromSourceIModel: arg0.transformFromSourceIModel,
|
|
81241
81248
|
tileId: arg0.tileId,
|
|
81242
81249
|
isClassifier: arg0.isClassifier,
|
|
81243
81250
|
viewAttachment: arg0.viewAttachment,
|
|
@@ -87293,7 +87300,6 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_12__.ViewState2
|
|
|
87293
87300
|
context.setViewBackground(border);
|
|
87294
87301
|
}
|
|
87295
87302
|
}
|
|
87296
|
-
/** @internal */
|
|
87297
87303
|
computeFitRange() {
|
|
87298
87304
|
const size = this.sheetSize;
|
|
87299
87305
|
if (0 >= size.x || 0 >= size.y)
|
|
@@ -108948,6 +108954,7 @@ var Pixel;
|
|
|
108948
108954
|
this.iModel = args?.iModel;
|
|
108949
108955
|
this.tileId = args?.tileId;
|
|
108950
108956
|
this.viewAttachmentId = args?.viewAttachmentId;
|
|
108957
|
+
this.transformFromIModel = args?.transformFromIModel;
|
|
108951
108958
|
}
|
|
108952
108959
|
/** The Id of the element that produced the pixel. */
|
|
108953
108960
|
get elementId() {
|
|
@@ -108996,6 +109003,7 @@ var Pixel;
|
|
|
108996
109003
|
tileId: this.tileId,
|
|
108997
109004
|
isClassifier: this.isClassifier,
|
|
108998
109005
|
sourceIModel: this.iModel,
|
|
109006
|
+
transformFromSourceIModel: this.transformFromIModel,
|
|
108999
109007
|
viewAttachment,
|
|
109000
109008
|
};
|
|
109001
109009
|
}
|
|
@@ -112084,6 +112092,7 @@ class BranchState {
|
|
|
112084
112092
|
get textureDrape() { return this._opts.textureDrape; }
|
|
112085
112093
|
get edgeSettings() { return this._opts.edgeSettings; }
|
|
112086
112094
|
get iModel() { return this._opts.iModel; }
|
|
112095
|
+
get transformFromIModel() { return this._opts.transformFromIModel; }
|
|
112087
112096
|
get is3d() { return this._opts.is3d; }
|
|
112088
112097
|
get frustumScale() { return this._opts.frustumScale; }
|
|
112089
112098
|
get appearanceProvider() { return this._opts.appearanceProvider; }
|
|
@@ -112109,6 +112118,7 @@ class BranchState {
|
|
|
112109
112118
|
transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),
|
|
112110
112119
|
symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,
|
|
112111
112120
|
iModel: branch.iModel ?? prev.iModel,
|
|
112121
|
+
transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,
|
|
112112
112122
|
planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,
|
|
112113
112123
|
textureDrape: branch.textureDrape ?? prev.textureDrape,
|
|
112114
112124
|
clipVolume: branch.clips,
|
|
@@ -116479,15 +116489,18 @@ class Batch extends Graphic {
|
|
|
116479
116489
|
/** The following are valid only during a draw and reset afterward. */
|
|
116480
116490
|
get batchId() { return this._context.batchId; }
|
|
116481
116491
|
get batchIModel() { return this._context.iModel; }
|
|
116492
|
+
get transformFromBatchIModel() { return this._context.transformFromIModel; }
|
|
116482
116493
|
get viewAttachmentId() { return this._context.viewAttachmentId; }
|
|
116483
116494
|
setContext(batchId, branch) {
|
|
116484
116495
|
this._context.batchId = batchId;
|
|
116485
116496
|
this._context.iModel = branch.iModel;
|
|
116497
|
+
this._context.transformFromIModel = branch.transformFromIModel;
|
|
116486
116498
|
this._context.viewAttachmentId = branch.viewAttachmentId;
|
|
116487
116499
|
}
|
|
116488
116500
|
resetContext() {
|
|
116489
116501
|
this._context.batchId = 0;
|
|
116490
116502
|
this._context.iModel = undefined;
|
|
116503
|
+
this._context.transformFromIModel = undefined;
|
|
116491
116504
|
this._context.viewAttachmentId = undefined;
|
|
116492
116505
|
}
|
|
116493
116506
|
constructor(graphic, features, range, options) {
|
|
@@ -116552,6 +116565,7 @@ class Branch extends Graphic {
|
|
|
116552
116565
|
this.iModel = opts.iModel;
|
|
116553
116566
|
this.frustum = opts.frustum;
|
|
116554
116567
|
this.viewAttachmentId = opts.viewAttachmentId;
|
|
116568
|
+
this.transformFromExternalIModel = opts.transformFromIModel;
|
|
116555
116569
|
if (opts.hline)
|
|
116556
116570
|
this.edgeSettings = _EdgeSettings__WEBPACK_IMPORTED_MODULE_6__.EdgeSettings.create(opts.hline);
|
|
116557
116571
|
if (opts.classifierOrDrape instanceof _PlanarClassifier__WEBPACK_IMPORTED_MODULE_8__.PlanarClassifier)
|
|
@@ -122330,8 +122344,15 @@ class PixelBuffer {
|
|
|
122330
122344
|
const featureId = this.getFeatureId(pixelIndex);
|
|
122331
122345
|
if (undefined !== featureId) {
|
|
122332
122346
|
const batch = this._batchState.find(featureId);
|
|
122333
|
-
if (undefined !== batch)
|
|
122334
|
-
return {
|
|
122347
|
+
if (undefined !== batch) {
|
|
122348
|
+
return {
|
|
122349
|
+
featureTable: batch.featureTable,
|
|
122350
|
+
iModel: batch.batchIModel,
|
|
122351
|
+
transformFromIModel: batch.transformFromBatchIModel,
|
|
122352
|
+
tileId: batch.tileId,
|
|
122353
|
+
viewAttachmentId: batch.viewAttachmentId,
|
|
122354
|
+
};
|
|
122355
|
+
}
|
|
122335
122356
|
}
|
|
122336
122357
|
return undefined;
|
|
122337
122358
|
}
|
|
@@ -122401,10 +122422,11 @@ class PixelBuffer {
|
|
|
122401
122422
|
}
|
|
122402
122423
|
}
|
|
122403
122424
|
}
|
|
122404
|
-
let featureTable, iModel, tileId, viewAttachmentId;
|
|
122425
|
+
let featureTable, iModel, transformToIModel, tileId, viewAttachmentId;
|
|
122405
122426
|
if (undefined !== batchInfo) {
|
|
122406
122427
|
featureTable = batchInfo.featureTable;
|
|
122407
122428
|
iModel = batchInfo.iModel;
|
|
122429
|
+
transformToIModel = batchInfo.transformFromIModel;
|
|
122408
122430
|
tileId = batchInfo.tileId;
|
|
122409
122431
|
viewAttachmentId = batchInfo.viewAttachmentId;
|
|
122410
122432
|
}
|
|
@@ -122415,6 +122437,7 @@ class PixelBuffer {
|
|
|
122415
122437
|
planarity,
|
|
122416
122438
|
batchType: featureTable?.type,
|
|
122417
122439
|
iModel,
|
|
122440
|
+
transformFromIModel: transformToIModel,
|
|
122418
122441
|
tileId,
|
|
122419
122442
|
viewAttachmentId,
|
|
122420
122443
|
});
|
|
@@ -150191,6 +150214,7 @@ class TileDrawArgs {
|
|
|
150191
150214
|
this.groupNodeId = params.groupNodeId;
|
|
150192
150215
|
this.boundingRange = params.boundingRange;
|
|
150193
150216
|
this.maximumScreenSpaceError = params.maximumScreenSpaceError ?? 16; // 16 is Cesium's default.
|
|
150217
|
+
this.transformFromIModel = params.transformFromIModel;
|
|
150194
150218
|
// Do not cull tiles based on clip volume if tiles outside clip are supposed to be drawn but in a different color.
|
|
150195
150219
|
if (undefined !== clipVolume && !context.viewport.view.displayStyle.settings.clipStyle.outsideColor)
|
|
150196
150220
|
this.clipVolume = clipVolume;
|
|
@@ -150258,6 +150282,7 @@ class TileDrawArgs {
|
|
|
150258
150282
|
return undefined;
|
|
150259
150283
|
const opts = {
|
|
150260
150284
|
iModel: this.tree.iModel,
|
|
150285
|
+
transformFromIModel: this.transformFromIModel,
|
|
150261
150286
|
clipVolume: this.clipVolume,
|
|
150262
150287
|
classifierOrDrape: this.planarClassifier ?? this.drape,
|
|
150263
150288
|
appearanceProvider: this.appearanceProvider,
|
|
@@ -151513,8 +151538,11 @@ class TileTreeReference /* implements RenderMemory.Consumer */ {
|
|
|
151513
151538
|
hiddenLineSettings: this.getHiddenLineSettings(tree),
|
|
151514
151539
|
animationTransformNodeId: this.getAnimationTransformNodeId(tree),
|
|
151515
151540
|
groupNodeId: this.getGroupNodeId(tree),
|
|
151541
|
+
transformFromIModel: this.getTransformFromIModel(),
|
|
151516
151542
|
});
|
|
151517
151543
|
}
|
|
151544
|
+
/** @beta */
|
|
151545
|
+
getTransformFromIModel() { return undefined; }
|
|
151518
151546
|
/** @internal */
|
|
151519
151547
|
getAnimationTransformNodeId(_tree) {
|
|
151520
151548
|
return undefined;
|
|
@@ -188221,7 +188249,12 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
188221
188249
|
const otherVector0 = this._matrix.multiplyInverse(other.vector0);
|
|
188222
188250
|
const otherVector90 = this._matrix.multiplyInverse(other.vector90);
|
|
188223
188251
|
if (otherOrigin && otherVector0 && otherVector90) {
|
|
188224
|
-
return {
|
|
188252
|
+
return {
|
|
188253
|
+
center: otherOrigin,
|
|
188254
|
+
vector0: otherVector0,
|
|
188255
|
+
vector90: otherVector90,
|
|
188256
|
+
sweep: this.sweep.clone(),
|
|
188257
|
+
};
|
|
188225
188258
|
}
|
|
188226
188259
|
return undefined;
|
|
188227
188260
|
}
|
|
@@ -200726,7 +200759,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
200726
200759
|
*/
|
|
200727
200760
|
dispatchArcArcThisOrder(cpA, // arc closer to being circular
|
|
200728
200761
|
matrixA, extendA0, extendA1, cpB, matrixB, extendB0, extendB1, reversed) {
|
|
200729
|
-
// inverseA transforms arcA to its local coordinates, where it is the unit xy-circle
|
|
200762
|
+
// inverseA transforms arcA to its local coordinates, where it is the unit xy-circle
|
|
200730
200763
|
const inverseA = matrixA.inverse();
|
|
200731
200764
|
if (inverseA) {
|
|
200732
200765
|
// localB defines the arc formed by transforming arcB into the local coordinates of arcA
|
|
@@ -215001,7 +215034,8 @@ class Matrix3d {
|
|
|
215001
215034
|
static createColumns(vectorU, vectorV, vectorW, result) {
|
|
215002
215035
|
return Matrix3d.createRowValues(vectorU.x, vectorV.x, vectorW.x, vectorU.y, vectorV.y, vectorW.y, vectorU.z, vectorV.z, vectorW.z, result);
|
|
215003
215036
|
}
|
|
215004
|
-
/**
|
|
215037
|
+
/**
|
|
215038
|
+
* Create a matrix with each column's _x,y_ parts given `XAndY` and separate numeric z values.
|
|
215005
215039
|
* ```
|
|
215006
215040
|
* equation
|
|
215007
215041
|
* \begin{bmatrix}U_x & V_x & W_x \\ U_y & V_y & W_y \\ u & v & w \end{bmatrix}
|
|
@@ -219262,7 +219296,7 @@ class XYZ {
|
|
|
219262
219296
|
return defaultValue;
|
|
219263
219297
|
}
|
|
219264
219298
|
/**
|
|
219265
|
-
* Look for (in order)
|
|
219299
|
+
* Look for (in order) a y coordinate present as:
|
|
219266
219300
|
* * arg.y
|
|
219267
219301
|
* * arg[1]
|
|
219268
219302
|
*/
|
|
@@ -219274,7 +219308,7 @@ class XYZ {
|
|
|
219274
219308
|
return defaultValue;
|
|
219275
219309
|
}
|
|
219276
219310
|
/**
|
|
219277
|
-
* Look for (in order)
|
|
219311
|
+
* Look for (in order) a z coordinate present as:
|
|
219278
219312
|
* * arg.z
|
|
219279
219313
|
* * arg[2]
|
|
219280
219314
|
*/
|
|
@@ -220197,8 +220231,8 @@ class Vector3d extends XYZ {
|
|
|
220197
220231
|
* the plane of this vector and the target vector.
|
|
220198
220232
|
* @param target Second vector which defines the plane of rotation.
|
|
220199
220233
|
* @param result optional preallocated vector for result.
|
|
220200
|
-
* @returns rotated vector, or undefined if the cross product of this and
|
|
220201
|
-
*
|
|
220234
|
+
* @returns rotated vector, or undefined if the cross product of this and the target
|
|
220235
|
+
* cannot be normalized (i.e. if the target and this are colinear).
|
|
220202
220236
|
*/
|
|
220203
220237
|
rotate90Towards(target, result) {
|
|
220204
220238
|
const normal = this.crossProduct(target).normalize();
|
|
@@ -220334,7 +220368,8 @@ class Vector3d extends XYZ {
|
|
|
220334
220368
|
return this.crossProduct(vectorB, result).normalize(result);
|
|
220335
220369
|
}
|
|
220336
220370
|
/**
|
|
220337
|
-
* Compute the cross product of this vector with `vectorB
|
|
220371
|
+
* Compute the cross product of this vector with `vectorB` and normalize it.
|
|
220372
|
+
* * If length is zero, return the vector given by x, y, z.
|
|
220338
220373
|
* @param vectorB second vector of cross product
|
|
220339
220374
|
* @param x x value for default result
|
|
220340
220375
|
* @param y y value for default result
|
|
@@ -234368,49 +234403,45 @@ class AnalyticRoots {
|
|
|
234368
234403
|
// this.appendCubicRootsUnsorted(c, results);
|
|
234369
234404
|
results.sort();
|
|
234370
234405
|
}
|
|
234371
|
-
/** Compute roots of quartic
|
|
234406
|
+
/** Compute roots of quartic `c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4` */
|
|
234372
234407
|
static appendQuarticRoots(c, results) {
|
|
234373
|
-
const coffs = new Float64Array(4);
|
|
234408
|
+
const coffs = new Float64Array(4);
|
|
234374
234409
|
let u;
|
|
234375
234410
|
let v;
|
|
234376
|
-
// normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
|
|
234377
234411
|
const coffScale = new Float64Array(1);
|
|
234378
234412
|
if (!this.safeDivide(coffScale, 1.0, c[4], 0.0, 0)) {
|
|
234379
234413
|
this.appendCubicRoots(c, results);
|
|
234380
234414
|
return;
|
|
234381
234415
|
}
|
|
234416
|
+
// normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
|
|
234382
234417
|
const A = c[3] * coffScale[0];
|
|
234383
234418
|
const B = c[2] * coffScale[0];
|
|
234384
234419
|
const C = c[1] * coffScale[0];
|
|
234385
234420
|
const D = c[0] * coffScale[0];
|
|
234386
234421
|
const origin = -0.25 * A;
|
|
234387
|
-
|
|
234388
|
-
x^4 + px^2 + qx + r = 0 */
|
|
234422
|
+
// substitute x = y - A/4 to eliminate cubic term: y^4 + py^2 + qy + r = 0
|
|
234389
234423
|
const sq_A = A * A;
|
|
234390
|
-
const p = -
|
|
234424
|
+
const p = -0.375 * sq_A + B;
|
|
234391
234425
|
const q = 0.125 * sq_A * A - 0.5 * A * B + C;
|
|
234392
|
-
const r = -
|
|
234393
|
-
const
|
|
234394
|
-
if (this.isZero(r)) {
|
|
234395
|
-
// no absolute term: y(y^3 + py + q) = 0
|
|
234426
|
+
const r = -0.01171875 * sq_A * sq_A + 0.0625 * sq_A * B - 0.25 * A * C + D;
|
|
234427
|
+
const cubicSolutions = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
|
|
234428
|
+
if (this.isZero(r)) { // no absolute term: y(y^3 + py + q) = 0
|
|
234396
234429
|
coffs[0] = q;
|
|
234397
234430
|
coffs[1] = p;
|
|
234398
234431
|
coffs[2] = 0;
|
|
234399
234432
|
coffs[3] = 1;
|
|
234400
234433
|
this.appendCubicRoots(coffs, results);
|
|
234401
|
-
results.push(0);
|
|
234402
|
-
this.addConstant(origin, results);
|
|
234434
|
+
results.push(0);
|
|
234435
|
+
this.addConstant(origin, results); // apply origin
|
|
234403
234436
|
return;
|
|
234404
234437
|
}
|
|
234405
|
-
else {
|
|
234406
|
-
|
|
234407
|
-
coffs[0] = 1.0 / 2 * r * p - 1.0 / 8 * q * q;
|
|
234438
|
+
else { // solve the resolvent cubic; more info: https://en.wikipedia.org/wiki/Resolvent_cubic#Second_definition
|
|
234439
|
+
coffs[0] = 0.5 * r * p - 0.125 * q * q;
|
|
234408
234440
|
coffs[1] = -r;
|
|
234409
|
-
coffs[2] = -
|
|
234441
|
+
coffs[2] = -0.5 * p;
|
|
234410
234442
|
coffs[3] = 1;
|
|
234411
|
-
this.appendCubicRoots(coffs,
|
|
234412
|
-
const z = this.mostDistantFromMean(
|
|
234413
|
-
// ... to build two quadric equations
|
|
234443
|
+
this.appendCubicRoots(coffs, cubicSolutions);
|
|
234444
|
+
const z = this.mostDistantFromMean(cubicSolutions);
|
|
234414
234445
|
u = z * z - r;
|
|
234415
234446
|
v = 2 * z - p;
|
|
234416
234447
|
if (this.isSmallRatio(u, r)) {
|
|
@@ -234429,11 +234460,9 @@ class AnalyticRoots {
|
|
|
234429
234460
|
v = Math.sqrt(v);
|
|
234430
234461
|
}
|
|
234431
234462
|
else {
|
|
234432
|
-
for (let i = 0; i < tempStack.length; i++) {
|
|
234433
|
-
results.push(tempStack.atUncheckedIndex(i));
|
|
234434
|
-
}
|
|
234435
234463
|
return;
|
|
234436
234464
|
}
|
|
234465
|
+
// the two quadratic equations
|
|
234437
234466
|
coffs[0] = z - u;
|
|
234438
234467
|
coffs[1] = ((q < 0) ? (-v) : (v));
|
|
234439
234468
|
coffs[2] = 1;
|
|
@@ -234444,7 +234473,7 @@ class AnalyticRoots {
|
|
|
234444
234473
|
this.appendQuadraticRoots(coffs, results);
|
|
234445
234474
|
}
|
|
234446
234475
|
// substitute
|
|
234447
|
-
this.addConstant(origin, results);
|
|
234476
|
+
this.addConstant(origin, results); // apply origin
|
|
234448
234477
|
results.sort();
|
|
234449
234478
|
this.improveRoots(c, 4, results, true);
|
|
234450
234479
|
return;
|
|
@@ -234548,19 +234577,17 @@ class PowerPolynomial {
|
|
|
234548
234577
|
return this.degreeKnownEvaluate(coff, degree, x);
|
|
234549
234578
|
}
|
|
234550
234579
|
/**
|
|
234551
|
-
*
|
|
234552
|
-
* *
|
|
234553
|
-
* * Returns degree of result as determined by comparing trailing coefficients to zero
|
|
234580
|
+
* Accumulate `coffQ*scaleQ` into `coffP`.
|
|
234581
|
+
* * The length of `coffP` must be at least length of `coffQ`.
|
|
234582
|
+
* * Returns degree of result as determined by comparing trailing coefficients to zero.
|
|
234554
234583
|
*/
|
|
234555
234584
|
static accumulate(coffP, coffQ, scaleQ) {
|
|
234556
234585
|
let degreeP = coffP.length - 1;
|
|
234557
234586
|
const degreeQ = coffQ.length - 1;
|
|
234558
|
-
for (let i = 0; i <= degreeQ; i++)
|
|
234587
|
+
for (let i = 0; i <= degreeQ; i++)
|
|
234559
234588
|
coffP[i] += scaleQ * coffQ[i];
|
|
234560
|
-
|
|
234561
|
-
while (degreeP >= 0 && coffP[degreeP] === 0.0) {
|
|
234589
|
+
while (degreeP >= 0 && coffP[degreeP] === 0.0)
|
|
234562
234590
|
degreeP--;
|
|
234563
|
-
}
|
|
234564
234591
|
return degreeP;
|
|
234565
234592
|
}
|
|
234566
234593
|
/** Zero all coefficients */
|
|
@@ -234576,17 +234603,18 @@ class PowerPolynomial {
|
|
|
234576
234603
|
*/
|
|
234577
234604
|
class TrigPolynomial {
|
|
234578
234605
|
/**
|
|
234579
|
-
*
|
|
234580
|
-
*
|
|
234581
|
-
*
|
|
234582
|
-
*
|
|
234583
|
-
*
|
|
234584
|
-
*
|
|
234585
|
-
*
|
|
234586
|
-
*
|
|
234587
|
-
*
|
|
234588
|
-
*
|
|
234589
|
-
*
|
|
234606
|
+
* Solve a polynomial created from trigonometric condition using Trig.S, Trig.C, Trig.W.
|
|
234607
|
+
* * Polynomial is of degree 4:
|
|
234608
|
+
* `coff[0] + coff[1] * t + coff[2] * t^2 + coff[3] * t^3 + coff[4] * t^4`
|
|
234609
|
+
* * Solution logic includes inferring angular roots corresponding zero leading coefficients
|
|
234610
|
+
* (roots at infinity).
|
|
234611
|
+
* @param coff coefficients.
|
|
234612
|
+
* @param nominalDegree degree of the polynomial under most complex root case. If there are
|
|
234613
|
+
* any zero coefficients up to this degree, a single root "at infinity" is recorded as its
|
|
234614
|
+
* corresponding angular parameter at negative pi/2.
|
|
234615
|
+
* @param referenceCoefficient a number which represents the size of coefficients at various
|
|
234616
|
+
* stages of computation. A small fraction of this will be used as a zero tolerance
|
|
234617
|
+
* @param radians roots are placed here.
|
|
234590
234618
|
* @return false if equation is all zeros. This usually means any angle is a solution.
|
|
234591
234619
|
*/
|
|
234592
234620
|
static solveAngles(coff, nominalDegree, referenceCoefficient, radians) {
|
|
@@ -234596,27 +234624,21 @@ class TrigPolynomial {
|
|
|
234596
234624
|
const relTol = this._smallAngle;
|
|
234597
234625
|
for (let i = 0; i <= nominalDegree; i++) {
|
|
234598
234626
|
a = Math.abs(coff[i]);
|
|
234599
|
-
if (a > maxCoff)
|
|
234627
|
+
if (a > maxCoff)
|
|
234600
234628
|
maxCoff = a;
|
|
234601
|
-
}
|
|
234602
234629
|
}
|
|
234603
234630
|
const coffTol = relTol * maxCoff;
|
|
234604
234631
|
let degree = nominalDegree;
|
|
234605
|
-
while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
|
|
234632
|
+
while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
|
|
234606
234633
|
degree--;
|
|
234607
|
-
}
|
|
234608
|
-
// let status = false;
|
|
234609
234634
|
const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
|
|
234610
234635
|
if (degree === -1) {
|
|
234611
|
-
// Umm.
|
|
234612
|
-
// status = false;
|
|
234636
|
+
// Umm. Dunno. Nothing there.
|
|
234613
234637
|
}
|
|
234614
234638
|
else {
|
|
234615
|
-
// status = true;
|
|
234616
234639
|
if (degree === 0) {
|
|
234617
234640
|
// p(t) is a nonzero constant
|
|
234618
234641
|
// No roots, but not degenerate.
|
|
234619
|
-
// status = true;
|
|
234620
234642
|
}
|
|
234621
234643
|
else if (degree === 1) {
|
|
234622
234644
|
// p(t) = coff[1] * t + coff[0]
|
|
@@ -234632,13 +234654,12 @@ class TrigPolynomial {
|
|
|
234632
234654
|
AnalyticRoots.appendQuarticRoots(coff, roots);
|
|
234633
234655
|
}
|
|
234634
234656
|
else {
|
|
234635
|
-
// TODO:
|
|
234636
|
-
// status = false;
|
|
234657
|
+
// TODO: WORK WITH BEZIER SOLVER
|
|
234637
234658
|
}
|
|
234638
234659
|
if (roots.length > 0) {
|
|
234639
234660
|
// Each solution t represents an angle with
|
|
234640
|
-
//
|
|
234641
|
-
// Division by W has no effect on
|
|
234661
|
+
// Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
|
|
234662
|
+
// Division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
|
|
234642
234663
|
for (let i = 0; i < roots.length; i++) {
|
|
234643
234664
|
const ss = PowerPolynomial.evaluate(this.S, roots.atUncheckedIndex(i));
|
|
234644
234665
|
const cc = PowerPolynomial.evaluate(this.C, roots.atUncheckedIndex(i));
|
|
@@ -234647,55 +234668,56 @@ class TrigPolynomial {
|
|
|
234647
234668
|
// Each leading zero at the front of the coefficients corresponds to a root at -PI/2.
|
|
234648
234669
|
// Only make one entry....
|
|
234649
234670
|
// for (int i = degree; i < nominalDegree; i++)
|
|
234650
|
-
if (degree < nominalDegree)
|
|
234671
|
+
if (degree < nominalDegree)
|
|
234651
234672
|
radians.push(-0.5 * Math.PI);
|
|
234652
|
-
}
|
|
234653
234673
|
}
|
|
234654
234674
|
}
|
|
234655
234675
|
return radians.length > 0;
|
|
234656
234676
|
}
|
|
234657
234677
|
/**
|
|
234658
234678
|
* Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
|
|
234659
|
-
* `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y +
|
|
234679
|
+
* `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a = 0`
|
|
234660
234680
|
* Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
|
|
234661
|
-
* @param axx
|
|
234662
|
-
* @param axy
|
|
234663
|
-
* @param ayy
|
|
234664
|
-
* @param ax
|
|
234665
|
-
* @param ay
|
|
234666
|
-
* @param
|
|
234667
|
-
* @param radians
|
|
234668
|
-
*/
|
|
234669
|
-
static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay,
|
|
234670
|
-
const
|
|
234671
|
-
PowerPolynomial.zero(
|
|
234681
|
+
* @param axx coefficient of x^2
|
|
234682
|
+
* @param axy coefficient of xy
|
|
234683
|
+
* @param ayy coefficient of y^2
|
|
234684
|
+
* @param ax coefficient of x
|
|
234685
|
+
* @param ay coefficient of y
|
|
234686
|
+
* @param a constant coefficient
|
|
234687
|
+
* @param radians solution angles
|
|
234688
|
+
*/
|
|
234689
|
+
static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a, radians) {
|
|
234690
|
+
const coffs = new Float64Array(5);
|
|
234691
|
+
PowerPolynomial.zero(coffs);
|
|
234672
234692
|
let degree;
|
|
234673
|
-
|
|
234674
|
-
|
|
234675
|
-
|
|
234676
|
-
PowerPolynomial.accumulate(
|
|
234677
|
-
PowerPolynomial.accumulate(
|
|
234678
|
-
PowerPolynomial.accumulate(
|
|
234679
|
-
PowerPolynomial.accumulate(
|
|
234693
|
+
// see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
|
|
234694
|
+
// on how coffs (coefficient array) is built.
|
|
234695
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(ax, ay, a)) {
|
|
234696
|
+
PowerPolynomial.accumulate(coffs, this.CW, ax);
|
|
234697
|
+
PowerPolynomial.accumulate(coffs, this.SW, ay);
|
|
234698
|
+
PowerPolynomial.accumulate(coffs, this.WW, a);
|
|
234699
|
+
PowerPolynomial.accumulate(coffs, this.SS, ayy);
|
|
234700
|
+
PowerPolynomial.accumulate(coffs, this.CC, axx);
|
|
234701
|
+
PowerPolynomial.accumulate(coffs, this.SC, axy);
|
|
234680
234702
|
degree = 4;
|
|
234681
234703
|
}
|
|
234682
234704
|
else {
|
|
234683
|
-
PowerPolynomial.accumulate(
|
|
234684
|
-
PowerPolynomial.accumulate(
|
|
234685
|
-
PowerPolynomial.accumulate(
|
|
234705
|
+
PowerPolynomial.accumulate(coffs, this.C, ax);
|
|
234706
|
+
PowerPolynomial.accumulate(coffs, this.S, ay);
|
|
234707
|
+
PowerPolynomial.accumulate(coffs, this.W, a);
|
|
234686
234708
|
degree = 2;
|
|
234687
234709
|
}
|
|
234688
|
-
|
|
234689
|
-
|
|
234690
|
-
const b = this.solveAngles(Coffs, degree, maxCoff, radians);
|
|
234710
|
+
const maxCoff = Math.max(Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a));
|
|
234711
|
+
const b = this.solveAngles(coffs, degree, maxCoff, radians);
|
|
234691
234712
|
/*
|
|
234692
234713
|
for (const theta of angles) {
|
|
234693
234714
|
const c = theta.cos();
|
|
234694
234715
|
const s = theta.sin();
|
|
234695
234716
|
GeometryCoreTestIO.consoleLog({
|
|
234696
234717
|
angle: theta, co: c, si: s,
|
|
234697
|
-
f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s +
|
|
234698
|
-
|
|
234718
|
+
f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a,
|
|
234719
|
+
});
|
|
234720
|
+
} */
|
|
234699
234721
|
return b;
|
|
234700
234722
|
}
|
|
234701
234723
|
/**
|
|
@@ -234730,7 +234752,7 @@ class TrigPolynomial {
|
|
|
234730
234752
|
return status;
|
|
234731
234753
|
}
|
|
234732
234754
|
/**
|
|
234733
|
-
* Compute intersections of unit circle `x^2 + y^2 = w^2` with the ellipse
|
|
234755
|
+
* Compute intersections of unit circle `x^2 + y^2 = w^2` (in homogeneous coordinates) with the ellipse
|
|
234734
234756
|
* `F(t) = (cx + ux cos(t) + vx sin(t), cy + uy cos(t) + vy sin(t)) / (cw + uw cos(t) + vw sin(t))`.
|
|
234735
234757
|
* @param cx center x
|
|
234736
234758
|
* @param cy center y
|
|
@@ -234746,13 +234768,15 @@ class TrigPolynomial {
|
|
|
234746
234768
|
*/
|
|
234747
234769
|
static solveUnitCircleHomogeneousEllipseIntersection(cx, cy, cw, ux, uy, uw, vx, vy, vw, ellipseRadians, circleRadians) {
|
|
234748
234770
|
circleRadians.length = 0;
|
|
234771
|
+
// see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
|
|
234772
|
+
// on how below variables are derived.
|
|
234749
234773
|
const acc = ux * ux + uy * uy - uw * uw;
|
|
234750
234774
|
const acs = 2.0 * (ux * vx + uy * vy - uw * vw);
|
|
234751
234775
|
const ass = vx * vx + vy * vy - vw * vw;
|
|
234752
234776
|
const ac = 2.0 * (ux * cx + uy * cy - uw * cw);
|
|
234753
|
-
const
|
|
234777
|
+
const as = 2.0 * (vx * cx + vy * cy - vw * cw);
|
|
234754
234778
|
const a = cx * cx + cy * cy - cw * cw;
|
|
234755
|
-
const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac,
|
|
234779
|
+
const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, as, a, ellipseRadians);
|
|
234756
234780
|
for (const radians of ellipseRadians) {
|
|
234757
234781
|
const cc = Math.cos(radians);
|
|
234758
234782
|
const ss = Math.sin(radians);
|
|
@@ -234765,25 +234789,27 @@ class TrigPolynomial {
|
|
|
234765
234789
|
}
|
|
234766
234790
|
// tolerance for small angle decision.
|
|
234767
234791
|
TrigPolynomial._smallAngle = 1.0e-11;
|
|
234768
|
-
|
|
234792
|
+
// see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
|
|
234793
|
+
// on how below variables are derived.
|
|
234794
|
+
/** Standard Basis coefficients for the numerator of the y-coordinate y(t) = S(t)/W(t) in the rational semicircle parameterization. */
|
|
234769
234795
|
TrigPolynomial.S = Float64Array.from([0.0, 2.0, -2.0]);
|
|
234770
|
-
/** Standard Basis coefficients for rational
|
|
234796
|
+
/** Standard Basis coefficients for the numerator of the x-coordinate x(t) = C(t)/W(t) in the rational semicircle parameterization. */
|
|
234771
234797
|
TrigPolynomial.C = Float64Array.from([1.0, -2.0]);
|
|
234772
|
-
/** Standard Basis coefficients for rational
|
|
234798
|
+
/** Standard Basis coefficients for the denominator of x(t) and y(t) in the rational semicircle parameterization. */
|
|
234773
234799
|
TrigPolynomial.W = Float64Array.from([1.0, -2.0, 2.0]);
|
|
234774
|
-
/** Standard Basis coefficients for
|
|
234800
|
+
/** Standard Basis coefficients for C(t) * W(t). */
|
|
234775
234801
|
TrigPolynomial.CW = Float64Array.from([1.0, -4.0, 6.0, -4.0]);
|
|
234776
|
-
/** Standard Basis coefficients for
|
|
234802
|
+
/** Standard Basis coefficients for S(t) * W(t). */
|
|
234777
234803
|
TrigPolynomial.SW = Float64Array.from([0.0, 2.0, -6.0, 8.0, -4.0]);
|
|
234778
|
-
/** Standard Basis coefficients for
|
|
234804
|
+
/** Standard Basis coefficients for S(t) * C(t). */
|
|
234779
234805
|
TrigPolynomial.SC = Float64Array.from([0.0, 2.0, -6.0, 4.0]);
|
|
234780
|
-
/** Standard Basis coefficients for
|
|
234806
|
+
/** Standard Basis coefficients for S(t) * S(t). */
|
|
234781
234807
|
TrigPolynomial.SS = Float64Array.from([0.0, 0.0, 4.0, -8.0, 4.0]);
|
|
234782
|
-
/** Standard Basis coefficients for
|
|
234808
|
+
/** Standard Basis coefficients for C(t) * C(t). */
|
|
234783
234809
|
TrigPolynomial.CC = Float64Array.from([1.0, -4.0, 4.0]);
|
|
234784
|
-
/** Standard Basis coefficients for
|
|
234810
|
+
/** Standard Basis coefficients for W(t) * W(t). */
|
|
234785
234811
|
TrigPolynomial.WW = Float64Array.from([1.0, -4.0, 8.0, -8.0, 4.0]);
|
|
234786
|
-
/** Standard Basis coefficients for (
|
|
234812
|
+
/** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
|
|
234787
234813
|
TrigPolynomial.CCminusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]);
|
|
234788
234814
|
TrigPolynomial._coefficientRelTol = 1.0e-12;
|
|
234789
234815
|
/**
|
|
@@ -285678,7 +285704,7 @@ class BaseFormat {
|
|
|
285678
285704
|
set azimuthBaseUnit(azimuthBaseUnit) { this._azimuthBaseUnit = azimuthBaseUnit; }
|
|
285679
285705
|
get azimuthCounterClockwise() { return this._azimuthCounterClockwise; }
|
|
285680
285706
|
set azimuthCounterClockwise(azimuthCounterClockwise) { this._azimuthCounterClockwise = azimuthCounterClockwise; }
|
|
285681
|
-
get
|
|
285707
|
+
get azimuthClockwiseOrDefault() { return !this._azimuthCounterClockwise; }
|
|
285682
285708
|
get revolutionUnit() { return this._revolutionUnit; }
|
|
285683
285709
|
set revolutionUnit(revolutionUnit) { this._revolutionUnit = revolutionUnit; }
|
|
285684
285710
|
/** This method parses input string that is typically extracted for persisted JSON data and validates that the string is a valid FormatType. Throws exception if not valid. */
|
|
@@ -286798,35 +286824,35 @@ class Formatter {
|
|
|
286798
286824
|
}
|
|
286799
286825
|
let prefix, suffix;
|
|
286800
286826
|
// Quadrants are
|
|
286801
|
-
//
|
|
286802
|
-
// 2
|
|
286803
|
-
// For quadrants
|
|
286804
|
-
if (quadrant ===
|
|
286827
|
+
// 3 0
|
|
286828
|
+
// 2 1
|
|
286829
|
+
// For quadrants 1 and 3 we have to subtract the angle from quarterRevolution degrees because they go counter-clockwise
|
|
286830
|
+
if (quadrant === 1 || quadrant === 3)
|
|
286805
286831
|
magnitude = quarterRevolution - magnitude;
|
|
286806
286832
|
// TODO: at some point we will want to open this for localization, in the first release it's going to be hard coded
|
|
286807
|
-
if (quadrant === 0 || quadrant ===
|
|
286833
|
+
if (quadrant === 0 || quadrant === 3)
|
|
286808
286834
|
prefix = "N";
|
|
286809
|
-
if (quadrant === 2 || quadrant ===
|
|
286835
|
+
if (quadrant === 2 || quadrant === 1)
|
|
286810
286836
|
prefix = "S";
|
|
286811
|
-
if (quadrant === 0 || quadrant ===
|
|
286837
|
+
if (quadrant === 0 || quadrant === 1)
|
|
286812
286838
|
suffix = "E";
|
|
286813
|
-
if (quadrant ===
|
|
286839
|
+
if (quadrant === 3 || quadrant === 2)
|
|
286814
286840
|
suffix = "W";
|
|
286815
|
-
// special case, if in quadrant 2 and value is very
|
|
286841
|
+
// special case, if in quadrant 2 and value is very close to quarter revolution (90°), turn prefix to N because N90:00:00W is preferred over S90:00:00W
|
|
286816
286842
|
if (quadrant === 2 && spec.unitConversions.length > 0) {
|
|
286817
286843
|
// To determine if value is small, we need to convert it to the smallest unit presented and use the provided precision on it
|
|
286818
286844
|
const unitConversion = spec.unitConversions[spec.unitConversions.length - 1].conversion;
|
|
286819
|
-
const
|
|
286845
|
+
const smallestFormattedDelta = (0,_Quantity__WEBPACK_IMPORTED_MODULE_3__.applyConversion)((quarterRevolution - magnitude), unitConversion) + this.FPV_MINTHRESHOLD;
|
|
286820
286846
|
const precisionScale = Math.pow(10.0, spec.format.precision);
|
|
286821
|
-
const floor = Math.floor((
|
|
286847
|
+
const floor = Math.floor((smallestFormattedDelta) * precisionScale + FPV_ROUNDFACTOR) / precisionScale;
|
|
286822
286848
|
if (floor === 0) {
|
|
286823
|
-
|
|
286849
|
+
prefix = "N";
|
|
286824
286850
|
}
|
|
286825
286851
|
}
|
|
286826
286852
|
return { magnitude, prefix, suffix: suffix };
|
|
286827
286853
|
}
|
|
286828
286854
|
if (type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth) {
|
|
286829
|
-
let azimuthBase =
|
|
286855
|
+
let azimuthBase = 0; // default base is North
|
|
286830
286856
|
if (spec.format.azimuthBase !== undefined) {
|
|
286831
286857
|
if (spec.azimuthBaseConversion === undefined) {
|
|
286832
286858
|
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.MissingRequiredProperty, `Missing azimuth base conversion for interpreting ${spec.name}'s azimuth base.`);
|
|
@@ -286838,13 +286864,13 @@ class Formatter {
|
|
|
286838
286864
|
}
|
|
286839
286865
|
azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
|
|
286840
286866
|
}
|
|
286841
|
-
if (azimuthBase ===
|
|
286842
|
-
return { magnitude }; // no conversion necessary, the input is already using the result parameters (
|
|
286867
|
+
if (azimuthBase === 0.0 && spec.format.azimuthClockwiseOrDefault)
|
|
286868
|
+
return { magnitude }; // no conversion necessary, the input is already using the result parameters (north base and clockwise)
|
|
286843
286869
|
// subtract the base from the actual value
|
|
286844
286870
|
magnitude -= azimuthBase;
|
|
286845
|
-
if (spec.format.
|
|
286871
|
+
if (spec.format.azimuthClockwiseOrDefault)
|
|
286846
286872
|
return { magnitude: this.normalizeAngle(magnitude, revolution) };
|
|
286847
|
-
// turn it into a clockwise angle
|
|
286873
|
+
// turn it into a counter-clockwise angle
|
|
286848
286874
|
magnitude = revolution - magnitude;
|
|
286849
286875
|
// normalize the result as it may have become negative or exceed the revolution
|
|
286850
286876
|
magnitude = this.normalizeAngle(magnitude, revolution);
|
|
@@ -287761,18 +287787,15 @@ class Parser {
|
|
|
287761
287787
|
// we have to turn the value into an east base and counter clockwise (NW and SE are already counter clockwise)
|
|
287762
287788
|
if (matchedPrefix === DirectionLabel.North) {
|
|
287763
287789
|
if (matchedSuffix === DirectionLabel.West) {
|
|
287764
|
-
magnitude =
|
|
287765
|
-
}
|
|
287766
|
-
else if (matchedSuffix === DirectionLabel.East) {
|
|
287767
|
-
magnitude = quarterRevolution - magnitude;
|
|
287790
|
+
magnitude = revolution - magnitude;
|
|
287768
287791
|
}
|
|
287769
287792
|
}
|
|
287770
287793
|
else if (matchedPrefix === DirectionLabel.South) {
|
|
287771
287794
|
if (matchedSuffix === DirectionLabel.West) {
|
|
287772
|
-
magnitude = (
|
|
287795
|
+
magnitude = (2 * quarterRevolution) + magnitude;
|
|
287773
287796
|
}
|
|
287774
287797
|
else if (matchedSuffix === DirectionLabel.East) {
|
|
287775
|
-
magnitude = (
|
|
287798
|
+
magnitude = (2 * quarterRevolution) - magnitude;
|
|
287776
287799
|
}
|
|
287777
287800
|
}
|
|
287778
287801
|
return { ok: true, value: magnitude };
|
|
@@ -287785,8 +287808,7 @@ class Parser {
|
|
|
287785
287808
|
let magnitude = parsedResult.value;
|
|
287786
287809
|
const revolution = this.getRevolution(spec);
|
|
287787
287810
|
magnitude = this.normalizeAngle(magnitude, revolution);
|
|
287788
|
-
|
|
287789
|
-
let azimuthBase = quarterRevolution;
|
|
287811
|
+
let azimuthBase = 0.0;
|
|
287790
287812
|
if (spec.format.azimuthBase !== undefined) {
|
|
287791
287813
|
if (spec.azimuthBaseConversion === undefined) {
|
|
287792
287814
|
throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.MissingRequiredProperty, `Missing azimuth base conversion for interpreting ${spec.format.name}'s azimuth base.`);
|
|
@@ -287798,12 +287820,12 @@ class Parser {
|
|
|
287798
287820
|
}
|
|
287799
287821
|
azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
|
|
287800
287822
|
}
|
|
287801
|
-
const
|
|
287802
|
-
if (
|
|
287823
|
+
const inputIsClockwise = spec.format.azimuthClockwiseOrDefault;
|
|
287824
|
+
if (inputIsClockwise && azimuthBase === 0) {
|
|
287803
287825
|
// parsed result already has the same base and orientation as our desired output
|
|
287804
287826
|
return parsedResult;
|
|
287805
287827
|
}
|
|
287806
|
-
if (
|
|
287828
|
+
if (inputIsClockwise)
|
|
287807
287829
|
magnitude = azimuthBase + magnitude;
|
|
287808
287830
|
else
|
|
287809
287831
|
magnitude = azimuthBase - magnitude;
|
|
@@ -303251,7 +303273,7 @@ var loadLanguages = instance.loadLanguages;
|
|
|
303251
303273
|
/***/ ((module) => {
|
|
303252
303274
|
|
|
303253
303275
|
"use strict";
|
|
303254
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.
|
|
303276
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.14","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.14","@itwin/core-bentley":"workspace:^4.10.0-dev.14","@itwin/core-common":"workspace:^4.10.0-dev.14","@itwin/core-geometry":"workspace:^4.10.0-dev.14","@itwin/core-orbitgt":"workspace:^4.10.0-dev.14","@itwin/core-quantity":"workspace:^4.10.0-dev.14"},"//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"}}');
|
|
303255
303277
|
|
|
303256
303278
|
/***/ })
|
|
303257
303279
|
|