@itwin/ecschema-rpcinterface-tests 4.1.0-dev.12 → 4.1.0-dev.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/_a8a9.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +539 -286
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/object-storage-azure.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_itwin_object-storage-azure_1_6_0_node_modules_itwin_obj-0f69b1.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_3_3_node_modules_loaders_gl_draco_di-28f62e.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_reflect-metadata_0_1_13_node_modules_reflect-metadata_R-610cb3.bundled-tests.js.map +1 -1
- package/package.json +16 -16
|
@@ -28309,6 +28309,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
28309
28309
|
*/
|
|
28310
28310
|
var TypeOfChange;
|
|
28311
28311
|
(function (TypeOfChange) {
|
|
28312
|
+
/** Element contains no changes */
|
|
28313
|
+
TypeOfChange[TypeOfChange["NoChange"] = 0] = "NoChange";
|
|
28312
28314
|
/** A property in the element changed */
|
|
28313
28315
|
TypeOfChange[TypeOfChange["Property"] = 1] = "Property";
|
|
28314
28316
|
/** The geometry stream of a [GeometricElement]($backend) changed */
|
|
@@ -181145,7 +181147,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
181145
181147
|
|
|
181146
181148
|
|
|
181147
181149
|
/**
|
|
181148
|
-
*
|
|
181150
|
+
* Annotation of an interval of a curve.
|
|
181149
181151
|
* * The interval is marked with two pairs of numbers:
|
|
181150
181152
|
* * * fraction0, fraction1 = fraction parameters along the child curve
|
|
181151
181153
|
* * * distance0,distance1 = distances within containing CurveChainWithDistanceIndex
|
|
@@ -181169,8 +181171,7 @@ class PathFragment {
|
|
|
181169
181171
|
containsChainDistance(distance) {
|
|
181170
181172
|
return distance >= this.chainDistance0 && distance <= this.chainDistance1;
|
|
181171
181173
|
}
|
|
181172
|
-
|
|
181173
|
-
// not be larger.
|
|
181174
|
+
/** Return a quick distance to the curve. This may be SMALLER than true distance but may not be larger */
|
|
181174
181175
|
quickMinDistanceToChildCurve(spacePoint) {
|
|
181175
181176
|
if (this.range) {
|
|
181176
181177
|
return this.range.distanceToPoint(spacePoint);
|
|
@@ -181181,8 +181182,10 @@ class PathFragment {
|
|
|
181181
181182
|
return detail.a;
|
|
181182
181183
|
return 0;
|
|
181183
181184
|
}
|
|
181184
|
-
|
|
181185
|
-
|
|
181185
|
+
/**
|
|
181186
|
+
* Return an array with (references to) all the path fragments, sorted smallest to largest on the "a" value
|
|
181187
|
+
* equal to the quick min distance to the fragment
|
|
181188
|
+
*/
|
|
181186
181189
|
static collectSortedQuickMinDistances(fragments, spacePoint) {
|
|
181187
181190
|
const sortedFragments = [];
|
|
181188
181191
|
for (const f of fragments) {
|
|
@@ -181199,26 +181202,28 @@ class PathFragment {
|
|
|
181199
181202
|
containsChildCurveAndChildFraction(curve, fraction) {
|
|
181200
181203
|
return this.childCurve === curve && fraction >= this.childFraction0 && fraction <= this.childFraction1;
|
|
181201
181204
|
}
|
|
181202
|
-
/**
|
|
181205
|
+
/**
|
|
181206
|
+
* Convert distance to local fraction, and apply that to interpolate between the stored curve fractions.
|
|
181203
181207
|
* Note that proportional calculation does NOT account for nonuniform parameterization in the child curve.
|
|
181204
181208
|
*/
|
|
181205
181209
|
chainDistanceToInterpolatedChildFraction(distance) {
|
|
181206
181210
|
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.inverseInterpolate(this.childFraction0, this.chainDistance0, this.childFraction1, this.chainDistance1, distance, this.childFraction0); // the interval "must" have nonzero length, division should be safe . ..
|
|
181207
181211
|
}
|
|
181208
|
-
/** Convert chainDistance to true chidFraction, using detailed moveSignedDistanceFromFraction
|
|
181209
|
-
*/
|
|
181212
|
+
/** Convert chainDistance to true chidFraction, using detailed moveSignedDistanceFromFraction */
|
|
181210
181213
|
chainDistanceToAccurateChildFraction(chainDistance, allowExtrapolation) {
|
|
181211
181214
|
// The fragments are really expected to do good mappings in their distance range ...
|
|
181212
181215
|
const childDetail = this.childCurve.moveSignedDistanceFromFraction(this.childFraction0, chainDistance - this.chainDistance0, allowExtrapolation ?? false);
|
|
181213
181216
|
return childDetail.fraction;
|
|
181214
181217
|
}
|
|
181215
|
-
/**
|
|
181218
|
+
/**
|
|
181219
|
+
* Return the scale factor to map childCurve fraction derivatives to chain fraction derivatives
|
|
181216
181220
|
* @param globalDistance total length of the global curve.
|
|
181217
181221
|
*/
|
|
181218
181222
|
fractionScaleFactor(globalDistance) {
|
|
181219
181223
|
return globalDistance * (this.childFraction1 - this.childFraction0) / (this.chainDistance1 - this.chainDistance0);
|
|
181220
181224
|
}
|
|
181221
|
-
/**
|
|
181225
|
+
/**
|
|
181226
|
+
* Reverse the fraction and distance data.
|
|
181222
181227
|
* * each child fraction `f` is replaced by `1-f`
|
|
181223
181228
|
* * each `chainDistance` is replaced by `totalDistance-chainDistance`
|
|
181224
181229
|
*/
|
|
@@ -181237,7 +181242,7 @@ class PathFragment {
|
|
|
181237
181242
|
return this.childFractionToChainDistance(fraction);
|
|
181238
181243
|
}
|
|
181239
181244
|
/**
|
|
181240
|
-
*
|
|
181245
|
+
* Convert a fractional position on the childCurve to distance in the chain space.
|
|
181241
181246
|
* * Return value is SIGNED -- will be negative when fraction < this.childFraction0.
|
|
181242
181247
|
* @param fraction fraction along the curve within this fragment
|
|
181243
181248
|
*/
|
|
@@ -181259,7 +181264,6 @@ class DistanceIndexConstructionContext {
|
|
|
181259
181264
|
startCurvePrimitive(_cp) { }
|
|
181260
181265
|
endParentCurvePrimitive(_cp) { }
|
|
181261
181266
|
endCurvePrimitive(_cp) { }
|
|
181262
|
-
// um .. we need to see curves? how to reject?
|
|
181263
181267
|
announcePointTangent(_xyz, _fraction, _tangent) { }
|
|
181264
181268
|
/** Announce numPoints interpolated between point0 and point1, with associated fractions */
|
|
181265
181269
|
announceSegmentInterval(cp, point0, point1, numStrokes, fraction0, fraction1) {
|
|
@@ -181306,13 +181310,17 @@ class DistanceIndexConstructionContext {
|
|
|
181306
181310
|
/**
|
|
181307
181311
|
* `CurveChainWithDistanceIndex` is a CurvePrimitive whose fractional parameterization is proportional to true
|
|
181308
181312
|
* distance along a CurveChain.
|
|
181313
|
+
* * For example if the total length of the chain is `L`, then the distance along the chain from parameters `t0`
|
|
181314
|
+
* to `t1` is easily computed as `L*(t1-t0)`.
|
|
181309
181315
|
* * The curve chain can be any type derived from CurveChain.
|
|
181310
181316
|
* * * i.e. either a `Path` or a `Loop`
|
|
181311
181317
|
* @public
|
|
181312
181318
|
*/
|
|
181313
181319
|
class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive {
|
|
181314
181320
|
/** Test if other is a `CurveChainWithDistanceIndex` */
|
|
181315
|
-
isSameGeometryClass(other) {
|
|
181321
|
+
isSameGeometryClass(other) {
|
|
181322
|
+
return other instanceof CurveChainWithDistanceIndex;
|
|
181323
|
+
}
|
|
181316
181324
|
// final assembly of CurveChainWithDistanceIndex -- caller must create valid fragment index.
|
|
181317
181325
|
constructor(path, fragments) {
|
|
181318
181326
|
super();
|
|
@@ -181332,14 +181340,20 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181332
181340
|
return CurveChainWithDistanceIndex.createCapture(c);
|
|
181333
181341
|
return undefined;
|
|
181334
181342
|
}
|
|
181335
|
-
/**
|
|
181343
|
+
/**
|
|
181344
|
+
* Reference to the contained path.
|
|
181336
181345
|
* * Do not modify the path. The distance index will be wrong.
|
|
181337
181346
|
*/
|
|
181338
|
-
get path() {
|
|
181339
|
-
|
|
181347
|
+
get path() {
|
|
181348
|
+
return this._path;
|
|
181349
|
+
}
|
|
181350
|
+
/**
|
|
181351
|
+
* Reference to the fragments array.
|
|
181340
181352
|
* * Do not modify.
|
|
181341
181353
|
*/
|
|
181342
|
-
get fragments() {
|
|
181354
|
+
get fragments() {
|
|
181355
|
+
return this._fragments;
|
|
181356
|
+
}
|
|
181343
181357
|
/** Return a deep clone */
|
|
181344
181358
|
clone() {
|
|
181345
181359
|
const c = this._path.clone();
|
|
@@ -181411,7 +181425,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181411
181425
|
newPath.children.reverse();
|
|
181412
181426
|
return CurveChainWithDistanceIndex.createCapture(newPath);
|
|
181413
181427
|
}
|
|
181414
|
-
/**
|
|
181428
|
+
/**
|
|
181429
|
+
* Ask if the curve is within tolerance of a plane.
|
|
181415
181430
|
* @returns Returns true if the curve is completely within tolerance of the plane.
|
|
181416
181431
|
*/
|
|
181417
181432
|
isInPlane(plane) {
|
|
@@ -181421,7 +181436,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181421
181436
|
}
|
|
181422
181437
|
return true;
|
|
181423
181438
|
}
|
|
181424
|
-
/**
|
|
181439
|
+
/** Return the start point of the primitive. The default implementation returns fractionToPoint (0.0) */
|
|
181425
181440
|
startPoint(result) {
|
|
181426
181441
|
const c = this._path.cyclicCurvePrimitive(0);
|
|
181427
181442
|
if (c)
|
|
@@ -181441,7 +181456,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181441
181456
|
c.emitStrokes(dest, options);
|
|
181442
181457
|
}
|
|
181443
181458
|
}
|
|
181444
|
-
/**
|
|
181459
|
+
/**
|
|
181460
|
+
* Ask the curve to announce points and simple subcurve fragments for stroking.
|
|
181445
181461
|
* See IStrokeHandler for description of the sequence of the method calls.
|
|
181446
181462
|
*/
|
|
181447
181463
|
emitStrokableParts(dest, options) {
|
|
@@ -181450,7 +181466,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181450
181466
|
}
|
|
181451
181467
|
}
|
|
181452
181468
|
/**
|
|
181453
|
-
*
|
|
181469
|
+
* Return the stroke count required for given options.
|
|
181454
181470
|
* @param options StrokeOptions that determine count
|
|
181455
181471
|
*/
|
|
181456
181472
|
computeStrokeCountForOptions(options) {
|
|
@@ -181464,7 +181480,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181464
181480
|
* Return an array containing only the curve primitives.
|
|
181465
181481
|
* @param collectorArray array to receive primitives (pushed -- the array is not cleared)
|
|
181466
181482
|
* @param smallestPossiblePrimitives if true, recurse on the (otherwise hidden) children. If false, only push `this`.
|
|
181467
|
-
* @param explodeLinestrings (if smallestPossiblePrimitives is true) whether to push a [[LineSegment3d]] for each
|
|
181483
|
+
* @param explodeLinestrings (if smallestPossiblePrimitives is true) whether to push a [[LineSegment3d]] for each
|
|
181484
|
+
* segment of a [[LineString3d]] child. If false, push only the [[LineString3d]].
|
|
181468
181485
|
*/
|
|
181469
181486
|
collectCurvePrimitivesGo(collectorArray, smallestPossiblePrimitives = false, explodeLineStrings = false) {
|
|
181470
181487
|
if (smallestPossiblePrimitives) {
|
|
@@ -181477,7 +181494,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181477
181494
|
}
|
|
181478
181495
|
}
|
|
181479
181496
|
/**
|
|
181480
|
-
*
|
|
181497
|
+
* Construct StrokeCountMap for each child, accumulating data to stroke count map for this primitive.
|
|
181481
181498
|
* @param options StrokeOptions that determine count
|
|
181482
181499
|
* @param parentStrokeMap evolving parent map.
|
|
181483
181500
|
*/
|
|
@@ -181488,20 +181505,19 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181488
181505
|
}
|
|
181489
181506
|
_curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive.installStrokeCountMap(this, myMap, parentStrokeMap);
|
|
181490
181507
|
}
|
|
181491
|
-
/**
|
|
181508
|
+
/**
|
|
181509
|
+
* Second step of double dispatch: call `this._path.dispatchToGeometryHandler (handler)`
|
|
181492
181510
|
* * Note that this exposes the children individually to the handler.
|
|
181493
181511
|
*/
|
|
181494
181512
|
dispatchToGeometryHandler(handler) {
|
|
181495
181513
|
return this._path.dispatchToGeometryHandler(handler);
|
|
181496
181514
|
}
|
|
181497
|
-
/** Extend (increase) `rangeToExtend` as needed to include these curves (optionally transformed)
|
|
181498
|
-
*/
|
|
181515
|
+
/** Extend (increase) `rangeToExtend` as needed to include these curves (optionally transformed) */
|
|
181499
181516
|
extendRange(rangeToExtend, transform) {
|
|
181500
181517
|
this._path.extendRange(rangeToExtend, transform);
|
|
181501
181518
|
}
|
|
181502
181519
|
/**
|
|
181503
|
-
*
|
|
181504
|
-
* * Curve length is always positive.
|
|
181520
|
+
* Curve length is always positive.
|
|
181505
181521
|
* @returns Returns a (high accuracy) length of the curve between fractional positions
|
|
181506
181522
|
* @returns Returns the length of the curve.
|
|
181507
181523
|
*/
|
|
@@ -181553,7 +181569,9 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181553
181569
|
* Convert distance along the chain to fraction along the chain.
|
|
181554
181570
|
* @param distance distance along the chain
|
|
181555
181571
|
*/
|
|
181556
|
-
chainDistanceToChainFraction(distance) {
|
|
181572
|
+
chainDistanceToChainFraction(distance) {
|
|
181573
|
+
return distance / this._totalLength;
|
|
181574
|
+
}
|
|
181557
181575
|
/**
|
|
181558
181576
|
* Resolve a fraction within a specific curve to a fragment.
|
|
181559
181577
|
* @param curve
|
|
@@ -181575,9 +181593,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181575
181593
|
}
|
|
181576
181594
|
return undefined;
|
|
181577
181595
|
}
|
|
181578
|
-
/**
|
|
181579
|
-
* Returns the total length of curves.
|
|
181580
|
-
*/
|
|
181596
|
+
/** Returns the total length of curves. */
|
|
181581
181597
|
curveLength() {
|
|
181582
181598
|
return this._totalLength;
|
|
181583
181599
|
}
|
|
@@ -181604,8 +181620,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181604
181620
|
// fragment = this.chainDistanceToFragment(chainDistance, true);
|
|
181605
181621
|
return this._fragments[0].childCurve.fractionToPoint(0.0, result);
|
|
181606
181622
|
}
|
|
181607
|
-
/**
|
|
181608
|
-
*
|
|
181623
|
+
/**
|
|
181624
|
+
* Return the point (x,y,z) and derivative on the curve at fractional position.
|
|
181609
181625
|
* * Note that this derivative is "derivative of xyz with respect to fraction."
|
|
181610
181626
|
* * this derivative shows the speed of the "fractional point" moving along the curve.
|
|
181611
181627
|
* * this is not generally a unit vector. use fractionToPointAndUnitTangent for a unit vector.
|
|
@@ -181639,10 +181655,11 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181639
181655
|
result.direction.normalizeInPlace();
|
|
181640
181656
|
return result;
|
|
181641
181657
|
}
|
|
181642
|
-
/**
|
|
181643
|
-
*
|
|
181658
|
+
/**
|
|
181659
|
+
* Return a plane with
|
|
181644
181660
|
* * origin at fractional position along the curve
|
|
181645
|
-
* * vectorU is the first derivative, i.e. tangent vector with length equal to the rate of change with respect to
|
|
181661
|
+
* * vectorU is the first derivative, i.e. tangent vector with length equal to the rate of change with respect to
|
|
181662
|
+
* the fraction.
|
|
181646
181663
|
* * vectorV is the second derivative, i.e.derivative of vectorU.
|
|
181647
181664
|
*/
|
|
181648
181665
|
fractionToPointAnd2Derivatives(fraction, result) {
|
|
@@ -181668,7 +181685,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181668
181685
|
result.vectorV.scaleInPlace(scale * scale);
|
|
181669
181686
|
return result;
|
|
181670
181687
|
}
|
|
181671
|
-
/**
|
|
181688
|
+
/**
|
|
181689
|
+
* Attempt to transform in place.
|
|
181672
181690
|
* * Warning: If any child fails, this object becomes invalid. But that should never happen.
|
|
181673
181691
|
*/
|
|
181674
181692
|
tryTransformInPlace(transform) {
|
|
@@ -181701,9 +181719,11 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181701
181719
|
}
|
|
181702
181720
|
return false;
|
|
181703
181721
|
}
|
|
181704
|
-
/**
|
|
181722
|
+
/**
|
|
181723
|
+
* Implement moveSignedDistanceFromFraction.
|
|
181705
181724
|
* * See `CurvePrimitive` for parameter details.
|
|
181706
|
-
* * The returned location directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
181725
|
+
* * The returned location directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
181726
|
+
* has pointer to an additional detail for the child curve.
|
|
181707
181727
|
*/
|
|
181708
181728
|
moveSignedDistanceFromFraction(startFraction, signedDistance, allowExtension, result) {
|
|
181709
181729
|
const distanceA = startFraction * this._totalLength;
|
|
@@ -181716,7 +181736,6 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181716
181736
|
return chainDetail;
|
|
181717
181737
|
}
|
|
181718
181738
|
/**
|
|
181719
|
-
*
|
|
181720
181739
|
* The returned object has
|
|
181721
181740
|
* * numCalls = number of times closestPoint was called.
|
|
181722
181741
|
* * numCurvesTested = number of curves tested with full closestPoint
|
|
@@ -181737,10 +181756,12 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181737
181756
|
}
|
|
181738
181757
|
return a;
|
|
181739
181758
|
}
|
|
181740
|
-
/**
|
|
181759
|
+
/**
|
|
181760
|
+
* Search for the curve point that is closest to the spacePoint.
|
|
181741
181761
|
* * The CurveChainWithDistanceIndex invokes the base class CurvePrimitive method, which
|
|
181742
181762
|
* (via a handler) determines a CurveLocation detail among the children.
|
|
181743
|
-
* * The returned detail directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
181763
|
+
* * The returned detail directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
181764
|
+
* has pointer to an additional detail for the child curve.
|
|
181744
181765
|
* @param spacePoint point in space
|
|
181745
181766
|
* @param extend true to extend the curve
|
|
181746
181767
|
* @returns Returns a CurveLocationDetail structure that holds the details of the close point.
|
|
@@ -181789,7 +181810,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181789
181810
|
}
|
|
181790
181811
|
/**
|
|
181791
181812
|
* Construct an offset of each child as viewed in the xy-plane (ignoring z).
|
|
181792
|
-
* * No attempt is made to join the offset children. Use RegionOps.constructCurveXYOffset() to return a fully
|
|
181813
|
+
* * No attempt is made to join the offset children. Use RegionOps.constructCurveXYOffset() to return a fully
|
|
181814
|
+
* joined offset.
|
|
181793
181815
|
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
|
|
181794
181816
|
*/
|
|
181795
181817
|
constructOffsetXY(offsetDistanceOrOptions) {
|
|
@@ -181806,10 +181828,13 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
181806
181828
|
}
|
|
181807
181829
|
return offsets;
|
|
181808
181830
|
}
|
|
181809
|
-
/**
|
|
181831
|
+
/**
|
|
181832
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of
|
|
181833
|
+
* projection.
|
|
181810
181834
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
181811
181835
|
* @param lowHigh optional receiver for output
|
|
181812
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
181836
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
181837
|
+
* end of the ray.
|
|
181813
181838
|
*/
|
|
181814
181839
|
projectedParameterRange(ray, lowHigh) {
|
|
181815
181840
|
return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
@@ -188632,14 +188657,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
188632
188657
|
* @public
|
|
188633
188658
|
*/
|
|
188634
188659
|
class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
188635
|
-
/**
|
|
188636
|
-
isSameGeometryClass(other) {
|
|
188660
|
+
/** Test if `other` is a `Loop` */
|
|
188661
|
+
isSameGeometryClass(other) {
|
|
188662
|
+
return other instanceof Loop;
|
|
188663
|
+
}
|
|
188637
188664
|
/** Test if `other` is an instance of `Loop` */
|
|
188638
188665
|
constructor() {
|
|
188639
188666
|
super();
|
|
188640
188667
|
/** String name for schema properties */
|
|
188641
188668
|
this.curveCollectionType = "loop";
|
|
188642
|
-
/**
|
|
188669
|
+
/** Tag value that can be set to true for user code to mark inner and outer loops. */
|
|
188643
188670
|
this.isInner = false;
|
|
188644
188671
|
}
|
|
188645
188672
|
/**
|
|
@@ -188684,13 +188711,22 @@ class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
188684
188711
|
return Loop.create(strokes);
|
|
188685
188712
|
}
|
|
188686
188713
|
/** Return the boundary type (2) of a corresponding MicroStation CurveVector */
|
|
188687
|
-
dgnBoundaryType() {
|
|
188688
|
-
|
|
188714
|
+
dgnBoundaryType() {
|
|
188715
|
+
/**
|
|
188716
|
+
* All "Loop" become "outer". TypeScript Loop object is equivalent to a native CurveVector with
|
|
188717
|
+
* boundaryType = BOUNDARY_TYPE_Outer. In other words, TypeScript has no flavor of Loop that
|
|
188718
|
+
* carries "hole" semantics.
|
|
188719
|
+
*/
|
|
188720
|
+
return 2;
|
|
188721
|
+
}
|
|
188722
|
+
/** Invoke `processor.announceLoop(this, indexInParent)` */
|
|
188689
188723
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
188690
188724
|
return processor.announceLoop(this, indexInParent);
|
|
188691
188725
|
}
|
|
188692
188726
|
/** Create a new `Loop` with no children */
|
|
188693
|
-
cloneEmptyPeer() {
|
|
188727
|
+
cloneEmptyPeer() {
|
|
188728
|
+
return new Loop();
|
|
188729
|
+
}
|
|
188694
188730
|
/** Second step of double dispatch: call `handler.handleLoop(this)` */
|
|
188695
188731
|
dispatchToGeometryHandler(handler) {
|
|
188696
188732
|
return handler.handleLoop(this);
|
|
@@ -188701,6 +188737,7 @@ class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
188701
188737
|
* @public
|
|
188702
188738
|
*/
|
|
188703
188739
|
class LoopCurveLoopCurve {
|
|
188740
|
+
/** Constructor */
|
|
188704
188741
|
constructor(loopA, curveA, loopB, curveB) {
|
|
188705
188742
|
this.loopA = loopA;
|
|
188706
188743
|
this.curveA = curveA;
|
|
@@ -188750,9 +188787,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
188750
188787
|
*/
|
|
188751
188788
|
class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCollection {
|
|
188752
188789
|
/** Test if `other` is an instance of `ParityRegion` */
|
|
188753
|
-
isSameGeometryClass(other) {
|
|
188790
|
+
isSameGeometryClass(other) {
|
|
188791
|
+
return other instanceof ParityRegion;
|
|
188792
|
+
}
|
|
188754
188793
|
/** Return the array of loops in this parity region. */
|
|
188755
|
-
get children() {
|
|
188794
|
+
get children() {
|
|
188795
|
+
return this._children;
|
|
188796
|
+
}
|
|
188756
188797
|
/** Construct parity region with empty loop array */
|
|
188757
188798
|
constructor() {
|
|
188758
188799
|
super();
|
|
@@ -188760,9 +188801,7 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
188760
188801
|
this.curveCollectionType = "parityRegion";
|
|
188761
188802
|
this._children = [];
|
|
188762
188803
|
}
|
|
188763
|
-
/**
|
|
188764
|
-
* Add loops (recursively) to this region's children
|
|
188765
|
-
*/
|
|
188804
|
+
/** Add loops (recursively) to this region's children */
|
|
188766
188805
|
addLoops(data) {
|
|
188767
188806
|
if (data === undefined) {
|
|
188768
188807
|
}
|
|
@@ -188777,7 +188816,8 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
188777
188816
|
}
|
|
188778
188817
|
}
|
|
188779
188818
|
}
|
|
188780
|
-
/**
|
|
188819
|
+
/**
|
|
188820
|
+
* Return a single loop or parity region with given loops.
|
|
188781
188821
|
* * The returned structure CAPTURES the loops.
|
|
188782
188822
|
* * The loops are NOT reorganized by hole analysis.
|
|
188783
188823
|
*/
|
|
@@ -188797,8 +188837,10 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
188797
188837
|
return result;
|
|
188798
188838
|
}
|
|
188799
188839
|
/** Return the boundary type (4) of a corresponding MicroStation CurveVector */
|
|
188800
|
-
dgnBoundaryType() {
|
|
188801
|
-
|
|
188840
|
+
dgnBoundaryType() {
|
|
188841
|
+
return 4;
|
|
188842
|
+
}
|
|
188843
|
+
/** Invoke `processor.announceParityRegion(this, indexInParent)` */
|
|
188802
188844
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
188803
188845
|
return processor.announceParityRegion(this, indexInParent);
|
|
188804
188846
|
}
|
|
@@ -188825,9 +188867,12 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
188825
188867
|
return clone;
|
|
188826
188868
|
}
|
|
188827
188869
|
/** Create a new empty parity region. */
|
|
188828
|
-
cloneEmptyPeer() {
|
|
188829
|
-
|
|
188830
|
-
|
|
188870
|
+
cloneEmptyPeer() {
|
|
188871
|
+
return new ParityRegion();
|
|
188872
|
+
}
|
|
188873
|
+
/**
|
|
188874
|
+
* Add `child` to this parity region.
|
|
188875
|
+
* * Any child type other than `Loop` is ignored.
|
|
188831
188876
|
*/
|
|
188832
188877
|
tryAddChild(child) {
|
|
188833
188878
|
if (child && child instanceof _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop) {
|
|
@@ -188876,14 +188921,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
188876
188921
|
|
|
188877
188922
|
/**
|
|
188878
188923
|
* * A `Path` object is a collection of curves that join head-to-tail to form a path.
|
|
188879
|
-
* * A `Path` object does not bound a planar region.
|
|
188924
|
+
* * A `Path` object does not bound a planar region. Use `Loop` to indicate region bounding.
|
|
188880
188925
|
* @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
|
|
188881
188926
|
* @public
|
|
188882
188927
|
*/
|
|
188883
188928
|
class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
188884
188929
|
/** Test if `other` is an instance of `Path` */
|
|
188885
|
-
isSameGeometryClass(other) {
|
|
188886
|
-
|
|
188930
|
+
isSameGeometryClass(other) {
|
|
188931
|
+
return other instanceof Path;
|
|
188932
|
+
}
|
|
188933
|
+
/** Invoke `processor.announcePath(this, indexInParent)` */
|
|
188887
188934
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
188888
188935
|
return processor.announcePath(this, indexInParent);
|
|
188889
188936
|
}
|
|
@@ -188895,7 +188942,7 @@ class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
188895
188942
|
}
|
|
188896
188943
|
/**
|
|
188897
188944
|
* Create a path from a variable length list of curve primitives
|
|
188898
|
-
* * CurvePrimitive params are captured
|
|
188945
|
+
* * CurvePrimitive params are captured.
|
|
188899
188946
|
* @param curves variable length list of individual curve primitives or point arrays.
|
|
188900
188947
|
*/
|
|
188901
188948
|
static create(...curves) {
|
|
@@ -188910,8 +188957,8 @@ class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
188910
188957
|
return result;
|
|
188911
188958
|
}
|
|
188912
188959
|
/**
|
|
188913
|
-
* Create a path from a an array of curve primitives
|
|
188914
|
-
* @param curves array of individual curve primitives
|
|
188960
|
+
* Create a path from a an array of curve primitives.
|
|
188961
|
+
* @param curves array of individual curve primitives.
|
|
188915
188962
|
*/
|
|
188916
188963
|
static createArray(curves) {
|
|
188917
188964
|
const result = new Path();
|
|
@@ -188928,10 +188975,14 @@ class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
188928
188975
|
return Path.create(strokes);
|
|
188929
188976
|
}
|
|
188930
188977
|
/** Return the boundary type (1) of a corresponding MicroStation CurveVector */
|
|
188931
|
-
dgnBoundaryType() {
|
|
188978
|
+
dgnBoundaryType() {
|
|
188979
|
+
return 1;
|
|
188980
|
+
}
|
|
188932
188981
|
/** Clone as a new `Path` with no primitives */
|
|
188933
|
-
cloneEmptyPeer() {
|
|
188934
|
-
|
|
188982
|
+
cloneEmptyPeer() {
|
|
188983
|
+
return new Path();
|
|
188984
|
+
}
|
|
188985
|
+
/** Second step of double dispatch: call `handler.handlePath(this)` */
|
|
188935
188986
|
dispatchToGeometryHandler(handler) {
|
|
188936
188987
|
return handler.handlePath(this);
|
|
188937
188988
|
}
|
|
@@ -189153,11 +189204,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
189153
189204
|
*/
|
|
189154
189205
|
|
|
189155
189206
|
/**
|
|
189156
|
-
* A ProxyCurve is expected to be used as a base class for
|
|
189157
|
-
*
|
|
189158
|
-
*
|
|
189159
|
-
* * The ProxyCurve implements all required CurvePrimitive methods by dispatching
|
|
189160
|
-
* to the proxy.
|
|
189207
|
+
* A ProxyCurve is expected to be used as a base class for curve types that use some existing curve (the proxy)
|
|
189208
|
+
* for evaluation and display but carry other defining data.
|
|
189209
|
+
* * The ProxyCurve implements all required CurvePrimitive methods by dispatching to the proxy.
|
|
189161
189210
|
* * These methods presumably require support from the application class and are left abstract:
|
|
189162
189211
|
* * clone
|
|
189163
189212
|
* * curvePrimitiveType
|
|
@@ -189177,8 +189226,10 @@ class ProxyCurve extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Curv
|
|
|
189177
189226
|
super();
|
|
189178
189227
|
this._proxyCurve = proxyCurve;
|
|
189179
189228
|
}
|
|
189180
|
-
/**
|
|
189181
|
-
get proxyCurve() {
|
|
189229
|
+
/** Return the (pointer to) the proxy curve. */
|
|
189230
|
+
get proxyCurve() {
|
|
189231
|
+
return this._proxyCurve;
|
|
189232
|
+
}
|
|
189182
189233
|
/** Implement by proxyCurve */
|
|
189183
189234
|
computeStrokeCountForOptions(options) {
|
|
189184
189235
|
return this._proxyCurve.computeStrokeCountForOptions(options);
|
|
@@ -190940,7 +190991,8 @@ var RegionBinaryOpType;
|
|
|
190940
190991
|
* * `ParityRegion` -- a collection of loops, interpreted by parity rules.
|
|
190941
190992
|
* The common "One outer loop and many Inner loops" is a parity region.
|
|
190942
190993
|
* * `UnionRegion` -- a collection of `Loop` and `ParityRegion` objects understood as a (probably disjoint) union.
|
|
190943
|
-
* * Most of the methods in this class ignore z-coordinates, so callers should ensure that input geometry has been
|
|
190994
|
+
* * Most of the methods in this class ignore z-coordinates, so callers should ensure that input geometry has been
|
|
190995
|
+
* rotated parallel to the xy-plane.
|
|
190944
190996
|
* @public
|
|
190945
190997
|
*/
|
|
190946
190998
|
class RegionOps {
|
|
@@ -190959,7 +191011,8 @@ class RegionOps {
|
|
|
190959
191011
|
}
|
|
190960
191012
|
return undefined;
|
|
190961
191013
|
}
|
|
190962
|
-
/**
|
|
191014
|
+
/**
|
|
191015
|
+
* Return an area tolerance for a given xy-range and optional distance tolerance.
|
|
190963
191016
|
* @param range range of planar region to tolerance
|
|
190964
191017
|
* @param distanceTolerance optional absolute distance tolerance
|
|
190965
191018
|
*/
|
|
@@ -190982,7 +191035,8 @@ class RegionOps {
|
|
|
190982
191035
|
}
|
|
190983
191036
|
return undefined;
|
|
190984
191037
|
}
|
|
190985
|
-
/**
|
|
191038
|
+
/**
|
|
191039
|
+
* Return MomentData with the sums of wire moments.
|
|
190986
191040
|
* * If `rawMomentData` is the MomentData returned by computeXYAreaMoments, convert to principal axes and moments with
|
|
190987
191041
|
* call `principalMomentData = MomentData.inertiaProductsToPrincipalAxes (rawMomentData.origin, rawMomentData.sums);`
|
|
190988
191042
|
* @param root any CurveCollection or CurvePrimitive.
|
|
@@ -190995,7 +191049,7 @@ class RegionOps {
|
|
|
190995
191049
|
return result;
|
|
190996
191050
|
}
|
|
190997
191051
|
/**
|
|
190998
|
-
*
|
|
191052
|
+
* Create loops in the graph.
|
|
190999
191053
|
* @internal
|
|
191000
191054
|
*/
|
|
191001
191055
|
static addLoopsToGraph(graph, data, announceIsolatedLoop) {
|
|
@@ -191039,7 +191093,8 @@ class RegionOps {
|
|
|
191039
191093
|
}
|
|
191040
191094
|
}
|
|
191041
191095
|
}
|
|
191042
|
-
/**
|
|
191096
|
+
/**
|
|
191097
|
+
* Add multiple loops to a graph.
|
|
191043
191098
|
* * Apply edgeTag and mask to each edge.
|
|
191044
191099
|
* @internal
|
|
191045
191100
|
*/
|
|
@@ -191058,7 +191113,6 @@ class RegionOps {
|
|
|
191058
191113
|
/**
|
|
191059
191114
|
* Given a graph just produced by booleans, convert to a polyface
|
|
191060
191115
|
* * "just produced" implies exterior face markup.
|
|
191061
|
-
*
|
|
191062
191116
|
* @param graph
|
|
191063
191117
|
* @param triangulate
|
|
191064
191118
|
*/
|
|
@@ -191119,7 +191173,8 @@ class RegionOps {
|
|
|
191119
191173
|
* @param loopsB second set of loops
|
|
191120
191174
|
* @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA
|
|
191121
191175
|
* @param mergeTolerance absolute distance tolerance for merging loops
|
|
191122
|
-
* @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges added
|
|
191176
|
+
* @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges added
|
|
191177
|
+
* to connect interior loops to exterior loops.
|
|
191123
191178
|
*/
|
|
191124
191179
|
static regionBooleanXY(loopsA, loopsB, operation, mergeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
191125
191180
|
const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_11__.UnionRegion.create();
|
|
@@ -191186,10 +191241,13 @@ class RegionOps {
|
|
|
191186
191241
|
}
|
|
191187
191242
|
return RegionOps.sortOuterAndHoleLoopsXY(allLoops);
|
|
191188
191243
|
}
|
|
191189
|
-
/**
|
|
191244
|
+
/**
|
|
191245
|
+
* Construct a wire (not area!!) that is offset from given polyline or polygon.
|
|
191190
191246
|
* * This is a simple wire offset, not an area.
|
|
191191
|
-
* * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not
|
|
191192
|
-
*
|
|
191247
|
+
* * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not
|
|
191248
|
+
* guarantee a simple area offset.
|
|
191249
|
+
* * The construction algorithm is subject to being changed, resulting in different (hopefully better)
|
|
191250
|
+
* self-intersection behavior on the future.
|
|
191193
191251
|
* @param points a single loop or path
|
|
191194
191252
|
* @param wrap true to include wraparound
|
|
191195
191253
|
* @param offsetDistance distance of offset from wire. Positive is left.
|
|
@@ -191199,19 +191257,22 @@ class RegionOps {
|
|
|
191199
191257
|
return context.constructPolygonWireXYOffset(points, wrap, offsetDistance);
|
|
191200
191258
|
}
|
|
191201
191259
|
/**
|
|
191202
|
-
|
|
191203
|
-
|
|
191204
|
-
|
|
191205
|
-
|
|
191206
|
-
|
|
191207
|
-
|
|
191208
|
-
|
|
191209
|
-
|
|
191210
|
-
*
|
|
191211
|
-
|
|
191212
|
-
|
|
191213
|
-
|
|
191214
|
-
|
|
191260
|
+
* Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
|
|
191261
|
+
* * The construction will remove "some" local effects of features smaller than the offset distance, but will
|
|
191262
|
+
* not detect self intersection among widely separated edges.
|
|
191263
|
+
* * If offsetDistance is given as a number, default OffsetOptions are applied.
|
|
191264
|
+
* * When the offset needs to do an "outside" turn, the first applicable construction is applied:
|
|
191265
|
+
* * If the turn is larger than `options.minArcDegrees`, a circular arc is constructed.
|
|
191266
|
+
* * If the turn is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
|
|
191267
|
+
* single intersection point.
|
|
191268
|
+
* * If the turn is larger than `options.maxChamferDegrees`, the turn is constructed as a sequence of straight
|
|
191269
|
+
* lines that are:
|
|
191270
|
+
* * outside the arc
|
|
191271
|
+
* * have uniform turn angle less than `options.maxChamferDegrees`
|
|
191272
|
+
* * each line segment (except first and last) touches the arc at its midpoint.
|
|
191273
|
+
* @param curves base curves.
|
|
191274
|
+
* @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
|
|
191275
|
+
*/
|
|
191215
191276
|
static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
|
|
191216
191277
|
return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
|
|
191217
191278
|
}
|
|
@@ -191225,7 +191286,8 @@ class RegionOps {
|
|
|
191225
191286
|
static testPointInOnOutRegionXY(curves, x, y) {
|
|
191226
191287
|
return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
|
|
191227
191288
|
}
|
|
191228
|
-
/**
|
|
191289
|
+
/**
|
|
191290
|
+
* Create curve collection of subtype determined by gaps between the input curves.
|
|
191229
191291
|
* * If (a) wrap is requested and (b) all curves connect head-to-tail (including wraparound), assemble as a `loop`.
|
|
191230
191292
|
* * If all curves connect head-to-tail except for closure, return a `Path`.
|
|
191231
191293
|
* * If there are internal gaps, return a `BagOfCurves`
|
|
@@ -191262,7 +191324,9 @@ class RegionOps {
|
|
|
191262
191324
|
* Announce Checkpoint function for use during booleans
|
|
191263
191325
|
* @internal
|
|
191264
191326
|
*/
|
|
191265
|
-
static setCheckPointFunction(f) {
|
|
191327
|
+
static setCheckPointFunction(f) {
|
|
191328
|
+
this._graphCheckPointFunction = f;
|
|
191329
|
+
}
|
|
191266
191330
|
/**
|
|
191267
191331
|
* Find all intersections among curves in `curvesToCut` and `cutterCurves` and return fragments of `curvesToCut`.
|
|
191268
191332
|
* * For a `Loop`, `ParityRegion`, or `UnionRegion` in `curvesToCut`:
|
|
@@ -191277,7 +191341,8 @@ class RegionOps {
|
|
|
191277
191341
|
}
|
|
191278
191342
|
/**
|
|
191279
191343
|
* Create paths assembled from many curves.
|
|
191280
|
-
* * Assemble paths from consecutive curves NOT separated by either gaps or the split markup set by
|
|
191344
|
+
* * Assemble paths from consecutive curves NOT separated by either gaps or the split markup set by
|
|
191345
|
+
* [[cloneCurvesWithXYSplits]].
|
|
191281
191346
|
* * Return simplest form -- single primitive, single path, or bag of curves.
|
|
191282
191347
|
*/
|
|
191283
191348
|
static splitToPathsBetweenBreaks(source, makeClones) {
|
|
@@ -191314,7 +191379,8 @@ class RegionOps {
|
|
|
191314
191379
|
return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectChains(fragments, gapTolerance);
|
|
191315
191380
|
}
|
|
191316
191381
|
/**
|
|
191317
|
-
* Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments
|
|
191382
|
+
* Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments
|
|
191383
|
+
* of `curvesToCut`.
|
|
191318
191384
|
* * Break `curvesToCut` into parts inside, outside, and coincident.
|
|
191319
191385
|
* @returns output object with all fragments split among `insideParts`, `outsideParts`, and `coincidentParts`
|
|
191320
191386
|
*/
|
|
@@ -191340,7 +191406,8 @@ class RegionOps {
|
|
|
191340
191406
|
}
|
|
191341
191407
|
return result;
|
|
191342
191408
|
}
|
|
191343
|
-
/**
|
|
191409
|
+
/**
|
|
191410
|
+
* If `data` is one of several forms of a rectangle, return its edge Transform.
|
|
191344
191411
|
* * Points are considered a rectangle if, within the first 4 points:
|
|
191345
191412
|
* * vectors from 0 to 1 and 0 to 3 are perpendicular and have a non-zero cross product
|
|
191346
191413
|
* * vectors from 0 to 3 and 1 to 2 are the same
|
|
@@ -191351,7 +191418,8 @@ class RegionOps {
|
|
|
191351
191418
|
* * Array of Point3d[]
|
|
191352
191419
|
* * IndexedXYZCollection
|
|
191353
191420
|
* @param requireClosurePoint whether to require a 5th point equal to the 1st point.
|
|
191354
|
-
* @returns Transform with origin at one corner, x and y columns extending along two adjacent sides, and unit
|
|
191421
|
+
* @returns Transform with origin at one corner, x and y columns extending along two adjacent sides, and unit
|
|
191422
|
+
* normal in z column. If not a rectangle, return undefined.
|
|
191355
191423
|
*/
|
|
191356
191424
|
static rectangleEdgeTransform(data, requireClosurePoint = true) {
|
|
191357
191425
|
if (data instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
|
|
@@ -191411,9 +191479,10 @@ class RegionOps {
|
|
|
191411
191479
|
* * Contiguous `LineSegment3d` and `LineString3d` objects.
|
|
191412
191480
|
* * collect all points
|
|
191413
191481
|
* * eliminate duplicated points
|
|
191414
|
-
* * eliminate points colinear with surrounding points
|
|
191415
|
-
* *
|
|
191482
|
+
* * eliminate points colinear with surrounding points
|
|
191483
|
+
* * contiguous concentric circular or elliptic arcs
|
|
191416
191484
|
* * combine angular ranges
|
|
191485
|
+
* * This function can be used to compress adjacent LineSegment3ds into a LineString3d
|
|
191417
191486
|
* @param curves Path or loop (or larger collection containing paths and loops) to be simplified
|
|
191418
191487
|
* @param options options for tolerance and selective simplification.
|
|
191419
191488
|
*/
|
|
@@ -191427,8 +191496,10 @@ class RegionOps {
|
|
|
191427
191496
|
* @returns a region that captures the input pointers. This region is a:
|
|
191428
191497
|
* * `Loop` if there is exactly one input loop. It is oriented counterclockwise.
|
|
191429
191498
|
* * `ParityRegion` if input consists of exactly one outer loop with at least one hole loop.
|
|
191430
|
-
* Its first child is an outer loop oriented counterclockwise; all subsequent children are holes oriented
|
|
191431
|
-
*
|
|
191499
|
+
* Its first child is an outer loop oriented counterclockwise; all subsequent children are holes oriented
|
|
191500
|
+
* clockwise.
|
|
191501
|
+
* * `UnionRegion` if any other input configuration. Its children are individually ordered/oriented as in
|
|
191502
|
+
* the above cases.
|
|
191432
191503
|
* @see [[PolygonOps.sortOuterAndHoleLoopsXY]]
|
|
191433
191504
|
*/
|
|
191434
191505
|
static sortOuterAndHoleLoopsXY(loops) {
|
|
@@ -191445,17 +191516,22 @@ class RegionOps {
|
|
|
191445
191516
|
}
|
|
191446
191517
|
/**
|
|
191447
191518
|
* Find all areas bounded by the unstructured, possibly intersecting curves.
|
|
191448
|
-
* * A common use case of this method is to assemble the bounding "exterior" loop (or loops) containing the
|
|
191449
|
-
*
|
|
191450
|
-
*
|
|
191451
|
-
*
|
|
191452
|
-
*
|
|
191519
|
+
* * A common use case of this method is to assemble the bounding "exterior" loop (or loops) containing the
|
|
191520
|
+
* input curves.
|
|
191521
|
+
* * This method does not add bridge edges to connect outer loops to inner loops. Each disconnected loop,
|
|
191522
|
+
* regardless of its containment, is returned as its own SignedLoops object. Pre-process with [[regionBooleanXY]]
|
|
191523
|
+
* to add bridge edges so that [[constructAllXYRegionLoops]] will return outer and inner loops in the same
|
|
191524
|
+
* SignedLoops object.
|
|
191525
|
+
* @param curvesAndRegions Any collection of curves. Each Loop/ParityRegion/UnionRegion contributes its curve
|
|
191526
|
+
* primitives.
|
|
191453
191527
|
* @param tolerance optional distance tolerance for coincidence
|
|
191454
191528
|
* @returns array of [[SignedLoops]], each entry of which describes the faces in a single connected component:
|
|
191455
|
-
* * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have
|
|
191529
|
+
* * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have
|
|
191530
|
+
* positive area and counterclockwise orientation.
|
|
191456
191531
|
* * `negativeAreaLoops` contains (probably just one) "exterior" loop which is ordered clockwise.
|
|
191457
191532
|
* * `slivers` contains sliver loops that have zero area, such as appear between coincident curves.
|
|
191458
|
-
* * `edges` contains a [[LoopCurveLoopCurve]] object for each component edge, collecting both loops adjacent
|
|
191533
|
+
* * `edges` contains a [[LoopCurveLoopCurve]] object for each component edge, collecting both loops adjacent
|
|
191534
|
+
* to the edge and a constituent curve in each.
|
|
191459
191535
|
*/
|
|
191460
191536
|
static constructAllXYRegionLoops(curvesAndRegions, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
191461
191537
|
const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
|
|
@@ -191471,8 +191547,10 @@ class RegionOps {
|
|
|
191471
191547
|
* * Optionally recurses into hidden primitives if `smallestPossiblePrimitives` is true.
|
|
191472
191548
|
* @param candidates input curves
|
|
191473
191549
|
* @param collectorArray optional pre-defined output array. If defined, it is NOT cleared: primitives are appended.
|
|
191474
|
-
* @param smallestPossiblePrimitives if true, recurse into the children of a [[CurveChainWithDistanceIndex]]. If
|
|
191475
|
-
*
|
|
191550
|
+
* @param smallestPossiblePrimitives if true, recurse into the children of a [[CurveChainWithDistanceIndex]]. If
|
|
191551
|
+
* false, push the [[CurveChainWithDistanceIndex]] instead.
|
|
191552
|
+
* @param explodeLinestrings if true, push a [[LineSegment3d]] for each segment of a [[LineString3d]]. If false,
|
|
191553
|
+
* push the [[LineString3d]] instead.
|
|
191476
191554
|
*/
|
|
191477
191555
|
static collectCurvePrimitives(candidates, collectorArray, smallestPossiblePrimitives = false, explodeLinestrings = false) {
|
|
191478
191556
|
const results = collectorArray === undefined ? [] : collectorArray;
|
|
@@ -191490,7 +191568,8 @@ class RegionOps {
|
|
|
191490
191568
|
return results;
|
|
191491
191569
|
}
|
|
191492
191570
|
/**
|
|
191493
|
-
* Copy primitive pointers from candidates to result array, replacing each [[LineString3d]] by newly constructed
|
|
191571
|
+
* Copy primitive pointers from candidates to result array, replacing each [[LineString3d]] by newly constructed
|
|
191572
|
+
* instances of [[LineSegment3d]].
|
|
191494
191573
|
* @param candidates input curves
|
|
191495
191574
|
* @return copied (captured) inputs except for the linestrings, which are exploded
|
|
191496
191575
|
*/
|
|
@@ -192538,10 +192617,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
192538
192617
|
* @public
|
|
192539
192618
|
*/
|
|
192540
192619
|
class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCollection {
|
|
192541
|
-
/**
|
|
192542
|
-
isSameGeometryClass(other) {
|
|
192620
|
+
/** Test if `other` is a `UnionRegion` */
|
|
192621
|
+
isSameGeometryClass(other) {
|
|
192622
|
+
return other instanceof UnionRegion;
|
|
192623
|
+
}
|
|
192543
192624
|
/** Return the array of regions */
|
|
192544
|
-
get children() {
|
|
192625
|
+
get children() {
|
|
192626
|
+
return this._children;
|
|
192627
|
+
}
|
|
192545
192628
|
/** Constructor -- initialize with no children */
|
|
192546
192629
|
constructor() {
|
|
192547
192630
|
super();
|
|
@@ -192557,9 +192640,11 @@ class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCol
|
|
|
192557
192640
|
}
|
|
192558
192641
|
return result;
|
|
192559
192642
|
}
|
|
192560
|
-
/** Return the boundary type (5) of a corresponding
|
|
192561
|
-
dgnBoundaryType() {
|
|
192562
|
-
|
|
192643
|
+
/** Return the boundary type (5) of a corresponding MicroStation CurveVector */
|
|
192644
|
+
dgnBoundaryType() {
|
|
192645
|
+
return 5;
|
|
192646
|
+
}
|
|
192647
|
+
/** Dispatch to more strongly typed `processor.announceUnionRegion(this, indexInParent)` */
|
|
192563
192648
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
192564
192649
|
return processor.announceUnionRegion(this, indexInParent);
|
|
192565
192650
|
}
|
|
@@ -192575,8 +192660,11 @@ class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCol
|
|
|
192575
192660
|
return clone;
|
|
192576
192661
|
}
|
|
192577
192662
|
/** Return new empty `UnionRegion` */
|
|
192578
|
-
cloneEmptyPeer() {
|
|
192579
|
-
|
|
192663
|
+
cloneEmptyPeer() {
|
|
192664
|
+
return new UnionRegion();
|
|
192665
|
+
}
|
|
192666
|
+
/**
|
|
192667
|
+
* Try to add a child.
|
|
192580
192668
|
* * Returns false if the `AnyCurve` child is not a region type.
|
|
192581
192669
|
*/
|
|
192582
192670
|
tryAddChild(child) {
|
|
@@ -193318,11 +193406,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
193318
193406
|
|
|
193319
193407
|
|
|
193320
193408
|
// import { SumLengthsContext, GapSearchContext, CountLinearPartsSearchContext, CloneCurvesContext, TransformInPlaceContext } from "./CurveSearches";
|
|
193321
|
-
/**
|
|
193409
|
+
/**
|
|
193410
|
+
* Algorithmic class: Accumulate maximum gap between adjacent primitives of CurveChain.
|
|
193322
193411
|
* @internal
|
|
193323
193412
|
*/
|
|
193324
193413
|
class GapSearchContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.RecursiveCurveProcessorWithStack {
|
|
193325
|
-
constructor() {
|
|
193414
|
+
constructor() {
|
|
193415
|
+
super();
|
|
193416
|
+
this.maxGap = 0.0;
|
|
193417
|
+
}
|
|
193326
193418
|
static maxGap(target) {
|
|
193327
193419
|
const context = new GapSearchContext();
|
|
193328
193420
|
target.announceToCurveProcessor(context);
|
|
@@ -193973,10 +194065,12 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
193973
194065
|
}
|
|
193974
194066
|
return undefined;
|
|
193975
194067
|
}
|
|
193976
|
-
/**
|
|
193977
|
-
*
|
|
194068
|
+
/**
|
|
194069
|
+
* Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and
|
|
194070
|
+
* return points at min and max altitude, packed into a `LineSegment3d`.
|
|
193978
194071
|
* @param geometry geometry to project
|
|
193979
|
-
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
194072
|
+
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
194073
|
+
* zero origin.
|
|
193980
194074
|
* @param lowHigh optional receiver for output
|
|
193981
194075
|
*/
|
|
193982
194076
|
static findExtremePointsInDirection(geometry, direction, lowHigh) {
|
|
@@ -193985,10 +194079,12 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
193985
194079
|
return _LineSegment3d__WEBPACK_IMPORTED_MODULE_10__.LineSegment3d.create(context.lowPoint, context.highPoint, lowHigh);
|
|
193986
194080
|
return undefined;
|
|
193987
194081
|
}
|
|
193988
|
-
/**
|
|
193989
|
-
*
|
|
194082
|
+
/**
|
|
194083
|
+
* Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and return
|
|
194084
|
+
* the min and max altitudes, packed into a Range1d.
|
|
193990
194085
|
* @param geometry geometry to project
|
|
193991
|
-
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
194086
|
+
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
194087
|
+
* zero origin.
|
|
193992
194088
|
* @param lowHigh optional receiver for output
|
|
193993
194089
|
*/
|
|
193994
194090
|
static findExtremeAltitudesInDirection(geometry, direction, lowHigh) {
|
|
@@ -193997,9 +194093,11 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
193997
194093
|
return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__.Range1d.createFrom(context.range, lowHigh);
|
|
193998
194094
|
return undefined;
|
|
193999
194095
|
}
|
|
194000
|
-
/**
|
|
194096
|
+
/**
|
|
194097
|
+
* Project geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
|
|
194001
194098
|
* @param geometry geometry to project
|
|
194002
|
-
* @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with
|
|
194099
|
+
* @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with
|
|
194100
|
+
* zero origin.
|
|
194003
194101
|
* @param lowHigh optional receiver for output
|
|
194004
194102
|
*/
|
|
194005
194103
|
static findExtremeFractionsAlongDirection(geometry, direction, lowHigh) {
|
|
@@ -194760,7 +194858,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
194760
194858
|
* @internal
|
|
194761
194859
|
*/
|
|
194762
194860
|
class SumLengthsContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.RecursiveCurveProcessor {
|
|
194763
|
-
constructor() {
|
|
194861
|
+
constructor() {
|
|
194862
|
+
super();
|
|
194863
|
+
this._sum = 0.0;
|
|
194864
|
+
}
|
|
194764
194865
|
static sumLengths(target) {
|
|
194765
194866
|
const context = new SumLengthsContext();
|
|
194766
194867
|
target.announceToCurveProcessor(context);
|
|
@@ -213557,13 +213658,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
213557
213658
|
*/
|
|
213558
213659
|
class RangeBase {
|
|
213559
213660
|
/** Return 0 if high<= low, otherwise `1/(high-low)` for use in fractionalizing */
|
|
213560
|
-
static npcScaleFactor(low, high) {
|
|
213661
|
+
static npcScaleFactor(low, high) {
|
|
213662
|
+
return (high <= low) ? 0.0 : 1.0 / (high - low);
|
|
213663
|
+
}
|
|
213561
213664
|
/** Return true if x is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */
|
|
213562
|
-
static isExtremeValue(x) {
|
|
213665
|
+
static isExtremeValue(x) {
|
|
213666
|
+
return Math.abs(x) >= RangeBase._EXTREME_POSITIVE;
|
|
213667
|
+
}
|
|
213563
213668
|
/** Return true if any x or y or z is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */
|
|
213564
|
-
static isExtremePoint3d(xyz) {
|
|
213669
|
+
static isExtremePoint3d(xyz) {
|
|
213670
|
+
return RangeBase.isExtremeValue(xyz.x) || RangeBase.isExtremeValue(xyz.y) || RangeBase.isExtremeValue(xyz.z);
|
|
213671
|
+
}
|
|
213565
213672
|
/** Return true if either of x,y is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */
|
|
213566
|
-
static isExtremePoint2d(xy) {
|
|
213673
|
+
static isExtremePoint2d(xy) {
|
|
213674
|
+
return RangeBase.isExtremeValue(xy.x) || RangeBase.isExtremeValue(xy.y);
|
|
213675
|
+
}
|
|
213567
213676
|
/**
|
|
213568
213677
|
* Return the min absolute distance from any point of `[lowA,highA]' to any point of `[lowB,highB]'.
|
|
213569
213678
|
* * Both low,high pairs have order expectations: The condition `high < low` means null interval.
|
|
@@ -213586,7 +213695,8 @@ class RangeBase {
|
|
|
213586
213695
|
return 0.0;
|
|
213587
213696
|
return lowB - highA;
|
|
213588
213697
|
}
|
|
213589
|
-
/**
|
|
213698
|
+
/**
|
|
213699
|
+
* Given a coordinate and pair of range limits, return the smallest distance to the range.
|
|
213590
213700
|
* * This is zero for any point inside the range
|
|
213591
213701
|
* * This is _EXTREME_POSITIVE if the range limits are inverted
|
|
213592
213702
|
* * Otherwise (i.e. x is outside a finite range) the distance to the near endpoint.
|
|
@@ -213601,7 +213711,7 @@ class RangeBase {
|
|
|
213601
213711
|
return 0.0;
|
|
213602
213712
|
}
|
|
213603
213713
|
/**
|
|
213604
|
-
*
|
|
213714
|
+
* If a > 0, return (extrapolationFactor * a); otherwise return defaultValue
|
|
213605
213715
|
* @param q
|
|
213606
213716
|
* @param factor multiplier for positive q values.
|
|
213607
213717
|
*/
|
|
@@ -213632,11 +213742,19 @@ class Range3d extends RangeBase {
|
|
|
213632
213742
|
this.high.z = RangeBase._EXTREME_NEGATIVE;
|
|
213633
213743
|
}
|
|
213634
213744
|
/** Freeze this instance (and its members) so it is read-only */
|
|
213635
|
-
freeze() {
|
|
213745
|
+
freeze() {
|
|
213746
|
+
this.low.freeze();
|
|
213747
|
+
this.high.freeze();
|
|
213748
|
+
return Object.freeze(this);
|
|
213749
|
+
}
|
|
213636
213750
|
/** Flatten the low and high coordinates of any json object with low.x .. high.z into an array of 6 doubles */
|
|
213637
|
-
static toFloat64Array(val) {
|
|
213751
|
+
static toFloat64Array(val) {
|
|
213752
|
+
return Float64Array.of(val.low.x, val.low.y, val.low.z, val.high.x, val.high.y, val.high.z);
|
|
213753
|
+
}
|
|
213638
213754
|
/** Flatten the low and high coordinates of this into an array of 6 doubles */
|
|
213639
|
-
toFloat64Array() {
|
|
213755
|
+
toFloat64Array() {
|
|
213756
|
+
return Range3d.toFloat64Array(this);
|
|
213757
|
+
}
|
|
213640
213758
|
/**
|
|
213641
213759
|
* Construct a Range3d from an array of double-precision values
|
|
213642
213760
|
* @param f64 the array, which should contain exactly 6 values in this order: lowX, lowY, lowZ, highX, highY, highZ
|
|
@@ -213648,11 +213766,14 @@ class Range3d extends RangeBase {
|
|
|
213648
213766
|
return new this(f64[0], f64[1], f64[2], f64[3], f64[4], f64[5]);
|
|
213649
213767
|
}
|
|
213650
213768
|
/**
|
|
213651
|
-
* Construct a Range3d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
213769
|
+
* Construct a Range3d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
213770
|
+
* the 'blob' type, where you know that that result is a Range3d.
|
|
213652
213771
|
* @param buffer untyped array
|
|
213653
213772
|
* @return a new Range3d object
|
|
213654
213773
|
*/
|
|
213655
|
-
static fromArrayBuffer(buffer) {
|
|
213774
|
+
static fromArrayBuffer(buffer) {
|
|
213775
|
+
return this.fromFloat64Array(new Float64Array(buffer));
|
|
213776
|
+
}
|
|
213656
213777
|
// explicit ctor - no enforcement of value relationships
|
|
213657
213778
|
constructor(lowX = RangeBase._EXTREME_POSITIVE, lowY = RangeBase._EXTREME_POSITIVE, lowZ = RangeBase._EXTREME_POSITIVE, highX = RangeBase._EXTREME_NEGATIVE, highY = RangeBase._EXTREME_NEGATIVE, highZ = RangeBase._EXTREME_NEGATIVE) {
|
|
213658
213779
|
super();
|
|
@@ -213664,8 +213785,11 @@ class Range3d extends RangeBase {
|
|
|
213664
213785
|
return (this.low.isAlmostEqual(other.low, tol) && this.high.isAlmostEqual(other.high, tol))
|
|
213665
213786
|
|| (this.isNull && other.isNull);
|
|
213666
213787
|
}
|
|
213667
|
-
/**
|
|
213668
|
-
setFrom(other) {
|
|
213788
|
+
/** Copy low and high values from other. */
|
|
213789
|
+
setFrom(other) {
|
|
213790
|
+
this.low.setFrom(other.low);
|
|
213791
|
+
this.high.setFrom(other.high);
|
|
213792
|
+
}
|
|
213669
213793
|
/** Return a new Range3d copied from a range or derived type */
|
|
213670
213794
|
static createFrom(other, result) {
|
|
213671
213795
|
if (result) {
|
|
@@ -213674,7 +213798,8 @@ class Range3d extends RangeBase {
|
|
|
213674
213798
|
}
|
|
213675
213799
|
return this.createXYZXYZOrCorrectToNull(other.low.x, other.low.y, other.low.z, other.high.x, other.high.y, other.high.z, result);
|
|
213676
213800
|
}
|
|
213677
|
-
/**
|
|
213801
|
+
/**
|
|
213802
|
+
* Set this range (in place) from json such as
|
|
213678
213803
|
* * key-value pairs: `{low:[1,2,3], high:[4,5,6]}`
|
|
213679
213804
|
* * array of points: `[[1,2,3],[9,3,4],[-2,1,3] ...]`
|
|
213680
213805
|
* * Lowest level points can be `[1,2,3]` or `{x:1,y:2,z:3}`
|
|
@@ -213698,10 +213823,13 @@ class Range3d extends RangeBase {
|
|
|
213698
213823
|
this.extendPoint(high);
|
|
213699
213824
|
}
|
|
213700
213825
|
}
|
|
213701
|
-
/**
|
|
213826
|
+
/**
|
|
213827
|
+
* Return a JSON object `{low: ... , high: ...}`
|
|
213702
213828
|
* with points formatted by `Point3d.toJSON()`
|
|
213703
213829
|
*/
|
|
213704
|
-
toJSON() {
|
|
213830
|
+
toJSON() {
|
|
213831
|
+
return { low: this.low.toJSON(), high: this.high.toJSON() };
|
|
213832
|
+
}
|
|
213705
213833
|
/** Use `setFromJSON` to parse `json` into a new Range3d instance. */
|
|
213706
213834
|
static fromJSON(json) {
|
|
213707
213835
|
const result = new this();
|
|
@@ -213729,7 +213857,8 @@ class Range3d extends RangeBase {
|
|
|
213729
213857
|
result.setDirect(this.low.x, this.low.y, this.low.z, this.high.x, this.high.y, this.high.z, false);
|
|
213730
213858
|
return result;
|
|
213731
213859
|
}
|
|
213732
|
-
/**
|
|
213860
|
+
/**
|
|
213861
|
+
* Return a copy, translated by adding `shift` components in all directions.
|
|
213733
213862
|
* * The translate of a null range is also a null range.
|
|
213734
213863
|
*/
|
|
213735
213864
|
cloneTranslated(shift, result) {
|
|
@@ -213764,7 +213893,7 @@ class Range3d extends RangeBase {
|
|
|
213764
213893
|
_PointStreaming__WEBPACK_IMPORTED_MODULE_1__.VariantPointDataStream.streamXYZ(data, collector);
|
|
213765
213894
|
return collector.claimResult();
|
|
213766
213895
|
}
|
|
213767
|
-
/**
|
|
213896
|
+
/** Create a Range3d enclosing the transformed points. */
|
|
213768
213897
|
static createTransformed(transform, ...point) {
|
|
213769
213898
|
const result = this.createNull();
|
|
213770
213899
|
let p;
|
|
@@ -213772,13 +213901,13 @@ class Range3d extends RangeBase {
|
|
|
213772
213901
|
result.extendTransformedXYZ(transform, p.x, p.y, p.z);
|
|
213773
213902
|
return result;
|
|
213774
213903
|
}
|
|
213775
|
-
/**
|
|
213904
|
+
/** Create a Range3d enclosing the transformed points. */
|
|
213776
213905
|
static createTransformedArray(transform, points) {
|
|
213777
213906
|
const result = this.createNull();
|
|
213778
213907
|
result.extendArray(points, transform);
|
|
213779
213908
|
return result;
|
|
213780
213909
|
}
|
|
213781
|
-
/**
|
|
213910
|
+
/** Create a Range3d enclosing the points after inverse transform. */
|
|
213782
213911
|
static createInverseTransformedArray(transform, points) {
|
|
213783
213912
|
const result = this.createNull();
|
|
213784
213913
|
result.extendInverseTransformedArray(points, transform);
|
|
@@ -213827,7 +213956,7 @@ class Range3d extends RangeBase {
|
|
|
213827
213956
|
result.extendPoint(point);
|
|
213828
213957
|
return result;
|
|
213829
213958
|
}
|
|
213830
|
-
/**
|
|
213959
|
+
/** Extend a range around an array of points (optionally transformed) */
|
|
213831
213960
|
extendArray(points, transform) {
|
|
213832
213961
|
if (Array.isArray(points))
|
|
213833
213962
|
if (transform)
|
|
@@ -213844,7 +213973,7 @@ class Range3d extends RangeBase {
|
|
|
213844
213973
|
for (let i = 0; i < points.length; i++)
|
|
213845
213974
|
this.extendXYZ(points.getXAtUncheckedPointIndex(i), points.getYAtUncheckedPointIndex(i), points.getZAtUncheckedPointIndex(i));
|
|
213846
213975
|
}
|
|
213847
|
-
/**
|
|
213976
|
+
/** Extend a range around an array of points (optionally transformed) */
|
|
213848
213977
|
extendInverseTransformedArray(points, transform) {
|
|
213849
213978
|
if (Array.isArray(points))
|
|
213850
213979
|
for (const point of points)
|
|
@@ -213853,22 +213982,19 @@ class Range3d extends RangeBase {
|
|
|
213853
213982
|
for (let i = 0; i < points.length; i++)
|
|
213854
213983
|
this.extendInverseTransformedXYZ(transform, points.getXAtUncheckedPointIndex(i), points.getYAtUncheckedPointIndex(i), points.getZAtUncheckedPointIndex(i));
|
|
213855
213984
|
}
|
|
213856
|
-
/**
|
|
213857
|
-
*/
|
|
213985
|
+
/** Multiply the point x,y,z by transform and use the coordinate to extend this range. */
|
|
213858
213986
|
extendTransformedXYZ(transform, x, y, z) {
|
|
213859
213987
|
const origin = transform.origin;
|
|
213860
213988
|
const coffs = transform.matrix.coffs;
|
|
213861
213989
|
this.extendXYZ(origin.x + coffs[0] * x + coffs[1] * y + coffs[2] * z, origin.y + coffs[3] * x + coffs[4] * y + coffs[5] * z, origin.z + coffs[6] * x + coffs[7] * y + coffs[8] * z);
|
|
213862
213990
|
}
|
|
213863
|
-
/**
|
|
213864
|
-
*/
|
|
213991
|
+
/** Multiply the point x,y,z,w by transform and use the coordinate to extend this range. */
|
|
213865
213992
|
extendTransformedXYZW(transform, x, y, z, w) {
|
|
213866
213993
|
const origin = transform.origin;
|
|
213867
213994
|
const coffs = transform.matrix.coffs;
|
|
213868
213995
|
this.extendXYZW(origin.x * w + coffs[0] * x + coffs[1] * y + coffs[2] * z, origin.y * w + coffs[3] * x + coffs[4] * y + coffs[5] * z, origin.z * w + coffs[6] * x + coffs[7] * y + coffs[8] * z, w);
|
|
213869
213996
|
}
|
|
213870
|
-
/**
|
|
213871
|
-
*/
|
|
213997
|
+
/** Multiply the point x,y,z by transform and use the coordinate to extend this range. */
|
|
213872
213998
|
extendInverseTransformedXYZ(transform, x, y, z) {
|
|
213873
213999
|
const origin = transform.origin;
|
|
213874
214000
|
if (!transform.matrix.computeCachedInverse(true))
|
|
@@ -213905,36 +214031,72 @@ class Range3d extends RangeBase {
|
|
|
213905
214031
|
&& this.high.z === this.low.z;
|
|
213906
214032
|
}
|
|
213907
214033
|
/** Return the midpoint of the diagonal. No test for null range. */
|
|
213908
|
-
get center() {
|
|
213909
|
-
|
|
213910
|
-
|
|
213911
|
-
/**
|
|
213912
|
-
get
|
|
213913
|
-
|
|
213914
|
-
|
|
213915
|
-
/**
|
|
213916
|
-
get
|
|
213917
|
-
|
|
213918
|
-
|
|
213919
|
-
/**
|
|
213920
|
-
get
|
|
214034
|
+
get center() {
|
|
214035
|
+
return this.low.interpolate(.5, this.high);
|
|
214036
|
+
}
|
|
214037
|
+
/** Return the low x coordinate */
|
|
214038
|
+
get xLow() {
|
|
214039
|
+
return this.low.x;
|
|
214040
|
+
}
|
|
214041
|
+
/** Return the low y coordinate */
|
|
214042
|
+
get yLow() {
|
|
214043
|
+
return this.low.y;
|
|
214044
|
+
}
|
|
214045
|
+
/** Return the low z coordinate */
|
|
214046
|
+
get zLow() {
|
|
214047
|
+
return this.low.z;
|
|
214048
|
+
}
|
|
214049
|
+
/** Return the high x coordinate */
|
|
214050
|
+
get xHigh() {
|
|
214051
|
+
return this.high.x;
|
|
214052
|
+
}
|
|
214053
|
+
/** Return the high y coordinate */
|
|
214054
|
+
get yHigh() {
|
|
214055
|
+
return this.high.y;
|
|
214056
|
+
}
|
|
214057
|
+
/** Return the high z coordinate */
|
|
214058
|
+
get zHigh() {
|
|
214059
|
+
return this.high.z;
|
|
214060
|
+
}
|
|
213921
214061
|
/** Return the length of the box in the x direction */
|
|
213922
|
-
xLength() {
|
|
214062
|
+
xLength() {
|
|
214063
|
+
const a = this.high.x - this.low.x;
|
|
214064
|
+
return a > 0.0 ? a : 0.0;
|
|
214065
|
+
}
|
|
213923
214066
|
/** Return the length of the box in the y direction */
|
|
213924
|
-
yLength() {
|
|
214067
|
+
yLength() {
|
|
214068
|
+
const a = this.high.y - this.low.y;
|
|
214069
|
+
return a > 0.0 ? a : 0.0;
|
|
214070
|
+
}
|
|
213925
214071
|
/** Return the length of the box in the z direction */
|
|
213926
|
-
zLength() {
|
|
214072
|
+
zLength() {
|
|
214073
|
+
const a = this.high.z - this.low.z;
|
|
214074
|
+
return a > 0.0 ? a : 0.0;
|
|
214075
|
+
}
|
|
213927
214076
|
/** Return the largest of the x,y, z lengths of the range. */
|
|
213928
|
-
maxLength() {
|
|
213929
|
-
|
|
213930
|
-
|
|
213931
|
-
/**
|
|
213932
|
-
|
|
213933
|
-
|
|
214077
|
+
maxLength() {
|
|
214078
|
+
return Math.max(this.xLength(), this.yLength(), this.zLength());
|
|
214079
|
+
}
|
|
214080
|
+
/**
|
|
214081
|
+
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
214082
|
+
* large negative coordinates.
|
|
214083
|
+
*/
|
|
214084
|
+
diagonal(result) {
|
|
214085
|
+
return this.low.vectorTo(this.high, result);
|
|
214086
|
+
}
|
|
214087
|
+
/**
|
|
214088
|
+
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
214089
|
+
* large negative coordinates.
|
|
214090
|
+
*/
|
|
214091
|
+
diagonalFractionToPoint(fraction, result) {
|
|
214092
|
+
return this.low.interpolate(fraction, this.high, result);
|
|
214093
|
+
}
|
|
214094
|
+
/** Return a point given by fractional positions on the XYZ axes. This is done with no check for isNull !!! */
|
|
213934
214095
|
fractionToPoint(fractionX, fractionY, fractionZ = 0, result) {
|
|
213935
214096
|
return this.low.interpolateXYZ(fractionX, fractionY, fractionZ, this.high, result);
|
|
213936
214097
|
}
|
|
213937
|
-
/**
|
|
214098
|
+
/**
|
|
214099
|
+
* Return a point given by fractional positions on the XYZ axes.
|
|
213938
214100
|
* Returns undefined if the range is null.
|
|
213939
214101
|
*/
|
|
213940
214102
|
localXYZToWorld(fractionX, fractionY, fractionZ, result) {
|
|
@@ -213942,13 +214104,15 @@ class Range3d extends RangeBase {
|
|
|
213942
214104
|
return undefined;
|
|
213943
214105
|
return this.low.interpolateXYZ(fractionX, fractionY, fractionZ, this.high, result);
|
|
213944
214106
|
}
|
|
213945
|
-
/**
|
|
214107
|
+
/**
|
|
214108
|
+
* Return a point given by fractional positions on the XYZ axes.
|
|
213946
214109
|
* * Returns undefined if the range is null.
|
|
213947
214110
|
*/
|
|
213948
214111
|
localToWorld(xyz, result) {
|
|
213949
214112
|
return this.localXYZToWorld(xyz.x, xyz.y, xyz.z, result);
|
|
213950
214113
|
}
|
|
213951
|
-
/**
|
|
214114
|
+
/**
|
|
214115
|
+
* Replace fractional coordinates by world coordinates.
|
|
213952
214116
|
* @returns false if null range.
|
|
213953
214117
|
*/
|
|
213954
214118
|
localToWorldArrayInPlace(points) {
|
|
@@ -213958,7 +214122,8 @@ class Range3d extends RangeBase {
|
|
|
213958
214122
|
this.low.interpolateXYZ(p.x, p.y, p.z, this.high, p);
|
|
213959
214123
|
return false;
|
|
213960
214124
|
}
|
|
213961
|
-
/**
|
|
214125
|
+
/**
|
|
214126
|
+
* Return fractional coordinates of point within the range.
|
|
213962
214127
|
* * returns undefined if the range is null.
|
|
213963
214128
|
* * returns undefined if any direction (x,y,z) has zero length
|
|
213964
214129
|
*/
|
|
@@ -213970,7 +214135,8 @@ class Range3d extends RangeBase {
|
|
|
213970
214135
|
return undefined;
|
|
213971
214136
|
return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create((point.x - this.low.x) * ax, (point.y - this.low.y) * ay, (point.z - this.low.z) * az, result);
|
|
213972
214137
|
}
|
|
213973
|
-
/**
|
|
214138
|
+
/**
|
|
214139
|
+
* Return fractional coordinates of point within the range.
|
|
213974
214140
|
* * returns undefined if the range is null.
|
|
213975
214141
|
* * returns undefined if any direction (x,y,z) has zero length
|
|
213976
214142
|
*/
|
|
@@ -213984,7 +214150,8 @@ class Range3d extends RangeBase {
|
|
|
213984
214150
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create((p.x - this.low.x) * ax, (p.y - this.low.y) * ay, (p.z - this.low.z) * az, p);
|
|
213985
214151
|
return true;
|
|
213986
214152
|
}
|
|
213987
|
-
/**
|
|
214153
|
+
/**
|
|
214154
|
+
* Return an array with the 8 corners on order wth "x varies fastest, then y, then z"
|
|
213988
214155
|
* * points preallocated in `result` are reused if result.length >= 8.
|
|
213989
214156
|
* * in reuse case, result.length is trimmed to 8
|
|
213990
214157
|
*/
|
|
@@ -214009,10 +214176,11 @@ class Range3d extends RangeBase {
|
|
|
214009
214176
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, this.high.z),
|
|
214010
214177
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.low.y, this.high.z),
|
|
214011
214178
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.high.y, this.high.z),
|
|
214012
|
-
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, this.high.z)
|
|
214179
|
+
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, this.high.z),
|
|
214013
214180
|
];
|
|
214014
214181
|
}
|
|
214015
|
-
/**
|
|
214182
|
+
/**
|
|
214183
|
+
* Return an array with indices of the corners of a face
|
|
214016
214184
|
* * face 0 has negative x normal
|
|
214017
214185
|
* * face 1 has positive x normal
|
|
214018
214186
|
* * face 2 has negative y normal
|
|
@@ -214063,12 +214231,18 @@ class Range3d extends RangeBase {
|
|
|
214063
214231
|
return 0.0;
|
|
214064
214232
|
return Math.max(this.low.maxAbs(), this.high.maxAbs());
|
|
214065
214233
|
}
|
|
214066
|
-
/**
|
|
214067
|
-
get isAlmostZeroX() {
|
|
214068
|
-
|
|
214069
|
-
|
|
214070
|
-
/**
|
|
214071
|
-
get
|
|
214234
|
+
/** Returns true if the x direction size is nearly zero */
|
|
214235
|
+
get isAlmostZeroX() {
|
|
214236
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.xLength());
|
|
214237
|
+
}
|
|
214238
|
+
/** Returns true if the y direction size is nearly zero */
|
|
214239
|
+
get isAlmostZeroY() {
|
|
214240
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.yLength());
|
|
214241
|
+
}
|
|
214242
|
+
/** Returns true if the z direction size is nearly zero */
|
|
214243
|
+
get isAlmostZeroZ() {
|
|
214244
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.zLength());
|
|
214245
|
+
}
|
|
214072
214246
|
/** Test if a point given as x,y,z is within the range. */
|
|
214073
214247
|
containsXYZ(x, y, z) {
|
|
214074
214248
|
return x >= this.low.x
|
|
@@ -214078,7 +214252,7 @@ class Range3d extends RangeBase {
|
|
|
214078
214252
|
&& y <= this.high.y
|
|
214079
214253
|
&& z <= this.high.z;
|
|
214080
214254
|
}
|
|
214081
|
-
/** Test if a point given as x,y is within the range
|
|
214255
|
+
/** Test if a point given as x,y is within the range (ignoring z of range). */
|
|
214082
214256
|
containsXY(x, y) {
|
|
214083
214257
|
return x >= this.low.x
|
|
214084
214258
|
&& y >= this.low.y
|
|
@@ -214086,7 +214260,9 @@ class Range3d extends RangeBase {
|
|
|
214086
214260
|
&& y <= this.high.y;
|
|
214087
214261
|
}
|
|
214088
214262
|
/** Test if a point is within the range. */
|
|
214089
|
-
containsPoint(point) {
|
|
214263
|
+
containsPoint(point) {
|
|
214264
|
+
return this.containsXYZ(point.x, point.y, point.z);
|
|
214265
|
+
}
|
|
214090
214266
|
/** Test if the x,y coordinates of a point are within the range. */
|
|
214091
214267
|
containsPointXY(point) {
|
|
214092
214268
|
return point.x >= this.low.x
|
|
@@ -214125,7 +214301,7 @@ class Range3d extends RangeBase {
|
|
|
214125
214301
|
return RangeBase._EXTREME_POSITIVE;
|
|
214126
214302
|
return Math.min(_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.hypotenuseXYZ(RangeBase.coordinateToRangeAbsoluteDistance(point.x, this.low.x, this.high.x), RangeBase.coordinateToRangeAbsoluteDistance(point.y, this.low.y, this.high.y), RangeBase.coordinateToRangeAbsoluteDistance(point.z, this.low.z, this.high.z)), RangeBase._EXTREME_POSITIVE);
|
|
214127
214303
|
}
|
|
214128
|
-
/**
|
|
214304
|
+
/** Returns 0 if the ranges have any overlap, otherwise the shortest absolute distance from one to the other. */
|
|
214129
214305
|
distanceToRange(other) {
|
|
214130
214306
|
return Math.min(_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.hypotenuseXYZ(RangeBase.rangeToRangeAbsoluteDistance(this.low.x, this.high.x, other.low.x, other.high.x), RangeBase.rangeToRangeAbsoluteDistance(this.low.y, this.high.y, other.low.y, other.high.y), RangeBase.rangeToRangeAbsoluteDistance(this.low.z, this.high.z, other.low.z, other.high.z)), RangeBase._EXTREME_POSITIVE);
|
|
214131
214307
|
}
|
|
@@ -214210,7 +214386,8 @@ class Range3d extends RangeBase {
|
|
|
214210
214386
|
this.extendXYZ(other.high.x, other.high.y, other.high.z);
|
|
214211
214387
|
}
|
|
214212
214388
|
}
|
|
214213
|
-
/**
|
|
214389
|
+
/**
|
|
214390
|
+
* In each direction look at the difference between this range limit and that of interiorRange.
|
|
214214
214391
|
* * If this range is larger, expand it by extrapolationFactor.
|
|
214215
214392
|
*/
|
|
214216
214393
|
extendWhenLarger(other, extrapolationFactor) {
|
|
@@ -214239,7 +214416,7 @@ class Range3d extends RangeBase {
|
|
|
214239
214416
|
return Range3d.createXYZXYZOrCorrectToNull(Math.min(this.low.x, other.low.x), Math.min(this.low.y, other.low.y), Math.min(this.low.z, other.low.z), Math.max(this.high.x, other.high.x), Math.max(this.high.y, other.high.y), Math.max(this.high.z, other.high.z), result);
|
|
214240
214417
|
}
|
|
214241
214418
|
/**
|
|
214242
|
-
*
|
|
214419
|
+
* Move low and high points by scaleFactor around the center point.
|
|
214243
214420
|
* @param scaleFactor scale factor applied to low, high distance from center.
|
|
214244
214421
|
*/
|
|
214245
214422
|
scaleAboutCenterInPlace(scaleFactor) {
|
|
@@ -214258,7 +214435,7 @@ class Range3d extends RangeBase {
|
|
|
214258
214435
|
}
|
|
214259
214436
|
}
|
|
214260
214437
|
/**
|
|
214261
|
-
*
|
|
214438
|
+
* Move all limits by a fixed amount.
|
|
214262
214439
|
* * positive delta expands the range size
|
|
214263
214440
|
* * negative delta reduces the range size
|
|
214264
214441
|
* * if any dimension reduces below zero size, the whole range becomes null
|
|
@@ -214272,7 +214449,8 @@ class Range3d extends RangeBase {
|
|
|
214272
214449
|
return _Transform__WEBPACK_IMPORTED_MODULE_3__.Transform.createOriginAndMatrix(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, this.low.z), _Matrix3d__WEBPACK_IMPORTED_MODULE_4__.Matrix3d.createRowValues(this.high.x - this.low.x, 0, 0, 0, this.high.y - this.low.y, 0, 0, 0, this.high.z - this.low.z), result);
|
|
214273
214450
|
}
|
|
214274
214451
|
/**
|
|
214275
|
-
* Creates an NPC to world transformation to go from 000...111 to the globally aligned cube with diagonally
|
|
214452
|
+
* Creates an NPC to world transformation to go from 000...111 to the globally aligned cube with diagonally
|
|
214453
|
+
* opposite corners that are the
|
|
214276
214454
|
* min and max of this range. The diagonal component for any degenerate direction is 1.
|
|
214277
214455
|
*/
|
|
214278
214456
|
getNpcToWorldRangeTransform(result) {
|
|
@@ -214286,7 +214464,9 @@ class Range3d extends RangeBase {
|
|
|
214286
214464
|
matrix.coffs[8] = 1;
|
|
214287
214465
|
return transform;
|
|
214288
214466
|
}
|
|
214289
|
-
/**
|
|
214467
|
+
/**
|
|
214468
|
+
* Ensure that the length of each dimension of this AxisAlignedBox3d is at least a minimum size. If not, expand
|
|
214469
|
+
* to minimum about the center.
|
|
214290
214470
|
* @param min The minimum length for each dimension.
|
|
214291
214471
|
*/
|
|
214292
214472
|
ensureMinLengths(min = .001) {
|
|
@@ -214315,7 +214495,7 @@ class Range3d extends RangeBase {
|
|
|
214315
214495
|
* @public
|
|
214316
214496
|
*/
|
|
214317
214497
|
class Range1d extends RangeBase {
|
|
214318
|
-
/**
|
|
214498
|
+
/** Reset the low and high to null range state. */
|
|
214319
214499
|
setNull() {
|
|
214320
214500
|
this.low = RangeBase._EXTREME_POSITIVE;
|
|
214321
214501
|
this.high = RangeBase._EXTREME_NEGATIVE;
|
|
@@ -214339,10 +214519,13 @@ class Range1d extends RangeBase {
|
|
|
214339
214519
|
return (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSameCoordinate(this.low, other.low) && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSameCoordinate(this.high, other.high))
|
|
214340
214520
|
|| (this.isNull && other.isNull);
|
|
214341
214521
|
}
|
|
214342
|
-
/**
|
|
214343
|
-
setFrom(other) {
|
|
214344
|
-
|
|
214345
|
-
|
|
214522
|
+
/** Copy contents from other Range1d. */
|
|
214523
|
+
setFrom(other) {
|
|
214524
|
+
this.low = other.low;
|
|
214525
|
+
this.high = other.high;
|
|
214526
|
+
}
|
|
214527
|
+
/**
|
|
214528
|
+
* Convert from a JSON object of one of these forms:
|
|
214346
214529
|
* * Any array of numbers: `[value,value, value]`
|
|
214347
214530
|
* * An object with low and high as properties: `{low:lowValue, high: highValue}`
|
|
214348
214531
|
*/
|
|
@@ -214367,16 +214550,20 @@ class Range1d extends RangeBase {
|
|
|
214367
214550
|
result.setFromJSON(json);
|
|
214368
214551
|
return result;
|
|
214369
214552
|
}
|
|
214370
|
-
/**
|
|
214553
|
+
/**
|
|
214554
|
+
* Convert to a JSON object of form
|
|
214371
214555
|
* ```
|
|
214372
214556
|
* [lowValue,highValue]
|
|
214373
214557
|
* ```
|
|
214374
214558
|
*/
|
|
214375
|
-
toJSON() {
|
|
214376
|
-
|
|
214377
|
-
|
|
214378
|
-
|
|
214379
|
-
|
|
214559
|
+
toJSON() {
|
|
214560
|
+
if (this.isNull)
|
|
214561
|
+
return new Array();
|
|
214562
|
+
else
|
|
214563
|
+
return [this.low, this.high];
|
|
214564
|
+
}
|
|
214565
|
+
/**
|
|
214566
|
+
* Return a new Range1d with contents of this.
|
|
214380
214567
|
* @param result optional result.
|
|
214381
214568
|
*/
|
|
214382
214569
|
clone(result) {
|
|
@@ -214384,7 +214571,8 @@ class Range1d extends RangeBase {
|
|
|
214384
214571
|
result.setDirect(this.low, this.high);
|
|
214385
214572
|
return result;
|
|
214386
214573
|
}
|
|
214387
|
-
/**
|
|
214574
|
+
/**
|
|
214575
|
+
* Return a new Range1d with contents of this.
|
|
214388
214576
|
* @param result optional result.
|
|
214389
214577
|
*/
|
|
214390
214578
|
static createFrom(other, result) {
|
|
@@ -214392,7 +214580,8 @@ class Range1d extends RangeBase {
|
|
|
214392
214580
|
result.setDirect(other.low, other.high);
|
|
214393
214581
|
return result;
|
|
214394
214582
|
}
|
|
214395
|
-
/**
|
|
214583
|
+
/**
|
|
214584
|
+
* Create a range with no content.
|
|
214396
214585
|
* @param result optional result.
|
|
214397
214586
|
*/
|
|
214398
214587
|
static createNull(result) {
|
|
@@ -214400,7 +214589,8 @@ class Range1d extends RangeBase {
|
|
|
214400
214589
|
result.setNull();
|
|
214401
214590
|
return result;
|
|
214402
214591
|
}
|
|
214403
|
-
/**
|
|
214592
|
+
/**
|
|
214593
|
+
* Create a range with `delta` added to low and high
|
|
214404
214594
|
* * If `this` is a null range, return a null range.
|
|
214405
214595
|
*/
|
|
214406
214596
|
cloneTranslated(delta, result) {
|
|
@@ -214415,7 +214605,9 @@ class Range1d extends RangeBase {
|
|
|
214415
214605
|
* Set this range to be a single value.
|
|
214416
214606
|
* @param x value to use as both low and high.
|
|
214417
214607
|
*/
|
|
214418
|
-
setX(x) {
|
|
214608
|
+
setX(x) {
|
|
214609
|
+
this.low = this.high = x;
|
|
214610
|
+
}
|
|
214419
214611
|
/** Create a single point box */
|
|
214420
214612
|
static createX(x, result) {
|
|
214421
214613
|
result = result ? result : new this();
|
|
@@ -214437,10 +214629,12 @@ class Range1d extends RangeBase {
|
|
|
214437
214629
|
this.high = x0;
|
|
214438
214630
|
}
|
|
214439
214631
|
}
|
|
214632
|
+
/** Check if low is 0 and high is 1 */
|
|
214440
214633
|
get isExact01() {
|
|
214441
214634
|
return this.low === 0.0 && this.high === 1.0;
|
|
214442
214635
|
}
|
|
214443
|
-
/**
|
|
214636
|
+
/**
|
|
214637
|
+
* Create a box from two values. Values are reversed if needed
|
|
214444
214638
|
* @param xA first value
|
|
214445
214639
|
* @param xB second value
|
|
214446
214640
|
*/
|
|
@@ -214449,7 +214643,8 @@ class Range1d extends RangeBase {
|
|
|
214449
214643
|
result.setDirect(Math.min(xA, xB), Math.max(xA, xB));
|
|
214450
214644
|
return result;
|
|
214451
214645
|
}
|
|
214452
|
-
/**
|
|
214646
|
+
/**
|
|
214647
|
+
* Create a box from two values, but null range if the values are reversed
|
|
214453
214648
|
* @param xA first value
|
|
214454
214649
|
* @param xB second value
|
|
214455
214650
|
*/
|
|
@@ -214460,7 +214655,8 @@ class Range1d extends RangeBase {
|
|
|
214460
214655
|
result.setDirect(Math.min(xA, xB), Math.max(xA, xB));
|
|
214461
214656
|
return result;
|
|
214462
214657
|
}
|
|
214463
|
-
/**
|
|
214658
|
+
/**
|
|
214659
|
+
* Create a range containing all the values in an array.
|
|
214464
214660
|
* @param values array of points to be contained in the range.
|
|
214465
214661
|
* @param result optional result.
|
|
214466
214662
|
*/
|
|
@@ -214471,13 +214667,14 @@ class Range1d extends RangeBase {
|
|
|
214471
214667
|
result.extendX(x);
|
|
214472
214668
|
return result;
|
|
214473
214669
|
}
|
|
214474
|
-
/**
|
|
214670
|
+
/** Extend to include an array of values */
|
|
214475
214671
|
extendArray(values) {
|
|
214476
214672
|
let x;
|
|
214477
214673
|
for (x of values)
|
|
214478
214674
|
this.extendX(x);
|
|
214479
214675
|
}
|
|
214480
|
-
/**
|
|
214676
|
+
/**
|
|
214677
|
+
* Extend to include `values` at indices `beginIndex <= i < endIndex]`
|
|
214481
214678
|
* @param values array of values
|
|
214482
214679
|
* @param beginIndex first index to include
|
|
214483
214680
|
* @param numValue number of values to access
|
|
@@ -214496,8 +214693,11 @@ class Range1d extends RangeBase {
|
|
|
214496
214693
|
return this.high === this.low;
|
|
214497
214694
|
}
|
|
214498
214695
|
/** Return the length of the range in the x direction */
|
|
214499
|
-
length() {
|
|
214500
|
-
|
|
214696
|
+
length() {
|
|
214697
|
+
const a = this.high - this.low;
|
|
214698
|
+
return a > 0.0 ? a : 0.0;
|
|
214699
|
+
}
|
|
214700
|
+
/** Return a point given by fractional positions within the range. This is done with no check for isNull !!! */
|
|
214501
214701
|
fractionToPoint(fraction) {
|
|
214502
214702
|
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(this.low, fraction, this.high);
|
|
214503
214703
|
}
|
|
@@ -214508,7 +214708,9 @@ class Range1d extends RangeBase {
|
|
|
214508
214708
|
return Math.max(Math.abs(this.low), Math.abs(this.high));
|
|
214509
214709
|
}
|
|
214510
214710
|
/** Test if the x direction size is nearly zero */
|
|
214511
|
-
get isAlmostZeroLength() {
|
|
214711
|
+
get isAlmostZeroLength() {
|
|
214712
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.length());
|
|
214713
|
+
}
|
|
214512
214714
|
/** Test if a number is within the range. */
|
|
214513
214715
|
containsX(x) {
|
|
214514
214716
|
return x >= this.low
|
|
@@ -214528,7 +214730,6 @@ class Range1d extends RangeBase {
|
|
|
214528
214730
|
* * For x1 > x0, that range is null, and the intersection is null.
|
|
214529
214731
|
* * For x0 <= x1, the input is a non-null range.
|
|
214530
214732
|
* * The intersection range replaces the contents of this.
|
|
214531
|
-
*
|
|
214532
214733
|
*/
|
|
214533
214734
|
intersectRangeXXInPlace(x0, x1) {
|
|
214534
214735
|
if (x1 < x0 || x1 < this.low || x0 > this.high) {
|
|
@@ -214541,7 +214742,7 @@ class Range1d extends RangeBase {
|
|
|
214541
214742
|
this.low = x0;
|
|
214542
214743
|
}
|
|
214543
214744
|
}
|
|
214544
|
-
/**
|
|
214745
|
+
/** Returns 0 if the ranges have any overlap, otherwise the shortest absolute distance from one to the other. */
|
|
214545
214746
|
distanceToRange(other) {
|
|
214546
214747
|
return RangeBase.rangeToRangeAbsoluteDistance(this.low, this.high, other.low, other.high);
|
|
214547
214748
|
}
|
|
@@ -214593,7 +214794,7 @@ class Range1d extends RangeBase {
|
|
|
214593
214794
|
return Range1d.createXX(Math.min(this.low, other.low), Math.max(this.high, other.high), result);
|
|
214594
214795
|
}
|
|
214595
214796
|
/**
|
|
214596
|
-
*
|
|
214797
|
+
* Move low and high points by scaleFactor around the center point.
|
|
214597
214798
|
* @param scaleFactor scale factor applied to low, high distance from center.
|
|
214598
214799
|
*/
|
|
214599
214800
|
scaleAboutCenterInPlace(scaleFactor) {
|
|
@@ -214606,7 +214807,7 @@ class Range1d extends RangeBase {
|
|
|
214606
214807
|
}
|
|
214607
214808
|
}
|
|
214608
214809
|
/**
|
|
214609
|
-
*
|
|
214810
|
+
* Move all limits by a fixed amount.
|
|
214610
214811
|
* * positive delta expands the range size
|
|
214611
214812
|
* * negative delta reduces the range size
|
|
214612
214813
|
* * if any dimension reduces below zero size, the whole range becomes null
|
|
@@ -214616,13 +214817,14 @@ class Range1d extends RangeBase {
|
|
|
214616
214817
|
this.setDirect(this.low - delta, this.high + delta, true);
|
|
214617
214818
|
}
|
|
214618
214819
|
/**
|
|
214619
|
-
*
|
|
214820
|
+
* Clip this range to a linear half space condition
|
|
214620
214821
|
* * if `limitA > limitB` the limit space is empty
|
|
214621
214822
|
* * make this range null
|
|
214622
214823
|
* * return false;
|
|
214623
214824
|
* * otherwise (i.e `limitA <= limitB`)
|
|
214624
214825
|
* * solve `a + u * f = limitA' and `a + u * f = limitA`
|
|
214625
|
-
* * if unable to solve (i.e. u near zero), `a` alone determines whether to (a) leave this interval unchanged or
|
|
214826
|
+
* * if unable to solve (i.e. u near zero), `a` alone determines whether to (a) leave this interval unchanged or
|
|
214827
|
+
* (b) reduce to nothing.
|
|
214626
214828
|
* * the `f` values are an interval in the space of this `Range1d`
|
|
214627
214829
|
* * restrict the range to that interval (i.e intersect existing (low,high) with the fraction interval.
|
|
214628
214830
|
* * return true if the range is non-null after the clip.
|
|
@@ -214631,7 +214833,6 @@ class Range1d extends RangeBase {
|
|
|
214631
214833
|
* @param limitA crossing value, assumed in range relation with limitB
|
|
214632
214834
|
* @param limitB crossing value, assumed in range relation with limitB
|
|
214633
214835
|
* @param limitIsHigh true if the limit is an upper limit on mapped values.
|
|
214634
|
-
*
|
|
214635
214836
|
*/
|
|
214636
214837
|
clipLinearMapToInterval(a, u, limitA, limitB) {
|
|
214637
214838
|
// f = (limit - a) / u
|
|
@@ -214670,7 +214871,7 @@ class Range1d extends RangeBase {
|
|
|
214670
214871
|
* @public
|
|
214671
214872
|
*/
|
|
214672
214873
|
class Range2d extends RangeBase {
|
|
214673
|
-
/**
|
|
214874
|
+
/** Reset the low and high to null range state. */
|
|
214674
214875
|
setNull() {
|
|
214675
214876
|
this.low.x = RangeBase._EXTREME_POSITIVE;
|
|
214676
214877
|
this.low.y = RangeBase._EXTREME_POSITIVE;
|
|
@@ -214678,9 +214879,13 @@ class Range2d extends RangeBase {
|
|
|
214678
214879
|
this.high.y = RangeBase._EXTREME_NEGATIVE;
|
|
214679
214880
|
}
|
|
214680
214881
|
/** Flatten the low and high coordinates of any json object with low.x .. high.y into an array of 4 doubles */
|
|
214681
|
-
static toFloat64Array(val) {
|
|
214882
|
+
static toFloat64Array(val) {
|
|
214883
|
+
return Float64Array.of(val.low.x, val.low.y, val.high.x, val.high.y);
|
|
214884
|
+
}
|
|
214682
214885
|
/** Flatten the low and high coordinates of this instance into an array of 4 doubles */
|
|
214683
|
-
toFloat64Array() {
|
|
214886
|
+
toFloat64Array() {
|
|
214887
|
+
return Range2d.toFloat64Array(this);
|
|
214888
|
+
}
|
|
214684
214889
|
/**
|
|
214685
214890
|
* Construct a Range2d from an array of double-precision values
|
|
214686
214891
|
* @param f64 the array, which should contain exactly 4 values in this order: lowX, lowY, highX, highY
|
|
@@ -214692,12 +214897,15 @@ class Range2d extends RangeBase {
|
|
|
214692
214897
|
return new this(f64[0], f64[1], f64[2], f64[3]);
|
|
214693
214898
|
}
|
|
214694
214899
|
/**
|
|
214695
|
-
* Construct a Range2d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
214900
|
+
* Construct a Range2d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
214901
|
+
* the 'blob' type, where you know that that result is a Range3d.
|
|
214696
214902
|
* @param buffer untyped array
|
|
214697
214903
|
* @return a new Range2d object
|
|
214698
214904
|
*/
|
|
214699
|
-
static fromArrayBuffer(buffer) {
|
|
214700
|
-
|
|
214905
|
+
static fromArrayBuffer(buffer) {
|
|
214906
|
+
return this.fromFloat64Array(new Float64Array(buffer));
|
|
214907
|
+
}
|
|
214908
|
+
// explicit constructor - no enforcement of value relationships
|
|
214701
214909
|
constructor(lowX = Range2d._EXTREME_POSITIVE, lowY = Range2d._EXTREME_POSITIVE, highX = Range2d._EXTREME_NEGATIVE, highY = Range2d._EXTREME_NEGATIVE) {
|
|
214702
214910
|
super();
|
|
214703
214911
|
this.low = _Point2dVector2d__WEBPACK_IMPORTED_MODULE_5__.Point2d.create(lowX, lowY);
|
|
@@ -214708,12 +214916,12 @@ class Range2d extends RangeBase {
|
|
|
214708
214916
|
return (this.low.isAlmostEqual(other.low) && this.high.isAlmostEqual(other.high))
|
|
214709
214917
|
|| (this.isNull && other.isNull);
|
|
214710
214918
|
}
|
|
214711
|
-
/**
|
|
214919
|
+
/** Copy all content from any `other` that has low and high xy data. */
|
|
214712
214920
|
setFrom(other) {
|
|
214713
214921
|
this.low.set(other.low.x, other.low.y);
|
|
214714
214922
|
this.high.set(other.high.x, other.high.y);
|
|
214715
214923
|
}
|
|
214716
|
-
/**
|
|
214924
|
+
/** Create a new Range2d from any `other` that has low and high xy data. */
|
|
214717
214925
|
static createFrom(other, result) {
|
|
214718
214926
|
if (result) {
|
|
214719
214927
|
result.setFrom(other);
|
|
@@ -214721,7 +214929,7 @@ class Range2d extends RangeBase {
|
|
|
214721
214929
|
}
|
|
214722
214930
|
return this.createXYXYOrCorrectToNull(other.low.x, other.low.y, other.high.x, other.high.y, result);
|
|
214723
214931
|
}
|
|
214724
|
-
/**
|
|
214932
|
+
/** Treat any array of numbers as numbers to be inserted !!! */
|
|
214725
214933
|
setFromJSON(json) {
|
|
214726
214934
|
this.setNull();
|
|
214727
214935
|
if (Array.isArray(json)) {
|
|
@@ -214740,9 +214948,15 @@ class Range2d extends RangeBase {
|
|
|
214740
214948
|
}
|
|
214741
214949
|
}
|
|
214742
214950
|
/** Freeze this instance (and its members) so it is read-only */
|
|
214743
|
-
freeze() {
|
|
214744
|
-
|
|
214745
|
-
|
|
214951
|
+
freeze() {
|
|
214952
|
+
this.low.freeze();
|
|
214953
|
+
this.high.freeze();
|
|
214954
|
+
return Object.freeze(this);
|
|
214955
|
+
}
|
|
214956
|
+
/** Return json array with two points as produced by `Point2d.toJSON` */
|
|
214957
|
+
toJSON() {
|
|
214958
|
+
return this.isNull ? [] : [this.low.toJSON(), this.high.toJSON()];
|
|
214959
|
+
}
|
|
214746
214960
|
/** Use `setFromJSON` to parse `json` into a new Range2d instance. */
|
|
214747
214961
|
static fromJSON(json) {
|
|
214748
214962
|
const result = new this();
|
|
@@ -214761,13 +214975,13 @@ class Range2d extends RangeBase {
|
|
|
214761
214975
|
this.setNull();
|
|
214762
214976
|
}
|
|
214763
214977
|
}
|
|
214764
|
-
/**
|
|
214978
|
+
/** Return a clone of this range (or copy to optional result) */
|
|
214765
214979
|
clone(result) {
|
|
214766
214980
|
result = result ? result : new this.constructor();
|
|
214767
214981
|
result.setDirect(this.low.x, this.low.y, this.high.x, this.high.y, false);
|
|
214768
214982
|
return result;
|
|
214769
214983
|
}
|
|
214770
|
-
/**
|
|
214984
|
+
/** Create a range with no content. */
|
|
214771
214985
|
static createNull(result) {
|
|
214772
214986
|
result = result ? result : new this();
|
|
214773
214987
|
result.setNull();
|
|
@@ -214817,7 +215031,10 @@ class Range2d extends RangeBase {
|
|
|
214817
215031
|
return this.high.x < this.low.x
|
|
214818
215032
|
|| this.high.y < this.low.y;
|
|
214819
215033
|
}
|
|
214820
|
-
/**
|
|
215034
|
+
/**
|
|
215035
|
+
* Test if the box has high strictly less than low for any of x,y, condition. Note that a range around a
|
|
215036
|
+
* single point is NOT null.
|
|
215037
|
+
*/
|
|
214821
215038
|
static isNull(range) {
|
|
214822
215039
|
return range.high.x < range.low.x
|
|
214823
215040
|
|| range.high.y < range.low.y;
|
|
@@ -214828,28 +215045,55 @@ class Range2d extends RangeBase {
|
|
|
214828
215045
|
&& this.high.y === this.low.y;
|
|
214829
215046
|
}
|
|
214830
215047
|
/** Return the midpoint of the diagonal. No test for null range. */
|
|
214831
|
-
get center() {
|
|
214832
|
-
|
|
214833
|
-
|
|
214834
|
-
/**
|
|
214835
|
-
get
|
|
214836
|
-
|
|
214837
|
-
|
|
214838
|
-
/**
|
|
214839
|
-
get
|
|
215048
|
+
get center() {
|
|
215049
|
+
return this.low.interpolate(.5, this.high);
|
|
215050
|
+
}
|
|
215051
|
+
/** Return the low x coordinate */
|
|
215052
|
+
get xLow() {
|
|
215053
|
+
return this.low.x;
|
|
215054
|
+
}
|
|
215055
|
+
/** Return the low y coordinate */
|
|
215056
|
+
get yLow() {
|
|
215057
|
+
return this.low.y;
|
|
215058
|
+
}
|
|
215059
|
+
/** Return the high x coordinate */
|
|
215060
|
+
get xHigh() {
|
|
215061
|
+
return this.high.x;
|
|
215062
|
+
}
|
|
215063
|
+
/** Return the high y coordinate */
|
|
215064
|
+
get yHigh() {
|
|
215065
|
+
return this.high.y;
|
|
215066
|
+
}
|
|
214840
215067
|
/** Length of the box in the x direction */
|
|
214841
|
-
xLength() {
|
|
215068
|
+
xLength() {
|
|
215069
|
+
const a = this.high.x - this.low.x;
|
|
215070
|
+
return a > 0.0 ? a : 0.0;
|
|
215071
|
+
}
|
|
214842
215072
|
/** Length of the box in the y direction */
|
|
214843
|
-
yLength() {
|
|
214844
|
-
|
|
214845
|
-
|
|
214846
|
-
|
|
214847
|
-
|
|
214848
|
-
|
|
215073
|
+
yLength() {
|
|
215074
|
+
const a = this.high.y - this.low.y;
|
|
215075
|
+
return a > 0.0 ? a : 0.0;
|
|
215076
|
+
}
|
|
215077
|
+
/**
|
|
215078
|
+
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
215079
|
+
* large negative coordinates.
|
|
215080
|
+
*/
|
|
215081
|
+
diagonal(result) {
|
|
215082
|
+
return this.low.vectorTo(this.high, result);
|
|
215083
|
+
}
|
|
215084
|
+
/**
|
|
215085
|
+
* Return the point at the specified fraction along the diagonal vector. There is no check for isNull -- if the
|
|
215086
|
+
* range isNull(), the vector will have very large negative coordinates.
|
|
215087
|
+
*/
|
|
215088
|
+
diagonalFractionToPoint(fraction, result) {
|
|
215089
|
+
return this.low.interpolate(fraction, this.high, result);
|
|
215090
|
+
}
|
|
215091
|
+
/** Return a point given by fractional positions on the XY axes. This is done with no check for isNull !!! */
|
|
214849
215092
|
fractionToPoint(fractionX, fractionY, result) {
|
|
214850
215093
|
return this.low.interpolateXY(fractionX, fractionY, this.high, result);
|
|
214851
215094
|
}
|
|
214852
|
-
/**
|
|
215095
|
+
/**
|
|
215096
|
+
* Return an array with the 4 corners.
|
|
214853
215097
|
* * if asLoop is false, 4 corners are "x varies fastest, then y"
|
|
214854
215098
|
* * if asLoop is true, 5 corners are in CCW order WITH CLOSURE
|
|
214855
215099
|
*/
|
|
@@ -214860,13 +215104,13 @@ class Range2d extends RangeBase {
|
|
|
214860
215104
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.low.y, z),
|
|
214861
215105
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, z),
|
|
214862
215106
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.high.y, z),
|
|
214863
|
-
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, z)
|
|
215107
|
+
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, z),
|
|
214864
215108
|
];
|
|
214865
215109
|
return [
|
|
214866
215110
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, z),
|
|
214867
215111
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.low.y, z),
|
|
214868
215112
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.high.y, z),
|
|
214869
|
-
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, z)
|
|
215113
|
+
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, z),
|
|
214870
215114
|
];
|
|
214871
215115
|
}
|
|
214872
215116
|
/** Largest absolute value among any coordinates in the box corners. */
|
|
@@ -214876,10 +215120,14 @@ class Range2d extends RangeBase {
|
|
|
214876
215120
|
return Math.max(this.low.maxAbs(), this.high.maxAbs());
|
|
214877
215121
|
}
|
|
214878
215122
|
/** Test if the x direction size is nearly zero */
|
|
214879
|
-
get isAlmostZeroX() {
|
|
215123
|
+
get isAlmostZeroX() {
|
|
215124
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.xLength());
|
|
215125
|
+
}
|
|
214880
215126
|
/** Test if the y direction size is nearly zero */
|
|
214881
|
-
get isAlmostZeroY() {
|
|
214882
|
-
|
|
215127
|
+
get isAlmostZeroY() {
|
|
215128
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.yLength());
|
|
215129
|
+
}
|
|
215130
|
+
/** Test if a point given as x,y is within the range */
|
|
214883
215131
|
containsXY(x, y) {
|
|
214884
215132
|
return x >= this.low.x
|
|
214885
215133
|
&& y >= this.low.y
|
|
@@ -214887,7 +215135,9 @@ class Range2d extends RangeBase {
|
|
|
214887
215135
|
&& y <= this.high.y;
|
|
214888
215136
|
}
|
|
214889
215137
|
/** Test if a point is within the range. */
|
|
214890
|
-
containsPoint(point) {
|
|
215138
|
+
containsPoint(point) {
|
|
215139
|
+
return this.containsXY(point.x, point.y);
|
|
215140
|
+
}
|
|
214891
215141
|
/** Test of other range is within this range */
|
|
214892
215142
|
containsRange(other) {
|
|
214893
215143
|
return other.low.x >= this.low.x
|
|
@@ -214930,7 +215180,9 @@ class Range2d extends RangeBase {
|
|
|
214930
215180
|
this.extendXY(x1, y1);
|
|
214931
215181
|
}
|
|
214932
215182
|
/** Expand this range to include a point. */
|
|
214933
|
-
extendPoint(point) {
|
|
215183
|
+
extendPoint(point) {
|
|
215184
|
+
this.extendXY(point.x, point.y);
|
|
215185
|
+
}
|
|
214934
215186
|
/** Expand this range to include a range. */
|
|
214935
215187
|
extendRange(other) {
|
|
214936
215188
|
if (!Range2d.isNull(other)) {
|
|
@@ -214954,7 +215206,7 @@ class Range2d extends RangeBase {
|
|
|
214954
215206
|
return Range2d.createXYXY(Math.min(this.low.x, other.low.x), Math.min(this.low.y, other.low.y), Math.max(this.high.x, other.high.x), Math.max(this.high.y, other.high.y), result);
|
|
214955
215207
|
}
|
|
214956
215208
|
/**
|
|
214957
|
-
*
|
|
215209
|
+
* Move low and high points by scaleFactor around the center point.
|
|
214958
215210
|
* @param scaleFactor scale factor applied to low, high distance from center.
|
|
214959
215211
|
*/
|
|
214960
215212
|
scaleAboutCenterInPlace(scaleFactor) {
|
|
@@ -214970,7 +215222,7 @@ class Range2d extends RangeBase {
|
|
|
214970
215222
|
}
|
|
214971
215223
|
}
|
|
214972
215224
|
/**
|
|
214973
|
-
*
|
|
215225
|
+
* Move all limits by a fixed amount.
|
|
214974
215226
|
* * positive delta expands the range size
|
|
214975
215227
|
* * negative delta reduces the range size
|
|
214976
215228
|
* * if any dimension reduces below zero size, the whole range becomes null
|
|
@@ -214979,7 +215231,8 @@ class Range2d extends RangeBase {
|
|
|
214979
215231
|
expandInPlace(delta) {
|
|
214980
215232
|
this.setDirect(this.low.x - delta, this.low.y - delta, this.high.x + delta, this.high.y + delta, true);
|
|
214981
215233
|
}
|
|
214982
|
-
/**
|
|
215234
|
+
/**
|
|
215235
|
+
* Return fractional coordinates of point within the range.
|
|
214983
215236
|
* * returns undefined if the range is null.
|
|
214984
215237
|
* * returns undefined if any direction (x,y) has zero length
|
|
214985
215238
|
*/
|
|
@@ -284230,7 +284483,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
|
|
|
284230
284483
|
/***/ ((module) => {
|
|
284231
284484
|
|
|
284232
284485
|
"use strict";
|
|
284233
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.
|
|
284486
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.14","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-eslintrc -c \\"./node_modules/@itwin/eslint-plugin/dist/configs/extension-exports-config.js\\" \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.1.0-dev.14","@itwin/core-bentley":"workspace:^4.1.0-dev.14","@itwin/core-common":"workspace:^4.1.0-dev.14","@itwin/core-geometry":"workspace:^4.1.0-dev.14","@itwin/core-orbitgt":"workspace:^4.1.0-dev.14","@itwin/core-quantity":"workspace:^4.1.0-dev.14"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"^4.0.0-dev.33","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"^18.11.5","@types/sinon":"^9.0.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.36.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/object-storage-azure":"^1.5.0","@itwin/cloud-agnostic-core":"^1.5.0","@itwin/object-storage-core":"^1.5.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0","reflect-metadata":"0.1.13"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
|
|
284234
284487
|
|
|
284235
284488
|
/***/ })
|
|
284236
284489
|
|