@itwin/ecschema-rpcinterface-tests 5.13.0-dev.4 → 5.13.0-dev.6
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/backend/BackendInit.js.map +1 -1
- package/lib/common/Settings.js +4 -4
- package/lib/common/Settings.js.map +1 -1
- package/lib/common/SideChannels.js.map +1 -1
- package/lib/dist/bundled-tests.js +214 -137
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_quantity_lib_esm_assets_Units_json.bundled-tests.js +1 -1
- package/lib/frontend/SchemaRpcInterface.test.js.map +1 -1
- package/lib/frontend/setup/IModelSession.js.map +1 -1
- package/lib/frontend/setup/TestContext.js.map +1 -1
- package/package.json +15 -15
|
@@ -207368,7 +207368,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_14__.CurvePrimitive
|
|
|
207368
207368
|
}
|
|
207369
207369
|
/**
|
|
207370
207370
|
* Returns a (high accuracy) range of the curve between fractional positions.
|
|
207371
|
-
* * Default implementation returns
|
|
207371
|
+
* * Default implementation returns the range of the curve from clonePartialCurve.
|
|
207372
207372
|
*/
|
|
207373
207373
|
rangeBetweenFractions(fraction0, fraction1, transform) {
|
|
207374
207374
|
const sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(this.sweep.fractionToRadians(fraction0), this.sweep.fractionToRadians(fraction1));
|
|
@@ -210283,6 +210283,7 @@ class CurveFactory {
|
|
|
210283
210283
|
const closureTolerance = haveBoolean ? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance : allowCuspOrOptions.closureTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance;
|
|
210284
210284
|
const cuspTolerance = haveBoolean ? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance : allowCuspOrOptions.cuspTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance;
|
|
210285
210285
|
const cuspSegments = haveBoolean ? true : allowCuspOrOptions.cuspSegments ?? true;
|
|
210286
|
+
const simplifyPath = haveBoolean ? false : allowCuspOrOptions.simplifyPath ?? false;
|
|
210286
210287
|
let n = points.length;
|
|
210287
210288
|
if (filletClosure && points.almostEqualIndexIndex(0, n - 1, closureTolerance))
|
|
210288
210289
|
n--; // ignore closure point
|
|
@@ -210356,7 +210357,16 @@ class CurveFactory {
|
|
|
210356
210357
|
this.addPartialSegment(path, cuspSegments, b0.point, b1.point, b0.fraction12, 1 - b1.fraction10);
|
|
210357
210358
|
}
|
|
210358
210359
|
}
|
|
210359
|
-
|
|
210360
|
+
if (!simplifyPath)
|
|
210361
|
+
return path;
|
|
210362
|
+
// remove tiny children, merge adjacent arcs
|
|
210363
|
+
const distTol2 = closureTolerance * closureTolerance;
|
|
210364
|
+
const sufficientlyLargeChildren = path.children.filter((c) => c.range().diagonalLengthSquared(true) >= distTol2);
|
|
210365
|
+
if (sufficientlyLargeChildren.length === 0)
|
|
210366
|
+
return undefined;
|
|
210367
|
+
const simplerPath = _Path__WEBPACK_IMPORTED_MODULE_24__.Path.create(...sufficientlyLargeChildren);
|
|
210368
|
+
_RegionOps__WEBPACK_IMPORTED_MODULE_25__.RegionOps.consolidateAdjacentPrimitives(simplerPath, { consolidateLoopSeam: true, duplicatePointTolerance: closureTolerance, colinearPointTolerance: closureTolerance });
|
|
210369
|
+
return simplerPath;
|
|
210360
210370
|
}
|
|
210361
210371
|
/** If an open filletedLineString starts/ends with an arc, add a zero-length line segment to its start/end. */
|
|
210362
210372
|
static validateOpenPathStartEnd(filletedLineString) {
|
|
@@ -213180,6 +213190,13 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_11__.CurveP
|
|
|
213180
213190
|
}
|
|
213181
213191
|
return this._point1.clone();
|
|
213182
213192
|
}
|
|
213193
|
+
/**
|
|
213194
|
+
* Whether the start and end points are defined and within tolerance.
|
|
213195
|
+
* * Always `false` for `LineSegment3d`.
|
|
213196
|
+
*/
|
|
213197
|
+
isPhysicallyClosedCurve(_tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance, _xyOnly = false) {
|
|
213198
|
+
return false;
|
|
213199
|
+
}
|
|
213183
213200
|
/** Return the point and derivative vector at fractional position along the line segment. */
|
|
213184
213201
|
fractionToPointAndDerivative(fraction, result) {
|
|
213185
213202
|
result = result ? result : _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.createZero();
|
|
@@ -213536,7 +213553,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_11__.CurveP
|
|
|
213536
213553
|
}
|
|
213537
213554
|
/**
|
|
213538
213555
|
* Returns a (high accuracy) range of the curve between fractional positions
|
|
213539
|
-
* * Default implementation returns
|
|
213556
|
+
* * Default implementation returns the range of the curve from clonePartialCurve
|
|
213540
213557
|
*/
|
|
213541
213558
|
rangeBetweenFractions(fraction0, fraction1, transform) {
|
|
213542
213559
|
// (This is cheap -- don't bother testing for fraction0===fraction1)
|
|
@@ -216079,7 +216096,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
216079
216096
|
/* harmony import */ var _CurveFactory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
|
|
216080
216097
|
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
216081
216098
|
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
216082
|
-
/* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
|
|
216083
216099
|
/*---------------------------------------------------------------------------------------------
|
|
216084
216100
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
216085
216101
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -216095,17 +216111,26 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
216095
216111
|
|
|
216096
216112
|
|
|
216097
216113
|
|
|
216098
|
-
|
|
216099
216114
|
/**
|
|
216100
|
-
*
|
|
216115
|
+
* Implementation class for ConsolidateAdjacentCurvePrimitives.
|
|
216101
216116
|
*
|
|
216102
216117
|
* @internal
|
|
216103
216118
|
*/
|
|
216104
216119
|
class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__.NullGeometryHandler {
|
|
216105
|
-
|
|
216120
|
+
_consolidateLinearGeometry;
|
|
216121
|
+
_consolidateCompatibleArcs;
|
|
216122
|
+
_consolidateLoopSeam;
|
|
216123
|
+
_disableLinearCompression;
|
|
216124
|
+
_duplicatePointTolerance;
|
|
216125
|
+
_colinearPointTolerance;
|
|
216106
216126
|
constructor(options) {
|
|
216107
216127
|
super();
|
|
216108
|
-
this.
|
|
216128
|
+
this._consolidateLinearGeometry = options?.consolidateLinearGeometry ?? true;
|
|
216129
|
+
this._consolidateCompatibleArcs = options?.consolidateCompatibleArcs ?? true;
|
|
216130
|
+
this._consolidateLoopSeam = options?.consolidateLoopSeam ?? false;
|
|
216131
|
+
this._disableLinearCompression = options?.disableLinearCompression ?? false;
|
|
216132
|
+
this._duplicatePointTolerance = options?.duplicatePointTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
|
|
216133
|
+
this._colinearPointTolerance = options?.colinearPointTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
|
|
216109
216134
|
}
|
|
216110
216135
|
/** look for adjacent compatible primitives in a path or loop. */
|
|
216111
216136
|
handleCurveChain(g) {
|
|
@@ -216117,7 +216142,7 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
216117
216142
|
// numAccept is the number of children accepted (contiguously at front of children)
|
|
216118
216143
|
for (let i0 = 0; i0 < numOriginal;) {
|
|
216119
216144
|
const basePrimitive = g.children[i0];
|
|
216120
|
-
if (this.
|
|
216145
|
+
if (this._consolidateLinearGeometry && (basePrimitive instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || basePrimitive instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d)) {
|
|
216121
216146
|
points.length = 0;
|
|
216122
216147
|
let i1 = i0;
|
|
216123
216148
|
// on exit, i1 is beyond the block of linear primitives . ..
|
|
@@ -216140,16 +216165,16 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
216140
216165
|
if (points.length <= 1) {
|
|
216141
216166
|
g.children[numAccept++] = basePrimitive;
|
|
216142
216167
|
}
|
|
216143
|
-
else if (this.
|
|
216168
|
+
else if (this._disableLinearCompression) {
|
|
216144
216169
|
const pointsDeduped = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFloatingPoint); // remove only exact duplicate interior points
|
|
216145
216170
|
g.children[numAccept++] = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.createPoints(pointsDeduped);
|
|
216146
216171
|
}
|
|
216147
216172
|
else { // compress points
|
|
216148
|
-
const compressedPointsA = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, this.
|
|
216149
|
-
const compressedPointsB = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressByChordError(compressedPointsA, this.
|
|
216150
|
-
if (i0 === 0 && i1 === numOriginal && this.
|
|
216173
|
+
const compressedPointsA = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, this._duplicatePointTolerance);
|
|
216174
|
+
const compressedPointsB = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressByChordError(compressedPointsA, this._colinearPointTolerance, true);
|
|
216175
|
+
if (i0 === 0 && i1 === numOriginal && this._consolidateLoopSeam) {
|
|
216151
216176
|
// points is the entire curve: if the curve is physically closed and end segments are colinear, re/move the seam
|
|
216152
|
-
_geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_2__.PolylineCompressionContext.compressColinearWrapInPlace(compressedPointsB, this.
|
|
216177
|
+
_geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_2__.PolylineCompressionContext.compressColinearWrapInPlace(compressedPointsB, this._duplicatePointTolerance, this._colinearPointTolerance);
|
|
216153
216178
|
}
|
|
216154
216179
|
if (compressedPointsB.length < 2) {
|
|
216155
216180
|
// Collapsed to a point? Make a single point linestring
|
|
@@ -216164,14 +216189,14 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
216164
216189
|
}
|
|
216165
216190
|
i0 = i1;
|
|
216166
216191
|
}
|
|
216167
|
-
else if (this.
|
|
216192
|
+
else if (this._consolidateCompatibleArcs && basePrimitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
216168
216193
|
// subsume subsequent arcs into basePrimitive.
|
|
216169
216194
|
// always accept base primitive.
|
|
216170
216195
|
for (; ++i0 < g.children.length;) {
|
|
216171
216196
|
const nextPrimitive = g.children[i0];
|
|
216172
216197
|
if (!(nextPrimitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d))
|
|
216173
216198
|
break;
|
|
216174
|
-
if (!_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(basePrimitive, nextPrimitive, false, this.
|
|
216199
|
+
if (!_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(basePrimitive, nextPrimitive, false, this._duplicatePointTolerance))
|
|
216175
216200
|
break;
|
|
216176
216201
|
}
|
|
216177
216202
|
// i0 has already advanced
|
|
@@ -216189,11 +216214,11 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
216189
216214
|
}
|
|
216190
216215
|
handleLoop(g) {
|
|
216191
216216
|
this.handleCurveChain(g);
|
|
216192
|
-
if (g.children.length > 1 && this.
|
|
216217
|
+
if (g.children.length > 1 && this._consolidateLoopSeam) {
|
|
216193
216218
|
const lastChild = g.children[g.children.length - 1];
|
|
216194
216219
|
const firstChild = g.children[0];
|
|
216195
216220
|
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)) {
|
|
216196
|
-
if (this.
|
|
216221
|
+
if (this._consolidateLinearGeometry && !this._disableLinearCompression) {
|
|
216197
216222
|
const lastPoints = lastChild.points;
|
|
216198
216223
|
lastPoints.pop(); // the original start point survives as an interior point in the new first primitive
|
|
216199
216224
|
g.children[0] = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.createPoints([...lastPoints, ...firstChild.points]);
|
|
@@ -216201,8 +216226,8 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
|
|
|
216201
216226
|
}
|
|
216202
216227
|
}
|
|
216203
216228
|
else if (lastChild instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d && firstChild instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
|
|
216204
|
-
if (this.
|
|
216205
|
-
if (_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(lastChild, firstChild, false, this.
|
|
216229
|
+
if (this._consolidateCompatibleArcs) {
|
|
216230
|
+
if (_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(lastChild, firstChild, false, this._duplicatePointTolerance)) {
|
|
216206
216231
|
g.children[0] = lastChild;
|
|
216207
216232
|
g.children.pop();
|
|
216208
216233
|
}
|
|
@@ -216905,9 +216930,7 @@ class PlanarSubdivision {
|
|
|
216905
216930
|
else
|
|
216906
216931
|
face.announceEdgesInFace(addEdgeCurve);
|
|
216907
216932
|
if (consolidate) {
|
|
216908
|
-
|
|
216909
|
-
consolidateOptions.consolidateLoopSeam = true;
|
|
216910
|
-
_RegionOps__WEBPACK_IMPORTED_MODULE_12__.RegionOps.consolidateAdjacentPrimitives(loop, consolidateOptions);
|
|
216933
|
+
_RegionOps__WEBPACK_IMPORTED_MODULE_12__.RegionOps.consolidateAdjacentPrimitives(loop, { consolidateLoopSeam: true });
|
|
216911
216934
|
}
|
|
216912
216935
|
if (loop.isPhysicallyClosedCurve(options?.closureTol, true))
|
|
216913
216936
|
return loop;
|
|
@@ -217933,7 +217956,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
217933
217956
|
|
|
217934
217957
|
|
|
217935
217958
|
/**
|
|
217936
|
-
*
|
|
217959
|
+
* Options to control method [[RegionOps.consolidateAdjacentPrimitives]].
|
|
217960
|
+
* @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.
|
|
217937
217961
|
* @public
|
|
217938
217962
|
*/
|
|
217939
217963
|
class ConsolidateAdjacentCurvePrimitivesOptions {
|
|
@@ -222424,14 +222448,136 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
222424
222448
|
this.computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed);
|
|
222425
222449
|
}
|
|
222426
222450
|
}
|
|
222427
|
-
|
|
222428
|
-
|
|
222429
|
-
// The fraction and extend parameters allow all combinations to be passed in.
|
|
222430
|
-
dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
222451
|
+
/** Implementation of dispatchSegmentArc under affine transform. KEEP IN SYNC WITH computeSegmentArcHomogeneous. */
|
|
222452
|
+
computeSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
222431
222453
|
const tol2 = this._coincidentGeometryContext.tolerance * this._coincidentGeometryContext.tolerance;
|
|
222432
222454
|
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
222433
222455
|
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
222434
222456
|
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
222457
|
+
const recordIfNearIntersection = (fA, fB, d2) => {
|
|
222458
|
+
if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(d2, tol2))
|
|
222459
|
+
return false;
|
|
222460
|
+
this.recordPointWithLocalFractions(fA, cpA, fractionA0, fractionA1, fB, arc, 0, 1, reversed);
|
|
222461
|
+
return true;
|
|
222462
|
+
};
|
|
222463
|
+
const data = arc.toTransformedVectors(this._worldToLocalAffine);
|
|
222464
|
+
let pointA0Local = pointA0;
|
|
222465
|
+
let pointA1Local = pointA1;
|
|
222466
|
+
const pointB0Local = arc.startPoint();
|
|
222467
|
+
const pointB1Local = arc.endPoint();
|
|
222468
|
+
if (this._worldToLocalAffine) {
|
|
222469
|
+
pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
|
|
222470
|
+
pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
|
|
222471
|
+
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB0Local);
|
|
222472
|
+
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB1Local);
|
|
222473
|
+
}
|
|
222474
|
+
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
|
|
222475
|
+
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
|
|
222476
|
+
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
|
|
222477
|
+
// note really tight tol for tangency since below we check closest approach also
|
|
222478
|
+
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
222479
|
+
const closeApproach = (0 === numRoots);
|
|
222480
|
+
if (closeApproach)
|
|
222481
|
+
numRoots = 1; // we returned the closest approach instead: first entry is the arc point, which is all we need
|
|
222482
|
+
const roots = [];
|
|
222483
|
+
for (let i = 0; i < numRoots; i++) {
|
|
222484
|
+
const arcPt = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
222485
|
+
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0); // exterior fraction sign based on extend flags
|
|
222486
|
+
const fArcNearest01 = data.sweep.fractionToSignedPeriodicFraction(fArc, undefined); // exterior fraction sign based on proximity to 0/1
|
|
222487
|
+
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPt);
|
|
222488
|
+
if (fLine !== undefined) {
|
|
222489
|
+
const linePt = pointA0Local.interpolate(fLine, pointA1Local);
|
|
222490
|
+
roots.push({ fArc, fArcNearest01, fLine, arcPt, linePt });
|
|
222491
|
+
}
|
|
222492
|
+
}
|
|
222493
|
+
// range-test and record roots
|
|
222494
|
+
for (const root of roots) {
|
|
222495
|
+
const { fArc, fArcNearest01, fLine, arcPt, linePt } = root;
|
|
222496
|
+
if (closeApproach && !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(arcPt.distanceSquaredXY(linePt), tol2)) {
|
|
222497
|
+
continue;
|
|
222498
|
+
}
|
|
222499
|
+
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
222500
|
+
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
222501
|
+
continue;
|
|
222502
|
+
}
|
|
222503
|
+
// since line-arc chains are so common, look for near-endpoint intersections using distance tol, which is often relatively looser than fraction tol
|
|
222504
|
+
const inArcRange = extendB0 || extendB1 || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fArc);
|
|
222505
|
+
const inLineRange = (extendA0 && fLine < 0) || (extendA1 && fLine > 1) || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fLine);
|
|
222506
|
+
let accepted = false;
|
|
222507
|
+
if (inArcRange && !inLineRange) // check tangency near line endpoint
|
|
222508
|
+
accepted = recordIfNearIntersection(fLine < 0 ? 0 : 1, fArc, (fLine < 0 ? pointA0Local : pointA1Local).distanceSquaredXY(arcPt));
|
|
222509
|
+
else if (!inArcRange && inLineRange) // check tangency near arc endpoint
|
|
222510
|
+
accepted = recordIfNearIntersection(fLine, fArcNearest01 < 0 ? 0 : 1, linePt.distanceSquaredXY(fArcNearest01 < 0 ? pointB0Local : pointB1Local));
|
|
222511
|
+
if (!accepted) // check intersection between nearest endpoints
|
|
222512
|
+
recordIfNearIntersection(fLine < 0.5 ? 0 : 1, fArcNearest01 < 0.5 ? 0 : 1, (fLine < 0.5 ? pointA0Local : pointA1Local).distanceSquaredXY(fArcNearest01 < 0.5 ? pointB0Local : pointB1Local));
|
|
222513
|
+
}
|
|
222514
|
+
}
|
|
222515
|
+
/** Implementation of dispatchSegmentArc under perspective transform. KEEP IN SYNC WITH computeSegmentArc. */
|
|
222516
|
+
computeSegmentArcHomogeneous(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
222517
|
+
if (!this._worldToLocalPerspective)
|
|
222518
|
+
return;
|
|
222519
|
+
const tol2 = this._coincidentGeometryContext.tolerance * this._coincidentGeometryContext.tolerance;
|
|
222520
|
+
const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
222521
|
+
const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
222522
|
+
const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
|
|
222523
|
+
const recordIfNearIntersection = (fA, fB, d2) => {
|
|
222524
|
+
if (d2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(d2, tol2))
|
|
222525
|
+
return false;
|
|
222526
|
+
this.recordPointWithLocalFractions(fA, cpA, fractionA0, fractionA1, fB, arc, 0, 1, reversed);
|
|
222527
|
+
return true;
|
|
222528
|
+
};
|
|
222529
|
+
const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
|
|
222530
|
+
const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
|
|
222531
|
+
const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
|
|
222532
|
+
const pointB0H = this._worldToLocalPerspective.multiplyPoint3d(arc.startPoint(), 1);
|
|
222533
|
+
const pointB1H = this._worldToLocalPerspective.multiplyPoint3d(arc.endPoint(), 1);
|
|
222534
|
+
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
|
|
222535
|
+
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
|
|
222536
|
+
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
|
|
222537
|
+
// note really tight tol for tangency since below we check closest approach also
|
|
222538
|
+
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
222539
|
+
const closeApproach = (0 === numRoots);
|
|
222540
|
+
if (closeApproach)
|
|
222541
|
+
numRoots = 1; // we returned the closest approach instead: first entry is the arc point, which is all we need
|
|
222542
|
+
const roots = [];
|
|
222543
|
+
for (let i = 0; i < numRoots; i++) {
|
|
222544
|
+
const arcPt = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
222545
|
+
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0); // exterior fraction sign based on extend flags
|
|
222546
|
+
const fArcNearest01 = data.sweep.fractionToSignedPeriodicFraction(fArc, undefined); // exterior fraction sign based on proximity to 0/1
|
|
222547
|
+
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPt);
|
|
222548
|
+
if (fLine !== undefined) {
|
|
222549
|
+
const linePt = pointA0H.interpolate(fLine, pointA1H);
|
|
222550
|
+
roots.push({ fArc, fArcNearest01, fLine, arcPt, linePt });
|
|
222551
|
+
}
|
|
222552
|
+
}
|
|
222553
|
+
// range-test and record roots
|
|
222554
|
+
for (const root of roots) {
|
|
222555
|
+
const { fArc, fArcNearest01, fLine, arcPt, linePt } = root;
|
|
222556
|
+
if (closeApproach) {
|
|
222557
|
+
const dist2 = arcPt.realDistanceSquaredXY(linePt);
|
|
222558
|
+
if (dist2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2, tol2))
|
|
222559
|
+
continue;
|
|
222560
|
+
}
|
|
222561
|
+
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
222562
|
+
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
222563
|
+
continue;
|
|
222564
|
+
}
|
|
222565
|
+
// since line-arc chains are so common, look for near-endpoint intersections using distance tol, which is often relatively looser than fraction tol
|
|
222566
|
+
const inArcRange = extendB0 || extendB1 || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fArc);
|
|
222567
|
+
const inLineRange = (extendA0 && fLine < 0) || (extendA1 && fLine > 1) || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fLine);
|
|
222568
|
+
let accepted = false;
|
|
222569
|
+
if (inArcRange && !inLineRange) // check tangency near line endpoint
|
|
222570
|
+
accepted = recordIfNearIntersection(fLine < 0 ? 0 : 1, fArc, (fLine < 0 ? pointA0H : pointA1H).realDistanceSquaredXY(arcPt));
|
|
222571
|
+
else if (!inArcRange && inLineRange) // check tangency near arc endpoint
|
|
222572
|
+
accepted = recordIfNearIntersection(fLine, fArcNearest01 < 0 ? 0 : 1, linePt.realDistanceSquaredXY(fArcNearest01 < 0 ? pointB0H : pointB1H));
|
|
222573
|
+
if (!accepted) // check intersection between nearest endpoints
|
|
222574
|
+
recordIfNearIntersection(fLine < 0.5 ? 0 : 1, fArcNearest01 < 0.5 ? 0 : 1, (fLine < 0.5 ? pointA0H : pointA1H).realDistanceSquaredXY(fArcNearest01 < 0.5 ? pointB0H : pointB1H));
|
|
222575
|
+
}
|
|
222576
|
+
}
|
|
222577
|
+
// Caller accesses data from a linestring or segment and passes it here.
|
|
222578
|
+
// The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
|
|
222579
|
+
// The fraction and extend parameters allow all combinations to be passed in.
|
|
222580
|
+
dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
|
|
222435
222581
|
// Arc: X(theta) = C + cos(theta)·U + sin(theta)·V
|
|
222436
222582
|
// Line: contains points A0,A1
|
|
222437
222583
|
// Arc point X is colinear (intersects) with line if det(A0, A1, X) = 0 with homogeneous xyw points and vectors
|
|
@@ -222440,107 +222586,10 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
222440
222586
|
// or
|
|
222441
222587
|
// alpha + beta cos(theta) + gamma sin(theta) = 0
|
|
222442
222588
|
// solve for theta; evaluate points; project back to line
|
|
222443
|
-
if (this._worldToLocalPerspective)
|
|
222444
|
-
|
|
222445
|
-
|
|
222446
|
-
|
|
222447
|
-
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
|
|
222448
|
-
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
|
|
222449
|
-
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
|
|
222450
|
-
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
222451
|
-
const closeApproach = (0 === numRoots);
|
|
222452
|
-
if (closeApproach)
|
|
222453
|
-
numRoots = 1; // arc closest approach is the first entry
|
|
222454
|
-
let numAccepted = 0;
|
|
222455
|
-
for (let i = 0; i < numRoots; i++) {
|
|
222456
|
-
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
222457
|
-
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
|
|
222458
|
-
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
|
|
222459
|
-
if (fLine === undefined)
|
|
222460
|
-
continue;
|
|
222461
|
-
if (closeApproach) {
|
|
222462
|
-
const linePoint = pointA0H.interpolate(fLine, pointA1H);
|
|
222463
|
-
const dist2 = arcPoint.realDistanceSquaredXY(linePoint);
|
|
222464
|
-
if (dist2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2, tol2))
|
|
222465
|
-
continue;
|
|
222466
|
-
}
|
|
222467
|
-
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
222468
|
-
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
222469
|
-
numAccepted++;
|
|
222470
|
-
}
|
|
222471
|
-
}
|
|
222472
|
-
if (numAccepted === 0 && !arc.sweep.isFullCircle) {
|
|
222473
|
-
// check for endpoint intersection beyond parametric tolerance but within point tolerance
|
|
222474
|
-
const pointB0H = this._worldToLocalPerspective.multiplyPoint3d(arc.startPoint(), 1);
|
|
222475
|
-
const pointB1H = this._worldToLocalPerspective.multiplyPoint3d(arc.endPoint(), 1);
|
|
222476
|
-
const dist2 = [];
|
|
222477
|
-
let d2 = pointA0H.realDistanceSquaredXY(pointB0H);
|
|
222478
|
-
if (d2 !== undefined)
|
|
222479
|
-
dist2.push({ d2, fA: 0, fB: 0 });
|
|
222480
|
-
d2 = pointA0H.realDistanceSquaredXY(pointB1H);
|
|
222481
|
-
if (d2 !== undefined)
|
|
222482
|
-
dist2.push({ d2, fA: 0, fB: 1 });
|
|
222483
|
-
d2 = pointA1H.realDistanceSquaredXY(pointB0H);
|
|
222484
|
-
if (d2 !== undefined)
|
|
222485
|
-
dist2.push({ d2, fA: 1, fB: 0 });
|
|
222486
|
-
d2 = pointA1H.realDistanceSquaredXY(pointB1H);
|
|
222487
|
-
if (d2 !== undefined)
|
|
222488
|
-
dist2.push({ d2, fA: 1, fB: 1 });
|
|
222489
|
-
dist2.sort((a, b) => a.d2 - b.d2);
|
|
222490
|
-
if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2[0].d2, tol2))
|
|
222491
|
-
this.recordPointWithLocalFractions(dist2[0].fA, cpA, fractionA0, fractionA1, dist2[0].fB, arc, 0, 1, reversed);
|
|
222492
|
-
}
|
|
222493
|
-
}
|
|
222494
|
-
else {
|
|
222495
|
-
const data = arc.toTransformedVectors(this._worldToLocalAffine);
|
|
222496
|
-
let pointA0Local = pointA0;
|
|
222497
|
-
let pointA1Local = pointA1;
|
|
222498
|
-
if (this._worldToLocalAffine) {
|
|
222499
|
-
pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
|
|
222500
|
-
pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
|
|
222501
|
-
}
|
|
222502
|
-
const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
|
|
222503
|
-
const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
|
|
222504
|
-
const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
|
|
222505
|
-
let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
|
|
222506
|
-
const closeApproach = (0 === numRoots);
|
|
222507
|
-
if (closeApproach)
|
|
222508
|
-
numRoots = 1; // arc closest approach is the first entry
|
|
222509
|
-
let numAccepted = 0;
|
|
222510
|
-
for (let i = 0; i < numRoots; i++) {
|
|
222511
|
-
const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
|
|
222512
|
-
const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
|
|
222513
|
-
const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
|
|
222514
|
-
if (fLine === undefined)
|
|
222515
|
-
continue;
|
|
222516
|
-
if (closeApproach) {
|
|
222517
|
-
const linePoint = pointA0Local.interpolate(fLine, pointA1Local);
|
|
222518
|
-
if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(arcPoint.distanceSquaredXY(linePoint), tol2))
|
|
222519
|
-
continue;
|
|
222520
|
-
}
|
|
222521
|
-
if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
|
|
222522
|
-
this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
|
|
222523
|
-
numAccepted++;
|
|
222524
|
-
}
|
|
222525
|
-
}
|
|
222526
|
-
if (numAccepted === 0 && !arc.sweep.isFullCircle) {
|
|
222527
|
-
// check for endpoint intersection beyond parametric tolerance but within point tolerance
|
|
222528
|
-
const pointB0Local = arc.startPoint();
|
|
222529
|
-
const pointB1Local = arc.endPoint();
|
|
222530
|
-
if (this._worldToLocalAffine) {
|
|
222531
|
-
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB0Local);
|
|
222532
|
-
this._worldToLocalAffine.multiplyXYAndZInPlace(pointB1Local);
|
|
222533
|
-
}
|
|
222534
|
-
const dist2 = [];
|
|
222535
|
-
dist2.push({ d2: pointA0Local.distanceSquaredXY(pointB0Local), fA: 0, fB: 0 });
|
|
222536
|
-
dist2.push({ d2: pointA0Local.distanceSquaredXY(pointB1Local), fA: 0, fB: 1 });
|
|
222537
|
-
dist2.push({ d2: pointA1Local.distanceSquaredXY(pointB0Local), fA: 1, fB: 0 });
|
|
222538
|
-
dist2.push({ d2: pointA1Local.distanceSquaredXY(pointB1Local), fA: 1, fB: 1 });
|
|
222539
|
-
dist2.sort((a, b) => a.d2 - b.d2);
|
|
222540
|
-
if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2[0].d2, tol2))
|
|
222541
|
-
this.recordPointWithLocalFractions(dist2[0].fA, cpA, fractionA0, fractionA1, dist2[0].fB, arc, 0, 1, reversed);
|
|
222542
|
-
}
|
|
222543
|
-
}
|
|
222589
|
+
if (this._worldToLocalPerspective)
|
|
222590
|
+
this.computeSegmentArcHomogeneous(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed);
|
|
222591
|
+
else
|
|
222592
|
+
this.computeSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed);
|
|
222544
222593
|
}
|
|
222545
222594
|
/**
|
|
222546
222595
|
* Compute the intersection of two xy-arcs.
|
|
@@ -223036,7 +223085,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
223036
223085
|
let converged = newtonSearcher.runIterations();
|
|
223037
223086
|
const fractionA = newtonSearcher.getU();
|
|
223038
223087
|
const fractionB = newtonSearcher.getV();
|
|
223039
|
-
|
|
223088
|
+
// note looser tol for spiral, which can have high order tangency at start/end
|
|
223089
|
+
if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallFraction)) {
|
|
223040
223090
|
const pointA = curveA.fractionToPoint(fractionA, CurveCurveIntersectXY._workPointA0);
|
|
223041
223091
|
const pointB = spiralB.fractionToPoint(fractionB, CurveCurveIntersectXY._workPointB0);
|
|
223042
223092
|
if (!converged) // Newton may have found close points even if it didn't converge parametrically
|
|
@@ -231554,6 +231604,13 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_4__.Cu
|
|
|
231554
231604
|
get spiralType() {
|
|
231555
231605
|
return this._spiralType;
|
|
231556
231606
|
}
|
|
231607
|
+
/**
|
|
231608
|
+
* Whether the start and end points are defined and within tolerance.
|
|
231609
|
+
* * Always `false` for `TransitionSpiral3d`.
|
|
231610
|
+
*/
|
|
231611
|
+
isPhysicallyClosedCurve(_tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, _xyOnly = false) {
|
|
231612
|
+
return false;
|
|
231613
|
+
}
|
|
231557
231614
|
/** Return 1/r with convention that exact zero input returns 0 (straight line, zero curvature, infinite radius). */
|
|
231558
231615
|
static radiusToCurvature(radius) {
|
|
231559
231616
|
return (radius === 0.0) ? 0.0 : 1.0 / radius;
|
|
@@ -232673,7 +232730,7 @@ class AngleSweep {
|
|
|
232673
232730
|
* @param toNegativeFraction exterior fraction handling:
|
|
232674
232731
|
* * if true, return `fraction` period-shifted to within one period of the start
|
|
232675
232732
|
* * if false, return `fraction` period-shifted to within one period of the end
|
|
232676
|
-
* * if undefined, return the period-shift of `fraction` closest to [0,1].
|
|
232733
|
+
* * if undefined, return the period-shift of `fraction` closest in fraction space to [0,1].
|
|
232677
232734
|
* @returns period-shifted fraction. If `fraction` is already in [0,1], or the sweep is empty, then `fraction` is
|
|
232678
232735
|
* returned unchanged.
|
|
232679
232736
|
*/
|
|
@@ -232705,7 +232762,7 @@ class AngleSweep {
|
|
|
232705
232762
|
* @param toNegativeFraction exterior fraction handling:
|
|
232706
232763
|
* * if true, return `fraction` period-shifted to within one period of the start
|
|
232707
232764
|
* * if false, return `fraction` period-shifted to within one period of the end
|
|
232708
|
-
* * if undefined, return the period-shift of `fraction` closest to [0,1].
|
|
232765
|
+
* * if undefined, return the period-shift of `fraction` closest in fraction space to [0,1].
|
|
232709
232766
|
* @returns period-shifted fraction. If `fraction` is already in [0,1], or the sweep is empty, then `fraction` is
|
|
232710
232767
|
* returned unchanged.
|
|
232711
232768
|
*/
|
|
@@ -250498,6 +250555,14 @@ class Range3d extends RangeBase {
|
|
|
250498
250555
|
diagonal(result) {
|
|
250499
250556
|
return this.low.vectorTo(this.high, result);
|
|
250500
250557
|
}
|
|
250558
|
+
/** Return the length of the range diagonal, optionally ignoring z extent. */
|
|
250559
|
+
diagonalLength(ignoreZ = false) {
|
|
250560
|
+
return ignoreZ ? this.low.distanceXY(this.high) : this.low.distance(this.high);
|
|
250561
|
+
}
|
|
250562
|
+
/** Return the squared length of the range diagonal, optionally ignoring z extent. */
|
|
250563
|
+
diagonalLengthSquared(ignoreZ = false) {
|
|
250564
|
+
return ignoreZ ? this.low.distanceSquaredXY(this.high) : this.low.distanceSquared(this.high);
|
|
250565
|
+
}
|
|
250501
250566
|
/**
|
|
250502
250567
|
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
250503
250568
|
* large negative coordinates.
|
|
@@ -251551,6 +251616,14 @@ class Range2d extends RangeBase {
|
|
|
251551
251616
|
diagonal(result) {
|
|
251552
251617
|
return this.low.vectorTo(this.high, result);
|
|
251553
251618
|
}
|
|
251619
|
+
/** Return the length of the range diagonal. */
|
|
251620
|
+
diagonalLength() {
|
|
251621
|
+
return this.low.distance(this.high);
|
|
251622
|
+
}
|
|
251623
|
+
/** Return the squared length of the range diagonal. */
|
|
251624
|
+
diagonalLengthSquared() {
|
|
251625
|
+
return this.low.distanceSquared(this.high);
|
|
251626
|
+
}
|
|
251554
251627
|
/**
|
|
251555
251628
|
* Return the point at the specified fraction along the diagonal vector. There is no check for isNull -- if the
|
|
251556
251629
|
* range isNull(), the vector will have very large negative coordinates.
|
|
@@ -317534,7 +317607,9 @@ const Units = {
|
|
|
317534
317607
|
PROBABILITY_PERCENT: "Units.PROBABILITY_PERCENT",
|
|
317535
317608
|
},
|
|
317536
317609
|
ROTATIONAL_SPRING_CONSTANT: {
|
|
317610
|
+
KN_M_PER_DEG: "Units.KN_M_PER_DEG",
|
|
317537
317611
|
KN_M_PER_RAD: "Units.KN_M_PER_RAD",
|
|
317612
|
+
KPF_FT_PER_DEG: "Units.KPF_FT_PER_DEG",
|
|
317538
317613
|
KPF_FT_PER_RAD: "Units.KPF_FT_PER_RAD",
|
|
317539
317614
|
N_M_PER_DEG: "Units.N_M_PER_DEG",
|
|
317540
317615
|
N_M_PER_RAD: "Units.N_M_PER_RAD",
|
|
@@ -318249,6 +318324,7 @@ const basicUnitConversionData = {
|
|
|
318249
318324
|
"Units.KMOL_PER_SEC": ["Units.MOLAR_FLOW", 0.001, 0],
|
|
318250
318325
|
"Units.KN": ["Units.FORCE", 0.001, 0],
|
|
318251
318326
|
"Units.KN_M": ["Units.TORQUE", 0.001, 0],
|
|
318327
|
+
"Units.KN_M_PER_DEG": ["Units.ROTATIONAL_SPRING_CONSTANT", 0.0000174532925199433, 0],
|
|
318252
318328
|
"Units.KN_M_PER_M": ["Units.LINEAR_TORQUE", 0.001, 0],
|
|
318253
318329
|
"Units.KN_M_PER_RAD": ["Units.ROTATIONAL_SPRING_CONSTANT", 0.001, 0],
|
|
318254
318330
|
"Units.KN_M_PER_SQ_M": ["Units.AREA_TORQUE", 0.001, 0],
|
|
@@ -318260,6 +318336,7 @@ const basicUnitConversionData = {
|
|
|
318260
318336
|
"Units.KOHM": ["Units.ELECTRICAL_RESISTANCE", 0.001, 0],
|
|
318261
318337
|
"Units.KPF": ["Units.FORCE", 0.00022480894309971, 0],
|
|
318262
318338
|
"Units.KPF_FT": ["Units.TORQUE", 0.000737562149277265, 0],
|
|
318339
|
+
"Units.KPF_FT_PER_DEG": ["Units.ROTATIONAL_SPRING_CONSTANT", 0.0000128728879429742, 0],
|
|
318263
318340
|
"Units.KPF_FT_PER_FT": ["Units.LINEAR_TORQUE", 0.00022480894309971, 0],
|
|
318264
318341
|
"Units.KPF_FT_PER_RAD": ["Units.ROTATIONAL_SPRING_CONSTANT", 0.000737562149277265, 0],
|
|
318265
318342
|
"Units.KPF_FT_PER_SQ_FT": ["Units.AREA_TORQUE", 0.0000685217658567918, 0],
|
|
@@ -321945,10 +322022,10 @@ class Settings {
|
|
|
321945
322022
|
});
|
|
321946
322023
|
}
|
|
321947
322024
|
toString() {
|
|
321948
|
-
return `Configurations:
|
|
321949
|
-
oidc client id: ${this.oidcClientId},
|
|
321950
|
-
oidc scopes: ${this.oidcScopes},
|
|
321951
|
-
applicationId: ${this.gprid},
|
|
322025
|
+
return `Configurations:
|
|
322026
|
+
oidc client id: ${this.oidcClientId},
|
|
322027
|
+
oidc scopes: ${this.oidcScopes},
|
|
322028
|
+
applicationId: ${this.gprid},
|
|
321952
322029
|
log level: ${this.logLevel}`;
|
|
321953
322030
|
}
|
|
321954
322031
|
}
|
|
@@ -333906,7 +333983,7 @@ var loadLanguages = instance.loadLanguages;
|
|
|
333906
333983
|
(module) {
|
|
333907
333984
|
|
|
333908
333985
|
"use strict";
|
|
333909
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.13.0-dev.
|
|
333986
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.13.0-dev.6","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.11","@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"}}');
|
|
333910
333987
|
|
|
333911
333988
|
/***/ }
|
|
333912
333989
|
|