@itwin/rpcinterface-full-stack-tests 5.13.0-dev.3 → 5.13.0-dev.5
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/bundled-tests.js +207 -134
- package/lib/dist/bundled-tests.js.map +1 -1
- package/package.json +15 -15
|
@@ -227374,7 +227374,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_14__.CurvePrimitive
|
|
|
227374
227374
|
}
|
|
227375
227375
|
/**
|
|
227376
227376
|
* Returns a (high accuracy) range of the curve between fractional positions.
|
|
227377
|
-
* * Default implementation returns
|
|
227377
|
+
* * Default implementation returns the range of the curve from clonePartialCurve.
|
|
227378
227378
|
*/
|
|
227379
227379
|
rangeBetweenFractions(fraction0, fraction1, transform) {
|
|
227380
227380
|
const sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(this.sweep.fractionToRadians(fraction0), this.sweep.fractionToRadians(fraction1));
|
|
@@ -230289,6 +230289,7 @@ class CurveFactory {
|
|
|
230289
230289
|
const closureTolerance = haveBoolean ? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance : allowCuspOrOptions.closureTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance;
|
|
230290
230290
|
const cuspTolerance = haveBoolean ? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance : allowCuspOrOptions.cuspTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance;
|
|
230291
230291
|
const cuspSegments = haveBoolean ? true : allowCuspOrOptions.cuspSegments ?? true;
|
|
230292
|
+
const simplifyPath = haveBoolean ? false : allowCuspOrOptions.simplifyPath ?? false;
|
|
230292
230293
|
let n = points.length;
|
|
230293
230294
|
if (filletClosure && points.almostEqualIndexIndex(0, n - 1, closureTolerance))
|
|
230294
230295
|
n--; // ignore closure point
|
|
@@ -230362,7 +230363,16 @@ class CurveFactory {
|
|
|
230362
230363
|
this.addPartialSegment(path, cuspSegments, b0.point, b1.point, b0.fraction12, 1 - b1.fraction10);
|
|
230363
230364
|
}
|
|
230364
230365
|
}
|
|
230365
|
-
|
|
230366
|
+
if (!simplifyPath)
|
|
230367
|
+
return path;
|
|
230368
|
+
// remove tiny children, merge adjacent arcs
|
|
230369
|
+
const distTol2 = closureTolerance * closureTolerance;
|
|
230370
|
+
const sufficientlyLargeChildren = path.children.filter((c) => c.range().diagonalLengthSquared(true) >= distTol2);
|
|
230371
|
+
if (sufficientlyLargeChildren.length === 0)
|
|
230372
|
+
return undefined;
|
|
230373
|
+
const simplerPath = _Path__WEBPACK_IMPORTED_MODULE_24__.Path.create(...sufficientlyLargeChildren);
|
|
230374
|
+
_RegionOps__WEBPACK_IMPORTED_MODULE_25__.RegionOps.consolidateAdjacentPrimitives(simplerPath, { consolidateLoopSeam: true, duplicatePointTolerance: closureTolerance, colinearPointTolerance: closureTolerance });
|
|
230375
|
+
return simplerPath;
|
|
230366
230376
|
}
|
|
230367
230377
|
/** If an open filletedLineString starts/ends with an arc, add a zero-length line segment to its start/end. */
|
|
230368
230378
|
static validateOpenPathStartEnd(filletedLineString) {
|
|
@@ -233186,6 +233196,13 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_11__.CurveP
|
|
|
233186
233196
|
}
|
|
233187
233197
|
return this._point1.clone();
|
|
233188
233198
|
}
|
|
233199
|
+
/**
|
|
233200
|
+
* Whether the start and end points are defined and within tolerance.
|
|
233201
|
+
* * Always `false` for `LineSegment3d`.
|
|
233202
|
+
*/
|
|
233203
|
+
isPhysicallyClosedCurve(_tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance, _xyOnly = false) {
|
|
233204
|
+
return false;
|
|
233205
|
+
}
|
|
233189
233206
|
/** Return the point and derivative vector at fractional position along the line segment. */
|
|
233190
233207
|
fractionToPointAndDerivative(fraction, result) {
|
|
233191
233208
|
result = result ? result : _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.createZero();
|
|
@@ -233542,7 +233559,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_11__.CurveP
|
|
|
233542
233559
|
}
|
|
233543
233560
|
/**
|
|
233544
233561
|
* Returns a (high accuracy) range of the curve between fractional positions
|
|
233545
|
-
* * Default implementation returns
|
|
233562
|
+
* * Default implementation returns the range of the curve from clonePartialCurve
|
|
233546
233563
|
*/
|
|
233547
233564
|
rangeBetweenFractions(fraction0, fraction1, transform) {
|
|
233548
233565
|
// (This is cheap -- don't bother testing for fraction0===fraction1)
|
|
@@ -236085,7 +236102,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
236085
236102
|
/* harmony import */ var _CurveFactory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
|
|
236086
236103
|
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
236087
236104
|
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
236088
|
-
/* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
|
|
236089
236105
|
/*---------------------------------------------------------------------------------------------
|
|
236090
236106
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
236091
236107
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -236101,17 +236117,26 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
236101
236117
|
|
|
236102
236118
|
|
|
236103
236119
|
|
|
236104
|
-
|
|
236105
236120
|
/**
|
|
236106
|
-
*
|
|
236121
|
+
* Implementation class for ConsolidateAdjacentCurvePrimitives.
|
|
236107
236122
|
*
|
|
236108
236123
|
* @internal
|
|
236109
236124
|
*/
|
|
236110
236125
|
class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__.NullGeometryHandler {
|
|
236111
|
-
|
|
236126
|
+
_consolidateLinearGeometry;
|
|
236127
|
+
_consolidateCompatibleArcs;
|
|
236128
|
+
_consolidateLoopSeam;
|
|
236129
|
+
_disableLinearCompression;
|
|
236130
|
+
_duplicatePointTolerance;
|
|
236131
|
+
_colinearPointTolerance;
|
|
236112
236132
|
constructor(options) {
|
|
236113
236133
|
super();
|
|
236114
|
-
this.
|
|
236134
|
+
this._consolidateLinearGeometry = options?.consolidateLinearGeometry ?? true;
|
|
236135
|
+
this._consolidateCompatibleArcs = options?.consolidateCompatibleArcs ?? true;
|
|
236136
|
+
this._consolidateLoopSeam = options?.consolidateLoopSeam ?? false;
|
|
236137
|
+
this._disableLinearCompression = options?.disableLinearCompression ?? false;
|
|
236138
|
+
this._duplicatePointTolerance = options?.duplicatePointTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
|
|
236139
|
+
this._colinearPointTolerance = options?.colinearPointTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
|
|
236115
236140
|
}
|
|
236116
236141
|
/** look for adjacent compatible primitives in a path or loop. */
|
|
236117
236142
|
handleCurveChain(g) {
|
|
@@ -236123,7 +236148,7 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
236123
236148
|
// numAccept is the number of children accepted (contiguously at front of children)
|
|
236124
236149
|
for (let i0 = 0; i0 < numOriginal;) {
|
|
236125
236150
|
const basePrimitive = g.children[i0];
|
|
236126
|
-
if (this.
|
|
236151
|
+
if (this._consolidateLinearGeometry && (basePrimitive instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || basePrimitive instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d)) {
|
|
236127
236152
|
points.length = 0;
|
|
236128
236153
|
let i1 = i0;
|
|
236129
236154
|
// on exit, i1 is beyond the block of linear primitives . ..
|
|
@@ -236146,16 +236171,16 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
236146
236171
|
if (points.length <= 1) {
|
|
236147
236172
|
g.children[numAccept++] = basePrimitive;
|
|
236148
236173
|
}
|
|
236149
|
-
else if (this.
|
|
236174
|
+
else if (this._disableLinearCompression) {
|
|
236150
236175
|
const pointsDeduped = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFloatingPoint); // remove only exact duplicate interior points
|
|
236151
236176
|
g.children[numAccept++] = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.createPoints(pointsDeduped);
|
|
236152
236177
|
}
|
|
236153
236178
|
else { // compress points
|
|
236154
|
-
const compressedPointsA = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, this.
|
|
236155
|
-
const compressedPointsB = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressByChordError(compressedPointsA, this.
|
|
236156
|
-
if (i0 === 0 && i1 === numOriginal && this.
|
|
236179
|
+
const compressedPointsA = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, this._duplicatePointTolerance);
|
|
236180
|
+
const compressedPointsB = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressByChordError(compressedPointsA, this._colinearPointTolerance, true);
|
|
236181
|
+
if (i0 === 0 && i1 === numOriginal && this._consolidateLoopSeam) {
|
|
236157
236182
|
// points is the entire curve: if the curve is physically closed and end segments are colinear, re/move the seam
|
|
236158
|
-
_geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_2__.PolylineCompressionContext.compressColinearWrapInPlace(compressedPointsB, this.
|
|
236183
|
+
_geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_2__.PolylineCompressionContext.compressColinearWrapInPlace(compressedPointsB, this._duplicatePointTolerance, this._colinearPointTolerance);
|
|
236159
236184
|
}
|
|
236160
236185
|
if (compressedPointsB.length < 2) {
|
|
236161
236186
|
// Collapsed to a point? Make a single point linestring
|
|
@@ -236170,14 +236195,14 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
236170
236195
|
}
|
|
236171
236196
|
i0 = i1;
|
|
236172
236197
|
}
|
|
236173
|
-
else if (this.
|
|
236198
|
+
else if (this._consolidateCompatibleArcs && basePrimitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
236174
236199
|
// subsume subsequent arcs into basePrimitive.
|
|
236175
236200
|
// always accept base primitive.
|
|
236176
236201
|
for (; ++i0 < g.children.length;) {
|
|
236177
236202
|
const nextPrimitive = g.children[i0];
|
|
236178
236203
|
if (!(nextPrimitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d))
|
|
236179
236204
|
break;
|
|
236180
|
-
if (!_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(basePrimitive, nextPrimitive, false, this.
|
|
236205
|
+
if (!_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(basePrimitive, nextPrimitive, false, this._duplicatePointTolerance))
|
|
236181
236206
|
break;
|
|
236182
236207
|
}
|
|
236183
236208
|
// i0 has already advanced
|
|
@@ -236195,11 +236220,11 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
236195
236220
|
}
|
|
236196
236221
|
handleLoop(g) {
|
|
236197
236222
|
this.handleCurveChain(g);
|
|
236198
|
-
if (g.children.length > 1 && this.
|
|
236223
|
+
if (g.children.length > 1 && this._consolidateLoopSeam) {
|
|
236199
236224
|
const lastChild = g.children[g.children.length - 1];
|
|
236200
236225
|
const firstChild = g.children[0];
|
|
236201
236226
|
if ((lastChild instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || lastChild instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) && (firstChild instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || firstChild instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d)) {
|
|
236202
|
-
if (this.
|
|
236227
|
+
if (this._consolidateLinearGeometry && !this._disableLinearCompression) {
|
|
236203
236228
|
const lastPoints = lastChild.points;
|
|
236204
236229
|
lastPoints.pop(); // the original start point survives as an interior point in the new first primitive
|
|
236205
236230
|
g.children[0] = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.createPoints([...lastPoints, ...firstChild.points]);
|
|
@@ -236207,8 +236232,8 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
236207
236232
|
}
|
|
236208
236233
|
}
|
|
236209
236234
|
else if (lastChild instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d && firstChild instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
236210
|
-
if (this.
|
|
236211
|
-
if (_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(lastChild, firstChild, false, this.
|
|
236235
|
+
if (this._consolidateCompatibleArcs) {
|
|
236236
|
+
if (_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(lastChild, firstChild, false, this._duplicatePointTolerance)) {
|
|
236212
236237
|
g.children[0] = lastChild;
|
|
236213
236238
|
g.children.pop();
|
|
236214
236239
|
}
|
|
@@ -236911,9 +236936,7 @@ class PlanarSubdivision {
|
|
|
236911
236936
|
else
|
|
236912
236937
|
face.announceEdgesInFace(addEdgeCurve);
|
|
236913
236938
|
if (consolidate) {
|
|
236914
|
-
|
|
236915
|
-
consolidateOptions.consolidateLoopSeam = true;
|
|
236916
|
-
_RegionOps__WEBPACK_IMPORTED_MODULE_12__.RegionOps.consolidateAdjacentPrimitives(loop, consolidateOptions);
|
|
236939
|
+
_RegionOps__WEBPACK_IMPORTED_MODULE_12__.RegionOps.consolidateAdjacentPrimitives(loop, { consolidateLoopSeam: true });
|
|
236917
236940
|
}
|
|
236918
236941
|
if (loop.isPhysicallyClosedCurve(options?.closureTol, true))
|
|
236919
236942
|
return loop;
|
|
@@ -237939,7 +237962,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
237939
237962
|
|
|
237940
237963
|
|
|
237941
237964
|
/**
|
|
237942
|
-
*
|
|
237965
|
+
* Options to control method [[RegionOps.consolidateAdjacentPrimitives]].
|
|
237966
|
+
* @deprecated in 5.11.13 - might be removed in next major version. Use [[ConsolidateAdjacentPrimitivesOptions]], which is more convenient as an interface, and has better name.
|
|
237943
237967
|
* @public
|
|
237944
237968
|
*/
|
|
237945
237969
|
class ConsolidateAdjacentCurvePrimitivesOptions {
|
|
@@ -242430,14 +242454,136 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
242430
242454
|
this.computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed);
|
|
242431
242455
|
}
|
|
242432
242456
|
}
|
|
242433
|
-
|
|
242434
|
-
|
|
242435
|
-
// The fraction and extend parameters allow all combinations to be passed in.
|
|
242436
|
-
dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
242457
|
+
/** Implementation of dispatchSegmentArc under affine transform. KEEP IN SYNC WITH computeSegmentArcHomogeneous. */
|
|
242458
|
+
computeSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
242437
242459
|
const tol2 = this._coincidentGeometryContext.tolerance * this._coincidentGeometryContext.tolerance;
|
|
242438
242460
|
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
242439
242461
|
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
242440
242462
|
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
242463
|
+
const recordIfNearIntersection = (fA, fB, d2) => {
|
|
242464
|
+
if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(d2, tol2))
|
|
242465
|
+
return false;
|
|
242466
|
+
this.recordPointWithLocalFractions(fA, cpA, fractionA0, fractionA1, fB, arc, 0, 1, reversed);
|
|
242467
|
+
return true;
|
|
242468
|
+
};
|
|
242469
|
+
const data = arc.toTransformedVectors(this._worldToLocalAffine);
|
|
242470
|
+
let pointA0Local = pointA0;
|
|
242471
|
+
let pointA1Local = pointA1;
|
|
242472
|
+
const pointB0Local = arc.startPoint();
|
|
242473
|
+
const pointB1Local = arc.endPoint();
|
|
242474
|
+
if (this._worldToLocalAffine) {
|
|
242475
|
+
pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
|
|
242476
|
+
pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
|
|
242477
|
+
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB0Local);
|
|
242478
|
+
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB1Local);
|
|
242479
|
+
}
|
|
242480
|
+
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
|
|
242481
|
+
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
|
|
242482
|
+
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
|
|
242483
|
+
// note really tight tol for tangency since below we check closest approach also
|
|
242484
|
+
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
242485
|
+
const closeApproach = (0 === numRoots);
|
|
242486
|
+
if (closeApproach)
|
|
242487
|
+
numRoots = 1; // we returned the closest approach instead: first entry is the arc point, which is all we need
|
|
242488
|
+
const roots = [];
|
|
242489
|
+
for (let i = 0; i < numRoots; i++) {
|
|
242490
|
+
const arcPt = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
242491
|
+
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0); // exterior fraction sign based on extend flags
|
|
242492
|
+
const fArcNearest01 = data.sweep.fractionToSignedPeriodicFraction(fArc, undefined); // exterior fraction sign based on proximity to 0/1
|
|
242493
|
+
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPt);
|
|
242494
|
+
if (fLine !== undefined) {
|
|
242495
|
+
const linePt = pointA0Local.interpolate(fLine, pointA1Local);
|
|
242496
|
+
roots.push({ fArc, fArcNearest01, fLine, arcPt, linePt });
|
|
242497
|
+
}
|
|
242498
|
+
}
|
|
242499
|
+
// range-test and record roots
|
|
242500
|
+
for (const root of roots) {
|
|
242501
|
+
const { fArc, fArcNearest01, fLine, arcPt, linePt } = root;
|
|
242502
|
+
if (closeApproach && !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(arcPt.distanceSquaredXY(linePt), tol2)) {
|
|
242503
|
+
continue;
|
|
242504
|
+
}
|
|
242505
|
+
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
242506
|
+
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
242507
|
+
continue;
|
|
242508
|
+
}
|
|
242509
|
+
// since line-arc chains are so common, look for near-endpoint intersections using distance tol, which is often relatively looser than fraction tol
|
|
242510
|
+
const inArcRange = extendB0 || extendB1 || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fArc);
|
|
242511
|
+
const inLineRange = (extendA0 && fLine < 0) || (extendA1 && fLine > 1) || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fLine);
|
|
242512
|
+
let accepted = false;
|
|
242513
|
+
if (inArcRange && !inLineRange) // check tangency near line endpoint
|
|
242514
|
+
accepted = recordIfNearIntersection(fLine < 0 ? 0 : 1, fArc, (fLine < 0 ? pointA0Local : pointA1Local).distanceSquaredXY(arcPt));
|
|
242515
|
+
else if (!inArcRange && inLineRange) // check tangency near arc endpoint
|
|
242516
|
+
accepted = recordIfNearIntersection(fLine, fArcNearest01 < 0 ? 0 : 1, linePt.distanceSquaredXY(fArcNearest01 < 0 ? pointB0Local : pointB1Local));
|
|
242517
|
+
if (!accepted) // check intersection between nearest endpoints
|
|
242518
|
+
recordIfNearIntersection(fLine < 0.5 ? 0 : 1, fArcNearest01 < 0.5 ? 0 : 1, (fLine < 0.5 ? pointA0Local : pointA1Local).distanceSquaredXY(fArcNearest01 < 0.5 ? pointB0Local : pointB1Local));
|
|
242519
|
+
}
|
|
242520
|
+
}
|
|
242521
|
+
/** Implementation of dispatchSegmentArc under perspective transform. KEEP IN SYNC WITH computeSegmentArc. */
|
|
242522
|
+
computeSegmentArcHomogeneous(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
242523
|
+
if (!this._worldToLocalPerspective)
|
|
242524
|
+
return;
|
|
242525
|
+
const tol2 = this._coincidentGeometryContext.tolerance * this._coincidentGeometryContext.tolerance;
|
|
242526
|
+
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
242527
|
+
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
242528
|
+
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
242529
|
+
const recordIfNearIntersection = (fA, fB, d2) => {
|
|
242530
|
+
if (d2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(d2, tol2))
|
|
242531
|
+
return false;
|
|
242532
|
+
this.recordPointWithLocalFractions(fA, cpA, fractionA0, fractionA1, fB, arc, 0, 1, reversed);
|
|
242533
|
+
return true;
|
|
242534
|
+
};
|
|
242535
|
+
const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
242536
|
+
const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
|
|
242537
|
+
const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
|
|
242538
|
+
const pointB0H = this._worldToLocalPerspective.multiplyPoint3d(arc.startPoint(), 1);
|
|
242539
|
+
const pointB1H = this._worldToLocalPerspective.multiplyPoint3d(arc.endPoint(), 1);
|
|
242540
|
+
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
|
|
242541
|
+
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
|
|
242542
|
+
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
|
|
242543
|
+
// note really tight tol for tangency since below we check closest approach also
|
|
242544
|
+
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
242545
|
+
const closeApproach = (0 === numRoots);
|
|
242546
|
+
if (closeApproach)
|
|
242547
|
+
numRoots = 1; // we returned the closest approach instead: first entry is the arc point, which is all we need
|
|
242548
|
+
const roots = [];
|
|
242549
|
+
for (let i = 0; i < numRoots; i++) {
|
|
242550
|
+
const arcPt = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
242551
|
+
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0); // exterior fraction sign based on extend flags
|
|
242552
|
+
const fArcNearest01 = data.sweep.fractionToSignedPeriodicFraction(fArc, undefined); // exterior fraction sign based on proximity to 0/1
|
|
242553
|
+
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPt);
|
|
242554
|
+
if (fLine !== undefined) {
|
|
242555
|
+
const linePt = pointA0H.interpolate(fLine, pointA1H);
|
|
242556
|
+
roots.push({ fArc, fArcNearest01, fLine, arcPt, linePt });
|
|
242557
|
+
}
|
|
242558
|
+
}
|
|
242559
|
+
// range-test and record roots
|
|
242560
|
+
for (const root of roots) {
|
|
242561
|
+
const { fArc, fArcNearest01, fLine, arcPt, linePt } = root;
|
|
242562
|
+
if (closeApproach) {
|
|
242563
|
+
const dist2 = arcPt.realDistanceSquaredXY(linePt);
|
|
242564
|
+
if (dist2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2, tol2))
|
|
242565
|
+
continue;
|
|
242566
|
+
}
|
|
242567
|
+
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
242568
|
+
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
242569
|
+
continue;
|
|
242570
|
+
}
|
|
242571
|
+
// since line-arc chains are so common, look for near-endpoint intersections using distance tol, which is often relatively looser than fraction tol
|
|
242572
|
+
const inArcRange = extendB0 || extendB1 || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fArc);
|
|
242573
|
+
const inLineRange = (extendA0 && fLine < 0) || (extendA1 && fLine > 1) || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fLine);
|
|
242574
|
+
let accepted = false;
|
|
242575
|
+
if (inArcRange && !inLineRange) // check tangency near line endpoint
|
|
242576
|
+
accepted = recordIfNearIntersection(fLine < 0 ? 0 : 1, fArc, (fLine < 0 ? pointA0H : pointA1H).realDistanceSquaredXY(arcPt));
|
|
242577
|
+
else if (!inArcRange && inLineRange) // check tangency near arc endpoint
|
|
242578
|
+
accepted = recordIfNearIntersection(fLine, fArcNearest01 < 0 ? 0 : 1, linePt.realDistanceSquaredXY(fArcNearest01 < 0 ? pointB0H : pointB1H));
|
|
242579
|
+
if (!accepted) // check intersection between nearest endpoints
|
|
242580
|
+
recordIfNearIntersection(fLine < 0.5 ? 0 : 1, fArcNearest01 < 0.5 ? 0 : 1, (fLine < 0.5 ? pointA0H : pointA1H).realDistanceSquaredXY(fArcNearest01 < 0.5 ? pointB0H : pointB1H));
|
|
242581
|
+
}
|
|
242582
|
+
}
|
|
242583
|
+
// Caller accesses data from a linestring or segment and passes it here.
|
|
242584
|
+
// The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
|
|
242585
|
+
// The fraction and extend parameters allow all combinations to be passed in.
|
|
242586
|
+
dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
242441
242587
|
// Arc: X(theta) = C + cos(theta)·U + sin(theta)·V
|
|
242442
242588
|
// Line: contains points A0,A1
|
|
242443
242589
|
// Arc point X is colinear (intersects) with line if det(A0, A1, X) = 0 with homogeneous xyw points and vectors
|
|
@@ -242446,107 +242592,10 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
242446
242592
|
// or
|
|
242447
242593
|
// alpha + beta cos(theta) + gamma sin(theta) = 0
|
|
242448
242594
|
// solve for theta; evaluate points; project back to line
|
|
242449
|
-
if (this._worldToLocalPerspective)
|
|
242450
|
-
|
|
242451
|
-
|
|
242452
|
-
|
|
242453
|
-
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
|
|
242454
|
-
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
|
|
242455
|
-
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
|
|
242456
|
-
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
242457
|
-
const closeApproach = (0 === numRoots);
|
|
242458
|
-
if (closeApproach)
|
|
242459
|
-
numRoots = 1; // arc closest approach is the first entry
|
|
242460
|
-
let numAccepted = 0;
|
|
242461
|
-
for (let i = 0; i < numRoots; i++) {
|
|
242462
|
-
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
242463
|
-
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
|
|
242464
|
-
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
|
|
242465
|
-
if (fLine === undefined)
|
|
242466
|
-
continue;
|
|
242467
|
-
if (closeApproach) {
|
|
242468
|
-
const linePoint = pointA0H.interpolate(fLine, pointA1H);
|
|
242469
|
-
const dist2 = arcPoint.realDistanceSquaredXY(linePoint);
|
|
242470
|
-
if (dist2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2, tol2))
|
|
242471
|
-
continue;
|
|
242472
|
-
}
|
|
242473
|
-
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
242474
|
-
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
242475
|
-
numAccepted++;
|
|
242476
|
-
}
|
|
242477
|
-
}
|
|
242478
|
-
if (numAccepted === 0 && !arc.sweep.isFullCircle) {
|
|
242479
|
-
// check for endpoint intersection beyond parametric tolerance but within point tolerance
|
|
242480
|
-
const pointB0H = this._worldToLocalPerspective.multiplyPoint3d(arc.startPoint(), 1);
|
|
242481
|
-
const pointB1H = this._worldToLocalPerspective.multiplyPoint3d(arc.endPoint(), 1);
|
|
242482
|
-
const dist2 = [];
|
|
242483
|
-
let d2 = pointA0H.realDistanceSquaredXY(pointB0H);
|
|
242484
|
-
if (d2 !== undefined)
|
|
242485
|
-
dist2.push({ d2, fA: 0, fB: 0 });
|
|
242486
|
-
d2 = pointA0H.realDistanceSquaredXY(pointB1H);
|
|
242487
|
-
if (d2 !== undefined)
|
|
242488
|
-
dist2.push({ d2, fA: 0, fB: 1 });
|
|
242489
|
-
d2 = pointA1H.realDistanceSquaredXY(pointB0H);
|
|
242490
|
-
if (d2 !== undefined)
|
|
242491
|
-
dist2.push({ d2, fA: 1, fB: 0 });
|
|
242492
|
-
d2 = pointA1H.realDistanceSquaredXY(pointB1H);
|
|
242493
|
-
if (d2 !== undefined)
|
|
242494
|
-
dist2.push({ d2, fA: 1, fB: 1 });
|
|
242495
|
-
dist2.sort((a, b) => a.d2 - b.d2);
|
|
242496
|
-
if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2[0].d2, tol2))
|
|
242497
|
-
this.recordPointWithLocalFractions(dist2[0].fA, cpA, fractionA0, fractionA1, dist2[0].fB, arc, 0, 1, reversed);
|
|
242498
|
-
}
|
|
242499
|
-
}
|
|
242500
|
-
else {
|
|
242501
|
-
const data = arc.toTransformedVectors(this._worldToLocalAffine);
|
|
242502
|
-
let pointA0Local = pointA0;
|
|
242503
|
-
let pointA1Local = pointA1;
|
|
242504
|
-
if (this._worldToLocalAffine) {
|
|
242505
|
-
pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
|
|
242506
|
-
pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
|
|
242507
|
-
}
|
|
242508
|
-
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
|
|
242509
|
-
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
|
|
242510
|
-
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
|
|
242511
|
-
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
242512
|
-
const closeApproach = (0 === numRoots);
|
|
242513
|
-
if (closeApproach)
|
|
242514
|
-
numRoots = 1; // arc closest approach is the first entry
|
|
242515
|
-
let numAccepted = 0;
|
|
242516
|
-
for (let i = 0; i < numRoots; i++) {
|
|
242517
|
-
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
242518
|
-
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
|
|
242519
|
-
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
|
|
242520
|
-
if (fLine === undefined)
|
|
242521
|
-
continue;
|
|
242522
|
-
if (closeApproach) {
|
|
242523
|
-
const linePoint = pointA0Local.interpolate(fLine, pointA1Local);
|
|
242524
|
-
if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(arcPoint.distanceSquaredXY(linePoint), tol2))
|
|
242525
|
-
continue;
|
|
242526
|
-
}
|
|
242527
|
-
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
242528
|
-
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
242529
|
-
numAccepted++;
|
|
242530
|
-
}
|
|
242531
|
-
}
|
|
242532
|
-
if (numAccepted === 0 && !arc.sweep.isFullCircle) {
|
|
242533
|
-
// check for endpoint intersection beyond parametric tolerance but within point tolerance
|
|
242534
|
-
const pointB0Local = arc.startPoint();
|
|
242535
|
-
const pointB1Local = arc.endPoint();
|
|
242536
|
-
if (this._worldToLocalAffine) {
|
|
242537
|
-
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB0Local);
|
|
242538
|
-
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB1Local);
|
|
242539
|
-
}
|
|
242540
|
-
const dist2 = [];
|
|
242541
|
-
dist2.push({ d2: pointA0Local.distanceSquaredXY(pointB0Local), fA: 0, fB: 0 });
|
|
242542
|
-
dist2.push({ d2: pointA0Local.distanceSquaredXY(pointB1Local), fA: 0, fB: 1 });
|
|
242543
|
-
dist2.push({ d2: pointA1Local.distanceSquaredXY(pointB0Local), fA: 1, fB: 0 });
|
|
242544
|
-
dist2.push({ d2: pointA1Local.distanceSquaredXY(pointB1Local), fA: 1, fB: 1 });
|
|
242545
|
-
dist2.sort((a, b) => a.d2 - b.d2);
|
|
242546
|
-
if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2[0].d2, tol2))
|
|
242547
|
-
this.recordPointWithLocalFractions(dist2[0].fA, cpA, fractionA0, fractionA1, dist2[0].fB, arc, 0, 1, reversed);
|
|
242548
|
-
}
|
|
242549
|
-
}
|
|
242595
|
+
if (this._worldToLocalPerspective)
|
|
242596
|
+
this.computeSegmentArcHomogeneous(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed);
|
|
242597
|
+
else
|
|
242598
|
+
this.computeSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed);
|
|
242550
242599
|
}
|
|
242551
242600
|
/**
|
|
242552
242601
|
* Compute the intersection of two xy-arcs.
|
|
@@ -243042,7 +243091,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
243042
243091
|
let converged = newtonSearcher.runIterations();
|
|
243043
243092
|
const fractionA = newtonSearcher.getU();
|
|
243044
243093
|
const fractionB = newtonSearcher.getV();
|
|
243045
|
-
|
|
243094
|
+
// note looser tol for spiral, which can have high order tangency at start/end
|
|
243095
|
+
if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallFraction)) {
|
|
243046
243096
|
const pointA = curveA.fractionToPoint(fractionA, CurveCurveIntersectXY._workPointA0);
|
|
243047
243097
|
const pointB = spiralB.fractionToPoint(fractionB, CurveCurveIntersectXY._workPointB0);
|
|
243048
243098
|
if (!converged) // Newton may have found close points even if it didn't converge parametrically
|
|
@@ -251560,6 +251610,13 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_4__.Cu
|
|
|
251560
251610
|
get spiralType() {
|
|
251561
251611
|
return this._spiralType;
|
|
251562
251612
|
}
|
|
251613
|
+
/**
|
|
251614
|
+
* Whether the start and end points are defined and within tolerance.
|
|
251615
|
+
* * Always `false` for `TransitionSpiral3d`.
|
|
251616
|
+
*/
|
|
251617
|
+
isPhysicallyClosedCurve(_tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, _xyOnly = false) {
|
|
251618
|
+
return false;
|
|
251619
|
+
}
|
|
251563
251620
|
/** Return 1/r with convention that exact zero input returns 0 (straight line, zero curvature, infinite radius). */
|
|
251564
251621
|
static radiusToCurvature(radius) {
|
|
251565
251622
|
return (radius === 0.0) ? 0.0 : 1.0 / radius;
|
|
@@ -252679,7 +252736,7 @@ class AngleSweep {
|
|
|
252679
252736
|
* @param toNegativeFraction exterior fraction handling:
|
|
252680
252737
|
* * if true, return `fraction` period-shifted to within one period of the start
|
|
252681
252738
|
* * if false, return `fraction` period-shifted to within one period of the end
|
|
252682
|
-
* * if undefined, return the period-shift of `fraction` closest to [0,1].
|
|
252739
|
+
* * if undefined, return the period-shift of `fraction` closest in fraction space to [0,1].
|
|
252683
252740
|
* @returns period-shifted fraction. If `fraction` is already in [0,1], or the sweep is empty, then `fraction` is
|
|
252684
252741
|
* returned unchanged.
|
|
252685
252742
|
*/
|
|
@@ -252711,7 +252768,7 @@ class AngleSweep {
|
|
|
252711
252768
|
* @param toNegativeFraction exterior fraction handling:
|
|
252712
252769
|
* * if true, return `fraction` period-shifted to within one period of the start
|
|
252713
252770
|
* * if false, return `fraction` period-shifted to within one period of the end
|
|
252714
|
-
* * if undefined, return the period-shift of `fraction` closest to [0,1].
|
|
252771
|
+
* * if undefined, return the period-shift of `fraction` closest in fraction space to [0,1].
|
|
252715
252772
|
* @returns period-shifted fraction. If `fraction` is already in [0,1], or the sweep is empty, then `fraction` is
|
|
252716
252773
|
* returned unchanged.
|
|
252717
252774
|
*/
|
|
@@ -270504,6 +270561,14 @@ class Range3d extends RangeBase {
|
|
|
270504
270561
|
diagonal(result) {
|
|
270505
270562
|
return this.low.vectorTo(this.high, result);
|
|
270506
270563
|
}
|
|
270564
|
+
/** Return the length of the range diagonal, optionally ignoring z extent. */
|
|
270565
|
+
diagonalLength(ignoreZ = false) {
|
|
270566
|
+
return ignoreZ ? this.low.distanceXY(this.high) : this.low.distance(this.high);
|
|
270567
|
+
}
|
|
270568
|
+
/** Return the squared length of the range diagonal, optionally ignoring z extent. */
|
|
270569
|
+
diagonalLengthSquared(ignoreZ = false) {
|
|
270570
|
+
return ignoreZ ? this.low.distanceSquaredXY(this.high) : this.low.distanceSquared(this.high);
|
|
270571
|
+
}
|
|
270507
270572
|
/**
|
|
270508
270573
|
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
270509
270574
|
* large negative coordinates.
|
|
@@ -271557,6 +271622,14 @@ class Range2d extends RangeBase {
|
|
|
271557
271622
|
diagonal(result) {
|
|
271558
271623
|
return this.low.vectorTo(this.high, result);
|
|
271559
271624
|
}
|
|
271625
|
+
/** Return the length of the range diagonal. */
|
|
271626
|
+
diagonalLength() {
|
|
271627
|
+
return this.low.distance(this.high);
|
|
271628
|
+
}
|
|
271629
|
+
/** Return the squared length of the range diagonal. */
|
|
271630
|
+
diagonalLengthSquared() {
|
|
271631
|
+
return this.low.distanceSquared(this.high);
|
|
271632
|
+
}
|
|
271560
271633
|
/**
|
|
271561
271634
|
* Return the point at the specified fraction along the diagonal vector. There is no check for isNull -- if the
|
|
271562
271635
|
* range isNull(), the vector will have very large negative coordinates.
|
|
@@ -342228,7 +342301,7 @@ class TestContext {
|
|
|
342228
342301
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
342229
342302
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
342230
342303
|
await core_frontend_1.NoRenderApp.startup({
|
|
342231
|
-
applicationVersion: "5.13.0-dev.
|
|
342304
|
+
applicationVersion: "5.13.0-dev.5",
|
|
342232
342305
|
applicationId: this.settings.gprid,
|
|
342233
342306
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
|
|
342234
342307
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -367065,7 +367138,7 @@ var loadLanguages = instance.loadLanguages;
|
|
|
367065
367138
|
(module) {
|
|
367066
367139
|
|
|
367067
367140
|
"use strict";
|
|
367068
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.13.0-dev.
|
|
367141
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.13.0-dev.5","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 build:workers && npm run -s copy:draco","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 ES2022 --outDir lib/esm","clean":"rimraf -g 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:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","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 \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run build:test-worker && vitest --run","cover":"npm run build:test-worker && vitest --run","build:test-worker":"vite build --config ./src/test/worker/vite.config.mts 1>&2","build:workers":"rimraf lib/workers/webpack && vite build --config ./src/workers/ImdlParser/vite.config.mts 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:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//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":{"@bentley/aec-units-schema":"^1.0.3","@bentley/formats-schema":"^1.0.0","@bentley/units-schema":"^1.0.10","@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/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"^3.0.4","@itwin/eslint-plugin":"^6.0.0","@types/chai-as-promised":"^7","@types/draco3d":"^1.4.10","@types/node":"~20.17.0","@types/sinon":"^17.0.2","@vitest/browser-playwright":"^4.1.10","@vitest/coverage-v8":"^4.1.10","cpx2":"^8.0.0","eslint":"^9.31.0","playwright":"~1.56.1","rimraf":"^6.0.1","sinon":"^17.0.2","typescript":"~5.6.2","vite":"^6.4.3","vitest":"^4.1.10","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.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/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"~4.3.4","@loaders.gl/draco":"~4.3.4","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
|
|
367069
367142
|
|
|
367070
367143
|
/***/ },
|
|
367071
367144
|
|