@itwin/rpcinterface-full-stack-tests 4.1.0-dev.13 → 4.1.0-dev.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/backend/BackendInit.js.map +1 -1
- package/lib/common/Settings.js +12 -12
- package/lib/common/Settings.js.map +1 -1
- package/lib/common/SideChannels.js.map +1 -1
- package/lib/dist/bundled-tests.js +559 -306
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/frontend/CodeSpecs.test.js.map +1 -1
- package/lib/frontend/DevToolsRpc.test.js.map +1 -1
- package/lib/frontend/Elements.test.js.map +1 -1
- package/lib/frontend/IModel.test.js.map +1 -1
- package/lib/frontend/IModelConnection.test.js.map +1 -1
- package/lib/frontend/Models.test.js.map +1 -1
- package/lib/frontend/PresentationRpc.test.js.map +1 -1
- package/lib/frontend/Views.test.js.map +1 -1
- package/lib/frontend/setup/IModelSession.js.map +1 -1
- package/lib/frontend/setup/TestContext.js.map +1 -1
- package/lib/frontend/workflows/BasicScenarios.test.js.map +1 -1
- package/package.json +13 -13
|
@@ -31054,6 +31054,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31054
31054
|
*/
|
|
31055
31055
|
var TypeOfChange;
|
|
31056
31056
|
(function (TypeOfChange) {
|
|
31057
|
+
/** Element contains no changes */
|
|
31058
|
+
TypeOfChange[TypeOfChange["NoChange"] = 0] = "NoChange";
|
|
31057
31059
|
/** A property in the element changed */
|
|
31058
31060
|
TypeOfChange[TypeOfChange["Property"] = 1] = "Property";
|
|
31059
31061
|
/** The geometry stream of a [GeometricElement]($backend) changed */
|
|
@@ -183721,7 +183723,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
183721
183723
|
|
|
183722
183724
|
|
|
183723
183725
|
/**
|
|
183724
|
-
*
|
|
183726
|
+
* Annotation of an interval of a curve.
|
|
183725
183727
|
* * The interval is marked with two pairs of numbers:
|
|
183726
183728
|
* * * fraction0, fraction1 = fraction parameters along the child curve
|
|
183727
183729
|
* * * distance0,distance1 = distances within containing CurveChainWithDistanceIndex
|
|
@@ -183745,8 +183747,7 @@ class PathFragment {
|
|
|
183745
183747
|
containsChainDistance(distance) {
|
|
183746
183748
|
return distance >= this.chainDistance0 && distance <= this.chainDistance1;
|
|
183747
183749
|
}
|
|
183748
|
-
|
|
183749
|
-
// not be larger.
|
|
183750
|
+
/** Return a quick distance to the curve. This may be SMALLER than true distance but may not be larger */
|
|
183750
183751
|
quickMinDistanceToChildCurve(spacePoint) {
|
|
183751
183752
|
if (this.range) {
|
|
183752
183753
|
return this.range.distanceToPoint(spacePoint);
|
|
@@ -183757,8 +183758,10 @@ class PathFragment {
|
|
|
183757
183758
|
return detail.a;
|
|
183758
183759
|
return 0;
|
|
183759
183760
|
}
|
|
183760
|
-
|
|
183761
|
-
|
|
183761
|
+
/**
|
|
183762
|
+
* Return an array with (references to) all the path fragments, sorted smallest to largest on the "a" value
|
|
183763
|
+
* equal to the quick min distance to the fragment
|
|
183764
|
+
*/
|
|
183762
183765
|
static collectSortedQuickMinDistances(fragments, spacePoint) {
|
|
183763
183766
|
const sortedFragments = [];
|
|
183764
183767
|
for (const f of fragments) {
|
|
@@ -183775,26 +183778,28 @@ class PathFragment {
|
|
|
183775
183778
|
containsChildCurveAndChildFraction(curve, fraction) {
|
|
183776
183779
|
return this.childCurve === curve && fraction >= this.childFraction0 && fraction <= this.childFraction1;
|
|
183777
183780
|
}
|
|
183778
|
-
/**
|
|
183781
|
+
/**
|
|
183782
|
+
* Convert distance to local fraction, and apply that to interpolate between the stored curve fractions.
|
|
183779
183783
|
* Note that proportional calculation does NOT account for nonuniform parameterization in the child curve.
|
|
183780
183784
|
*/
|
|
183781
183785
|
chainDistanceToInterpolatedChildFraction(distance) {
|
|
183782
183786
|
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 . ..
|
|
183783
183787
|
}
|
|
183784
|
-
/** Convert chainDistance to true chidFraction, using detailed moveSignedDistanceFromFraction
|
|
183785
|
-
*/
|
|
183788
|
+
/** Convert chainDistance to true chidFraction, using detailed moveSignedDistanceFromFraction */
|
|
183786
183789
|
chainDistanceToAccurateChildFraction(chainDistance, allowExtrapolation) {
|
|
183787
183790
|
// The fragments are really expected to do good mappings in their distance range ...
|
|
183788
183791
|
const childDetail = this.childCurve.moveSignedDistanceFromFraction(this.childFraction0, chainDistance - this.chainDistance0, allowExtrapolation ?? false);
|
|
183789
183792
|
return childDetail.fraction;
|
|
183790
183793
|
}
|
|
183791
|
-
/**
|
|
183794
|
+
/**
|
|
183795
|
+
* Return the scale factor to map childCurve fraction derivatives to chain fraction derivatives
|
|
183792
183796
|
* @param globalDistance total length of the global curve.
|
|
183793
183797
|
*/
|
|
183794
183798
|
fractionScaleFactor(globalDistance) {
|
|
183795
183799
|
return globalDistance * (this.childFraction1 - this.childFraction0) / (this.chainDistance1 - this.chainDistance0);
|
|
183796
183800
|
}
|
|
183797
|
-
/**
|
|
183801
|
+
/**
|
|
183802
|
+
* Reverse the fraction and distance data.
|
|
183798
183803
|
* * each child fraction `f` is replaced by `1-f`
|
|
183799
183804
|
* * each `chainDistance` is replaced by `totalDistance-chainDistance`
|
|
183800
183805
|
*/
|
|
@@ -183813,7 +183818,7 @@ class PathFragment {
|
|
|
183813
183818
|
return this.childFractionToChainDistance(fraction);
|
|
183814
183819
|
}
|
|
183815
183820
|
/**
|
|
183816
|
-
*
|
|
183821
|
+
* Convert a fractional position on the childCurve to distance in the chain space.
|
|
183817
183822
|
* * Return value is SIGNED -- will be negative when fraction < this.childFraction0.
|
|
183818
183823
|
* @param fraction fraction along the curve within this fragment
|
|
183819
183824
|
*/
|
|
@@ -183835,7 +183840,6 @@ class DistanceIndexConstructionContext {
|
|
|
183835
183840
|
startCurvePrimitive(_cp) { }
|
|
183836
183841
|
endParentCurvePrimitive(_cp) { }
|
|
183837
183842
|
endCurvePrimitive(_cp) { }
|
|
183838
|
-
// um .. we need to see curves? how to reject?
|
|
183839
183843
|
announcePointTangent(_xyz, _fraction, _tangent) { }
|
|
183840
183844
|
/** Announce numPoints interpolated between point0 and point1, with associated fractions */
|
|
183841
183845
|
announceSegmentInterval(cp, point0, point1, numStrokes, fraction0, fraction1) {
|
|
@@ -183882,13 +183886,17 @@ class DistanceIndexConstructionContext {
|
|
|
183882
183886
|
/**
|
|
183883
183887
|
* `CurveChainWithDistanceIndex` is a CurvePrimitive whose fractional parameterization is proportional to true
|
|
183884
183888
|
* distance along a CurveChain.
|
|
183889
|
+
* * For example if the total length of the chain is `L`, then the distance along the chain from parameters `t0`
|
|
183890
|
+
* to `t1` is easily computed as `L*(t1-t0)`.
|
|
183885
183891
|
* * The curve chain can be any type derived from CurveChain.
|
|
183886
183892
|
* * * i.e. either a `Path` or a `Loop`
|
|
183887
183893
|
* @public
|
|
183888
183894
|
*/
|
|
183889
183895
|
class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive {
|
|
183890
183896
|
/** Test if other is a `CurveChainWithDistanceIndex` */
|
|
183891
|
-
isSameGeometryClass(other) {
|
|
183897
|
+
isSameGeometryClass(other) {
|
|
183898
|
+
return other instanceof CurveChainWithDistanceIndex;
|
|
183899
|
+
}
|
|
183892
183900
|
// final assembly of CurveChainWithDistanceIndex -- caller must create valid fragment index.
|
|
183893
183901
|
constructor(path, fragments) {
|
|
183894
183902
|
super();
|
|
@@ -183908,14 +183916,20 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
183908
183916
|
return CurveChainWithDistanceIndex.createCapture(c);
|
|
183909
183917
|
return undefined;
|
|
183910
183918
|
}
|
|
183911
|
-
/**
|
|
183919
|
+
/**
|
|
183920
|
+
* Reference to the contained path.
|
|
183912
183921
|
* * Do not modify the path. The distance index will be wrong.
|
|
183913
183922
|
*/
|
|
183914
|
-
get path() {
|
|
183915
|
-
|
|
183923
|
+
get path() {
|
|
183924
|
+
return this._path;
|
|
183925
|
+
}
|
|
183926
|
+
/**
|
|
183927
|
+
* Reference to the fragments array.
|
|
183916
183928
|
* * Do not modify.
|
|
183917
183929
|
*/
|
|
183918
|
-
get fragments() {
|
|
183930
|
+
get fragments() {
|
|
183931
|
+
return this._fragments;
|
|
183932
|
+
}
|
|
183919
183933
|
/** Return a deep clone */
|
|
183920
183934
|
clone() {
|
|
183921
183935
|
const c = this._path.clone();
|
|
@@ -183987,7 +184001,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
183987
184001
|
newPath.children.reverse();
|
|
183988
184002
|
return CurveChainWithDistanceIndex.createCapture(newPath);
|
|
183989
184003
|
}
|
|
183990
|
-
/**
|
|
184004
|
+
/**
|
|
184005
|
+
* Ask if the curve is within tolerance of a plane.
|
|
183991
184006
|
* @returns Returns true if the curve is completely within tolerance of the plane.
|
|
183992
184007
|
*/
|
|
183993
184008
|
isInPlane(plane) {
|
|
@@ -183997,7 +184012,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
183997
184012
|
}
|
|
183998
184013
|
return true;
|
|
183999
184014
|
}
|
|
184000
|
-
/**
|
|
184015
|
+
/** Return the start point of the primitive. The default implementation returns fractionToPoint (0.0) */
|
|
184001
184016
|
startPoint(result) {
|
|
184002
184017
|
const c = this._path.cyclicCurvePrimitive(0);
|
|
184003
184018
|
if (c)
|
|
@@ -184017,7 +184032,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184017
184032
|
c.emitStrokes(dest, options);
|
|
184018
184033
|
}
|
|
184019
184034
|
}
|
|
184020
|
-
/**
|
|
184035
|
+
/**
|
|
184036
|
+
* Ask the curve to announce points and simple subcurve fragments for stroking.
|
|
184021
184037
|
* See IStrokeHandler for description of the sequence of the method calls.
|
|
184022
184038
|
*/
|
|
184023
184039
|
emitStrokableParts(dest, options) {
|
|
@@ -184026,7 +184042,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184026
184042
|
}
|
|
184027
184043
|
}
|
|
184028
184044
|
/**
|
|
184029
|
-
*
|
|
184045
|
+
* Return the stroke count required for given options.
|
|
184030
184046
|
* @param options StrokeOptions that determine count
|
|
184031
184047
|
*/
|
|
184032
184048
|
computeStrokeCountForOptions(options) {
|
|
@@ -184040,7 +184056,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184040
184056
|
* Return an array containing only the curve primitives.
|
|
184041
184057
|
* @param collectorArray array to receive primitives (pushed -- the array is not cleared)
|
|
184042
184058
|
* @param smallestPossiblePrimitives if true, recurse on the (otherwise hidden) children. If false, only push `this`.
|
|
184043
|
-
* @param explodeLinestrings (if smallestPossiblePrimitives is true) whether to push a [[LineSegment3d]] for each
|
|
184059
|
+
* @param explodeLinestrings (if smallestPossiblePrimitives is true) whether to push a [[LineSegment3d]] for each
|
|
184060
|
+
* segment of a [[LineString3d]] child. If false, push only the [[LineString3d]].
|
|
184044
184061
|
*/
|
|
184045
184062
|
collectCurvePrimitivesGo(collectorArray, smallestPossiblePrimitives = false, explodeLineStrings = false) {
|
|
184046
184063
|
if (smallestPossiblePrimitives) {
|
|
@@ -184053,7 +184070,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184053
184070
|
}
|
|
184054
184071
|
}
|
|
184055
184072
|
/**
|
|
184056
|
-
*
|
|
184073
|
+
* Construct StrokeCountMap for each child, accumulating data to stroke count map for this primitive.
|
|
184057
184074
|
* @param options StrokeOptions that determine count
|
|
184058
184075
|
* @param parentStrokeMap evolving parent map.
|
|
184059
184076
|
*/
|
|
@@ -184064,20 +184081,19 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184064
184081
|
}
|
|
184065
184082
|
_curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive.installStrokeCountMap(this, myMap, parentStrokeMap);
|
|
184066
184083
|
}
|
|
184067
|
-
/**
|
|
184084
|
+
/**
|
|
184085
|
+
* Second step of double dispatch: call `this._path.dispatchToGeometryHandler (handler)`
|
|
184068
184086
|
* * Note that this exposes the children individually to the handler.
|
|
184069
184087
|
*/
|
|
184070
184088
|
dispatchToGeometryHandler(handler) {
|
|
184071
184089
|
return this._path.dispatchToGeometryHandler(handler);
|
|
184072
184090
|
}
|
|
184073
|
-
/** Extend (increase) `rangeToExtend` as needed to include these curves (optionally transformed)
|
|
184074
|
-
*/
|
|
184091
|
+
/** Extend (increase) `rangeToExtend` as needed to include these curves (optionally transformed) */
|
|
184075
184092
|
extendRange(rangeToExtend, transform) {
|
|
184076
184093
|
this._path.extendRange(rangeToExtend, transform);
|
|
184077
184094
|
}
|
|
184078
184095
|
/**
|
|
184079
|
-
*
|
|
184080
|
-
* * Curve length is always positive.
|
|
184096
|
+
* Curve length is always positive.
|
|
184081
184097
|
* @returns Returns a (high accuracy) length of the curve between fractional positions
|
|
184082
184098
|
* @returns Returns the length of the curve.
|
|
184083
184099
|
*/
|
|
@@ -184129,7 +184145,9 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184129
184145
|
* Convert distance along the chain to fraction along the chain.
|
|
184130
184146
|
* @param distance distance along the chain
|
|
184131
184147
|
*/
|
|
184132
|
-
chainDistanceToChainFraction(distance) {
|
|
184148
|
+
chainDistanceToChainFraction(distance) {
|
|
184149
|
+
return distance / this._totalLength;
|
|
184150
|
+
}
|
|
184133
184151
|
/**
|
|
184134
184152
|
* Resolve a fraction within a specific curve to a fragment.
|
|
184135
184153
|
* @param curve
|
|
@@ -184151,9 +184169,7 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184151
184169
|
}
|
|
184152
184170
|
return undefined;
|
|
184153
184171
|
}
|
|
184154
|
-
/**
|
|
184155
|
-
* Returns the total length of curves.
|
|
184156
|
-
*/
|
|
184172
|
+
/** Returns the total length of curves. */
|
|
184157
184173
|
curveLength() {
|
|
184158
184174
|
return this._totalLength;
|
|
184159
184175
|
}
|
|
@@ -184180,8 +184196,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184180
184196
|
// fragment = this.chainDistanceToFragment(chainDistance, true);
|
|
184181
184197
|
return this._fragments[0].childCurve.fractionToPoint(0.0, result);
|
|
184182
184198
|
}
|
|
184183
|
-
/**
|
|
184184
|
-
*
|
|
184199
|
+
/**
|
|
184200
|
+
* Return the point (x,y,z) and derivative on the curve at fractional position.
|
|
184185
184201
|
* * Note that this derivative is "derivative of xyz with respect to fraction."
|
|
184186
184202
|
* * this derivative shows the speed of the "fractional point" moving along the curve.
|
|
184187
184203
|
* * this is not generally a unit vector. use fractionToPointAndUnitTangent for a unit vector.
|
|
@@ -184215,10 +184231,11 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184215
184231
|
result.direction.normalizeInPlace();
|
|
184216
184232
|
return result;
|
|
184217
184233
|
}
|
|
184218
|
-
/**
|
|
184219
|
-
*
|
|
184234
|
+
/**
|
|
184235
|
+
* Return a plane with
|
|
184220
184236
|
* * origin at fractional position along the curve
|
|
184221
|
-
* * vectorU is the first derivative, i.e. tangent vector with length equal to the rate of change with respect to
|
|
184237
|
+
* * vectorU is the first derivative, i.e. tangent vector with length equal to the rate of change with respect to
|
|
184238
|
+
* the fraction.
|
|
184222
184239
|
* * vectorV is the second derivative, i.e.derivative of vectorU.
|
|
184223
184240
|
*/
|
|
184224
184241
|
fractionToPointAnd2Derivatives(fraction, result) {
|
|
@@ -184244,7 +184261,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184244
184261
|
result.vectorV.scaleInPlace(scale * scale);
|
|
184245
184262
|
return result;
|
|
184246
184263
|
}
|
|
184247
|
-
/**
|
|
184264
|
+
/**
|
|
184265
|
+
* Attempt to transform in place.
|
|
184248
184266
|
* * Warning: If any child fails, this object becomes invalid. But that should never happen.
|
|
184249
184267
|
*/
|
|
184250
184268
|
tryTransformInPlace(transform) {
|
|
@@ -184277,9 +184295,11 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184277
184295
|
}
|
|
184278
184296
|
return false;
|
|
184279
184297
|
}
|
|
184280
|
-
/**
|
|
184298
|
+
/**
|
|
184299
|
+
* Implement moveSignedDistanceFromFraction.
|
|
184281
184300
|
* * See `CurvePrimitive` for parameter details.
|
|
184282
|
-
* * The returned location directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
184301
|
+
* * The returned location directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
184302
|
+
* has pointer to an additional detail for the child curve.
|
|
184283
184303
|
*/
|
|
184284
184304
|
moveSignedDistanceFromFraction(startFraction, signedDistance, allowExtension, result) {
|
|
184285
184305
|
const distanceA = startFraction * this._totalLength;
|
|
@@ -184292,7 +184312,6 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184292
184312
|
return chainDetail;
|
|
184293
184313
|
}
|
|
184294
184314
|
/**
|
|
184295
|
-
*
|
|
184296
184315
|
* The returned object has
|
|
184297
184316
|
* * numCalls = number of times closestPoint was called.
|
|
184298
184317
|
* * numCurvesTested = number of curves tested with full closestPoint
|
|
@@ -184313,10 +184332,12 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184313
184332
|
}
|
|
184314
184333
|
return a;
|
|
184315
184334
|
}
|
|
184316
|
-
/**
|
|
184335
|
+
/**
|
|
184336
|
+
* Search for the curve point that is closest to the spacePoint.
|
|
184317
184337
|
* * The CurveChainWithDistanceIndex invokes the base class CurvePrimitive method, which
|
|
184318
184338
|
* (via a handler) determines a CurveLocation detail among the children.
|
|
184319
|
-
* * The returned detail directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
184339
|
+
* * The returned detail directly identifies fractional position along the CurveChainWithDistanceIndex, and
|
|
184340
|
+
* has pointer to an additional detail for the child curve.
|
|
184320
184341
|
* @param spacePoint point in space
|
|
184321
184342
|
* @param extend true to extend the curve
|
|
184322
184343
|
* @returns Returns a CurveLocationDetail structure that holds the details of the close point.
|
|
@@ -184365,7 +184386,8 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184365
184386
|
}
|
|
184366
184387
|
/**
|
|
184367
184388
|
* Construct an offset of each child as viewed in the xy-plane (ignoring z).
|
|
184368
|
-
* * No attempt is made to join the offset children. Use RegionOps.constructCurveXYOffset() to return a fully
|
|
184389
|
+
* * No attempt is made to join the offset children. Use RegionOps.constructCurveXYOffset() to return a fully
|
|
184390
|
+
* joined offset.
|
|
184369
184391
|
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
|
|
184370
184392
|
*/
|
|
184371
184393
|
constructOffsetXY(offsetDistanceOrOptions) {
|
|
@@ -184382,10 +184404,13 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
|
|
|
184382
184404
|
}
|
|
184383
184405
|
return offsets;
|
|
184384
184406
|
}
|
|
184385
|
-
/**
|
|
184407
|
+
/**
|
|
184408
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of
|
|
184409
|
+
* projection.
|
|
184386
184410
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
184387
184411
|
* @param lowHigh optional receiver for output
|
|
184388
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
184412
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
184413
|
+
* end of the ray.
|
|
184389
184414
|
*/
|
|
184390
184415
|
projectedParameterRange(ray, lowHigh) {
|
|
184391
184416
|
return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
@@ -191208,14 +191233,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
191208
191233
|
* @public
|
|
191209
191234
|
*/
|
|
191210
191235
|
class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
191211
|
-
/**
|
|
191212
|
-
isSameGeometryClass(other) {
|
|
191236
|
+
/** Test if `other` is a `Loop` */
|
|
191237
|
+
isSameGeometryClass(other) {
|
|
191238
|
+
return other instanceof Loop;
|
|
191239
|
+
}
|
|
191213
191240
|
/** Test if `other` is an instance of `Loop` */
|
|
191214
191241
|
constructor() {
|
|
191215
191242
|
super();
|
|
191216
191243
|
/** String name for schema properties */
|
|
191217
191244
|
this.curveCollectionType = "loop";
|
|
191218
|
-
/**
|
|
191245
|
+
/** Tag value that can be set to true for user code to mark inner and outer loops. */
|
|
191219
191246
|
this.isInner = false;
|
|
191220
191247
|
}
|
|
191221
191248
|
/**
|
|
@@ -191260,13 +191287,22 @@ class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
191260
191287
|
return Loop.create(strokes);
|
|
191261
191288
|
}
|
|
191262
191289
|
/** Return the boundary type (2) of a corresponding MicroStation CurveVector */
|
|
191263
|
-
dgnBoundaryType() {
|
|
191264
|
-
|
|
191290
|
+
dgnBoundaryType() {
|
|
191291
|
+
/**
|
|
191292
|
+
* All "Loop" become "outer". TypeScript Loop object is equivalent to a native CurveVector with
|
|
191293
|
+
* boundaryType = BOUNDARY_TYPE_Outer. In other words, TypeScript has no flavor of Loop that
|
|
191294
|
+
* carries "hole" semantics.
|
|
191295
|
+
*/
|
|
191296
|
+
return 2;
|
|
191297
|
+
}
|
|
191298
|
+
/** Invoke `processor.announceLoop(this, indexInParent)` */
|
|
191265
191299
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
191266
191300
|
return processor.announceLoop(this, indexInParent);
|
|
191267
191301
|
}
|
|
191268
191302
|
/** Create a new `Loop` with no children */
|
|
191269
|
-
cloneEmptyPeer() {
|
|
191303
|
+
cloneEmptyPeer() {
|
|
191304
|
+
return new Loop();
|
|
191305
|
+
}
|
|
191270
191306
|
/** Second step of double dispatch: call `handler.handleLoop(this)` */
|
|
191271
191307
|
dispatchToGeometryHandler(handler) {
|
|
191272
191308
|
return handler.handleLoop(this);
|
|
@@ -191277,6 +191313,7 @@ class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
191277
191313
|
* @public
|
|
191278
191314
|
*/
|
|
191279
191315
|
class LoopCurveLoopCurve {
|
|
191316
|
+
/** Constructor */
|
|
191280
191317
|
constructor(loopA, curveA, loopB, curveB) {
|
|
191281
191318
|
this.loopA = loopA;
|
|
191282
191319
|
this.curveA = curveA;
|
|
@@ -191326,9 +191363,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
191326
191363
|
*/
|
|
191327
191364
|
class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCollection {
|
|
191328
191365
|
/** Test if `other` is an instance of `ParityRegion` */
|
|
191329
|
-
isSameGeometryClass(other) {
|
|
191366
|
+
isSameGeometryClass(other) {
|
|
191367
|
+
return other instanceof ParityRegion;
|
|
191368
|
+
}
|
|
191330
191369
|
/** Return the array of loops in this parity region. */
|
|
191331
|
-
get children() {
|
|
191370
|
+
get children() {
|
|
191371
|
+
return this._children;
|
|
191372
|
+
}
|
|
191332
191373
|
/** Construct parity region with empty loop array */
|
|
191333
191374
|
constructor() {
|
|
191334
191375
|
super();
|
|
@@ -191336,9 +191377,7 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
191336
191377
|
this.curveCollectionType = "parityRegion";
|
|
191337
191378
|
this._children = [];
|
|
191338
191379
|
}
|
|
191339
|
-
/**
|
|
191340
|
-
* Add loops (recursively) to this region's children
|
|
191341
|
-
*/
|
|
191380
|
+
/** Add loops (recursively) to this region's children */
|
|
191342
191381
|
addLoops(data) {
|
|
191343
191382
|
if (data === undefined) {
|
|
191344
191383
|
}
|
|
@@ -191353,7 +191392,8 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
191353
191392
|
}
|
|
191354
191393
|
}
|
|
191355
191394
|
}
|
|
191356
|
-
/**
|
|
191395
|
+
/**
|
|
191396
|
+
* Return a single loop or parity region with given loops.
|
|
191357
191397
|
* * The returned structure CAPTURES the loops.
|
|
191358
191398
|
* * The loops are NOT reorganized by hole analysis.
|
|
191359
191399
|
*/
|
|
@@ -191373,8 +191413,10 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
191373
191413
|
return result;
|
|
191374
191414
|
}
|
|
191375
191415
|
/** Return the boundary type (4) of a corresponding MicroStation CurveVector */
|
|
191376
|
-
dgnBoundaryType() {
|
|
191377
|
-
|
|
191416
|
+
dgnBoundaryType() {
|
|
191417
|
+
return 4;
|
|
191418
|
+
}
|
|
191419
|
+
/** Invoke `processor.announceParityRegion(this, indexInParent)` */
|
|
191378
191420
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
191379
191421
|
return processor.announceParityRegion(this, indexInParent);
|
|
191380
191422
|
}
|
|
@@ -191401,9 +191443,12 @@ class ParityRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCo
|
|
|
191401
191443
|
return clone;
|
|
191402
191444
|
}
|
|
191403
191445
|
/** Create a new empty parity region. */
|
|
191404
|
-
cloneEmptyPeer() {
|
|
191405
|
-
|
|
191406
|
-
|
|
191446
|
+
cloneEmptyPeer() {
|
|
191447
|
+
return new ParityRegion();
|
|
191448
|
+
}
|
|
191449
|
+
/**
|
|
191450
|
+
* Add `child` to this parity region.
|
|
191451
|
+
* * Any child type other than `Loop` is ignored.
|
|
191407
191452
|
*/
|
|
191408
191453
|
tryAddChild(child) {
|
|
191409
191454
|
if (child && child instanceof _Loop__WEBPACK_IMPORTED_MODULE_1__.Loop) {
|
|
@@ -191452,14 +191497,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
191452
191497
|
|
|
191453
191498
|
/**
|
|
191454
191499
|
* * A `Path` object is a collection of curves that join head-to-tail to form a path.
|
|
191455
|
-
* * A `Path` object does not bound a planar region.
|
|
191500
|
+
* * A `Path` object does not bound a planar region. Use `Loop` to indicate region bounding.
|
|
191456
191501
|
* @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
|
|
191457
191502
|
* @public
|
|
191458
191503
|
*/
|
|
191459
191504
|
class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
191460
191505
|
/** Test if `other` is an instance of `Path` */
|
|
191461
|
-
isSameGeometryClass(other) {
|
|
191462
|
-
|
|
191506
|
+
isSameGeometryClass(other) {
|
|
191507
|
+
return other instanceof Path;
|
|
191508
|
+
}
|
|
191509
|
+
/** Invoke `processor.announcePath(this, indexInParent)` */
|
|
191463
191510
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
191464
191511
|
return processor.announcePath(this, indexInParent);
|
|
191465
191512
|
}
|
|
@@ -191471,7 +191518,7 @@ class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
191471
191518
|
}
|
|
191472
191519
|
/**
|
|
191473
191520
|
* Create a path from a variable length list of curve primitives
|
|
191474
|
-
* * CurvePrimitive params are captured
|
|
191521
|
+
* * CurvePrimitive params are captured.
|
|
191475
191522
|
* @param curves variable length list of individual curve primitives or point arrays.
|
|
191476
191523
|
*/
|
|
191477
191524
|
static create(...curves) {
|
|
@@ -191486,8 +191533,8 @@ class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
191486
191533
|
return result;
|
|
191487
191534
|
}
|
|
191488
191535
|
/**
|
|
191489
|
-
* Create a path from a an array of curve primitives
|
|
191490
|
-
* @param curves array of individual curve primitives
|
|
191536
|
+
* Create a path from a an array of curve primitives.
|
|
191537
|
+
* @param curves array of individual curve primitives.
|
|
191491
191538
|
*/
|
|
191492
191539
|
static createArray(curves) {
|
|
191493
191540
|
const result = new Path();
|
|
@@ -191504,10 +191551,14 @@ class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
|
|
|
191504
191551
|
return Path.create(strokes);
|
|
191505
191552
|
}
|
|
191506
191553
|
/** Return the boundary type (1) of a corresponding MicroStation CurveVector */
|
|
191507
|
-
dgnBoundaryType() {
|
|
191554
|
+
dgnBoundaryType() {
|
|
191555
|
+
return 1;
|
|
191556
|
+
}
|
|
191508
191557
|
/** Clone as a new `Path` with no primitives */
|
|
191509
|
-
cloneEmptyPeer() {
|
|
191510
|
-
|
|
191558
|
+
cloneEmptyPeer() {
|
|
191559
|
+
return new Path();
|
|
191560
|
+
}
|
|
191561
|
+
/** Second step of double dispatch: call `handler.handlePath(this)` */
|
|
191511
191562
|
dispatchToGeometryHandler(handler) {
|
|
191512
191563
|
return handler.handlePath(this);
|
|
191513
191564
|
}
|
|
@@ -191729,11 +191780,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
191729
191780
|
*/
|
|
191730
191781
|
|
|
191731
191782
|
/**
|
|
191732
|
-
* A ProxyCurve is expected to be used as a base class for
|
|
191733
|
-
*
|
|
191734
|
-
*
|
|
191735
|
-
* * The ProxyCurve implements all required CurvePrimitive methods by dispatching
|
|
191736
|
-
* to the proxy.
|
|
191783
|
+
* A ProxyCurve is expected to be used as a base class for curve types that use some existing curve (the proxy)
|
|
191784
|
+
* for evaluation and display but carry other defining data.
|
|
191785
|
+
* * The ProxyCurve implements all required CurvePrimitive methods by dispatching to the proxy.
|
|
191737
191786
|
* * These methods presumably require support from the application class and are left abstract:
|
|
191738
191787
|
* * clone
|
|
191739
191788
|
* * curvePrimitiveType
|
|
@@ -191753,8 +191802,10 @@ class ProxyCurve extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Curv
|
|
|
191753
191802
|
super();
|
|
191754
191803
|
this._proxyCurve = proxyCurve;
|
|
191755
191804
|
}
|
|
191756
|
-
/**
|
|
191757
|
-
get proxyCurve() {
|
|
191805
|
+
/** Return the (pointer to) the proxy curve. */
|
|
191806
|
+
get proxyCurve() {
|
|
191807
|
+
return this._proxyCurve;
|
|
191808
|
+
}
|
|
191758
191809
|
/** Implement by proxyCurve */
|
|
191759
191810
|
computeStrokeCountForOptions(options) {
|
|
191760
191811
|
return this._proxyCurve.computeStrokeCountForOptions(options);
|
|
@@ -193516,7 +193567,8 @@ var RegionBinaryOpType;
|
|
|
193516
193567
|
* * `ParityRegion` -- a collection of loops, interpreted by parity rules.
|
|
193517
193568
|
* The common "One outer loop and many Inner loops" is a parity region.
|
|
193518
193569
|
* * `UnionRegion` -- a collection of `Loop` and `ParityRegion` objects understood as a (probably disjoint) union.
|
|
193519
|
-
* * Most of the methods in this class ignore z-coordinates, so callers should ensure that input geometry has been
|
|
193570
|
+
* * Most of the methods in this class ignore z-coordinates, so callers should ensure that input geometry has been
|
|
193571
|
+
* rotated parallel to the xy-plane.
|
|
193520
193572
|
* @public
|
|
193521
193573
|
*/
|
|
193522
193574
|
class RegionOps {
|
|
@@ -193535,7 +193587,8 @@ class RegionOps {
|
|
|
193535
193587
|
}
|
|
193536
193588
|
return undefined;
|
|
193537
193589
|
}
|
|
193538
|
-
/**
|
|
193590
|
+
/**
|
|
193591
|
+
* Return an area tolerance for a given xy-range and optional distance tolerance.
|
|
193539
193592
|
* @param range range of planar region to tolerance
|
|
193540
193593
|
* @param distanceTolerance optional absolute distance tolerance
|
|
193541
193594
|
*/
|
|
@@ -193558,7 +193611,8 @@ class RegionOps {
|
|
|
193558
193611
|
}
|
|
193559
193612
|
return undefined;
|
|
193560
193613
|
}
|
|
193561
|
-
/**
|
|
193614
|
+
/**
|
|
193615
|
+
* Return MomentData with the sums of wire moments.
|
|
193562
193616
|
* * If `rawMomentData` is the MomentData returned by computeXYAreaMoments, convert to principal axes and moments with
|
|
193563
193617
|
* call `principalMomentData = MomentData.inertiaProductsToPrincipalAxes (rawMomentData.origin, rawMomentData.sums);`
|
|
193564
193618
|
* @param root any CurveCollection or CurvePrimitive.
|
|
@@ -193571,7 +193625,7 @@ class RegionOps {
|
|
|
193571
193625
|
return result;
|
|
193572
193626
|
}
|
|
193573
193627
|
/**
|
|
193574
|
-
*
|
|
193628
|
+
* Create loops in the graph.
|
|
193575
193629
|
* @internal
|
|
193576
193630
|
*/
|
|
193577
193631
|
static addLoopsToGraph(graph, data, announceIsolatedLoop) {
|
|
@@ -193615,7 +193669,8 @@ class RegionOps {
|
|
|
193615
193669
|
}
|
|
193616
193670
|
}
|
|
193617
193671
|
}
|
|
193618
|
-
/**
|
|
193672
|
+
/**
|
|
193673
|
+
* Add multiple loops to a graph.
|
|
193619
193674
|
* * Apply edgeTag and mask to each edge.
|
|
193620
193675
|
* @internal
|
|
193621
193676
|
*/
|
|
@@ -193634,7 +193689,6 @@ class RegionOps {
|
|
|
193634
193689
|
/**
|
|
193635
193690
|
* Given a graph just produced by booleans, convert to a polyface
|
|
193636
193691
|
* * "just produced" implies exterior face markup.
|
|
193637
|
-
*
|
|
193638
193692
|
* @param graph
|
|
193639
193693
|
* @param triangulate
|
|
193640
193694
|
*/
|
|
@@ -193695,7 +193749,8 @@ class RegionOps {
|
|
|
193695
193749
|
* @param loopsB second set of loops
|
|
193696
193750
|
* @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA
|
|
193697
193751
|
* @param mergeTolerance absolute distance tolerance for merging loops
|
|
193698
|
-
* @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges added
|
|
193752
|
+
* @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges added
|
|
193753
|
+
* to connect interior loops to exterior loops.
|
|
193699
193754
|
*/
|
|
193700
193755
|
static regionBooleanXY(loopsA, loopsB, operation, mergeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
193701
193756
|
const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_11__.UnionRegion.create();
|
|
@@ -193762,10 +193817,13 @@ class RegionOps {
|
|
|
193762
193817
|
}
|
|
193763
193818
|
return RegionOps.sortOuterAndHoleLoopsXY(allLoops);
|
|
193764
193819
|
}
|
|
193765
|
-
/**
|
|
193820
|
+
/**
|
|
193821
|
+
* Construct a wire (not area!!) that is offset from given polyline or polygon.
|
|
193766
193822
|
* * This is a simple wire offset, not an area.
|
|
193767
|
-
* * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not
|
|
193768
|
-
*
|
|
193823
|
+
* * The construction algorithm attempts to eliminate some self-intersections within the offsets, but does not
|
|
193824
|
+
* guarantee a simple area offset.
|
|
193825
|
+
* * The construction algorithm is subject to being changed, resulting in different (hopefully better)
|
|
193826
|
+
* self-intersection behavior on the future.
|
|
193769
193827
|
* @param points a single loop or path
|
|
193770
193828
|
* @param wrap true to include wraparound
|
|
193771
193829
|
* @param offsetDistance distance of offset from wire. Positive is left.
|
|
@@ -193775,19 +193833,22 @@ class RegionOps {
|
|
|
193775
193833
|
return context.constructPolygonWireXYOffset(points, wrap, offsetDistance);
|
|
193776
193834
|
}
|
|
193777
193835
|
/**
|
|
193778
|
-
|
|
193779
|
-
|
|
193780
|
-
|
|
193781
|
-
|
|
193782
|
-
|
|
193783
|
-
|
|
193784
|
-
|
|
193785
|
-
|
|
193786
|
-
*
|
|
193787
|
-
|
|
193788
|
-
|
|
193789
|
-
|
|
193790
|
-
|
|
193836
|
+
* Construct curves that are offset from a Path or Loop as viewed in xy-plane (ignoring z).
|
|
193837
|
+
* * The construction will remove "some" local effects of features smaller than the offset distance, but will
|
|
193838
|
+
* not detect self intersection among widely separated edges.
|
|
193839
|
+
* * If offsetDistance is given as a number, default OffsetOptions are applied.
|
|
193840
|
+
* * When the offset needs to do an "outside" turn, the first applicable construction is applied:
|
|
193841
|
+
* * If the turn is larger than `options.minArcDegrees`, a circular arc is constructed.
|
|
193842
|
+
* * If the turn is less than or equal to `options.maxChamferTurnDegrees`, extend curves along tangent to
|
|
193843
|
+
* single intersection point.
|
|
193844
|
+
* * If the turn is larger than `options.maxChamferDegrees`, the turn is constructed as a sequence of straight
|
|
193845
|
+
* lines that are:
|
|
193846
|
+
* * outside the arc
|
|
193847
|
+
* * have uniform turn angle less than `options.maxChamferDegrees`
|
|
193848
|
+
* * each line segment (except first and last) touches the arc at its midpoint.
|
|
193849
|
+
* @param curves base curves.
|
|
193850
|
+
* @param offsetDistanceOrOptions offset distance (positive to left of curve, negative to right) or options object.
|
|
193851
|
+
*/
|
|
193791
193852
|
static constructCurveXYOffset(curves, offsetDistanceOrOptions) {
|
|
193792
193853
|
return _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__.CurveChainWireOffsetContext.constructCurveXYOffset(curves, offsetDistanceOrOptions);
|
|
193793
193854
|
}
|
|
@@ -193801,7 +193862,8 @@ class RegionOps {
|
|
|
193801
193862
|
static testPointInOnOutRegionXY(curves, x, y) {
|
|
193802
193863
|
return _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__.PointInOnOutContext.testPointInOnOutRegionXY(curves, x, y);
|
|
193803
193864
|
}
|
|
193804
|
-
/**
|
|
193865
|
+
/**
|
|
193866
|
+
* Create curve collection of subtype determined by gaps between the input curves.
|
|
193805
193867
|
* * If (a) wrap is requested and (b) all curves connect head-to-tail (including wraparound), assemble as a `loop`.
|
|
193806
193868
|
* * If all curves connect head-to-tail except for closure, return a `Path`.
|
|
193807
193869
|
* * If there are internal gaps, return a `BagOfCurves`
|
|
@@ -193838,7 +193900,9 @@ class RegionOps {
|
|
|
193838
193900
|
* Announce Checkpoint function for use during booleans
|
|
193839
193901
|
* @internal
|
|
193840
193902
|
*/
|
|
193841
|
-
static setCheckPointFunction(f) {
|
|
193903
|
+
static setCheckPointFunction(f) {
|
|
193904
|
+
this._graphCheckPointFunction = f;
|
|
193905
|
+
}
|
|
193842
193906
|
/**
|
|
193843
193907
|
* Find all intersections among curves in `curvesToCut` and `cutterCurves` and return fragments of `curvesToCut`.
|
|
193844
193908
|
* * For a `Loop`, `ParityRegion`, or `UnionRegion` in `curvesToCut`:
|
|
@@ -193853,7 +193917,8 @@ class RegionOps {
|
|
|
193853
193917
|
}
|
|
193854
193918
|
/**
|
|
193855
193919
|
* Create paths assembled from many curves.
|
|
193856
|
-
* * Assemble paths from consecutive curves NOT separated by either gaps or the split markup set by
|
|
193920
|
+
* * Assemble paths from consecutive curves NOT separated by either gaps or the split markup set by
|
|
193921
|
+
* [[cloneCurvesWithXYSplits]].
|
|
193857
193922
|
* * Return simplest form -- single primitive, single path, or bag of curves.
|
|
193858
193923
|
*/
|
|
193859
193924
|
static splitToPathsBetweenBreaks(source, makeClones) {
|
|
@@ -193890,7 +193955,8 @@ class RegionOps {
|
|
|
193890
193955
|
return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectChains(fragments, gapTolerance);
|
|
193891
193956
|
}
|
|
193892
193957
|
/**
|
|
193893
|
-
* Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments
|
|
193958
|
+
* Find all intersections among curves in `curvesToCut` against the boundaries of `region` and return fragments
|
|
193959
|
+
* of `curvesToCut`.
|
|
193894
193960
|
* * Break `curvesToCut` into parts inside, outside, and coincident.
|
|
193895
193961
|
* @returns output object with all fragments split among `insideParts`, `outsideParts`, and `coincidentParts`
|
|
193896
193962
|
*/
|
|
@@ -193916,7 +193982,8 @@ class RegionOps {
|
|
|
193916
193982
|
}
|
|
193917
193983
|
return result;
|
|
193918
193984
|
}
|
|
193919
|
-
/**
|
|
193985
|
+
/**
|
|
193986
|
+
* If `data` is one of several forms of a rectangle, return its edge Transform.
|
|
193920
193987
|
* * Points are considered a rectangle if, within the first 4 points:
|
|
193921
193988
|
* * vectors from 0 to 1 and 0 to 3 are perpendicular and have a non-zero cross product
|
|
193922
193989
|
* * vectors from 0 to 3 and 1 to 2 are the same
|
|
@@ -193927,7 +193994,8 @@ class RegionOps {
|
|
|
193927
193994
|
* * Array of Point3d[]
|
|
193928
193995
|
* * IndexedXYZCollection
|
|
193929
193996
|
* @param requireClosurePoint whether to require a 5th point equal to the 1st point.
|
|
193930
|
-
* @returns Transform with origin at one corner, x and y columns extending along two adjacent sides, and unit
|
|
193997
|
+
* @returns Transform with origin at one corner, x and y columns extending along two adjacent sides, and unit
|
|
193998
|
+
* normal in z column. If not a rectangle, return undefined.
|
|
193931
193999
|
*/
|
|
193932
194000
|
static rectangleEdgeTransform(data, requireClosurePoint = true) {
|
|
193933
194001
|
if (data instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
|
|
@@ -193987,9 +194055,10 @@ class RegionOps {
|
|
|
193987
194055
|
* * Contiguous `LineSegment3d` and `LineString3d` objects.
|
|
193988
194056
|
* * collect all points
|
|
193989
194057
|
* * eliminate duplicated points
|
|
193990
|
-
* * eliminate points colinear with surrounding points
|
|
193991
|
-
* *
|
|
194058
|
+
* * eliminate points colinear with surrounding points
|
|
194059
|
+
* * contiguous concentric circular or elliptic arcs
|
|
193992
194060
|
* * combine angular ranges
|
|
194061
|
+
* * This function can be used to compress adjacent LineSegment3ds into a LineString3d
|
|
193993
194062
|
* @param curves Path or loop (or larger collection containing paths and loops) to be simplified
|
|
193994
194063
|
* @param options options for tolerance and selective simplification.
|
|
193995
194064
|
*/
|
|
@@ -194003,8 +194072,10 @@ class RegionOps {
|
|
|
194003
194072
|
* @returns a region that captures the input pointers. This region is a:
|
|
194004
194073
|
* * `Loop` if there is exactly one input loop. It is oriented counterclockwise.
|
|
194005
194074
|
* * `ParityRegion` if input consists of exactly one outer loop with at least one hole loop.
|
|
194006
|
-
* Its first child is an outer loop oriented counterclockwise; all subsequent children are holes oriented
|
|
194007
|
-
*
|
|
194075
|
+
* Its first child is an outer loop oriented counterclockwise; all subsequent children are holes oriented
|
|
194076
|
+
* clockwise.
|
|
194077
|
+
* * `UnionRegion` if any other input configuration. Its children are individually ordered/oriented as in
|
|
194078
|
+
* the above cases.
|
|
194008
194079
|
* @see [[PolygonOps.sortOuterAndHoleLoopsXY]]
|
|
194009
194080
|
*/
|
|
194010
194081
|
static sortOuterAndHoleLoopsXY(loops) {
|
|
@@ -194021,17 +194092,22 @@ class RegionOps {
|
|
|
194021
194092
|
}
|
|
194022
194093
|
/**
|
|
194023
194094
|
* Find all areas bounded by the unstructured, possibly intersecting curves.
|
|
194024
|
-
* * A common use case of this method is to assemble the bounding "exterior" loop (or loops) containing the
|
|
194025
|
-
*
|
|
194026
|
-
*
|
|
194027
|
-
*
|
|
194028
|
-
*
|
|
194095
|
+
* * A common use case of this method is to assemble the bounding "exterior" loop (or loops) containing the
|
|
194096
|
+
* input curves.
|
|
194097
|
+
* * This method does not add bridge edges to connect outer loops to inner loops. Each disconnected loop,
|
|
194098
|
+
* regardless of its containment, is returned as its own SignedLoops object. Pre-process with [[regionBooleanXY]]
|
|
194099
|
+
* to add bridge edges so that [[constructAllXYRegionLoops]] will return outer and inner loops in the same
|
|
194100
|
+
* SignedLoops object.
|
|
194101
|
+
* @param curvesAndRegions Any collection of curves. Each Loop/ParityRegion/UnionRegion contributes its curve
|
|
194102
|
+
* primitives.
|
|
194029
194103
|
* @param tolerance optional distance tolerance for coincidence
|
|
194030
194104
|
* @returns array of [[SignedLoops]], each entry of which describes the faces in a single connected component:
|
|
194031
|
-
* * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have
|
|
194105
|
+
* * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have
|
|
194106
|
+
* positive area and counterclockwise orientation.
|
|
194032
194107
|
* * `negativeAreaLoops` contains (probably just one) "exterior" loop which is ordered clockwise.
|
|
194033
194108
|
* * `slivers` contains sliver loops that have zero area, such as appear between coincident curves.
|
|
194034
|
-
* * `edges` contains a [[LoopCurveLoopCurve]] object for each component edge, collecting both loops adjacent
|
|
194109
|
+
* * `edges` contains a [[LoopCurveLoopCurve]] object for each component edge, collecting both loops adjacent
|
|
194110
|
+
* to the edge and a constituent curve in each.
|
|
194035
194111
|
*/
|
|
194036
194112
|
static constructAllXYRegionLoops(curvesAndRegions, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
194037
194113
|
const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
|
|
@@ -194047,8 +194123,10 @@ class RegionOps {
|
|
|
194047
194123
|
* * Optionally recurses into hidden primitives if `smallestPossiblePrimitives` is true.
|
|
194048
194124
|
* @param candidates input curves
|
|
194049
194125
|
* @param collectorArray optional pre-defined output array. If defined, it is NOT cleared: primitives are appended.
|
|
194050
|
-
* @param smallestPossiblePrimitives if true, recurse into the children of a [[CurveChainWithDistanceIndex]]. If
|
|
194051
|
-
*
|
|
194126
|
+
* @param smallestPossiblePrimitives if true, recurse into the children of a [[CurveChainWithDistanceIndex]]. If
|
|
194127
|
+
* false, push the [[CurveChainWithDistanceIndex]] instead.
|
|
194128
|
+
* @param explodeLinestrings if true, push a [[LineSegment3d]] for each segment of a [[LineString3d]]. If false,
|
|
194129
|
+
* push the [[LineString3d]] instead.
|
|
194052
194130
|
*/
|
|
194053
194131
|
static collectCurvePrimitives(candidates, collectorArray, smallestPossiblePrimitives = false, explodeLinestrings = false) {
|
|
194054
194132
|
const results = collectorArray === undefined ? [] : collectorArray;
|
|
@@ -194066,7 +194144,8 @@ class RegionOps {
|
|
|
194066
194144
|
return results;
|
|
194067
194145
|
}
|
|
194068
194146
|
/**
|
|
194069
|
-
* Copy primitive pointers from candidates to result array, replacing each [[LineString3d]] by newly constructed
|
|
194147
|
+
* Copy primitive pointers from candidates to result array, replacing each [[LineString3d]] by newly constructed
|
|
194148
|
+
* instances of [[LineSegment3d]].
|
|
194070
194149
|
* @param candidates input curves
|
|
194071
194150
|
* @return copied (captured) inputs except for the linestrings, which are exploded
|
|
194072
194151
|
*/
|
|
@@ -195114,10 +195193,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
195114
195193
|
* @public
|
|
195115
195194
|
*/
|
|
195116
195195
|
class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCollection {
|
|
195117
|
-
/**
|
|
195118
|
-
isSameGeometryClass(other) {
|
|
195196
|
+
/** Test if `other` is a `UnionRegion` */
|
|
195197
|
+
isSameGeometryClass(other) {
|
|
195198
|
+
return other instanceof UnionRegion;
|
|
195199
|
+
}
|
|
195119
195200
|
/** Return the array of regions */
|
|
195120
|
-
get children() {
|
|
195201
|
+
get children() {
|
|
195202
|
+
return this._children;
|
|
195203
|
+
}
|
|
195121
195204
|
/** Constructor -- initialize with no children */
|
|
195122
195205
|
constructor() {
|
|
195123
195206
|
super();
|
|
@@ -195133,9 +195216,11 @@ class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCol
|
|
|
195133
195216
|
}
|
|
195134
195217
|
return result;
|
|
195135
195218
|
}
|
|
195136
|
-
/** Return the boundary type (5) of a corresponding
|
|
195137
|
-
dgnBoundaryType() {
|
|
195138
|
-
|
|
195219
|
+
/** Return the boundary type (5) of a corresponding MicroStation CurveVector */
|
|
195220
|
+
dgnBoundaryType() {
|
|
195221
|
+
return 5;
|
|
195222
|
+
}
|
|
195223
|
+
/** Dispatch to more strongly typed `processor.announceUnionRegion(this, indexInParent)` */
|
|
195139
195224
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
195140
195225
|
return processor.announceUnionRegion(this, indexInParent);
|
|
195141
195226
|
}
|
|
@@ -195151,8 +195236,11 @@ class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCol
|
|
|
195151
195236
|
return clone;
|
|
195152
195237
|
}
|
|
195153
195238
|
/** Return new empty `UnionRegion` */
|
|
195154
|
-
cloneEmptyPeer() {
|
|
195155
|
-
|
|
195239
|
+
cloneEmptyPeer() {
|
|
195240
|
+
return new UnionRegion();
|
|
195241
|
+
}
|
|
195242
|
+
/**
|
|
195243
|
+
* Try to add a child.
|
|
195156
195244
|
* * Returns false if the `AnyCurve` child is not a region type.
|
|
195157
195245
|
*/
|
|
195158
195246
|
tryAddChild(child) {
|
|
@@ -195894,11 +195982,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
195894
195982
|
|
|
195895
195983
|
|
|
195896
195984
|
// import { SumLengthsContext, GapSearchContext, CountLinearPartsSearchContext, CloneCurvesContext, TransformInPlaceContext } from "./CurveSearches";
|
|
195897
|
-
/**
|
|
195985
|
+
/**
|
|
195986
|
+
* Algorithmic class: Accumulate maximum gap between adjacent primitives of CurveChain.
|
|
195898
195987
|
* @internal
|
|
195899
195988
|
*/
|
|
195900
195989
|
class GapSearchContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.RecursiveCurveProcessorWithStack {
|
|
195901
|
-
constructor() {
|
|
195990
|
+
constructor() {
|
|
195991
|
+
super();
|
|
195992
|
+
this.maxGap = 0.0;
|
|
195993
|
+
}
|
|
195902
195994
|
static maxGap(target) {
|
|
195903
195995
|
const context = new GapSearchContext();
|
|
195904
195996
|
target.announceToCurveProcessor(context);
|
|
@@ -196549,10 +196641,12 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
196549
196641
|
}
|
|
196550
196642
|
return undefined;
|
|
196551
196643
|
}
|
|
196552
|
-
/**
|
|
196553
|
-
*
|
|
196644
|
+
/**
|
|
196645
|
+
* Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and
|
|
196646
|
+
* return points at min and max altitude, packed into a `LineSegment3d`.
|
|
196554
196647
|
* @param geometry geometry to project
|
|
196555
|
-
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
196648
|
+
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
196649
|
+
* zero origin.
|
|
196556
196650
|
* @param lowHigh optional receiver for output
|
|
196557
196651
|
*/
|
|
196558
196652
|
static findExtremePointsInDirection(geometry, direction, lowHigh) {
|
|
@@ -196561,10 +196655,12 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
196561
196655
|
return _LineSegment3d__WEBPACK_IMPORTED_MODULE_10__.LineSegment3d.create(context.lowPoint, context.highPoint, lowHigh);
|
|
196562
196656
|
return undefined;
|
|
196563
196657
|
}
|
|
196564
|
-
/**
|
|
196565
|
-
*
|
|
196658
|
+
/**
|
|
196659
|
+
* Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction, and return
|
|
196660
|
+
* the min and max altitudes, packed into a Range1d.
|
|
196566
196661
|
* @param geometry geometry to project
|
|
196567
|
-
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
196662
|
+
* @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with
|
|
196663
|
+
* zero origin.
|
|
196568
196664
|
* @param lowHigh optional receiver for output
|
|
196569
196665
|
*/
|
|
196570
196666
|
static findExtremeAltitudesInDirection(geometry, direction, lowHigh) {
|
|
@@ -196573,9 +196669,11 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
|
|
|
196573
196669
|
return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__.Range1d.createFrom(context.range, lowHigh);
|
|
196574
196670
|
return undefined;
|
|
196575
196671
|
}
|
|
196576
|
-
/**
|
|
196672
|
+
/**
|
|
196673
|
+
* Project geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
|
|
196577
196674
|
* @param geometry geometry to project
|
|
196578
|
-
* @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with
|
|
196675
|
+
* @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with
|
|
196676
|
+
* zero origin.
|
|
196579
196677
|
* @param lowHigh optional receiver for output
|
|
196580
196678
|
*/
|
|
196581
196679
|
static findExtremeFractionsAlongDirection(geometry, direction, lowHigh) {
|
|
@@ -197336,7 +197434,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
197336
197434
|
* @internal
|
|
197337
197435
|
*/
|
|
197338
197436
|
class SumLengthsContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.RecursiveCurveProcessor {
|
|
197339
|
-
constructor() {
|
|
197437
|
+
constructor() {
|
|
197438
|
+
super();
|
|
197439
|
+
this._sum = 0.0;
|
|
197440
|
+
}
|
|
197340
197441
|
static sumLengths(target) {
|
|
197341
197442
|
const context = new SumLengthsContext();
|
|
197342
197443
|
target.announceToCurveProcessor(context);
|
|
@@ -216133,13 +216234,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
216133
216234
|
*/
|
|
216134
216235
|
class RangeBase {
|
|
216135
216236
|
/** Return 0 if high<= low, otherwise `1/(high-low)` for use in fractionalizing */
|
|
216136
|
-
static npcScaleFactor(low, high) {
|
|
216237
|
+
static npcScaleFactor(low, high) {
|
|
216238
|
+
return (high <= low) ? 0.0 : 1.0 / (high - low);
|
|
216239
|
+
}
|
|
216137
216240
|
/** Return true if x is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */
|
|
216138
|
-
static isExtremeValue(x) {
|
|
216241
|
+
static isExtremeValue(x) {
|
|
216242
|
+
return Math.abs(x) >= RangeBase._EXTREME_POSITIVE;
|
|
216243
|
+
}
|
|
216139
216244
|
/** Return true if any x or y or z is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */
|
|
216140
|
-
static isExtremePoint3d(xyz) {
|
|
216245
|
+
static isExtremePoint3d(xyz) {
|
|
216246
|
+
return RangeBase.isExtremeValue(xyz.x) || RangeBase.isExtremeValue(xyz.y) || RangeBase.isExtremeValue(xyz.z);
|
|
216247
|
+
}
|
|
216141
216248
|
/** Return true if either of x,y is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */
|
|
216142
|
-
static isExtremePoint2d(xy) {
|
|
216249
|
+
static isExtremePoint2d(xy) {
|
|
216250
|
+
return RangeBase.isExtremeValue(xy.x) || RangeBase.isExtremeValue(xy.y);
|
|
216251
|
+
}
|
|
216143
216252
|
/**
|
|
216144
216253
|
* Return the min absolute distance from any point of `[lowA,highA]' to any point of `[lowB,highB]'.
|
|
216145
216254
|
* * Both low,high pairs have order expectations: The condition `high < low` means null interval.
|
|
@@ -216162,7 +216271,8 @@ class RangeBase {
|
|
|
216162
216271
|
return 0.0;
|
|
216163
216272
|
return lowB - highA;
|
|
216164
216273
|
}
|
|
216165
|
-
/**
|
|
216274
|
+
/**
|
|
216275
|
+
* Given a coordinate and pair of range limits, return the smallest distance to the range.
|
|
216166
216276
|
* * This is zero for any point inside the range
|
|
216167
216277
|
* * This is _EXTREME_POSITIVE if the range limits are inverted
|
|
216168
216278
|
* * Otherwise (i.e. x is outside a finite range) the distance to the near endpoint.
|
|
@@ -216177,7 +216287,7 @@ class RangeBase {
|
|
|
216177
216287
|
return 0.0;
|
|
216178
216288
|
}
|
|
216179
216289
|
/**
|
|
216180
|
-
*
|
|
216290
|
+
* If a > 0, return (extrapolationFactor * a); otherwise return defaultValue
|
|
216181
216291
|
* @param q
|
|
216182
216292
|
* @param factor multiplier for positive q values.
|
|
216183
216293
|
*/
|
|
@@ -216208,11 +216318,19 @@ class Range3d extends RangeBase {
|
|
|
216208
216318
|
this.high.z = RangeBase._EXTREME_NEGATIVE;
|
|
216209
216319
|
}
|
|
216210
216320
|
/** Freeze this instance (and its members) so it is read-only */
|
|
216211
|
-
freeze() {
|
|
216321
|
+
freeze() {
|
|
216322
|
+
this.low.freeze();
|
|
216323
|
+
this.high.freeze();
|
|
216324
|
+
return Object.freeze(this);
|
|
216325
|
+
}
|
|
216212
216326
|
/** Flatten the low and high coordinates of any json object with low.x .. high.z into an array of 6 doubles */
|
|
216213
|
-
static toFloat64Array(val) {
|
|
216327
|
+
static toFloat64Array(val) {
|
|
216328
|
+
return Float64Array.of(val.low.x, val.low.y, val.low.z, val.high.x, val.high.y, val.high.z);
|
|
216329
|
+
}
|
|
216214
216330
|
/** Flatten the low and high coordinates of this into an array of 6 doubles */
|
|
216215
|
-
toFloat64Array() {
|
|
216331
|
+
toFloat64Array() {
|
|
216332
|
+
return Range3d.toFloat64Array(this);
|
|
216333
|
+
}
|
|
216216
216334
|
/**
|
|
216217
216335
|
* Construct a Range3d from an array of double-precision values
|
|
216218
216336
|
* @param f64 the array, which should contain exactly 6 values in this order: lowX, lowY, lowZ, highX, highY, highZ
|
|
@@ -216224,11 +216342,14 @@ class Range3d extends RangeBase {
|
|
|
216224
216342
|
return new this(f64[0], f64[1], f64[2], f64[3], f64[4], f64[5]);
|
|
216225
216343
|
}
|
|
216226
216344
|
/**
|
|
216227
|
-
* Construct a Range3d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
216345
|
+
* Construct a Range3d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
216346
|
+
* the 'blob' type, where you know that that result is a Range3d.
|
|
216228
216347
|
* @param buffer untyped array
|
|
216229
216348
|
* @return a new Range3d object
|
|
216230
216349
|
*/
|
|
216231
|
-
static fromArrayBuffer(buffer) {
|
|
216350
|
+
static fromArrayBuffer(buffer) {
|
|
216351
|
+
return this.fromFloat64Array(new Float64Array(buffer));
|
|
216352
|
+
}
|
|
216232
216353
|
// explicit ctor - no enforcement of value relationships
|
|
216233
216354
|
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) {
|
|
216234
216355
|
super();
|
|
@@ -216240,8 +216361,11 @@ class Range3d extends RangeBase {
|
|
|
216240
216361
|
return (this.low.isAlmostEqual(other.low, tol) && this.high.isAlmostEqual(other.high, tol))
|
|
216241
216362
|
|| (this.isNull && other.isNull);
|
|
216242
216363
|
}
|
|
216243
|
-
/**
|
|
216244
|
-
setFrom(other) {
|
|
216364
|
+
/** Copy low and high values from other. */
|
|
216365
|
+
setFrom(other) {
|
|
216366
|
+
this.low.setFrom(other.low);
|
|
216367
|
+
this.high.setFrom(other.high);
|
|
216368
|
+
}
|
|
216245
216369
|
/** Return a new Range3d copied from a range or derived type */
|
|
216246
216370
|
static createFrom(other, result) {
|
|
216247
216371
|
if (result) {
|
|
@@ -216250,7 +216374,8 @@ class Range3d extends RangeBase {
|
|
|
216250
216374
|
}
|
|
216251
216375
|
return this.createXYZXYZOrCorrectToNull(other.low.x, other.low.y, other.low.z, other.high.x, other.high.y, other.high.z, result);
|
|
216252
216376
|
}
|
|
216253
|
-
/**
|
|
216377
|
+
/**
|
|
216378
|
+
* Set this range (in place) from json such as
|
|
216254
216379
|
* * key-value pairs: `{low:[1,2,3], high:[4,5,6]}`
|
|
216255
216380
|
* * array of points: `[[1,2,3],[9,3,4],[-2,1,3] ...]`
|
|
216256
216381
|
* * Lowest level points can be `[1,2,3]` or `{x:1,y:2,z:3}`
|
|
@@ -216274,10 +216399,13 @@ class Range3d extends RangeBase {
|
|
|
216274
216399
|
this.extendPoint(high);
|
|
216275
216400
|
}
|
|
216276
216401
|
}
|
|
216277
|
-
/**
|
|
216402
|
+
/**
|
|
216403
|
+
* Return a JSON object `{low: ... , high: ...}`
|
|
216278
216404
|
* with points formatted by `Point3d.toJSON()`
|
|
216279
216405
|
*/
|
|
216280
|
-
toJSON() {
|
|
216406
|
+
toJSON() {
|
|
216407
|
+
return { low: this.low.toJSON(), high: this.high.toJSON() };
|
|
216408
|
+
}
|
|
216281
216409
|
/** Use `setFromJSON` to parse `json` into a new Range3d instance. */
|
|
216282
216410
|
static fromJSON(json) {
|
|
216283
216411
|
const result = new this();
|
|
@@ -216305,7 +216433,8 @@ class Range3d extends RangeBase {
|
|
|
216305
216433
|
result.setDirect(this.low.x, this.low.y, this.low.z, this.high.x, this.high.y, this.high.z, false);
|
|
216306
216434
|
return result;
|
|
216307
216435
|
}
|
|
216308
|
-
/**
|
|
216436
|
+
/**
|
|
216437
|
+
* Return a copy, translated by adding `shift` components in all directions.
|
|
216309
216438
|
* * The translate of a null range is also a null range.
|
|
216310
216439
|
*/
|
|
216311
216440
|
cloneTranslated(shift, result) {
|
|
@@ -216340,7 +216469,7 @@ class Range3d extends RangeBase {
|
|
|
216340
216469
|
_PointStreaming__WEBPACK_IMPORTED_MODULE_1__.VariantPointDataStream.streamXYZ(data, collector);
|
|
216341
216470
|
return collector.claimResult();
|
|
216342
216471
|
}
|
|
216343
|
-
/**
|
|
216472
|
+
/** Create a Range3d enclosing the transformed points. */
|
|
216344
216473
|
static createTransformed(transform, ...point) {
|
|
216345
216474
|
const result = this.createNull();
|
|
216346
216475
|
let p;
|
|
@@ -216348,13 +216477,13 @@ class Range3d extends RangeBase {
|
|
|
216348
216477
|
result.extendTransformedXYZ(transform, p.x, p.y, p.z);
|
|
216349
216478
|
return result;
|
|
216350
216479
|
}
|
|
216351
|
-
/**
|
|
216480
|
+
/** Create a Range3d enclosing the transformed points. */
|
|
216352
216481
|
static createTransformedArray(transform, points) {
|
|
216353
216482
|
const result = this.createNull();
|
|
216354
216483
|
result.extendArray(points, transform);
|
|
216355
216484
|
return result;
|
|
216356
216485
|
}
|
|
216357
|
-
/**
|
|
216486
|
+
/** Create a Range3d enclosing the points after inverse transform. */
|
|
216358
216487
|
static createInverseTransformedArray(transform, points) {
|
|
216359
216488
|
const result = this.createNull();
|
|
216360
216489
|
result.extendInverseTransformedArray(points, transform);
|
|
@@ -216403,7 +216532,7 @@ class Range3d extends RangeBase {
|
|
|
216403
216532
|
result.extendPoint(point);
|
|
216404
216533
|
return result;
|
|
216405
216534
|
}
|
|
216406
|
-
/**
|
|
216535
|
+
/** Extend a range around an array of points (optionally transformed) */
|
|
216407
216536
|
extendArray(points, transform) {
|
|
216408
216537
|
if (Array.isArray(points))
|
|
216409
216538
|
if (transform)
|
|
@@ -216420,7 +216549,7 @@ class Range3d extends RangeBase {
|
|
|
216420
216549
|
for (let i = 0; i < points.length; i++)
|
|
216421
216550
|
this.extendXYZ(points.getXAtUncheckedPointIndex(i), points.getYAtUncheckedPointIndex(i), points.getZAtUncheckedPointIndex(i));
|
|
216422
216551
|
}
|
|
216423
|
-
/**
|
|
216552
|
+
/** Extend a range around an array of points (optionally transformed) */
|
|
216424
216553
|
extendInverseTransformedArray(points, transform) {
|
|
216425
216554
|
if (Array.isArray(points))
|
|
216426
216555
|
for (const point of points)
|
|
@@ -216429,22 +216558,19 @@ class Range3d extends RangeBase {
|
|
|
216429
216558
|
for (let i = 0; i < points.length; i++)
|
|
216430
216559
|
this.extendInverseTransformedXYZ(transform, points.getXAtUncheckedPointIndex(i), points.getYAtUncheckedPointIndex(i), points.getZAtUncheckedPointIndex(i));
|
|
216431
216560
|
}
|
|
216432
|
-
/**
|
|
216433
|
-
*/
|
|
216561
|
+
/** Multiply the point x,y,z by transform and use the coordinate to extend this range. */
|
|
216434
216562
|
extendTransformedXYZ(transform, x, y, z) {
|
|
216435
216563
|
const origin = transform.origin;
|
|
216436
216564
|
const coffs = transform.matrix.coffs;
|
|
216437
216565
|
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);
|
|
216438
216566
|
}
|
|
216439
|
-
/**
|
|
216440
|
-
*/
|
|
216567
|
+
/** Multiply the point x,y,z,w by transform and use the coordinate to extend this range. */
|
|
216441
216568
|
extendTransformedXYZW(transform, x, y, z, w) {
|
|
216442
216569
|
const origin = transform.origin;
|
|
216443
216570
|
const coffs = transform.matrix.coffs;
|
|
216444
216571
|
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);
|
|
216445
216572
|
}
|
|
216446
|
-
/**
|
|
216447
|
-
*/
|
|
216573
|
+
/** Multiply the point x,y,z by transform and use the coordinate to extend this range. */
|
|
216448
216574
|
extendInverseTransformedXYZ(transform, x, y, z) {
|
|
216449
216575
|
const origin = transform.origin;
|
|
216450
216576
|
if (!transform.matrix.computeCachedInverse(true))
|
|
@@ -216481,36 +216607,72 @@ class Range3d extends RangeBase {
|
|
|
216481
216607
|
&& this.high.z === this.low.z;
|
|
216482
216608
|
}
|
|
216483
216609
|
/** Return the midpoint of the diagonal. No test for null range. */
|
|
216484
|
-
get center() {
|
|
216485
|
-
|
|
216486
|
-
|
|
216487
|
-
/**
|
|
216488
|
-
get
|
|
216489
|
-
|
|
216490
|
-
|
|
216491
|
-
/**
|
|
216492
|
-
get
|
|
216493
|
-
|
|
216494
|
-
|
|
216495
|
-
/**
|
|
216496
|
-
get
|
|
216610
|
+
get center() {
|
|
216611
|
+
return this.low.interpolate(.5, this.high);
|
|
216612
|
+
}
|
|
216613
|
+
/** Return the low x coordinate */
|
|
216614
|
+
get xLow() {
|
|
216615
|
+
return this.low.x;
|
|
216616
|
+
}
|
|
216617
|
+
/** Return the low y coordinate */
|
|
216618
|
+
get yLow() {
|
|
216619
|
+
return this.low.y;
|
|
216620
|
+
}
|
|
216621
|
+
/** Return the low z coordinate */
|
|
216622
|
+
get zLow() {
|
|
216623
|
+
return this.low.z;
|
|
216624
|
+
}
|
|
216625
|
+
/** Return the high x coordinate */
|
|
216626
|
+
get xHigh() {
|
|
216627
|
+
return this.high.x;
|
|
216628
|
+
}
|
|
216629
|
+
/** Return the high y coordinate */
|
|
216630
|
+
get yHigh() {
|
|
216631
|
+
return this.high.y;
|
|
216632
|
+
}
|
|
216633
|
+
/** Return the high z coordinate */
|
|
216634
|
+
get zHigh() {
|
|
216635
|
+
return this.high.z;
|
|
216636
|
+
}
|
|
216497
216637
|
/** Return the length of the box in the x direction */
|
|
216498
|
-
xLength() {
|
|
216638
|
+
xLength() {
|
|
216639
|
+
const a = this.high.x - this.low.x;
|
|
216640
|
+
return a > 0.0 ? a : 0.0;
|
|
216641
|
+
}
|
|
216499
216642
|
/** Return the length of the box in the y direction */
|
|
216500
|
-
yLength() {
|
|
216643
|
+
yLength() {
|
|
216644
|
+
const a = this.high.y - this.low.y;
|
|
216645
|
+
return a > 0.0 ? a : 0.0;
|
|
216646
|
+
}
|
|
216501
216647
|
/** Return the length of the box in the z direction */
|
|
216502
|
-
zLength() {
|
|
216648
|
+
zLength() {
|
|
216649
|
+
const a = this.high.z - this.low.z;
|
|
216650
|
+
return a > 0.0 ? a : 0.0;
|
|
216651
|
+
}
|
|
216503
216652
|
/** Return the largest of the x,y, z lengths of the range. */
|
|
216504
|
-
maxLength() {
|
|
216505
|
-
|
|
216506
|
-
|
|
216507
|
-
/**
|
|
216508
|
-
|
|
216509
|
-
|
|
216653
|
+
maxLength() {
|
|
216654
|
+
return Math.max(this.xLength(), this.yLength(), this.zLength());
|
|
216655
|
+
}
|
|
216656
|
+
/**
|
|
216657
|
+
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
216658
|
+
* large negative coordinates.
|
|
216659
|
+
*/
|
|
216660
|
+
diagonal(result) {
|
|
216661
|
+
return this.low.vectorTo(this.high, result);
|
|
216662
|
+
}
|
|
216663
|
+
/**
|
|
216664
|
+
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
216665
|
+
* large negative coordinates.
|
|
216666
|
+
*/
|
|
216667
|
+
diagonalFractionToPoint(fraction, result) {
|
|
216668
|
+
return this.low.interpolate(fraction, this.high, result);
|
|
216669
|
+
}
|
|
216670
|
+
/** Return a point given by fractional positions on the XYZ axes. This is done with no check for isNull !!! */
|
|
216510
216671
|
fractionToPoint(fractionX, fractionY, fractionZ = 0, result) {
|
|
216511
216672
|
return this.low.interpolateXYZ(fractionX, fractionY, fractionZ, this.high, result);
|
|
216512
216673
|
}
|
|
216513
|
-
/**
|
|
216674
|
+
/**
|
|
216675
|
+
* Return a point given by fractional positions on the XYZ axes.
|
|
216514
216676
|
* Returns undefined if the range is null.
|
|
216515
216677
|
*/
|
|
216516
216678
|
localXYZToWorld(fractionX, fractionY, fractionZ, result) {
|
|
@@ -216518,13 +216680,15 @@ class Range3d extends RangeBase {
|
|
|
216518
216680
|
return undefined;
|
|
216519
216681
|
return this.low.interpolateXYZ(fractionX, fractionY, fractionZ, this.high, result);
|
|
216520
216682
|
}
|
|
216521
|
-
/**
|
|
216683
|
+
/**
|
|
216684
|
+
* Return a point given by fractional positions on the XYZ axes.
|
|
216522
216685
|
* * Returns undefined if the range is null.
|
|
216523
216686
|
*/
|
|
216524
216687
|
localToWorld(xyz, result) {
|
|
216525
216688
|
return this.localXYZToWorld(xyz.x, xyz.y, xyz.z, result);
|
|
216526
216689
|
}
|
|
216527
|
-
/**
|
|
216690
|
+
/**
|
|
216691
|
+
* Replace fractional coordinates by world coordinates.
|
|
216528
216692
|
* @returns false if null range.
|
|
216529
216693
|
*/
|
|
216530
216694
|
localToWorldArrayInPlace(points) {
|
|
@@ -216534,7 +216698,8 @@ class Range3d extends RangeBase {
|
|
|
216534
216698
|
this.low.interpolateXYZ(p.x, p.y, p.z, this.high, p);
|
|
216535
216699
|
return false;
|
|
216536
216700
|
}
|
|
216537
|
-
/**
|
|
216701
|
+
/**
|
|
216702
|
+
* Return fractional coordinates of point within the range.
|
|
216538
216703
|
* * returns undefined if the range is null.
|
|
216539
216704
|
* * returns undefined if any direction (x,y,z) has zero length
|
|
216540
216705
|
*/
|
|
@@ -216546,7 +216711,8 @@ class Range3d extends RangeBase {
|
|
|
216546
216711
|
return undefined;
|
|
216547
216712
|
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);
|
|
216548
216713
|
}
|
|
216549
|
-
/**
|
|
216714
|
+
/**
|
|
216715
|
+
* Return fractional coordinates of point within the range.
|
|
216550
216716
|
* * returns undefined if the range is null.
|
|
216551
216717
|
* * returns undefined if any direction (x,y,z) has zero length
|
|
216552
216718
|
*/
|
|
@@ -216560,7 +216726,8 @@ class Range3d extends RangeBase {
|
|
|
216560
216726
|
_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);
|
|
216561
216727
|
return true;
|
|
216562
216728
|
}
|
|
216563
|
-
/**
|
|
216729
|
+
/**
|
|
216730
|
+
* Return an array with the 8 corners on order wth "x varies fastest, then y, then z"
|
|
216564
216731
|
* * points preallocated in `result` are reused if result.length >= 8.
|
|
216565
216732
|
* * in reuse case, result.length is trimmed to 8
|
|
216566
216733
|
*/
|
|
@@ -216585,10 +216752,11 @@ class Range3d extends RangeBase {
|
|
|
216585
216752
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, this.high.z),
|
|
216586
216753
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.low.y, this.high.z),
|
|
216587
216754
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.high.y, this.high.z),
|
|
216588
|
-
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, this.high.z)
|
|
216755
|
+
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, this.high.z),
|
|
216589
216756
|
];
|
|
216590
216757
|
}
|
|
216591
|
-
/**
|
|
216758
|
+
/**
|
|
216759
|
+
* Return an array with indices of the corners of a face
|
|
216592
216760
|
* * face 0 has negative x normal
|
|
216593
216761
|
* * face 1 has positive x normal
|
|
216594
216762
|
* * face 2 has negative y normal
|
|
@@ -216639,12 +216807,18 @@ class Range3d extends RangeBase {
|
|
|
216639
216807
|
return 0.0;
|
|
216640
216808
|
return Math.max(this.low.maxAbs(), this.high.maxAbs());
|
|
216641
216809
|
}
|
|
216642
|
-
/**
|
|
216643
|
-
get isAlmostZeroX() {
|
|
216644
|
-
|
|
216645
|
-
|
|
216646
|
-
/**
|
|
216647
|
-
get
|
|
216810
|
+
/** Returns true if the x direction size is nearly zero */
|
|
216811
|
+
get isAlmostZeroX() {
|
|
216812
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.xLength());
|
|
216813
|
+
}
|
|
216814
|
+
/** Returns true if the y direction size is nearly zero */
|
|
216815
|
+
get isAlmostZeroY() {
|
|
216816
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.yLength());
|
|
216817
|
+
}
|
|
216818
|
+
/** Returns true if the z direction size is nearly zero */
|
|
216819
|
+
get isAlmostZeroZ() {
|
|
216820
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.zLength());
|
|
216821
|
+
}
|
|
216648
216822
|
/** Test if a point given as x,y,z is within the range. */
|
|
216649
216823
|
containsXYZ(x, y, z) {
|
|
216650
216824
|
return x >= this.low.x
|
|
@@ -216654,7 +216828,7 @@ class Range3d extends RangeBase {
|
|
|
216654
216828
|
&& y <= this.high.y
|
|
216655
216829
|
&& z <= this.high.z;
|
|
216656
216830
|
}
|
|
216657
|
-
/** Test if a point given as x,y is within the range
|
|
216831
|
+
/** Test if a point given as x,y is within the range (ignoring z of range). */
|
|
216658
216832
|
containsXY(x, y) {
|
|
216659
216833
|
return x >= this.low.x
|
|
216660
216834
|
&& y >= this.low.y
|
|
@@ -216662,7 +216836,9 @@ class Range3d extends RangeBase {
|
|
|
216662
216836
|
&& y <= this.high.y;
|
|
216663
216837
|
}
|
|
216664
216838
|
/** Test if a point is within the range. */
|
|
216665
|
-
containsPoint(point) {
|
|
216839
|
+
containsPoint(point) {
|
|
216840
|
+
return this.containsXYZ(point.x, point.y, point.z);
|
|
216841
|
+
}
|
|
216666
216842
|
/** Test if the x,y coordinates of a point are within the range. */
|
|
216667
216843
|
containsPointXY(point) {
|
|
216668
216844
|
return point.x >= this.low.x
|
|
@@ -216701,7 +216877,7 @@ class Range3d extends RangeBase {
|
|
|
216701
216877
|
return RangeBase._EXTREME_POSITIVE;
|
|
216702
216878
|
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);
|
|
216703
216879
|
}
|
|
216704
|
-
/**
|
|
216880
|
+
/** Returns 0 if the ranges have any overlap, otherwise the shortest absolute distance from one to the other. */
|
|
216705
216881
|
distanceToRange(other) {
|
|
216706
216882
|
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);
|
|
216707
216883
|
}
|
|
@@ -216786,7 +216962,8 @@ class Range3d extends RangeBase {
|
|
|
216786
216962
|
this.extendXYZ(other.high.x, other.high.y, other.high.z);
|
|
216787
216963
|
}
|
|
216788
216964
|
}
|
|
216789
|
-
/**
|
|
216965
|
+
/**
|
|
216966
|
+
* In each direction look at the difference between this range limit and that of interiorRange.
|
|
216790
216967
|
* * If this range is larger, expand it by extrapolationFactor.
|
|
216791
216968
|
*/
|
|
216792
216969
|
extendWhenLarger(other, extrapolationFactor) {
|
|
@@ -216815,7 +216992,7 @@ class Range3d extends RangeBase {
|
|
|
216815
216992
|
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);
|
|
216816
216993
|
}
|
|
216817
216994
|
/**
|
|
216818
|
-
*
|
|
216995
|
+
* Move low and high points by scaleFactor around the center point.
|
|
216819
216996
|
* @param scaleFactor scale factor applied to low, high distance from center.
|
|
216820
216997
|
*/
|
|
216821
216998
|
scaleAboutCenterInPlace(scaleFactor) {
|
|
@@ -216834,7 +217011,7 @@ class Range3d extends RangeBase {
|
|
|
216834
217011
|
}
|
|
216835
217012
|
}
|
|
216836
217013
|
/**
|
|
216837
|
-
*
|
|
217014
|
+
* Move all limits by a fixed amount.
|
|
216838
217015
|
* * positive delta expands the range size
|
|
216839
217016
|
* * negative delta reduces the range size
|
|
216840
217017
|
* * if any dimension reduces below zero size, the whole range becomes null
|
|
@@ -216848,7 +217025,8 @@ class Range3d extends RangeBase {
|
|
|
216848
217025
|
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);
|
|
216849
217026
|
}
|
|
216850
217027
|
/**
|
|
216851
|
-
* Creates an NPC to world transformation to go from 000...111 to the globally aligned cube with diagonally
|
|
217028
|
+
* Creates an NPC to world transformation to go from 000...111 to the globally aligned cube with diagonally
|
|
217029
|
+
* opposite corners that are the
|
|
216852
217030
|
* min and max of this range. The diagonal component for any degenerate direction is 1.
|
|
216853
217031
|
*/
|
|
216854
217032
|
getNpcToWorldRangeTransform(result) {
|
|
@@ -216862,7 +217040,9 @@ class Range3d extends RangeBase {
|
|
|
216862
217040
|
matrix.coffs[8] = 1;
|
|
216863
217041
|
return transform;
|
|
216864
217042
|
}
|
|
216865
|
-
/**
|
|
217043
|
+
/**
|
|
217044
|
+
* Ensure that the length of each dimension of this AxisAlignedBox3d is at least a minimum size. If not, expand
|
|
217045
|
+
* to minimum about the center.
|
|
216866
217046
|
* @param min The minimum length for each dimension.
|
|
216867
217047
|
*/
|
|
216868
217048
|
ensureMinLengths(min = .001) {
|
|
@@ -216891,7 +217071,7 @@ class Range3d extends RangeBase {
|
|
|
216891
217071
|
* @public
|
|
216892
217072
|
*/
|
|
216893
217073
|
class Range1d extends RangeBase {
|
|
216894
|
-
/**
|
|
217074
|
+
/** Reset the low and high to null range state. */
|
|
216895
217075
|
setNull() {
|
|
216896
217076
|
this.low = RangeBase._EXTREME_POSITIVE;
|
|
216897
217077
|
this.high = RangeBase._EXTREME_NEGATIVE;
|
|
@@ -216915,10 +217095,13 @@ class Range1d extends RangeBase {
|
|
|
216915
217095
|
return (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSameCoordinate(this.low, other.low) && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSameCoordinate(this.high, other.high))
|
|
216916
217096
|
|| (this.isNull && other.isNull);
|
|
216917
217097
|
}
|
|
216918
|
-
/**
|
|
216919
|
-
setFrom(other) {
|
|
216920
|
-
|
|
216921
|
-
|
|
217098
|
+
/** Copy contents from other Range1d. */
|
|
217099
|
+
setFrom(other) {
|
|
217100
|
+
this.low = other.low;
|
|
217101
|
+
this.high = other.high;
|
|
217102
|
+
}
|
|
217103
|
+
/**
|
|
217104
|
+
* Convert from a JSON object of one of these forms:
|
|
216922
217105
|
* * Any array of numbers: `[value,value, value]`
|
|
216923
217106
|
* * An object with low and high as properties: `{low:lowValue, high: highValue}`
|
|
216924
217107
|
*/
|
|
@@ -216943,16 +217126,20 @@ class Range1d extends RangeBase {
|
|
|
216943
217126
|
result.setFromJSON(json);
|
|
216944
217127
|
return result;
|
|
216945
217128
|
}
|
|
216946
|
-
/**
|
|
217129
|
+
/**
|
|
217130
|
+
* Convert to a JSON object of form
|
|
216947
217131
|
* ```
|
|
216948
217132
|
* [lowValue,highValue]
|
|
216949
217133
|
* ```
|
|
216950
217134
|
*/
|
|
216951
|
-
toJSON() {
|
|
216952
|
-
|
|
216953
|
-
|
|
216954
|
-
|
|
216955
|
-
|
|
217135
|
+
toJSON() {
|
|
217136
|
+
if (this.isNull)
|
|
217137
|
+
return new Array();
|
|
217138
|
+
else
|
|
217139
|
+
return [this.low, this.high];
|
|
217140
|
+
}
|
|
217141
|
+
/**
|
|
217142
|
+
* Return a new Range1d with contents of this.
|
|
216956
217143
|
* @param result optional result.
|
|
216957
217144
|
*/
|
|
216958
217145
|
clone(result) {
|
|
@@ -216960,7 +217147,8 @@ class Range1d extends RangeBase {
|
|
|
216960
217147
|
result.setDirect(this.low, this.high);
|
|
216961
217148
|
return result;
|
|
216962
217149
|
}
|
|
216963
|
-
/**
|
|
217150
|
+
/**
|
|
217151
|
+
* Return a new Range1d with contents of this.
|
|
216964
217152
|
* @param result optional result.
|
|
216965
217153
|
*/
|
|
216966
217154
|
static createFrom(other, result) {
|
|
@@ -216968,7 +217156,8 @@ class Range1d extends RangeBase {
|
|
|
216968
217156
|
result.setDirect(other.low, other.high);
|
|
216969
217157
|
return result;
|
|
216970
217158
|
}
|
|
216971
|
-
/**
|
|
217159
|
+
/**
|
|
217160
|
+
* Create a range with no content.
|
|
216972
217161
|
* @param result optional result.
|
|
216973
217162
|
*/
|
|
216974
217163
|
static createNull(result) {
|
|
@@ -216976,7 +217165,8 @@ class Range1d extends RangeBase {
|
|
|
216976
217165
|
result.setNull();
|
|
216977
217166
|
return result;
|
|
216978
217167
|
}
|
|
216979
|
-
/**
|
|
217168
|
+
/**
|
|
217169
|
+
* Create a range with `delta` added to low and high
|
|
216980
217170
|
* * If `this` is a null range, return a null range.
|
|
216981
217171
|
*/
|
|
216982
217172
|
cloneTranslated(delta, result) {
|
|
@@ -216991,7 +217181,9 @@ class Range1d extends RangeBase {
|
|
|
216991
217181
|
* Set this range to be a single value.
|
|
216992
217182
|
* @param x value to use as both low and high.
|
|
216993
217183
|
*/
|
|
216994
|
-
setX(x) {
|
|
217184
|
+
setX(x) {
|
|
217185
|
+
this.low = this.high = x;
|
|
217186
|
+
}
|
|
216995
217187
|
/** Create a single point box */
|
|
216996
217188
|
static createX(x, result) {
|
|
216997
217189
|
result = result ? result : new this();
|
|
@@ -217013,10 +217205,12 @@ class Range1d extends RangeBase {
|
|
|
217013
217205
|
this.high = x0;
|
|
217014
217206
|
}
|
|
217015
217207
|
}
|
|
217208
|
+
/** Check if low is 0 and high is 1 */
|
|
217016
217209
|
get isExact01() {
|
|
217017
217210
|
return this.low === 0.0 && this.high === 1.0;
|
|
217018
217211
|
}
|
|
217019
|
-
/**
|
|
217212
|
+
/**
|
|
217213
|
+
* Create a box from two values. Values are reversed if needed
|
|
217020
217214
|
* @param xA first value
|
|
217021
217215
|
* @param xB second value
|
|
217022
217216
|
*/
|
|
@@ -217025,7 +217219,8 @@ class Range1d extends RangeBase {
|
|
|
217025
217219
|
result.setDirect(Math.min(xA, xB), Math.max(xA, xB));
|
|
217026
217220
|
return result;
|
|
217027
217221
|
}
|
|
217028
|
-
/**
|
|
217222
|
+
/**
|
|
217223
|
+
* Create a box from two values, but null range if the values are reversed
|
|
217029
217224
|
* @param xA first value
|
|
217030
217225
|
* @param xB second value
|
|
217031
217226
|
*/
|
|
@@ -217036,7 +217231,8 @@ class Range1d extends RangeBase {
|
|
|
217036
217231
|
result.setDirect(Math.min(xA, xB), Math.max(xA, xB));
|
|
217037
217232
|
return result;
|
|
217038
217233
|
}
|
|
217039
|
-
/**
|
|
217234
|
+
/**
|
|
217235
|
+
* Create a range containing all the values in an array.
|
|
217040
217236
|
* @param values array of points to be contained in the range.
|
|
217041
217237
|
* @param result optional result.
|
|
217042
217238
|
*/
|
|
@@ -217047,13 +217243,14 @@ class Range1d extends RangeBase {
|
|
|
217047
217243
|
result.extendX(x);
|
|
217048
217244
|
return result;
|
|
217049
217245
|
}
|
|
217050
|
-
/**
|
|
217246
|
+
/** Extend to include an array of values */
|
|
217051
217247
|
extendArray(values) {
|
|
217052
217248
|
let x;
|
|
217053
217249
|
for (x of values)
|
|
217054
217250
|
this.extendX(x);
|
|
217055
217251
|
}
|
|
217056
|
-
/**
|
|
217252
|
+
/**
|
|
217253
|
+
* Extend to include `values` at indices `beginIndex <= i < endIndex]`
|
|
217057
217254
|
* @param values array of values
|
|
217058
217255
|
* @param beginIndex first index to include
|
|
217059
217256
|
* @param numValue number of values to access
|
|
@@ -217072,8 +217269,11 @@ class Range1d extends RangeBase {
|
|
|
217072
217269
|
return this.high === this.low;
|
|
217073
217270
|
}
|
|
217074
217271
|
/** Return the length of the range in the x direction */
|
|
217075
|
-
length() {
|
|
217076
|
-
|
|
217272
|
+
length() {
|
|
217273
|
+
const a = this.high - this.low;
|
|
217274
|
+
return a > 0.0 ? a : 0.0;
|
|
217275
|
+
}
|
|
217276
|
+
/** Return a point given by fractional positions within the range. This is done with no check for isNull !!! */
|
|
217077
217277
|
fractionToPoint(fraction) {
|
|
217078
217278
|
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(this.low, fraction, this.high);
|
|
217079
217279
|
}
|
|
@@ -217084,7 +217284,9 @@ class Range1d extends RangeBase {
|
|
|
217084
217284
|
return Math.max(Math.abs(this.low), Math.abs(this.high));
|
|
217085
217285
|
}
|
|
217086
217286
|
/** Test if the x direction size is nearly zero */
|
|
217087
|
-
get isAlmostZeroLength() {
|
|
217287
|
+
get isAlmostZeroLength() {
|
|
217288
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.length());
|
|
217289
|
+
}
|
|
217088
217290
|
/** Test if a number is within the range. */
|
|
217089
217291
|
containsX(x) {
|
|
217090
217292
|
return x >= this.low
|
|
@@ -217104,7 +217306,6 @@ class Range1d extends RangeBase {
|
|
|
217104
217306
|
* * For x1 > x0, that range is null, and the intersection is null.
|
|
217105
217307
|
* * For x0 <= x1, the input is a non-null range.
|
|
217106
217308
|
* * The intersection range replaces the contents of this.
|
|
217107
|
-
*
|
|
217108
217309
|
*/
|
|
217109
217310
|
intersectRangeXXInPlace(x0, x1) {
|
|
217110
217311
|
if (x1 < x0 || x1 < this.low || x0 > this.high) {
|
|
@@ -217117,7 +217318,7 @@ class Range1d extends RangeBase {
|
|
|
217117
217318
|
this.low = x0;
|
|
217118
217319
|
}
|
|
217119
217320
|
}
|
|
217120
|
-
/**
|
|
217321
|
+
/** Returns 0 if the ranges have any overlap, otherwise the shortest absolute distance from one to the other. */
|
|
217121
217322
|
distanceToRange(other) {
|
|
217122
217323
|
return RangeBase.rangeToRangeAbsoluteDistance(this.low, this.high, other.low, other.high);
|
|
217123
217324
|
}
|
|
@@ -217169,7 +217370,7 @@ class Range1d extends RangeBase {
|
|
|
217169
217370
|
return Range1d.createXX(Math.min(this.low, other.low), Math.max(this.high, other.high), result);
|
|
217170
217371
|
}
|
|
217171
217372
|
/**
|
|
217172
|
-
*
|
|
217373
|
+
* Move low and high points by scaleFactor around the center point.
|
|
217173
217374
|
* @param scaleFactor scale factor applied to low, high distance from center.
|
|
217174
217375
|
*/
|
|
217175
217376
|
scaleAboutCenterInPlace(scaleFactor) {
|
|
@@ -217182,7 +217383,7 @@ class Range1d extends RangeBase {
|
|
|
217182
217383
|
}
|
|
217183
217384
|
}
|
|
217184
217385
|
/**
|
|
217185
|
-
*
|
|
217386
|
+
* Move all limits by a fixed amount.
|
|
217186
217387
|
* * positive delta expands the range size
|
|
217187
217388
|
* * negative delta reduces the range size
|
|
217188
217389
|
* * if any dimension reduces below zero size, the whole range becomes null
|
|
@@ -217192,13 +217393,14 @@ class Range1d extends RangeBase {
|
|
|
217192
217393
|
this.setDirect(this.low - delta, this.high + delta, true);
|
|
217193
217394
|
}
|
|
217194
217395
|
/**
|
|
217195
|
-
*
|
|
217396
|
+
* Clip this range to a linear half space condition
|
|
217196
217397
|
* * if `limitA > limitB` the limit space is empty
|
|
217197
217398
|
* * make this range null
|
|
217198
217399
|
* * return false;
|
|
217199
217400
|
* * otherwise (i.e `limitA <= limitB`)
|
|
217200
217401
|
* * solve `a + u * f = limitA' and `a + u * f = limitA`
|
|
217201
|
-
* * if unable to solve (i.e. u near zero), `a` alone determines whether to (a) leave this interval unchanged or
|
|
217402
|
+
* * if unable to solve (i.e. u near zero), `a` alone determines whether to (a) leave this interval unchanged or
|
|
217403
|
+
* (b) reduce to nothing.
|
|
217202
217404
|
* * the `f` values are an interval in the space of this `Range1d`
|
|
217203
217405
|
* * restrict the range to that interval (i.e intersect existing (low,high) with the fraction interval.
|
|
217204
217406
|
* * return true if the range is non-null after the clip.
|
|
@@ -217207,7 +217409,6 @@ class Range1d extends RangeBase {
|
|
|
217207
217409
|
* @param limitA crossing value, assumed in range relation with limitB
|
|
217208
217410
|
* @param limitB crossing value, assumed in range relation with limitB
|
|
217209
217411
|
* @param limitIsHigh true if the limit is an upper limit on mapped values.
|
|
217210
|
-
*
|
|
217211
217412
|
*/
|
|
217212
217413
|
clipLinearMapToInterval(a, u, limitA, limitB) {
|
|
217213
217414
|
// f = (limit - a) / u
|
|
@@ -217246,7 +217447,7 @@ class Range1d extends RangeBase {
|
|
|
217246
217447
|
* @public
|
|
217247
217448
|
*/
|
|
217248
217449
|
class Range2d extends RangeBase {
|
|
217249
|
-
/**
|
|
217450
|
+
/** Reset the low and high to null range state. */
|
|
217250
217451
|
setNull() {
|
|
217251
217452
|
this.low.x = RangeBase._EXTREME_POSITIVE;
|
|
217252
217453
|
this.low.y = RangeBase._EXTREME_POSITIVE;
|
|
@@ -217254,9 +217455,13 @@ class Range2d extends RangeBase {
|
|
|
217254
217455
|
this.high.y = RangeBase._EXTREME_NEGATIVE;
|
|
217255
217456
|
}
|
|
217256
217457
|
/** Flatten the low and high coordinates of any json object with low.x .. high.y into an array of 4 doubles */
|
|
217257
|
-
static toFloat64Array(val) {
|
|
217458
|
+
static toFloat64Array(val) {
|
|
217459
|
+
return Float64Array.of(val.low.x, val.low.y, val.high.x, val.high.y);
|
|
217460
|
+
}
|
|
217258
217461
|
/** Flatten the low and high coordinates of this instance into an array of 4 doubles */
|
|
217259
|
-
toFloat64Array() {
|
|
217462
|
+
toFloat64Array() {
|
|
217463
|
+
return Range2d.toFloat64Array(this);
|
|
217464
|
+
}
|
|
217260
217465
|
/**
|
|
217261
217466
|
* Construct a Range2d from an array of double-precision values
|
|
217262
217467
|
* @param f64 the array, which should contain exactly 4 values in this order: lowX, lowY, highX, highY
|
|
@@ -217268,12 +217473,15 @@ class Range2d extends RangeBase {
|
|
|
217268
217473
|
return new this(f64[0], f64[1], f64[2], f64[3]);
|
|
217269
217474
|
}
|
|
217270
217475
|
/**
|
|
217271
|
-
* Construct a Range2d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
217476
|
+
* Construct a Range2d from an un-typed array. This mostly useful when interpreting ECSQL query results of
|
|
217477
|
+
* the 'blob' type, where you know that that result is a Range3d.
|
|
217272
217478
|
* @param buffer untyped array
|
|
217273
217479
|
* @return a new Range2d object
|
|
217274
217480
|
*/
|
|
217275
|
-
static fromArrayBuffer(buffer) {
|
|
217276
|
-
|
|
217481
|
+
static fromArrayBuffer(buffer) {
|
|
217482
|
+
return this.fromFloat64Array(new Float64Array(buffer));
|
|
217483
|
+
}
|
|
217484
|
+
// explicit constructor - no enforcement of value relationships
|
|
217277
217485
|
constructor(lowX = Range2d._EXTREME_POSITIVE, lowY = Range2d._EXTREME_POSITIVE, highX = Range2d._EXTREME_NEGATIVE, highY = Range2d._EXTREME_NEGATIVE) {
|
|
217278
217486
|
super();
|
|
217279
217487
|
this.low = _Point2dVector2d__WEBPACK_IMPORTED_MODULE_5__.Point2d.create(lowX, lowY);
|
|
@@ -217284,12 +217492,12 @@ class Range2d extends RangeBase {
|
|
|
217284
217492
|
return (this.low.isAlmostEqual(other.low) && this.high.isAlmostEqual(other.high))
|
|
217285
217493
|
|| (this.isNull && other.isNull);
|
|
217286
217494
|
}
|
|
217287
|
-
/**
|
|
217495
|
+
/** Copy all content from any `other` that has low and high xy data. */
|
|
217288
217496
|
setFrom(other) {
|
|
217289
217497
|
this.low.set(other.low.x, other.low.y);
|
|
217290
217498
|
this.high.set(other.high.x, other.high.y);
|
|
217291
217499
|
}
|
|
217292
|
-
/**
|
|
217500
|
+
/** Create a new Range2d from any `other` that has low and high xy data. */
|
|
217293
217501
|
static createFrom(other, result) {
|
|
217294
217502
|
if (result) {
|
|
217295
217503
|
result.setFrom(other);
|
|
@@ -217297,7 +217505,7 @@ class Range2d extends RangeBase {
|
|
|
217297
217505
|
}
|
|
217298
217506
|
return this.createXYXYOrCorrectToNull(other.low.x, other.low.y, other.high.x, other.high.y, result);
|
|
217299
217507
|
}
|
|
217300
|
-
/**
|
|
217508
|
+
/** Treat any array of numbers as numbers to be inserted !!! */
|
|
217301
217509
|
setFromJSON(json) {
|
|
217302
217510
|
this.setNull();
|
|
217303
217511
|
if (Array.isArray(json)) {
|
|
@@ -217316,9 +217524,15 @@ class Range2d extends RangeBase {
|
|
|
217316
217524
|
}
|
|
217317
217525
|
}
|
|
217318
217526
|
/** Freeze this instance (and its members) so it is read-only */
|
|
217319
|
-
freeze() {
|
|
217320
|
-
|
|
217321
|
-
|
|
217527
|
+
freeze() {
|
|
217528
|
+
this.low.freeze();
|
|
217529
|
+
this.high.freeze();
|
|
217530
|
+
return Object.freeze(this);
|
|
217531
|
+
}
|
|
217532
|
+
/** Return json array with two points as produced by `Point2d.toJSON` */
|
|
217533
|
+
toJSON() {
|
|
217534
|
+
return this.isNull ? [] : [this.low.toJSON(), this.high.toJSON()];
|
|
217535
|
+
}
|
|
217322
217536
|
/** Use `setFromJSON` to parse `json` into a new Range2d instance. */
|
|
217323
217537
|
static fromJSON(json) {
|
|
217324
217538
|
const result = new this();
|
|
@@ -217337,13 +217551,13 @@ class Range2d extends RangeBase {
|
|
|
217337
217551
|
this.setNull();
|
|
217338
217552
|
}
|
|
217339
217553
|
}
|
|
217340
|
-
/**
|
|
217554
|
+
/** Return a clone of this range (or copy to optional result) */
|
|
217341
217555
|
clone(result) {
|
|
217342
217556
|
result = result ? result : new this.constructor();
|
|
217343
217557
|
result.setDirect(this.low.x, this.low.y, this.high.x, this.high.y, false);
|
|
217344
217558
|
return result;
|
|
217345
217559
|
}
|
|
217346
|
-
/**
|
|
217560
|
+
/** Create a range with no content. */
|
|
217347
217561
|
static createNull(result) {
|
|
217348
217562
|
result = result ? result : new this();
|
|
217349
217563
|
result.setNull();
|
|
@@ -217393,7 +217607,10 @@ class Range2d extends RangeBase {
|
|
|
217393
217607
|
return this.high.x < this.low.x
|
|
217394
217608
|
|| this.high.y < this.low.y;
|
|
217395
217609
|
}
|
|
217396
|
-
/**
|
|
217610
|
+
/**
|
|
217611
|
+
* Test if the box has high strictly less than low for any of x,y, condition. Note that a range around a
|
|
217612
|
+
* single point is NOT null.
|
|
217613
|
+
*/
|
|
217397
217614
|
static isNull(range) {
|
|
217398
217615
|
return range.high.x < range.low.x
|
|
217399
217616
|
|| range.high.y < range.low.y;
|
|
@@ -217404,28 +217621,55 @@ class Range2d extends RangeBase {
|
|
|
217404
217621
|
&& this.high.y === this.low.y;
|
|
217405
217622
|
}
|
|
217406
217623
|
/** Return the midpoint of the diagonal. No test for null range. */
|
|
217407
|
-
get center() {
|
|
217408
|
-
|
|
217409
|
-
|
|
217410
|
-
/**
|
|
217411
|
-
get
|
|
217412
|
-
|
|
217413
|
-
|
|
217414
|
-
/**
|
|
217415
|
-
get
|
|
217624
|
+
get center() {
|
|
217625
|
+
return this.low.interpolate(.5, this.high);
|
|
217626
|
+
}
|
|
217627
|
+
/** Return the low x coordinate */
|
|
217628
|
+
get xLow() {
|
|
217629
|
+
return this.low.x;
|
|
217630
|
+
}
|
|
217631
|
+
/** Return the low y coordinate */
|
|
217632
|
+
get yLow() {
|
|
217633
|
+
return this.low.y;
|
|
217634
|
+
}
|
|
217635
|
+
/** Return the high x coordinate */
|
|
217636
|
+
get xHigh() {
|
|
217637
|
+
return this.high.x;
|
|
217638
|
+
}
|
|
217639
|
+
/** Return the high y coordinate */
|
|
217640
|
+
get yHigh() {
|
|
217641
|
+
return this.high.y;
|
|
217642
|
+
}
|
|
217416
217643
|
/** Length of the box in the x direction */
|
|
217417
|
-
xLength() {
|
|
217644
|
+
xLength() {
|
|
217645
|
+
const a = this.high.x - this.low.x;
|
|
217646
|
+
return a > 0.0 ? a : 0.0;
|
|
217647
|
+
}
|
|
217418
217648
|
/** Length of the box in the y direction */
|
|
217419
|
-
yLength() {
|
|
217420
|
-
|
|
217421
|
-
|
|
217422
|
-
|
|
217423
|
-
|
|
217424
|
-
|
|
217649
|
+
yLength() {
|
|
217650
|
+
const a = this.high.y - this.low.y;
|
|
217651
|
+
return a > 0.0 ? a : 0.0;
|
|
217652
|
+
}
|
|
217653
|
+
/**
|
|
217654
|
+
* Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
|
|
217655
|
+
* large negative coordinates.
|
|
217656
|
+
*/
|
|
217657
|
+
diagonal(result) {
|
|
217658
|
+
return this.low.vectorTo(this.high, result);
|
|
217659
|
+
}
|
|
217660
|
+
/**
|
|
217661
|
+
* Return the point at the specified fraction along the diagonal vector. There is no check for isNull -- if the
|
|
217662
|
+
* range isNull(), the vector will have very large negative coordinates.
|
|
217663
|
+
*/
|
|
217664
|
+
diagonalFractionToPoint(fraction, result) {
|
|
217665
|
+
return this.low.interpolate(fraction, this.high, result);
|
|
217666
|
+
}
|
|
217667
|
+
/** Return a point given by fractional positions on the XY axes. This is done with no check for isNull !!! */
|
|
217425
217668
|
fractionToPoint(fractionX, fractionY, result) {
|
|
217426
217669
|
return this.low.interpolateXY(fractionX, fractionY, this.high, result);
|
|
217427
217670
|
}
|
|
217428
|
-
/**
|
|
217671
|
+
/**
|
|
217672
|
+
* Return an array with the 4 corners.
|
|
217429
217673
|
* * if asLoop is false, 4 corners are "x varies fastest, then y"
|
|
217430
217674
|
* * if asLoop is true, 5 corners are in CCW order WITH CLOSURE
|
|
217431
217675
|
*/
|
|
@@ -217436,13 +217680,13 @@ class Range2d extends RangeBase {
|
|
|
217436
217680
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.low.y, z),
|
|
217437
217681
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, z),
|
|
217438
217682
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.high.y, z),
|
|
217439
|
-
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, z)
|
|
217683
|
+
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, z),
|
|
217440
217684
|
];
|
|
217441
217685
|
return [
|
|
217442
217686
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.low.y, z),
|
|
217443
217687
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.low.y, z),
|
|
217444
217688
|
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.low.x, this.high.y, z),
|
|
217445
|
-
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, z)
|
|
217689
|
+
_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create(this.high.x, this.high.y, z),
|
|
217446
217690
|
];
|
|
217447
217691
|
}
|
|
217448
217692
|
/** Largest absolute value among any coordinates in the box corners. */
|
|
@@ -217452,10 +217696,14 @@ class Range2d extends RangeBase {
|
|
|
217452
217696
|
return Math.max(this.low.maxAbs(), this.high.maxAbs());
|
|
217453
217697
|
}
|
|
217454
217698
|
/** Test if the x direction size is nearly zero */
|
|
217455
|
-
get isAlmostZeroX() {
|
|
217699
|
+
get isAlmostZeroX() {
|
|
217700
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.xLength());
|
|
217701
|
+
}
|
|
217456
217702
|
/** Test if the y direction size is nearly zero */
|
|
217457
|
-
get isAlmostZeroY() {
|
|
217458
|
-
|
|
217703
|
+
get isAlmostZeroY() {
|
|
217704
|
+
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this.yLength());
|
|
217705
|
+
}
|
|
217706
|
+
/** Test if a point given as x,y is within the range */
|
|
217459
217707
|
containsXY(x, y) {
|
|
217460
217708
|
return x >= this.low.x
|
|
217461
217709
|
&& y >= this.low.y
|
|
@@ -217463,7 +217711,9 @@ class Range2d extends RangeBase {
|
|
|
217463
217711
|
&& y <= this.high.y;
|
|
217464
217712
|
}
|
|
217465
217713
|
/** Test if a point is within the range. */
|
|
217466
|
-
containsPoint(point) {
|
|
217714
|
+
containsPoint(point) {
|
|
217715
|
+
return this.containsXY(point.x, point.y);
|
|
217716
|
+
}
|
|
217467
217717
|
/** Test of other range is within this range */
|
|
217468
217718
|
containsRange(other) {
|
|
217469
217719
|
return other.low.x >= this.low.x
|
|
@@ -217506,7 +217756,9 @@ class Range2d extends RangeBase {
|
|
|
217506
217756
|
this.extendXY(x1, y1);
|
|
217507
217757
|
}
|
|
217508
217758
|
/** Expand this range to include a point. */
|
|
217509
|
-
extendPoint(point) {
|
|
217759
|
+
extendPoint(point) {
|
|
217760
|
+
this.extendXY(point.x, point.y);
|
|
217761
|
+
}
|
|
217510
217762
|
/** Expand this range to include a range. */
|
|
217511
217763
|
extendRange(other) {
|
|
217512
217764
|
if (!Range2d.isNull(other)) {
|
|
@@ -217530,7 +217782,7 @@ class Range2d extends RangeBase {
|
|
|
217530
217782
|
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);
|
|
217531
217783
|
}
|
|
217532
217784
|
/**
|
|
217533
|
-
*
|
|
217785
|
+
* Move low and high points by scaleFactor around the center point.
|
|
217534
217786
|
* @param scaleFactor scale factor applied to low, high distance from center.
|
|
217535
217787
|
*/
|
|
217536
217788
|
scaleAboutCenterInPlace(scaleFactor) {
|
|
@@ -217546,7 +217798,7 @@ class Range2d extends RangeBase {
|
|
|
217546
217798
|
}
|
|
217547
217799
|
}
|
|
217548
217800
|
/**
|
|
217549
|
-
*
|
|
217801
|
+
* Move all limits by a fixed amount.
|
|
217550
217802
|
* * positive delta expands the range size
|
|
217551
217803
|
* * negative delta reduces the range size
|
|
217552
217804
|
* * if any dimension reduces below zero size, the whole range becomes null
|
|
@@ -217555,7 +217807,8 @@ class Range2d extends RangeBase {
|
|
|
217555
217807
|
expandInPlace(delta) {
|
|
217556
217808
|
this.setDirect(this.low.x - delta, this.low.y - delta, this.high.x + delta, this.high.y + delta, true);
|
|
217557
217809
|
}
|
|
217558
|
-
/**
|
|
217810
|
+
/**
|
|
217811
|
+
* Return fractional coordinates of point within the range.
|
|
217559
217812
|
* * returns undefined if the range is null.
|
|
217560
217813
|
* * returns undefined if any direction (x,y) has zero length
|
|
217561
217814
|
*/
|
|
@@ -276282,18 +276535,18 @@ class Settings {
|
|
|
276282
276535
|
}
|
|
276283
276536
|
}
|
|
276284
276537
|
toString() {
|
|
276285
|
-
return `Configurations:
|
|
276286
|
-
backend location: ${this.Backend.location},
|
|
276287
|
-
backend name: ${this.Backend.name},
|
|
276288
|
-
backend version: ${this.Backend.version},
|
|
276289
|
-
oidc client id: ${this.oidcClientId},
|
|
276290
|
-
oidc scopes: ${this.oidcScopes},
|
|
276291
|
-
applicationId: ${this.gprid},
|
|
276292
|
-
log level: ${this.logLevel},
|
|
276293
|
-
testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
|
|
276294
|
-
testing PresentationRpcTest: ${this.runPresentationRpcTests},
|
|
276295
|
-
testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
|
|
276296
|
-
testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
|
|
276538
|
+
return `Configurations:
|
|
276539
|
+
backend location: ${this.Backend.location},
|
|
276540
|
+
backend name: ${this.Backend.name},
|
|
276541
|
+
backend version: ${this.Backend.version},
|
|
276542
|
+
oidc client id: ${this.oidcClientId},
|
|
276543
|
+
oidc scopes: ${this.oidcScopes},
|
|
276544
|
+
applicationId: ${this.gprid},
|
|
276545
|
+
log level: ${this.logLevel},
|
|
276546
|
+
testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
|
|
276547
|
+
testing PresentationRpcTest: ${this.runPresentationRpcTests},
|
|
276548
|
+
testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
|
|
276549
|
+
testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
|
|
276297
276550
|
testing iModelWriteRpcTests: ${this.runiModelWriteRpcTests}`;
|
|
276298
276551
|
}
|
|
276299
276552
|
}
|
|
@@ -276498,7 +276751,7 @@ class TestContext {
|
|
|
276498
276751
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
276499
276752
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
276500
276753
|
await core_frontend_1.NoRenderApp.startup({
|
|
276501
|
-
applicationVersion: "4.1.0-dev.
|
|
276754
|
+
applicationVersion: "4.1.0-dev.15",
|
|
276502
276755
|
applicationId: this.settings.gprid,
|
|
276503
276756
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
276504
276757
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -283908,13 +284161,13 @@ class FavoritePropertiesManager {
|
|
|
283908
284161
|
});
|
|
283909
284162
|
if (missingClasses.size === 0)
|
|
283910
284163
|
return baseClasses;
|
|
283911
|
-
const query = `
|
|
283912
|
-
SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
|
|
283913
|
-
FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
|
|
283914
|
-
INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
|
|
283915
|
-
INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
|
|
283916
|
-
INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
|
|
283917
|
-
INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
|
|
284164
|
+
const query = `
|
|
284165
|
+
SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
|
|
284166
|
+
FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
|
|
284167
|
+
INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
|
|
284168
|
+
INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
|
|
284169
|
+
INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
|
|
284170
|
+
INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
|
|
283918
284171
|
WHERE (derivedSchema.Name || ':' || derivedClass.Name) IN (${[...missingClasses].map((className) => `'${className}'`).join(",")})`;
|
|
283919
284172
|
const reader = imodel.createQueryReader(query, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames });
|
|
283920
284173
|
while (await reader.step()) {
|
|
@@ -295872,7 +296125,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
|
|
|
295872
296125
|
/***/ ((module) => {
|
|
295873
296126
|
|
|
295874
296127
|
"use strict";
|
|
295875
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.
|
|
296128
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.15","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.15","@itwin/core-bentley":"workspace:^4.1.0-dev.15","@itwin/core-common":"workspace:^4.1.0-dev.15","@itwin/core-geometry":"workspace:^4.1.0-dev.15","@itwin/core-orbitgt":"workspace:^4.1.0-dev.15","@itwin/core-quantity":"workspace:^4.1.0-dev.15"},"//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"}}]}}');
|
|
295876
296129
|
|
|
295877
296130
|
/***/ }),
|
|
295878
296131
|
|