@itwin/rpcinterface-full-stack-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 +166 -144
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_1_6_node_modules_loaders_gl_draco_di-0642a6.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_meshoptimizer_0_20_0_node_modules_meshoptimizer_index_m-a5ae61.bundled-tests.js.map +1 -1
- package/package.json +13 -13
|
@@ -80593,6 +80593,7 @@ class AccuSnap {
|
|
|
80593
80593
|
snapDivisor: keypointDivisor,
|
|
80594
80594
|
subCategoryId: thisHit.subCategoryId,
|
|
80595
80595
|
geometryClass: thisHit.geometryClass,
|
|
80596
|
+
modelToWorld: thisHit.transformFromSourceIModel?.toJSON(),
|
|
80596
80597
|
};
|
|
80597
80598
|
const thisGeom = (thisHit.isElementHit ? _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.overrideElementGeometry(thisHit) : _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.getDecorationGeometry(thisHit));
|
|
80598
80599
|
if (undefined !== thisGeom) {
|
|
@@ -80642,12 +80643,15 @@ class AccuSnap {
|
|
|
80642
80643
|
const parsed = undefined !== json ? _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.IModelJson.Reader.parse(json) : undefined;
|
|
80643
80644
|
return parsed instanceof _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.GeometryQuery && "curvePrimitive" === parsed.geometryCategory ? parsed : undefined;
|
|
80644
80645
|
};
|
|
80646
|
+
let displayTransform;
|
|
80647
|
+
if (undefined !== thisHit.modelId) {
|
|
80648
|
+
displayTransform = thisHit.viewport.view.computeDisplayTransform({
|
|
80649
|
+
modelId: thisHit.modelId,
|
|
80650
|
+
elementId: thisHit.sourceId,
|
|
80651
|
+
viewAttachmentId: thisHit.viewAttachment?.id,
|
|
80652
|
+
});
|
|
80653
|
+
}
|
|
80645
80654
|
const snapPoint = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(result.snapPoint);
|
|
80646
|
-
const displayTransform = undefined !== thisHit.modelId ? thisHit.viewport.view.computeDisplayTransform({
|
|
80647
|
-
modelId: thisHit.modelId,
|
|
80648
|
-
elementId: thisHit.sourceId,
|
|
80649
|
-
viewAttachmentId: thisHit.viewAttachment?.id,
|
|
80650
|
-
}) : undefined;
|
|
80651
80655
|
displayTransform?.multiplyPoint3d(snapPoint, snapPoint);
|
|
80652
80656
|
const snap = new _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapDetail(thisHit, result.snapMode, result.heat, snapPoint);
|
|
80653
80657
|
snap.setCurvePrimitive(parseCurve(result.curve), displayTransform, result.geomType);
|
|
@@ -87274,6 +87278,8 @@ class HitDetail {
|
|
|
87274
87278
|
* @internal
|
|
87275
87279
|
*/
|
|
87276
87280
|
get sourceIModel() { return this._props.sourceIModel; }
|
|
87281
|
+
/** @internal */
|
|
87282
|
+
get transformFromSourceIModel() { return this._props.transformFromSourceIModel; }
|
|
87277
87283
|
/** @internal chiefly for debugging */
|
|
87278
87284
|
get tileId() { return this._props.tileId; }
|
|
87279
87285
|
/** True if the hit originated from a reality model classifier.
|
|
@@ -87322,6 +87328,7 @@ class HitDetail {
|
|
|
87322
87328
|
geometryClass: arg0.geometryClass,
|
|
87323
87329
|
modelId: arg0.modelId,
|
|
87324
87330
|
sourceIModel: arg0.sourceIModel,
|
|
87331
|
+
transformFromSourceIModel: arg0.transformFromSourceIModel,
|
|
87325
87332
|
tileId: arg0.tileId,
|
|
87326
87333
|
isClassifier: arg0.isClassifier,
|
|
87327
87334
|
viewAttachment: arg0.viewAttachment,
|
|
@@ -93377,7 +93384,6 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_12__.ViewState2
|
|
|
93377
93384
|
context.setViewBackground(border);
|
|
93378
93385
|
}
|
|
93379
93386
|
}
|
|
93380
|
-
/** @internal */
|
|
93381
93387
|
computeFitRange() {
|
|
93382
93388
|
const size = this.sheetSize;
|
|
93383
93389
|
if (0 >= size.x || 0 >= size.y)
|
|
@@ -115032,6 +115038,7 @@ var Pixel;
|
|
|
115032
115038
|
this.iModel = args?.iModel;
|
|
115033
115039
|
this.tileId = args?.tileId;
|
|
115034
115040
|
this.viewAttachmentId = args?.viewAttachmentId;
|
|
115041
|
+
this.transformFromIModel = args?.transformFromIModel;
|
|
115035
115042
|
}
|
|
115036
115043
|
/** The Id of the element that produced the pixel. */
|
|
115037
115044
|
get elementId() {
|
|
@@ -115080,6 +115087,7 @@ var Pixel;
|
|
|
115080
115087
|
tileId: this.tileId,
|
|
115081
115088
|
isClassifier: this.isClassifier,
|
|
115082
115089
|
sourceIModel: this.iModel,
|
|
115090
|
+
transformFromSourceIModel: this.transformFromIModel,
|
|
115083
115091
|
viewAttachment,
|
|
115084
115092
|
};
|
|
115085
115093
|
}
|
|
@@ -118168,6 +118176,7 @@ class BranchState {
|
|
|
118168
118176
|
get textureDrape() { return this._opts.textureDrape; }
|
|
118169
118177
|
get edgeSettings() { return this._opts.edgeSettings; }
|
|
118170
118178
|
get iModel() { return this._opts.iModel; }
|
|
118179
|
+
get transformFromIModel() { return this._opts.transformFromIModel; }
|
|
118171
118180
|
get is3d() { return this._opts.is3d; }
|
|
118172
118181
|
get frustumScale() { return this._opts.frustumScale; }
|
|
118173
118182
|
get appearanceProvider() { return this._opts.appearanceProvider; }
|
|
@@ -118193,6 +118202,7 @@ class BranchState {
|
|
|
118193
118202
|
transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),
|
|
118194
118203
|
symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,
|
|
118195
118204
|
iModel: branch.iModel ?? prev.iModel,
|
|
118205
|
+
transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,
|
|
118196
118206
|
planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,
|
|
118197
118207
|
textureDrape: branch.textureDrape ?? prev.textureDrape,
|
|
118198
118208
|
clipVolume: branch.clips,
|
|
@@ -122563,15 +122573,18 @@ class Batch extends Graphic {
|
|
|
122563
122573
|
/** The following are valid only during a draw and reset afterward. */
|
|
122564
122574
|
get batchId() { return this._context.batchId; }
|
|
122565
122575
|
get batchIModel() { return this._context.iModel; }
|
|
122576
|
+
get transformFromBatchIModel() { return this._context.transformFromIModel; }
|
|
122566
122577
|
get viewAttachmentId() { return this._context.viewAttachmentId; }
|
|
122567
122578
|
setContext(batchId, branch) {
|
|
122568
122579
|
this._context.batchId = batchId;
|
|
122569
122580
|
this._context.iModel = branch.iModel;
|
|
122581
|
+
this._context.transformFromIModel = branch.transformFromIModel;
|
|
122570
122582
|
this._context.viewAttachmentId = branch.viewAttachmentId;
|
|
122571
122583
|
}
|
|
122572
122584
|
resetContext() {
|
|
122573
122585
|
this._context.batchId = 0;
|
|
122574
122586
|
this._context.iModel = undefined;
|
|
122587
|
+
this._context.transformFromIModel = undefined;
|
|
122575
122588
|
this._context.viewAttachmentId = undefined;
|
|
122576
122589
|
}
|
|
122577
122590
|
constructor(graphic, features, range, options) {
|
|
@@ -122636,6 +122649,7 @@ class Branch extends Graphic {
|
|
|
122636
122649
|
this.iModel = opts.iModel;
|
|
122637
122650
|
this.frustum = opts.frustum;
|
|
122638
122651
|
this.viewAttachmentId = opts.viewAttachmentId;
|
|
122652
|
+
this.transformFromExternalIModel = opts.transformFromIModel;
|
|
122639
122653
|
if (opts.hline)
|
|
122640
122654
|
this.edgeSettings = _EdgeSettings__WEBPACK_IMPORTED_MODULE_6__.EdgeSettings.create(opts.hline);
|
|
122641
122655
|
if (opts.classifierOrDrape instanceof _PlanarClassifier__WEBPACK_IMPORTED_MODULE_8__.PlanarClassifier)
|
|
@@ -128414,8 +128428,15 @@ class PixelBuffer {
|
|
|
128414
128428
|
const featureId = this.getFeatureId(pixelIndex);
|
|
128415
128429
|
if (undefined !== featureId) {
|
|
128416
128430
|
const batch = this._batchState.find(featureId);
|
|
128417
|
-
if (undefined !== batch)
|
|
128418
|
-
return {
|
|
128431
|
+
if (undefined !== batch) {
|
|
128432
|
+
return {
|
|
128433
|
+
featureTable: batch.featureTable,
|
|
128434
|
+
iModel: batch.batchIModel,
|
|
128435
|
+
transformFromIModel: batch.transformFromBatchIModel,
|
|
128436
|
+
tileId: batch.tileId,
|
|
128437
|
+
viewAttachmentId: batch.viewAttachmentId,
|
|
128438
|
+
};
|
|
128439
|
+
}
|
|
128419
128440
|
}
|
|
128420
128441
|
return undefined;
|
|
128421
128442
|
}
|
|
@@ -128485,10 +128506,11 @@ class PixelBuffer {
|
|
|
128485
128506
|
}
|
|
128486
128507
|
}
|
|
128487
128508
|
}
|
|
128488
|
-
let featureTable, iModel, tileId, viewAttachmentId;
|
|
128509
|
+
let featureTable, iModel, transformToIModel, tileId, viewAttachmentId;
|
|
128489
128510
|
if (undefined !== batchInfo) {
|
|
128490
128511
|
featureTable = batchInfo.featureTable;
|
|
128491
128512
|
iModel = batchInfo.iModel;
|
|
128513
|
+
transformToIModel = batchInfo.transformFromIModel;
|
|
128492
128514
|
tileId = batchInfo.tileId;
|
|
128493
128515
|
viewAttachmentId = batchInfo.viewAttachmentId;
|
|
128494
128516
|
}
|
|
@@ -128499,6 +128521,7 @@ class PixelBuffer {
|
|
|
128499
128521
|
planarity,
|
|
128500
128522
|
batchType: featureTable?.type,
|
|
128501
128523
|
iModel,
|
|
128524
|
+
transformFromIModel: transformToIModel,
|
|
128502
128525
|
tileId,
|
|
128503
128526
|
viewAttachmentId,
|
|
128504
128527
|
});
|
|
@@ -156275,6 +156298,7 @@ class TileDrawArgs {
|
|
|
156275
156298
|
this.groupNodeId = params.groupNodeId;
|
|
156276
156299
|
this.boundingRange = params.boundingRange;
|
|
156277
156300
|
this.maximumScreenSpaceError = params.maximumScreenSpaceError ?? 16; // 16 is Cesium's default.
|
|
156301
|
+
this.transformFromIModel = params.transformFromIModel;
|
|
156278
156302
|
// Do not cull tiles based on clip volume if tiles outside clip are supposed to be drawn but in a different color.
|
|
156279
156303
|
if (undefined !== clipVolume && !context.viewport.view.displayStyle.settings.clipStyle.outsideColor)
|
|
156280
156304
|
this.clipVolume = clipVolume;
|
|
@@ -156342,6 +156366,7 @@ class TileDrawArgs {
|
|
|
156342
156366
|
return undefined;
|
|
156343
156367
|
const opts = {
|
|
156344
156368
|
iModel: this.tree.iModel,
|
|
156369
|
+
transformFromIModel: this.transformFromIModel,
|
|
156345
156370
|
clipVolume: this.clipVolume,
|
|
156346
156371
|
classifierOrDrape: this.planarClassifier ?? this.drape,
|
|
156347
156372
|
appearanceProvider: this.appearanceProvider,
|
|
@@ -157597,8 +157622,11 @@ class TileTreeReference /* implements RenderMemory.Consumer */ {
|
|
|
157597
157622
|
hiddenLineSettings: this.getHiddenLineSettings(tree),
|
|
157598
157623
|
animationTransformNodeId: this.getAnimationTransformNodeId(tree),
|
|
157599
157624
|
groupNodeId: this.getGroupNodeId(tree),
|
|
157625
|
+
transformFromIModel: this.getTransformFromIModel(),
|
|
157600
157626
|
});
|
|
157601
157627
|
}
|
|
157628
|
+
/** @beta */
|
|
157629
|
+
getTransformFromIModel() { return undefined; }
|
|
157602
157630
|
/** @internal */
|
|
157603
157631
|
getAnimationTransformNodeId(_tree) {
|
|
157604
157632
|
return undefined;
|
|
@@ -194305,7 +194333,12 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
|
|
|
194305
194333
|
const otherVector0 = this._matrix.multiplyInverse(other.vector0);
|
|
194306
194334
|
const otherVector90 = this._matrix.multiplyInverse(other.vector90);
|
|
194307
194335
|
if (otherOrigin && otherVector0 && otherVector90) {
|
|
194308
|
-
return {
|
|
194336
|
+
return {
|
|
194337
|
+
center: otherOrigin,
|
|
194338
|
+
vector0: otherVector0,
|
|
194339
|
+
vector90: otherVector90,
|
|
194340
|
+
sweep: this.sweep.clone(),
|
|
194341
|
+
};
|
|
194309
194342
|
}
|
|
194310
194343
|
return undefined;
|
|
194311
194344
|
}
|
|
@@ -206810,7 +206843,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
206810
206843
|
*/
|
|
206811
206844
|
dispatchArcArcThisOrder(cpA, // arc closer to being circular
|
|
206812
206845
|
matrixA, extendA0, extendA1, cpB, matrixB, extendB0, extendB1, reversed) {
|
|
206813
|
-
// inverseA transforms arcA to its local coordinates, where it is the unit xy-circle
|
|
206846
|
+
// inverseA transforms arcA to its local coordinates, where it is the unit xy-circle
|
|
206814
206847
|
const inverseA = matrixA.inverse();
|
|
206815
206848
|
if (inverseA) {
|
|
206816
206849
|
// localB defines the arc formed by transforming arcB into the local coordinates of arcA
|
|
@@ -221085,7 +221118,8 @@ class Matrix3d {
|
|
|
221085
221118
|
static createColumns(vectorU, vectorV, vectorW, result) {
|
|
221086
221119
|
return Matrix3d.createRowValues(vectorU.x, vectorV.x, vectorW.x, vectorU.y, vectorV.y, vectorW.y, vectorU.z, vectorV.z, vectorW.z, result);
|
|
221087
221120
|
}
|
|
221088
|
-
/**
|
|
221121
|
+
/**
|
|
221122
|
+
* Create a matrix with each column's _x,y_ parts given `XAndY` and separate numeric z values.
|
|
221089
221123
|
* ```
|
|
221090
221124
|
* equation
|
|
221091
221125
|
* \begin{bmatrix}U_x & V_x & W_x \\ U_y & V_y & W_y \\ u & v & w \end{bmatrix}
|
|
@@ -225346,7 +225380,7 @@ class XYZ {
|
|
|
225346
225380
|
return defaultValue;
|
|
225347
225381
|
}
|
|
225348
225382
|
/**
|
|
225349
|
-
* Look for (in order)
|
|
225383
|
+
* Look for (in order) a y coordinate present as:
|
|
225350
225384
|
* * arg.y
|
|
225351
225385
|
* * arg[1]
|
|
225352
225386
|
*/
|
|
@@ -225358,7 +225392,7 @@ class XYZ {
|
|
|
225358
225392
|
return defaultValue;
|
|
225359
225393
|
}
|
|
225360
225394
|
/**
|
|
225361
|
-
* Look for (in order)
|
|
225395
|
+
* Look for (in order) a z coordinate present as:
|
|
225362
225396
|
* * arg.z
|
|
225363
225397
|
* * arg[2]
|
|
225364
225398
|
*/
|
|
@@ -226281,8 +226315,8 @@ class Vector3d extends XYZ {
|
|
|
226281
226315
|
* the plane of this vector and the target vector.
|
|
226282
226316
|
* @param target Second vector which defines the plane of rotation.
|
|
226283
226317
|
* @param result optional preallocated vector for result.
|
|
226284
|
-
* @returns rotated vector, or undefined if the cross product of this and
|
|
226285
|
-
*
|
|
226318
|
+
* @returns rotated vector, or undefined if the cross product of this and the target
|
|
226319
|
+
* cannot be normalized (i.e. if the target and this are colinear).
|
|
226286
226320
|
*/
|
|
226287
226321
|
rotate90Towards(target, result) {
|
|
226288
226322
|
const normal = this.crossProduct(target).normalize();
|
|
@@ -226418,7 +226452,8 @@ class Vector3d extends XYZ {
|
|
|
226418
226452
|
return this.crossProduct(vectorB, result).normalize(result);
|
|
226419
226453
|
}
|
|
226420
226454
|
/**
|
|
226421
|
-
* Compute the cross product of this vector with `vectorB
|
|
226455
|
+
* Compute the cross product of this vector with `vectorB` and normalize it.
|
|
226456
|
+
* * If length is zero, return the vector given by x, y, z.
|
|
226422
226457
|
* @param vectorB second vector of cross product
|
|
226423
226458
|
* @param x x value for default result
|
|
226424
226459
|
* @param y y value for default result
|
|
@@ -240452,49 +240487,45 @@ class AnalyticRoots {
|
|
|
240452
240487
|
// this.appendCubicRootsUnsorted(c, results);
|
|
240453
240488
|
results.sort();
|
|
240454
240489
|
}
|
|
240455
|
-
/** Compute roots of quartic
|
|
240490
|
+
/** Compute roots of quartic `c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4` */
|
|
240456
240491
|
static appendQuarticRoots(c, results) {
|
|
240457
|
-
const coffs = new Float64Array(4);
|
|
240492
|
+
const coffs = new Float64Array(4);
|
|
240458
240493
|
let u;
|
|
240459
240494
|
let v;
|
|
240460
|
-
// normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
|
|
240461
240495
|
const coffScale = new Float64Array(1);
|
|
240462
240496
|
if (!this.safeDivide(coffScale, 1.0, c[4], 0.0, 0)) {
|
|
240463
240497
|
this.appendCubicRoots(c, results);
|
|
240464
240498
|
return;
|
|
240465
240499
|
}
|
|
240500
|
+
// normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
|
|
240466
240501
|
const A = c[3] * coffScale[0];
|
|
240467
240502
|
const B = c[2] * coffScale[0];
|
|
240468
240503
|
const C = c[1] * coffScale[0];
|
|
240469
240504
|
const D = c[0] * coffScale[0];
|
|
240470
240505
|
const origin = -0.25 * A;
|
|
240471
|
-
|
|
240472
|
-
x^4 + px^2 + qx + r = 0 */
|
|
240506
|
+
// substitute x = y - A/4 to eliminate cubic term: y^4 + py^2 + qy + r = 0
|
|
240473
240507
|
const sq_A = A * A;
|
|
240474
|
-
const p = -
|
|
240508
|
+
const p = -0.375 * sq_A + B;
|
|
240475
240509
|
const q = 0.125 * sq_A * A - 0.5 * A * B + C;
|
|
240476
|
-
const r = -
|
|
240477
|
-
const
|
|
240478
|
-
if (this.isZero(r)) {
|
|
240479
|
-
// no absolute term: y(y^3 + py + q) = 0
|
|
240510
|
+
const r = -0.01171875 * sq_A * sq_A + 0.0625 * sq_A * B - 0.25 * A * C + D;
|
|
240511
|
+
const cubicSolutions = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
|
|
240512
|
+
if (this.isZero(r)) { // no absolute term: y(y^3 + py + q) = 0
|
|
240480
240513
|
coffs[0] = q;
|
|
240481
240514
|
coffs[1] = p;
|
|
240482
240515
|
coffs[2] = 0;
|
|
240483
240516
|
coffs[3] = 1;
|
|
240484
240517
|
this.appendCubicRoots(coffs, results);
|
|
240485
|
-
results.push(0);
|
|
240486
|
-
this.addConstant(origin, results);
|
|
240518
|
+
results.push(0);
|
|
240519
|
+
this.addConstant(origin, results); // apply origin
|
|
240487
240520
|
return;
|
|
240488
240521
|
}
|
|
240489
|
-
else {
|
|
240490
|
-
|
|
240491
|
-
coffs[0] = 1.0 / 2 * r * p - 1.0 / 8 * q * q;
|
|
240522
|
+
else { // solve the resolvent cubic; more info: https://en.wikipedia.org/wiki/Resolvent_cubic#Second_definition
|
|
240523
|
+
coffs[0] = 0.5 * r * p - 0.125 * q * q;
|
|
240492
240524
|
coffs[1] = -r;
|
|
240493
|
-
coffs[2] = -
|
|
240525
|
+
coffs[2] = -0.5 * p;
|
|
240494
240526
|
coffs[3] = 1;
|
|
240495
|
-
this.appendCubicRoots(coffs,
|
|
240496
|
-
const z = this.mostDistantFromMean(
|
|
240497
|
-
// ... to build two quadric equations
|
|
240527
|
+
this.appendCubicRoots(coffs, cubicSolutions);
|
|
240528
|
+
const z = this.mostDistantFromMean(cubicSolutions);
|
|
240498
240529
|
u = z * z - r;
|
|
240499
240530
|
v = 2 * z - p;
|
|
240500
240531
|
if (this.isSmallRatio(u, r)) {
|
|
@@ -240513,11 +240544,9 @@ class AnalyticRoots {
|
|
|
240513
240544
|
v = Math.sqrt(v);
|
|
240514
240545
|
}
|
|
240515
240546
|
else {
|
|
240516
|
-
for (let i = 0; i < tempStack.length; i++) {
|
|
240517
|
-
results.push(tempStack.atUncheckedIndex(i));
|
|
240518
|
-
}
|
|
240519
240547
|
return;
|
|
240520
240548
|
}
|
|
240549
|
+
// the two quadratic equations
|
|
240521
240550
|
coffs[0] = z - u;
|
|
240522
240551
|
coffs[1] = ((q < 0) ? (-v) : (v));
|
|
240523
240552
|
coffs[2] = 1;
|
|
@@ -240528,7 +240557,7 @@ class AnalyticRoots {
|
|
|
240528
240557
|
this.appendQuadraticRoots(coffs, results);
|
|
240529
240558
|
}
|
|
240530
240559
|
// substitute
|
|
240531
|
-
this.addConstant(origin, results);
|
|
240560
|
+
this.addConstant(origin, results); // apply origin
|
|
240532
240561
|
results.sort();
|
|
240533
240562
|
this.improveRoots(c, 4, results, true);
|
|
240534
240563
|
return;
|
|
@@ -240632,19 +240661,17 @@ class PowerPolynomial {
|
|
|
240632
240661
|
return this.degreeKnownEvaluate(coff, degree, x);
|
|
240633
240662
|
}
|
|
240634
240663
|
/**
|
|
240635
|
-
*
|
|
240636
|
-
* *
|
|
240637
|
-
* * Returns degree of result as determined by comparing trailing coefficients to zero
|
|
240664
|
+
* Accumulate `coffQ*scaleQ` into `coffP`.
|
|
240665
|
+
* * The length of `coffP` must be at least length of `coffQ`.
|
|
240666
|
+
* * Returns degree of result as determined by comparing trailing coefficients to zero.
|
|
240638
240667
|
*/
|
|
240639
240668
|
static accumulate(coffP, coffQ, scaleQ) {
|
|
240640
240669
|
let degreeP = coffP.length - 1;
|
|
240641
240670
|
const degreeQ = coffQ.length - 1;
|
|
240642
|
-
for (let i = 0; i <= degreeQ; i++)
|
|
240671
|
+
for (let i = 0; i <= degreeQ; i++)
|
|
240643
240672
|
coffP[i] += scaleQ * coffQ[i];
|
|
240644
|
-
|
|
240645
|
-
while (degreeP >= 0 && coffP[degreeP] === 0.0) {
|
|
240673
|
+
while (degreeP >= 0 && coffP[degreeP] === 0.0)
|
|
240646
240674
|
degreeP--;
|
|
240647
|
-
}
|
|
240648
240675
|
return degreeP;
|
|
240649
240676
|
}
|
|
240650
240677
|
/** Zero all coefficients */
|
|
@@ -240660,17 +240687,18 @@ class PowerPolynomial {
|
|
|
240660
240687
|
*/
|
|
240661
240688
|
class TrigPolynomial {
|
|
240662
240689
|
/**
|
|
240663
|
-
*
|
|
240664
|
-
*
|
|
240665
|
-
*
|
|
240666
|
-
*
|
|
240667
|
-
*
|
|
240668
|
-
*
|
|
240669
|
-
*
|
|
240670
|
-
*
|
|
240671
|
-
*
|
|
240672
|
-
*
|
|
240673
|
-
*
|
|
240690
|
+
* Solve a polynomial created from trigonometric condition using Trig.S, Trig.C, Trig.W.
|
|
240691
|
+
* * Polynomial is of degree 4:
|
|
240692
|
+
* `coff[0] + coff[1] * t + coff[2] * t^2 + coff[3] * t^3 + coff[4] * t^4`
|
|
240693
|
+
* * Solution logic includes inferring angular roots corresponding zero leading coefficients
|
|
240694
|
+
* (roots at infinity).
|
|
240695
|
+
* @param coff coefficients.
|
|
240696
|
+
* @param nominalDegree degree of the polynomial under most complex root case. If there are
|
|
240697
|
+
* any zero coefficients up to this degree, a single root "at infinity" is recorded as its
|
|
240698
|
+
* corresponding angular parameter at negative pi/2.
|
|
240699
|
+
* @param referenceCoefficient a number which represents the size of coefficients at various
|
|
240700
|
+
* stages of computation. A small fraction of this will be used as a zero tolerance
|
|
240701
|
+
* @param radians roots are placed here.
|
|
240674
240702
|
* @return false if equation is all zeros. This usually means any angle is a solution.
|
|
240675
240703
|
*/
|
|
240676
240704
|
static solveAngles(coff, nominalDegree, referenceCoefficient, radians) {
|
|
@@ -240680,27 +240708,21 @@ class TrigPolynomial {
|
|
|
240680
240708
|
const relTol = this._smallAngle;
|
|
240681
240709
|
for (let i = 0; i <= nominalDegree; i++) {
|
|
240682
240710
|
a = Math.abs(coff[i]);
|
|
240683
|
-
if (a > maxCoff)
|
|
240711
|
+
if (a > maxCoff)
|
|
240684
240712
|
maxCoff = a;
|
|
240685
|
-
}
|
|
240686
240713
|
}
|
|
240687
240714
|
const coffTol = relTol * maxCoff;
|
|
240688
240715
|
let degree = nominalDegree;
|
|
240689
|
-
while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
|
|
240716
|
+
while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
|
|
240690
240717
|
degree--;
|
|
240691
|
-
}
|
|
240692
|
-
// let status = false;
|
|
240693
240718
|
const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
|
|
240694
240719
|
if (degree === -1) {
|
|
240695
|
-
// Umm.
|
|
240696
|
-
// status = false;
|
|
240720
|
+
// Umm. Dunno. Nothing there.
|
|
240697
240721
|
}
|
|
240698
240722
|
else {
|
|
240699
|
-
// status = true;
|
|
240700
240723
|
if (degree === 0) {
|
|
240701
240724
|
// p(t) is a nonzero constant
|
|
240702
240725
|
// No roots, but not degenerate.
|
|
240703
|
-
// status = true;
|
|
240704
240726
|
}
|
|
240705
240727
|
else if (degree === 1) {
|
|
240706
240728
|
// p(t) = coff[1] * t + coff[0]
|
|
@@ -240716,13 +240738,12 @@ class TrigPolynomial {
|
|
|
240716
240738
|
AnalyticRoots.appendQuarticRoots(coff, roots);
|
|
240717
240739
|
}
|
|
240718
240740
|
else {
|
|
240719
|
-
// TODO:
|
|
240720
|
-
// status = false;
|
|
240741
|
+
// TODO: WORK WITH BEZIER SOLVER
|
|
240721
240742
|
}
|
|
240722
240743
|
if (roots.length > 0) {
|
|
240723
240744
|
// Each solution t represents an angle with
|
|
240724
|
-
//
|
|
240725
|
-
// Division by W has no effect on
|
|
240745
|
+
// Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
|
|
240746
|
+
// Division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
|
|
240726
240747
|
for (let i = 0; i < roots.length; i++) {
|
|
240727
240748
|
const ss = PowerPolynomial.evaluate(this.S, roots.atUncheckedIndex(i));
|
|
240728
240749
|
const cc = PowerPolynomial.evaluate(this.C, roots.atUncheckedIndex(i));
|
|
@@ -240731,55 +240752,56 @@ class TrigPolynomial {
|
|
|
240731
240752
|
// Each leading zero at the front of the coefficients corresponds to a root at -PI/2.
|
|
240732
240753
|
// Only make one entry....
|
|
240733
240754
|
// for (int i = degree; i < nominalDegree; i++)
|
|
240734
|
-
if (degree < nominalDegree)
|
|
240755
|
+
if (degree < nominalDegree)
|
|
240735
240756
|
radians.push(-0.5 * Math.PI);
|
|
240736
|
-
}
|
|
240737
240757
|
}
|
|
240738
240758
|
}
|
|
240739
240759
|
return radians.length > 0;
|
|
240740
240760
|
}
|
|
240741
240761
|
/**
|
|
240742
240762
|
* Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
|
|
240743
|
-
* `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y +
|
|
240763
|
+
* `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a = 0`
|
|
240744
240764
|
* Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
|
|
240745
|
-
* @param axx
|
|
240746
|
-
* @param axy
|
|
240747
|
-
* @param ayy
|
|
240748
|
-
* @param ax
|
|
240749
|
-
* @param ay
|
|
240750
|
-
* @param
|
|
240751
|
-
* @param radians
|
|
240752
|
-
*/
|
|
240753
|
-
static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay,
|
|
240754
|
-
const
|
|
240755
|
-
PowerPolynomial.zero(
|
|
240765
|
+
* @param axx coefficient of x^2
|
|
240766
|
+
* @param axy coefficient of xy
|
|
240767
|
+
* @param ayy coefficient of y^2
|
|
240768
|
+
* @param ax coefficient of x
|
|
240769
|
+
* @param ay coefficient of y
|
|
240770
|
+
* @param a constant coefficient
|
|
240771
|
+
* @param radians solution angles
|
|
240772
|
+
*/
|
|
240773
|
+
static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a, radians) {
|
|
240774
|
+
const coffs = new Float64Array(5);
|
|
240775
|
+
PowerPolynomial.zero(coffs);
|
|
240756
240776
|
let degree;
|
|
240757
|
-
|
|
240758
|
-
|
|
240759
|
-
|
|
240760
|
-
PowerPolynomial.accumulate(
|
|
240761
|
-
PowerPolynomial.accumulate(
|
|
240762
|
-
PowerPolynomial.accumulate(
|
|
240763
|
-
PowerPolynomial.accumulate(
|
|
240777
|
+
// see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
|
|
240778
|
+
// on how coffs (coefficient array) is built.
|
|
240779
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(ax, ay, a)) {
|
|
240780
|
+
PowerPolynomial.accumulate(coffs, this.CW, ax);
|
|
240781
|
+
PowerPolynomial.accumulate(coffs, this.SW, ay);
|
|
240782
|
+
PowerPolynomial.accumulate(coffs, this.WW, a);
|
|
240783
|
+
PowerPolynomial.accumulate(coffs, this.SS, ayy);
|
|
240784
|
+
PowerPolynomial.accumulate(coffs, this.CC, axx);
|
|
240785
|
+
PowerPolynomial.accumulate(coffs, this.SC, axy);
|
|
240764
240786
|
degree = 4;
|
|
240765
240787
|
}
|
|
240766
240788
|
else {
|
|
240767
|
-
PowerPolynomial.accumulate(
|
|
240768
|
-
PowerPolynomial.accumulate(
|
|
240769
|
-
PowerPolynomial.accumulate(
|
|
240789
|
+
PowerPolynomial.accumulate(coffs, this.C, ax);
|
|
240790
|
+
PowerPolynomial.accumulate(coffs, this.S, ay);
|
|
240791
|
+
PowerPolynomial.accumulate(coffs, this.W, a);
|
|
240770
240792
|
degree = 2;
|
|
240771
240793
|
}
|
|
240772
|
-
|
|
240773
|
-
|
|
240774
|
-
const b = this.solveAngles(Coffs, degree, maxCoff, radians);
|
|
240794
|
+
const maxCoff = Math.max(Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a));
|
|
240795
|
+
const b = this.solveAngles(coffs, degree, maxCoff, radians);
|
|
240775
240796
|
/*
|
|
240776
240797
|
for (const theta of angles) {
|
|
240777
240798
|
const c = theta.cos();
|
|
240778
240799
|
const s = theta.sin();
|
|
240779
240800
|
GeometryCoreTestIO.consoleLog({
|
|
240780
240801
|
angle: theta, co: c, si: s,
|
|
240781
|
-
f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s +
|
|
240782
|
-
|
|
240802
|
+
f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a,
|
|
240803
|
+
});
|
|
240804
|
+
} */
|
|
240783
240805
|
return b;
|
|
240784
240806
|
}
|
|
240785
240807
|
/**
|
|
@@ -240814,7 +240836,7 @@ class TrigPolynomial {
|
|
|
240814
240836
|
return status;
|
|
240815
240837
|
}
|
|
240816
240838
|
/**
|
|
240817
|
-
* Compute intersections of unit circle `x^2 + y^2 = w^2` with the ellipse
|
|
240839
|
+
* Compute intersections of unit circle `x^2 + y^2 = w^2` (in homogeneous coordinates) with the ellipse
|
|
240818
240840
|
* `F(t) = (cx + ux cos(t) + vx sin(t), cy + uy cos(t) + vy sin(t)) / (cw + uw cos(t) + vw sin(t))`.
|
|
240819
240841
|
* @param cx center x
|
|
240820
240842
|
* @param cy center y
|
|
@@ -240830,13 +240852,15 @@ class TrigPolynomial {
|
|
|
240830
240852
|
*/
|
|
240831
240853
|
static solveUnitCircleHomogeneousEllipseIntersection(cx, cy, cw, ux, uy, uw, vx, vy, vw, ellipseRadians, circleRadians) {
|
|
240832
240854
|
circleRadians.length = 0;
|
|
240855
|
+
// see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
|
|
240856
|
+
// on how below variables are derived.
|
|
240833
240857
|
const acc = ux * ux + uy * uy - uw * uw;
|
|
240834
240858
|
const acs = 2.0 * (ux * vx + uy * vy - uw * vw);
|
|
240835
240859
|
const ass = vx * vx + vy * vy - vw * vw;
|
|
240836
240860
|
const ac = 2.0 * (ux * cx + uy * cy - uw * cw);
|
|
240837
|
-
const
|
|
240861
|
+
const as = 2.0 * (vx * cx + vy * cy - vw * cw);
|
|
240838
240862
|
const a = cx * cx + cy * cy - cw * cw;
|
|
240839
|
-
const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac,
|
|
240863
|
+
const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, as, a, ellipseRadians);
|
|
240840
240864
|
for (const radians of ellipseRadians) {
|
|
240841
240865
|
const cc = Math.cos(radians);
|
|
240842
240866
|
const ss = Math.sin(radians);
|
|
@@ -240849,25 +240873,27 @@ class TrigPolynomial {
|
|
|
240849
240873
|
}
|
|
240850
240874
|
// tolerance for small angle decision.
|
|
240851
240875
|
TrigPolynomial._smallAngle = 1.0e-11;
|
|
240852
|
-
|
|
240876
|
+
// see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
|
|
240877
|
+
// on how below variables are derived.
|
|
240878
|
+
/** Standard Basis coefficients for the numerator of the y-coordinate y(t) = S(t)/W(t) in the rational semicircle parameterization. */
|
|
240853
240879
|
TrigPolynomial.S = Float64Array.from([0.0, 2.0, -2.0]);
|
|
240854
|
-
/** Standard Basis coefficients for rational
|
|
240880
|
+
/** Standard Basis coefficients for the numerator of the x-coordinate x(t) = C(t)/W(t) in the rational semicircle parameterization. */
|
|
240855
240881
|
TrigPolynomial.C = Float64Array.from([1.0, -2.0]);
|
|
240856
|
-
/** Standard Basis coefficients for rational
|
|
240882
|
+
/** Standard Basis coefficients for the denominator of x(t) and y(t) in the rational semicircle parameterization. */
|
|
240857
240883
|
TrigPolynomial.W = Float64Array.from([1.0, -2.0, 2.0]);
|
|
240858
|
-
/** Standard Basis coefficients for
|
|
240884
|
+
/** Standard Basis coefficients for C(t) * W(t). */
|
|
240859
240885
|
TrigPolynomial.CW = Float64Array.from([1.0, -4.0, 6.0, -4.0]);
|
|
240860
|
-
/** Standard Basis coefficients for
|
|
240886
|
+
/** Standard Basis coefficients for S(t) * W(t). */
|
|
240861
240887
|
TrigPolynomial.SW = Float64Array.from([0.0, 2.0, -6.0, 8.0, -4.0]);
|
|
240862
|
-
/** Standard Basis coefficients for
|
|
240888
|
+
/** Standard Basis coefficients for S(t) * C(t). */
|
|
240863
240889
|
TrigPolynomial.SC = Float64Array.from([0.0, 2.0, -6.0, 4.0]);
|
|
240864
|
-
/** Standard Basis coefficients for
|
|
240890
|
+
/** Standard Basis coefficients for S(t) * S(t). */
|
|
240865
240891
|
TrigPolynomial.SS = Float64Array.from([0.0, 0.0, 4.0, -8.0, 4.0]);
|
|
240866
|
-
/** Standard Basis coefficients for
|
|
240892
|
+
/** Standard Basis coefficients for C(t) * C(t). */
|
|
240867
240893
|
TrigPolynomial.CC = Float64Array.from([1.0, -4.0, 4.0]);
|
|
240868
|
-
/** Standard Basis coefficients for
|
|
240894
|
+
/** Standard Basis coefficients for W(t) * W(t). */
|
|
240869
240895
|
TrigPolynomial.WW = Float64Array.from([1.0, -4.0, 8.0, -8.0, 4.0]);
|
|
240870
|
-
/** Standard Basis coefficients for (
|
|
240896
|
+
/** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
|
|
240871
240897
|
TrigPolynomial.CCminusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]);
|
|
240872
240898
|
TrigPolynomial._coefficientRelTol = 1.0e-12;
|
|
240873
240899
|
/**
|
|
@@ -291762,7 +291788,7 @@ class BaseFormat {
|
|
|
291762
291788
|
set azimuthBaseUnit(azimuthBaseUnit) { this._azimuthBaseUnit = azimuthBaseUnit; }
|
|
291763
291789
|
get azimuthCounterClockwise() { return this._azimuthCounterClockwise; }
|
|
291764
291790
|
set azimuthCounterClockwise(azimuthCounterClockwise) { this._azimuthCounterClockwise = azimuthCounterClockwise; }
|
|
291765
|
-
get
|
|
291791
|
+
get azimuthClockwiseOrDefault() { return !this._azimuthCounterClockwise; }
|
|
291766
291792
|
get revolutionUnit() { return this._revolutionUnit; }
|
|
291767
291793
|
set revolutionUnit(revolutionUnit) { this._revolutionUnit = revolutionUnit; }
|
|
291768
291794
|
/** 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. */
|
|
@@ -292882,35 +292908,35 @@ class Formatter {
|
|
|
292882
292908
|
}
|
|
292883
292909
|
let prefix, suffix;
|
|
292884
292910
|
// Quadrants are
|
|
292885
|
-
//
|
|
292886
|
-
// 2
|
|
292887
|
-
// For quadrants
|
|
292888
|
-
if (quadrant ===
|
|
292911
|
+
// 3 0
|
|
292912
|
+
// 2 1
|
|
292913
|
+
// For quadrants 1 and 3 we have to subtract the angle from quarterRevolution degrees because they go counter-clockwise
|
|
292914
|
+
if (quadrant === 1 || quadrant === 3)
|
|
292889
292915
|
magnitude = quarterRevolution - magnitude;
|
|
292890
292916
|
// TODO: at some point we will want to open this for localization, in the first release it's going to be hard coded
|
|
292891
|
-
if (quadrant === 0 || quadrant ===
|
|
292917
|
+
if (quadrant === 0 || quadrant === 3)
|
|
292892
292918
|
prefix = "N";
|
|
292893
|
-
if (quadrant === 2 || quadrant ===
|
|
292919
|
+
if (quadrant === 2 || quadrant === 1)
|
|
292894
292920
|
prefix = "S";
|
|
292895
|
-
if (quadrant === 0 || quadrant ===
|
|
292921
|
+
if (quadrant === 0 || quadrant === 1)
|
|
292896
292922
|
suffix = "E";
|
|
292897
|
-
if (quadrant ===
|
|
292923
|
+
if (quadrant === 3 || quadrant === 2)
|
|
292898
292924
|
suffix = "W";
|
|
292899
|
-
// special case, if in quadrant 2 and value is very
|
|
292925
|
+
// 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
|
|
292900
292926
|
if (quadrant === 2 && spec.unitConversions.length > 0) {
|
|
292901
292927
|
// To determine if value is small, we need to convert it to the smallest unit presented and use the provided precision on it
|
|
292902
292928
|
const unitConversion = spec.unitConversions[spec.unitConversions.length - 1].conversion;
|
|
292903
|
-
const
|
|
292929
|
+
const smallestFormattedDelta = (0,_Quantity__WEBPACK_IMPORTED_MODULE_3__.applyConversion)((quarterRevolution - magnitude), unitConversion) + this.FPV_MINTHRESHOLD;
|
|
292904
292930
|
const precisionScale = Math.pow(10.0, spec.format.precision);
|
|
292905
|
-
const floor = Math.floor((
|
|
292931
|
+
const floor = Math.floor((smallestFormattedDelta) * precisionScale + FPV_ROUNDFACTOR) / precisionScale;
|
|
292906
292932
|
if (floor === 0) {
|
|
292907
|
-
|
|
292933
|
+
prefix = "N";
|
|
292908
292934
|
}
|
|
292909
292935
|
}
|
|
292910
292936
|
return { magnitude, prefix, suffix: suffix };
|
|
292911
292937
|
}
|
|
292912
292938
|
if (type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth) {
|
|
292913
|
-
let azimuthBase =
|
|
292939
|
+
let azimuthBase = 0; // default base is North
|
|
292914
292940
|
if (spec.format.azimuthBase !== undefined) {
|
|
292915
292941
|
if (spec.azimuthBaseConversion === undefined) {
|
|
292916
292942
|
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.`);
|
|
@@ -292922,13 +292948,13 @@ class Formatter {
|
|
|
292922
292948
|
}
|
|
292923
292949
|
azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
|
|
292924
292950
|
}
|
|
292925
|
-
if (azimuthBase ===
|
|
292926
|
-
return { magnitude }; // no conversion necessary, the input is already using the result parameters (
|
|
292951
|
+
if (azimuthBase === 0.0 && spec.format.azimuthClockwiseOrDefault)
|
|
292952
|
+
return { magnitude }; // no conversion necessary, the input is already using the result parameters (north base and clockwise)
|
|
292927
292953
|
// subtract the base from the actual value
|
|
292928
292954
|
magnitude -= azimuthBase;
|
|
292929
|
-
if (spec.format.
|
|
292955
|
+
if (spec.format.azimuthClockwiseOrDefault)
|
|
292930
292956
|
return { magnitude: this.normalizeAngle(magnitude, revolution) };
|
|
292931
|
-
// turn it into a clockwise angle
|
|
292957
|
+
// turn it into a counter-clockwise angle
|
|
292932
292958
|
magnitude = revolution - magnitude;
|
|
292933
292959
|
// normalize the result as it may have become negative or exceed the revolution
|
|
292934
292960
|
magnitude = this.normalizeAngle(magnitude, revolution);
|
|
@@ -293845,18 +293871,15 @@ class Parser {
|
|
|
293845
293871
|
// we have to turn the value into an east base and counter clockwise (NW and SE are already counter clockwise)
|
|
293846
293872
|
if (matchedPrefix === DirectionLabel.North) {
|
|
293847
293873
|
if (matchedSuffix === DirectionLabel.West) {
|
|
293848
|
-
magnitude =
|
|
293849
|
-
}
|
|
293850
|
-
else if (matchedSuffix === DirectionLabel.East) {
|
|
293851
|
-
magnitude = quarterRevolution - magnitude;
|
|
293874
|
+
magnitude = revolution - magnitude;
|
|
293852
293875
|
}
|
|
293853
293876
|
}
|
|
293854
293877
|
else if (matchedPrefix === DirectionLabel.South) {
|
|
293855
293878
|
if (matchedSuffix === DirectionLabel.West) {
|
|
293856
|
-
magnitude = (
|
|
293879
|
+
magnitude = (2 * quarterRevolution) + magnitude;
|
|
293857
293880
|
}
|
|
293858
293881
|
else if (matchedSuffix === DirectionLabel.East) {
|
|
293859
|
-
magnitude = (
|
|
293882
|
+
magnitude = (2 * quarterRevolution) - magnitude;
|
|
293860
293883
|
}
|
|
293861
293884
|
}
|
|
293862
293885
|
return { ok: true, value: magnitude };
|
|
@@ -293869,8 +293892,7 @@ class Parser {
|
|
|
293869
293892
|
let magnitude = parsedResult.value;
|
|
293870
293893
|
const revolution = this.getRevolution(spec);
|
|
293871
293894
|
magnitude = this.normalizeAngle(magnitude, revolution);
|
|
293872
|
-
|
|
293873
|
-
let azimuthBase = quarterRevolution;
|
|
293895
|
+
let azimuthBase = 0.0;
|
|
293874
293896
|
if (spec.format.azimuthBase !== undefined) {
|
|
293875
293897
|
if (spec.azimuthBaseConversion === undefined) {
|
|
293876
293898
|
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.`);
|
|
@@ -293882,12 +293904,12 @@ class Parser {
|
|
|
293882
293904
|
}
|
|
293883
293905
|
azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
|
|
293884
293906
|
}
|
|
293885
|
-
const
|
|
293886
|
-
if (
|
|
293907
|
+
const inputIsClockwise = spec.format.azimuthClockwiseOrDefault;
|
|
293908
|
+
if (inputIsClockwise && azimuthBase === 0) {
|
|
293887
293909
|
// parsed result already has the same base and orientation as our desired output
|
|
293888
293910
|
return parsedResult;
|
|
293889
293911
|
}
|
|
293890
|
-
if (
|
|
293912
|
+
if (inputIsClockwise)
|
|
293891
293913
|
magnitude = azimuthBase + magnitude;
|
|
293892
293914
|
else
|
|
293893
293915
|
magnitude = azimuthBase - magnitude;
|
|
@@ -295425,7 +295447,7 @@ class TestContext {
|
|
|
295425
295447
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
295426
295448
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
295427
295449
|
await core_frontend_1.NoRenderApp.startup({
|
|
295428
|
-
applicationVersion: "4.10.0-dev.
|
|
295450
|
+
applicationVersion: "4.10.0-dev.14",
|
|
295429
295451
|
applicationId: this.settings.gprid,
|
|
295430
295452
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
295431
295453
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -320294,7 +320316,7 @@ function __disposeResources(env) {
|
|
|
320294
320316
|
/***/ ((module) => {
|
|
320295
320317
|
|
|
320296
320318
|
"use strict";
|
|
320297
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.
|
|
320319
|
+
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"}}');
|
|
320298
320320
|
|
|
320299
320321
|
/***/ }),
|
|
320300
320322
|
|