@itwin/ecschema-rpcinterface-tests 4.1.0-dev.4 → 4.1.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/_a8a9.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +621 -457
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/object-storage-azure.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_itwin_object-storage-azure_1_6_0_node_modules_itwin_obj-0f69b1.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_3_3_node_modules_loaders_gl_draco_di-28f62e.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_reflect-metadata_0_1_13_node_modules_reflect-metadata_R-610cb3.bundled-tests.js.map +1 -1
- package/package.json +15 -15
|
@@ -72792,9 +72792,13 @@ class AccuSnap {
|
|
|
72792
72792
|
this.aSnapHits.removeCurrentHit();
|
|
72793
72793
|
hit = await this.getAccuSnapDetail(this.aSnapHits, out);
|
|
72794
72794
|
}
|
|
72795
|
+
if (!this._doSnapping)
|
|
72796
|
+
hit = undefined; // Snap no longer requested...
|
|
72795
72797
|
}
|
|
72796
72798
|
else if (this.isLocateEnabled) {
|
|
72797
72799
|
hit = await this.findLocatableHit(ev, false, out); // get next AccuSnap path (or undefined)
|
|
72800
|
+
if (!this.isLocateEnabled)
|
|
72801
|
+
hit = undefined; // Hit no longer requested...
|
|
72798
72802
|
}
|
|
72799
72803
|
// set the current hit
|
|
72800
72804
|
if (hit || this.currHit)
|
|
@@ -72815,9 +72819,13 @@ class AccuSnap {
|
|
|
72815
72819
|
if (this._doSnapping) {
|
|
72816
72820
|
out.snapStatus = this.findHits(ev);
|
|
72817
72821
|
hit = (_ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success !== out.snapStatus) ? undefined : await this.getAccuSnapDetail(this.aSnapHits, out);
|
|
72822
|
+
if (!this._doSnapping)
|
|
72823
|
+
hit = undefined; // Snap no longer requested...
|
|
72818
72824
|
}
|
|
72819
72825
|
else if (this.isLocateEnabled) {
|
|
72820
72826
|
hit = await this.findLocatableHit(ev, true, out);
|
|
72827
|
+
if (!this.isLocateEnabled)
|
|
72828
|
+
hit = undefined; // Hit no longer requested...
|
|
72821
72829
|
}
|
|
72822
72830
|
}
|
|
72823
72831
|
// set the current hit and display the sprite (based on snap's KeypointType)
|
|
@@ -178216,58 +178224,61 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
178216
178224
|
|
|
178217
178225
|
/**
|
|
178218
178226
|
* Circular or elliptic arc.
|
|
178219
|
-
*
|
|
178220
178227
|
* * The angle to point equation is:
|
|
178221
|
-
*
|
|
178222
|
-
* * `X = center + cos(theta) * vector0 + sin(theta) * vector90`
|
|
178228
|
+
* * `X = center + cos(theta) * vector0 + sin(theta) * vector90`
|
|
178223
178229
|
* * When the two vectors are perpendicular and have equal length, it is a true circle.
|
|
178224
178230
|
* * Non-perpendicular vectors are always elliptic.
|
|
178225
|
-
* *
|
|
178231
|
+
* * Vectors of unequal length are always elliptic.
|
|
178226
178232
|
* * To create an ellipse in the common "major and minor axis" form of an ellipse:
|
|
178227
178233
|
* ** vector0 is the vector from the center to the major axis extreme.
|
|
178228
178234
|
* ** vector90 is the vector from the center to the minor axis extreme.
|
|
178229
|
-
* ** note
|
|
178230
|
-
* *
|
|
178231
|
-
* * The unrestricted form is much easier to work with for common calculations -- stroking, projection to 2d,
|
|
178235
|
+
* ** note that constructing the vectors to the extreme points makes them perpendicular.
|
|
178236
|
+
* * The method toScaledMatrix3d() can be called to convert the unrestricted vector0,vector90 to perpendicular form.
|
|
178237
|
+
* * The unrestricted form is much easier to work with for common calculations -- stroking, projection to 2d,
|
|
178238
|
+
* intersection with plane.
|
|
178232
178239
|
* @public
|
|
178233
178240
|
*/
|
|
178234
178241
|
class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive {
|
|
178235
|
-
/**
|
|
178236
|
-
|
|
178237
|
-
|
|
178238
|
-
|
|
178239
|
-
/**
|
|
178240
|
-
|
|
178241
|
-
|
|
178242
|
-
|
|
178243
|
-
/**
|
|
178244
|
-
|
|
178245
|
-
|
|
178246
|
-
|
|
178247
|
-
/**
|
|
178248
|
-
|
|
178249
|
-
|
|
178250
|
-
|
|
178251
|
-
/**
|
|
178252
|
-
|
|
178253
|
-
|
|
178254
|
-
|
|
178255
|
-
/**
|
|
178256
|
-
|
|
178257
|
-
|
|
178258
|
-
|
|
178259
|
-
/**
|
|
178260
|
-
|
|
178261
|
-
|
|
178262
|
-
|
|
178242
|
+
/** Test if this and other are both instances of Arc3d. */
|
|
178243
|
+
isSameGeometryClass(other) {
|
|
178244
|
+
return other instanceof Arc3d;
|
|
178245
|
+
}
|
|
178246
|
+
/** Read property for (clone of) center */
|
|
178247
|
+
get center() {
|
|
178248
|
+
return this._center.clone();
|
|
178249
|
+
}
|
|
178250
|
+
/** Read property for (clone of) vector0 */
|
|
178251
|
+
get vector0() {
|
|
178252
|
+
return this._matrix.columnX();
|
|
178253
|
+
}
|
|
178254
|
+
/** Read property for (clone of) vector90 */
|
|
178255
|
+
get vector90() {
|
|
178256
|
+
return this._matrix.columnY();
|
|
178257
|
+
}
|
|
178258
|
+
/** Read property for (clone of) plane normal, with arbitrary length. */
|
|
178259
|
+
get perpendicularVector() {
|
|
178260
|
+
return this._matrix.columnZ();
|
|
178261
|
+
}
|
|
178262
|
+
/** Read property for (clone of) matrix of vector0, vector90, unit normal */
|
|
178263
|
+
matrixClone() {
|
|
178264
|
+
return this._matrix.clone();
|
|
178265
|
+
}
|
|
178266
|
+
/** Read property for (reference to) matrix of vector0, vector90, unit normal */
|
|
178267
|
+
get matrixRef() {
|
|
178268
|
+
return this._matrix;
|
|
178269
|
+
}
|
|
178263
178270
|
/** Sweep of the angle. */
|
|
178264
|
-
get sweep() {
|
|
178265
|
-
|
|
178266
|
-
|
|
178267
|
-
|
|
178268
|
-
|
|
178269
|
-
|
|
178270
|
-
|
|
178271
|
+
get sweep() {
|
|
178272
|
+
return this._sweep;
|
|
178273
|
+
}
|
|
178274
|
+
set sweep(value) {
|
|
178275
|
+
this._sweep.setFrom(value);
|
|
178276
|
+
}
|
|
178277
|
+
/** An Arc3d extends along its complete elliptic arc */
|
|
178278
|
+
get isExtensibleFractionSpace() {
|
|
178279
|
+
return true;
|
|
178280
|
+
}
|
|
178281
|
+
// constructor copies the pointers
|
|
178271
178282
|
constructor(center, matrix, sweep) {
|
|
178272
178283
|
super();
|
|
178273
178284
|
/** String name for schema properties */
|
|
@@ -178277,7 +178288,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178277
178288
|
this._sweep = sweep;
|
|
178278
178289
|
}
|
|
178279
178290
|
/**
|
|
178280
|
-
*
|
|
178291
|
+
* Return a clone of the arc, with transform applied
|
|
178281
178292
|
* @param transform
|
|
178282
178293
|
*/
|
|
178283
178294
|
cloneTransformed(transform) {
|
|
@@ -178305,9 +178316,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178305
178316
|
set(center, matrix, sweep) {
|
|
178306
178317
|
this.setRefs(center.clone(), matrix.clone(), sweep ? sweep.clone() : _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep.create360());
|
|
178307
178318
|
}
|
|
178308
|
-
/**
|
|
178309
|
-
* Copy center, matrix, and sweep from other Arc3d.
|
|
178310
|
-
*/
|
|
178319
|
+
/** Copy center, matrix, and sweep from other Arc3d */
|
|
178311
178320
|
setFrom(other) {
|
|
178312
178321
|
this._center.setFrom(other._center);
|
|
178313
178322
|
this._matrix.setFrom(other._matrix);
|
|
@@ -178365,11 +178374,12 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178365
178374
|
* @param result optional preallocated result
|
|
178366
178375
|
*/
|
|
178367
178376
|
static create(center, vector0, vector90, sweep, result) {
|
|
178368
|
-
const normal = vector0.unitCrossProductWithDefault(vector90, 0, 0, 0); // normal will be 000 for degenerate case
|
|
178377
|
+
const normal = vector0.unitCrossProductWithDefault(vector90, 0, 0, 0); // normal will be 000 for degenerate case
|
|
178369
178378
|
const matrix = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createColumns(vector0, vector90, normal);
|
|
178370
178379
|
return Arc3d.createRefs(center !== undefined ? center.clone() : _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create(0, 0, 0), matrix, sweep ? sweep.clone() : _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep.create360(), result);
|
|
178371
178380
|
}
|
|
178372
|
-
/**
|
|
178381
|
+
/**
|
|
178382
|
+
* Return a clone of this arc, projected to given z value.
|
|
178373
178383
|
* * If `z` is omitted, the clone is at the z of the center.
|
|
178374
178384
|
* * Note that projection to fixed z can change circle into ellipse (and (rarely) ellipse to circle)
|
|
178375
178385
|
*/
|
|
@@ -178379,7 +178389,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178379
178389
|
return Arc3d.createXYZXYZXYZ(this._center.x, this._center.y, this._center.z, this._matrix.coffs[0], this._matrix.coffs[3], 0, this._matrix.coffs[1], this._matrix.coffs[4], 0, this._sweep);
|
|
178380
178390
|
}
|
|
178381
178391
|
/**
|
|
178382
|
-
* Create an arc by center (cx,cy,xz) with vectors (ux,uy,uz) and (vx,vy,vz) to points at 0 and 90 degrees in
|
|
178392
|
+
* Create an arc by center (cx,cy,xz) with vectors (ux,uy,uz) and (vx,vy,vz) to points at 0 and 90 degrees in
|
|
178393
|
+
* parameter space.
|
|
178383
178394
|
* @param result optional preallocated result
|
|
178384
178395
|
*/
|
|
178385
178396
|
static createXYZXYZXYZ(cx, cy, cz, ux, uy, uz, vx, vy, vz, sweep, result) {
|
|
@@ -178398,7 +178409,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178398
178409
|
const largeAxis = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.maxXY(magX, magY);
|
|
178399
178410
|
return jacobian / (largeAxis * largeAxis);
|
|
178400
178411
|
}
|
|
178401
|
-
/**
|
|
178412
|
+
/**
|
|
178413
|
+
* Create a circular arc defined by start point, any intermediate point, and end point.
|
|
178402
178414
|
* If the points are colinear, assemble them into a linestring.
|
|
178403
178415
|
*/
|
|
178404
178416
|
static createCircularStartMiddleEnd(pointA, pointB, pointC, result) {
|
|
@@ -178461,7 +178473,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178461
178473
|
result.direction.scaleInPlace(this._sweep.sweepRadians);
|
|
178462
178474
|
return result;
|
|
178463
178475
|
}
|
|
178464
|
-
/**
|
|
178476
|
+
/**
|
|
178477
|
+
* Construct a plane with
|
|
178465
178478
|
* * origin at the fractional position along the arc
|
|
178466
178479
|
* * x axis is the first derivative, i.e. tangent along the arc
|
|
178467
178480
|
* * y axis is the second derivative, i.e. in the plane and on the center side of the tangent.
|
|
@@ -178539,12 +178552,16 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178539
178552
|
* Return the start point tof the arc.
|
|
178540
178553
|
* @param result optional preallocated result
|
|
178541
178554
|
*/
|
|
178542
|
-
startPoint(result) {
|
|
178555
|
+
startPoint(result) {
|
|
178556
|
+
return this.fractionToPoint(0.0, result);
|
|
178557
|
+
}
|
|
178543
178558
|
/**
|
|
178544
178559
|
* Return the end point tof the arc.
|
|
178545
178560
|
* @param result optional preallocated result
|
|
178546
178561
|
*/
|
|
178547
|
-
endPoint(result) {
|
|
178562
|
+
endPoint(result) {
|
|
178563
|
+
return this.fractionToPoint(1.0, result);
|
|
178564
|
+
}
|
|
178548
178565
|
/** * If this is a circular arc, return the simple length derived from radius and sweep.
|
|
178549
178566
|
* * Otherwise (i.e. if this elliptical) fall through to CurvePrimitive base implementation which
|
|
178550
178567
|
* Uses quadrature.
|
|
@@ -178552,7 +178569,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178552
178569
|
curveLength() {
|
|
178553
178570
|
return this.curveLengthBetweenFractions(0, 1);
|
|
178554
178571
|
}
|
|
178555
|
-
/**
|
|
178572
|
+
/**
|
|
178573
|
+
* * If this is a circular arc, return the simple length derived from radius and sweep.
|
|
178556
178574
|
* * Otherwise (i.e. if this elliptical) fall through CurvePrimitive integrator.
|
|
178557
178575
|
*/
|
|
178558
178576
|
curveLengthBetweenFractions(fraction0, fraction1) {
|
|
@@ -178580,9 +178598,9 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178580
178598
|
/**
|
|
178581
178599
|
* Return an approximate (but easy to compute) arc length.
|
|
178582
178600
|
* The estimate is:
|
|
178583
|
-
* * Form 8 chords on full circle, proportionally fewer for partials
|
|
178584
|
-
* *
|
|
178585
|
-
* * For a circle, we know this crude approximation has to be increased by a factor (theta/(2
|
|
178601
|
+
* * Form 8 chords on full circle, proportionally fewer for partials (but 2 extras if less than half circle).
|
|
178602
|
+
* * Sum the chord lengths.
|
|
178603
|
+
* * For a circle, we know this crude approximation has to be increased by a factor (theta/(2*sin(theta/2))).
|
|
178586
178604
|
* * Apply that factor.
|
|
178587
178605
|
* * Experiments confirm that this is within 3 percent for a variety of eccentricities and arc sweeps.
|
|
178588
178606
|
*/
|
|
@@ -178647,7 +178665,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178647
178665
|
/**
|
|
178648
178666
|
* Return details of the closest point on the arc, optionally extending to full ellipse.
|
|
178649
178667
|
* @param spacePoint search for point closest to this point.
|
|
178650
|
-
* @param extend if true, consider projections to the complete ellipse.
|
|
178668
|
+
* @param extend if true, consider projections to the complete ellipse. If false, consider only endpoints and
|
|
178669
|
+
* projections within the arc sweep.
|
|
178651
178670
|
* @param result optional preallocated result.
|
|
178652
178671
|
*/
|
|
178653
178672
|
closestPoint(spacePoint, extend, result) {
|
|
@@ -178689,8 +178708,11 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178689
178708
|
return result;
|
|
178690
178709
|
}
|
|
178691
178710
|
/** Reverse the sweep of the arc. */
|
|
178692
|
-
reverseInPlace() {
|
|
178693
|
-
|
|
178711
|
+
reverseInPlace() {
|
|
178712
|
+
this._sweep.reverseInPlace();
|
|
178713
|
+
}
|
|
178714
|
+
/**
|
|
178715
|
+
* Apply a transform to the arc basis vectors.
|
|
178694
178716
|
* * nonuniform (i.e. skewing) transforms are allowed.
|
|
178695
178717
|
* * The transformed vector0 and vector90 are NOT squared up as major minor axes. (This is a good feature!!)
|
|
178696
178718
|
*/
|
|
@@ -178712,18 +178734,14 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178712
178734
|
&& _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(this._matrix.dotColumnX(normal))
|
|
178713
178735
|
&& _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(this._matrix.dotColumnY(normal));
|
|
178714
178736
|
}
|
|
178715
|
-
/**
|
|
178716
|
-
* Return true if the vector0 and vector90 are of equal length and perpendicular.
|
|
178717
|
-
*/
|
|
178737
|
+
/** Return true if the vector0 and vector90 are of equal length and perpendicular. */
|
|
178718
178738
|
get isCircular() {
|
|
178719
178739
|
const axx = this._matrix.columnXMagnitudeSquared();
|
|
178720
178740
|
const ayy = this._matrix.columnYMagnitudeSquared();
|
|
178721
178741
|
const axy = this._matrix.columnXDotColumnY();
|
|
178722
178742
|
return _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_6__.Angle.isPerpendicularDotSet(axx, ayy, axy) && _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSameCoordinateSquared(axx, ayy);
|
|
178723
178743
|
}
|
|
178724
|
-
/**
|
|
178725
|
-
* Return true if the vector0 and vector90 are of equal length and perpendicular.
|
|
178726
|
-
*/
|
|
178744
|
+
/** Return true if the vector0 and vector90 are of equal length and perpendicular. */
|
|
178727
178745
|
circularRadiusXY() {
|
|
178728
178746
|
const ux = this._matrix.at(0, 0);
|
|
178729
178747
|
const uy = this._matrix.at(1, 0);
|
|
@@ -178740,9 +178758,11 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178740
178758
|
return this.isCircular ? this._matrix.columnXMagnitude() : undefined;
|
|
178741
178759
|
}
|
|
178742
178760
|
/** Return the larger of the two defining vectors. */
|
|
178743
|
-
maxVectorLength() {
|
|
178761
|
+
maxVectorLength() {
|
|
178762
|
+
return Math.max(this._matrix.columnXMagnitude(), this._matrix.columnYMagnitude());
|
|
178763
|
+
}
|
|
178744
178764
|
/**
|
|
178745
|
-
*
|
|
178765
|
+
* Compute intersections with a plane.
|
|
178746
178766
|
* @param plane plane to intersect
|
|
178747
178767
|
* @param result array of locations on the curve.
|
|
178748
178768
|
*/
|
|
@@ -178806,9 +178826,9 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178806
178826
|
range.extend(highPoint);
|
|
178807
178827
|
}
|
|
178808
178828
|
/**
|
|
178809
|
-
|
|
178810
|
-
|
|
178811
|
-
|
|
178829
|
+
* Returns a (high accuracy) range of the curve between fractional positions
|
|
178830
|
+
* * Default implementation returns teh range of the curve from clonePartialCurve
|
|
178831
|
+
*/
|
|
178812
178832
|
rangeBetweenFractions(fraction0, fraction1, transform) {
|
|
178813
178833
|
const sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep.createStartEndRadians(this.sweep.fractionToRadians(fraction0), this.sweep.fractionToRadians(fraction1));
|
|
178814
178834
|
const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_12__.Range3d.create();
|
|
@@ -178831,9 +178851,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178831
178851
|
result.set(plane.altitude(this._center), plane.velocityXYZ(this._matrix.coffs[0], this._matrix.coffs[3], this._matrix.coffs[6]), plane.velocityXYZ(this._matrix.coffs[1], this._matrix.coffs[4], this._matrix.coffs[7]));
|
|
178832
178852
|
return result;
|
|
178833
178853
|
}
|
|
178834
|
-
/**
|
|
178835
|
-
* Create a new arc which is a unit circle centered at the origin.
|
|
178836
|
-
*/
|
|
178854
|
+
/** Create a new arc which is a unit circle centered at the origin. */
|
|
178837
178855
|
static createUnitCircle() {
|
|
178838
178856
|
return Arc3d.createRefs(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create(0, 0, 0), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createIdentity(), _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep.create360());
|
|
178839
178857
|
}
|
|
@@ -178864,8 +178882,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178864
178882
|
setVector0Vector90(vector0, vector90) {
|
|
178865
178883
|
this._matrix.setColumns(vector0, vector90, vector0.unitCrossProductWithDefault(vector90, 0, 0, 0));
|
|
178866
178884
|
}
|
|
178867
|
-
/** Return the arc definition with rigid matrix form with axis radii
|
|
178868
|
-
*/
|
|
178885
|
+
/** Return the arc definition with rigid matrix form with axis radii */
|
|
178869
178886
|
toScaledMatrix3d() {
|
|
178870
178887
|
const angleData = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_6__.Angle.dotProductsToHalfAngleTrigValues(this._matrix.columnXMagnitudeSquared(), this._matrix.columnYMagnitudeSquared(), this._matrix.columnXDotColumnY(), true);
|
|
178871
178888
|
const vector0A = this._matrix.multiplyXY(angleData.c, angleData.s);
|
|
@@ -178879,8 +178896,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178879
178896
|
sweep: this.sweep.cloneMinusRadians(angleData.radians),
|
|
178880
178897
|
};
|
|
178881
178898
|
}
|
|
178882
|
-
/** Return the arc definition with center, two vectors, and angle sweep;
|
|
178883
|
-
*/
|
|
178899
|
+
/** Return the arc definition with center, two vectors, and angle sweep; */
|
|
178884
178900
|
toVectors() {
|
|
178885
178901
|
return {
|
|
178886
178902
|
center: this.center,
|
|
@@ -178889,8 +178905,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178889
178905
|
sweep: this.sweep,
|
|
178890
178906
|
};
|
|
178891
178907
|
}
|
|
178892
|
-
/** Return the arc definition with center, two vectors, and angle sweep, optionally transformed.
|
|
178893
|
-
*/
|
|
178908
|
+
/** Return the arc definition with center, two vectors, and angle sweep, optionally transformed. */
|
|
178894
178909
|
toTransformedVectors(transform) {
|
|
178895
178910
|
return transform ? {
|
|
178896
178911
|
center: transform.multiplyPoint3d(this._center),
|
|
@@ -178905,8 +178920,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178905
178920
|
sweep: this.sweep,
|
|
178906
178921
|
};
|
|
178907
178922
|
}
|
|
178908
|
-
/** Return the arc definition with center, two vectors, and angle sweep, transformed to 4d points.
|
|
178909
|
-
*/
|
|
178923
|
+
/** Return the arc definition with center, two vectors, and angle sweep, transformed to 4d points. */
|
|
178910
178924
|
toTransformedPoint4d(matrix) {
|
|
178911
178925
|
return {
|
|
178912
178926
|
center: matrix.multiplyPoint3d(this._center, 1.0),
|
|
@@ -178950,9 +178964,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178950
178964
|
vector90: this._matrix.columnY().toJSON(),
|
|
178951
178965
|
};
|
|
178952
178966
|
}
|
|
178953
|
-
/**
|
|
178954
|
-
* Test if this arc is almost equal to another GeometryQuery object
|
|
178955
|
-
*/
|
|
178967
|
+
/** Test if this arc is almost equal to another GeometryQuery object */
|
|
178956
178968
|
isAlmostEqual(otherGeometry) {
|
|
178957
178969
|
if (otherGeometry instanceof Arc3d) {
|
|
178958
178970
|
const other = otherGeometry;
|
|
@@ -178975,7 +178987,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178975
178987
|
handler.endCurvePrimitive(this);
|
|
178976
178988
|
}
|
|
178977
178989
|
/**
|
|
178978
|
-
*
|
|
178990
|
+
* Return the stroke count required for given options.
|
|
178979
178991
|
* @param options StrokeOptions that determine count
|
|
178980
178992
|
*/
|
|
178981
178993
|
computeStrokeCountForOptions(options) {
|
|
@@ -178993,7 +179005,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
178993
179005
|
dispatchToGeometryHandler(handler) {
|
|
178994
179006
|
return handler.handleArc3d(this);
|
|
178995
179007
|
}
|
|
178996
|
-
/**
|
|
179008
|
+
/**
|
|
179009
|
+
* Return (if possible) an arc which is a portion of this curve.
|
|
178997
179010
|
* @param fractionA [in] start fraction
|
|
178998
179011
|
* @param fractionB [in] end fraction
|
|
178999
179012
|
*/
|
|
@@ -179007,8 +179020,10 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
179007
179020
|
arcB.sweep.setStartEndRadians(this.sweep.fractionToRadians(fractionA), this.sweep.fractionToRadians(fractionB));
|
|
179008
179021
|
return arcB;
|
|
179009
179022
|
}
|
|
179010
|
-
/**
|
|
179011
|
-
*
|
|
179023
|
+
/**
|
|
179024
|
+
* Return an arc whose basis vectors are rotated by given angle within the current basis space.
|
|
179025
|
+
* * the result arc will have its zero-degree point (new `vector0`) at the current
|
|
179026
|
+
* `vector0 * cos(theta) + vector90 * sin(theta)`
|
|
179012
179027
|
* * the result sweep is adjusted so all fractional coordinates (e.g. start and end) evaluate to the same xyz.
|
|
179013
179028
|
* * Specifically, theta is subtracted from the original start and end angles.
|
|
179014
179029
|
* @param theta the angle (in the input arc space) which is to become the 0-degree point in the new arc.
|
|
@@ -179025,7 +179040,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
179025
179040
|
/**
|
|
179026
179041
|
* Find intervals of this CurvePrimitive that are interior to a clipper
|
|
179027
179042
|
* @param clipper clip structure (e.g.clip planes)
|
|
179028
|
-
* @param announce(optional) function to be called announcing fractional intervals"
|
|
179043
|
+
* @param announce(optional) function to be called announcing fractional intervals"
|
|
179044
|
+
* ` announce(fraction0, fraction1, curvePrimitive)`
|
|
179029
179045
|
* @returns true if any "in" segments are announced.
|
|
179030
179046
|
*/
|
|
179031
179047
|
announceClipIntervals(clipper, announce) {
|
|
@@ -179046,8 +179062,10 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
179046
179062
|
* * Return the arc along with the fractional positions of the tangency points.
|
|
179047
179063
|
* * In the returned object:
|
|
179048
179064
|
* * `arc` is the (bounded) arc
|
|
179049
|
-
* * `fraction10` is the tangency point's position as an interpolating fraction of the line segment from
|
|
179050
|
-
*
|
|
179065
|
+
* * `fraction10` is the tangency point's position as an interpolating fraction of the line segment from
|
|
179066
|
+
* `point1` (backwards) to `point0`
|
|
179067
|
+
* * `fraction12` is the tangency point's position as an interpolating fraction of the line segment from
|
|
179068
|
+
* `point1` (forward) to `point2`
|
|
179051
179069
|
* * `point` is the `point1` input.
|
|
179052
179070
|
* * If unable to construct the arc:
|
|
179053
179071
|
* * `point` is the `point1` input.
|
|
@@ -179121,7 +179139,9 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
179121
179139
|
const r0new = r0 - sign * options.leftOffsetDistance;
|
|
179122
179140
|
const r90 = this.isCircular ? r0 : arcXY.matrixRef.columnYMagnitude();
|
|
179123
179141
|
const r90new = this.isCircular ? r0new : r90 - sign * options.leftOffsetDistance;
|
|
179124
|
-
if (!_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(r0new)
|
|
179142
|
+
if (!_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(r0new)
|
|
179143
|
+
&& (r0 * r0new > 0.0)
|
|
179144
|
+
&& (this.isCircular || (!_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(r90new) && (r90 * r90new > 0.0)))) {
|
|
179125
179145
|
const factor0 = r0new / r0;
|
|
179126
179146
|
const factor90 = this.isCircular ? factor0 : r90new / r90;
|
|
179127
179147
|
const matrix = arcXY.matrixClone();
|
|
@@ -179137,7 +179157,8 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
|
|
|
179137
179157
|
this.emitStrokableParts(handler, options.strokeOptions);
|
|
179138
179158
|
return handler.claimResult();
|
|
179139
179159
|
}
|
|
179140
|
-
/**
|
|
179160
|
+
/**
|
|
179161
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
|
|
179141
179162
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
179142
179163
|
* @param lowHigh optional receiver for output
|
|
179143
179164
|
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
|
|
@@ -179151,9 +179172,9 @@ Arc3d._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Poi
|
|
|
179151
179172
|
Arc3d._workPointC = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create();
|
|
179152
179173
|
Arc3d._workVectorU = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Vector3d.create();
|
|
179153
179174
|
Arc3d._workVectorV = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Vector3d.create();
|
|
179154
|
-
// !! misspelled Gauss in the published static
|
|
179175
|
+
// !! misspelled Gauss in the published static !! Declare it ok.
|
|
179155
179176
|
// cspell::word Guass
|
|
179156
|
-
/** Gauss point quadrature count for evaluating curve length.
|
|
179177
|
+
/** Gauss point quadrature count for evaluating curve length. (The number of intervals is adjusted to the arc sweep) */
|
|
179157
179178
|
Arc3d.quadratureGuassCount = 5;
|
|
179158
179179
|
/** In quadrature for arc length, use this interval (divided by quickEccentricity) */
|
|
179159
179180
|
Arc3d.quadratureIntervalAngleDegrees = 10.0;
|
|
@@ -180349,7 +180370,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
180349
180370
|
|
|
180350
180371
|
/**
|
|
180351
180372
|
* A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures:
|
|
180352
|
-
* - `CurveChain` is a (non-instantiable) intermediate class for a sequence of `CurvePrimitive
|
|
180373
|
+
* - `CurveChain` is a (non-instantiable) intermediate class for a sequence of `CurvePrimitive` joining head-to-tail.
|
|
180374
|
+
* The two instantiable forms of `CurveChain` are
|
|
180353
180375
|
* - `Path` - A chain not required to close, and not enclosing a planar area
|
|
180354
180376
|
* - `Loop` - A chain required to close from last to first so that a planar area is enclosed.
|
|
180355
180377
|
* - `ParityRegion` -- a collection of coplanar `Loop`s, with "in/out" classification by parity rules
|
|
@@ -180365,11 +180387,13 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
|
|
|
180365
180387
|
/** String name for schema properties */
|
|
180366
180388
|
this.geometryCategory = "curveCollection";
|
|
180367
180389
|
/* eslint-disable @typescript-eslint/naming-convention, no-empty */
|
|
180368
|
-
/**
|
|
180390
|
+
/** Flag for inner loop status. Only used by `Loop`. */
|
|
180369
180391
|
this.isInner = false;
|
|
180370
180392
|
}
|
|
180371
180393
|
/** Return the sum of the lengths of all contained curves. */
|
|
180372
|
-
sumLengths() {
|
|
180394
|
+
sumLengths() {
|
|
180395
|
+
return _internalContexts_SumLengthsContext__WEBPACK_IMPORTED_MODULE_1__.SumLengthsContext.sumLengths(this);
|
|
180396
|
+
}
|
|
180373
180397
|
/** Return the closest point on the contained curves */
|
|
180374
180398
|
closestPoint(spacePoint) {
|
|
180375
180399
|
let detailA;
|
|
@@ -180387,17 +180411,24 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
|
|
|
180387
180411
|
}
|
|
180388
180412
|
return detailA;
|
|
180389
180413
|
}
|
|
180390
|
-
/**
|
|
180391
|
-
*
|
|
180414
|
+
/**
|
|
180415
|
+
* Return the max gap between adjacent primitives in Path and Loop collections.
|
|
180392
180416
|
* * In a Path, gaps are computed between consecutive primitives.
|
|
180393
180417
|
* * In a Loop, gaps are computed between consecutive primitives and between last and first.
|
|
180394
|
-
* * gaps are NOT computed between consecutive CurvePrimitives in "unstructured" collections. The type is
|
|
180418
|
+
* * gaps are NOT computed between consecutive CurvePrimitives in "unstructured" collections. The type is
|
|
180419
|
+
* "unstructured" so gaps should not be semantically meaningful.
|
|
180395
180420
|
*/
|
|
180396
|
-
maxGap() {
|
|
180397
|
-
|
|
180398
|
-
|
|
180421
|
+
maxGap() {
|
|
180422
|
+
return _internalContexts_GapSearchContext__WEBPACK_IMPORTED_MODULE_4__.GapSearchContext.maxGap(this);
|
|
180423
|
+
}
|
|
180424
|
+
/** Return true if the curve collection has any primitives other than LineSegment3d and LineString3d */
|
|
180425
|
+
checkForNonLinearPrimitives() {
|
|
180426
|
+
return _internalContexts_CountLinearPartsSearchContext__WEBPACK_IMPORTED_MODULE_5__.CountLinearPartsSearchContext.hasNonLinearPrimitives(this);
|
|
180427
|
+
}
|
|
180399
180428
|
/** Apply transform recursively to children */
|
|
180400
|
-
tryTransformInPlace(transform) {
|
|
180429
|
+
tryTransformInPlace(transform) {
|
|
180430
|
+
return _internalContexts_TransformInPlaceContext__WEBPACK_IMPORTED_MODULE_6__.TransformInPlaceContext.tryTransformInPlace(this, transform);
|
|
180431
|
+
}
|
|
180401
180432
|
/** Return a deep copy. */
|
|
180402
180433
|
clone() {
|
|
180403
180434
|
return _internalContexts_CloneCurvesContext__WEBPACK_IMPORTED_MODULE_7__.CloneCurvesContext.clone(this);
|
|
@@ -180423,15 +180454,18 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
|
|
|
180423
180454
|
}
|
|
180424
180455
|
/**
|
|
180425
180456
|
* Return an array containing only the curve primitives.
|
|
180426
|
-
* @param collectorArray optional array to receive primitives.
|
|
180427
|
-
*
|
|
180457
|
+
* @param collectorArray optional array to receive primitives. If present, new primitives are ADDED (without
|
|
180458
|
+
* clearing the array.)
|
|
180459
|
+
* @param smallestPossiblePrimitives if false, CurvePrimitiveWithDistanceIndex returns only itself. If true,
|
|
180460
|
+
* it recurses to its (otherwise hidden) children.
|
|
180428
180461
|
*/
|
|
180429
180462
|
collectCurvePrimitives(collectorArray, smallestPossiblePrimitives = false, explodeLineStrings = false) {
|
|
180430
180463
|
const results = collectorArray === undefined ? [] : collectorArray;
|
|
180431
180464
|
this.collectCurvePrimitivesGo(results, smallestPossiblePrimitives, explodeLineStrings);
|
|
180432
180465
|
return results;
|
|
180433
180466
|
}
|
|
180434
|
-
/**
|
|
180467
|
+
/**
|
|
180468
|
+
* Return true for planar region types:
|
|
180435
180469
|
* * `Loop`
|
|
180436
180470
|
* * `ParityRegion`
|
|
180437
180471
|
* * `UnionRegion`
|
|
@@ -180439,12 +180473,12 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
|
|
|
180439
180473
|
get isAnyRegionType() {
|
|
180440
180474
|
return this.dgnBoundaryType() === 2 || this.dgnBoundaryType() === 5 || this.dgnBoundaryType() === 4;
|
|
180441
180475
|
}
|
|
180442
|
-
/** Return true for a `Path`, i.e. a chain of curves joined head-to-tail
|
|
180443
|
-
*/
|
|
180476
|
+
/** Return true for a `Path`, i.e. a chain of curves joined head-to-tail */
|
|
180444
180477
|
get isOpenPath() {
|
|
180445
180478
|
return this.dgnBoundaryType() === 1;
|
|
180446
180479
|
}
|
|
180447
|
-
/**
|
|
180480
|
+
/**
|
|
180481
|
+
* Return true for a single-loop planar region type, i.e. `Loop`.
|
|
180448
180482
|
* * This is _not- a test for physical closure of a `Path`
|
|
180449
180483
|
*/
|
|
180450
180484
|
get isClosedPath() {
|
|
@@ -180479,19 +180513,25 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
|
|
|
180479
180513
|
}
|
|
180480
180514
|
return undefined;
|
|
180481
180515
|
}
|
|
180482
|
-
/**
|
|
180516
|
+
/**
|
|
180517
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters
|
|
180518
|
+
* of projection.
|
|
180483
180519
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
180484
180520
|
* @param lowHigh optional receiver for output
|
|
180485
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
180521
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
180522
|
+
* end of the ray.
|
|
180486
180523
|
*/
|
|
180487
180524
|
projectedParameterRange(ray, lowHigh) {
|
|
180488
180525
|
return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
180489
180526
|
}
|
|
180490
180527
|
}
|
|
180491
|
-
/**
|
|
180528
|
+
/**
|
|
180529
|
+
* Shared base class for use by both open and closed paths.
|
|
180492
180530
|
* - A `CurveChain` contains only curvePrimitives. No other paths, loops, or regions allowed.
|
|
180493
|
-
* - A single entry in the chain can in fact contain multiple curve primitives if the entry itself is (for instance)
|
|
180494
|
-
*
|
|
180531
|
+
* - A single entry in the chain can in fact contain multiple curve primitives if the entry itself is (for instance)
|
|
180532
|
+
* `CurveChainWithDistanceIndex`
|
|
180533
|
+
* which presents itself (through method interface) as a CurvePrimitive with well defined mappings from fraction
|
|
180534
|
+
* to xyz, but in fact does all the
|
|
180495
180535
|
* calculations over multiple primitives.
|
|
180496
180536
|
* - The specific derived classes are `Path` and `Loop`
|
|
180497
180537
|
* - `CurveChain` is an intermediate class. It is not instantiable on its own.
|
|
@@ -180524,7 +180564,8 @@ class CurveChain extends CurveCollection {
|
|
|
180524
180564
|
}
|
|
180525
180565
|
return undefined;
|
|
180526
180566
|
}
|
|
180527
|
-
/**
|
|
180567
|
+
/**
|
|
180568
|
+
* Stroke the chain into a simple xyz array.
|
|
180528
180569
|
* @param options tolerance parameters controlling the stroking.
|
|
180529
180570
|
*/
|
|
180530
180571
|
getPackedStrokes(options) {
|
|
@@ -180549,7 +180590,8 @@ class CurveChain extends CurveCollection {
|
|
|
180549
180590
|
return strokes;
|
|
180550
180591
|
}
|
|
180551
180592
|
*/
|
|
180552
|
-
/**
|
|
180593
|
+
/**
|
|
180594
|
+
* Add a child curve.
|
|
180553
180595
|
* * Returns false if the given child is not a CurvePrimitive.
|
|
180554
180596
|
*/
|
|
180555
180597
|
tryAddChild(child) {
|
|
@@ -180565,7 +180607,7 @@ class CurveChain extends CurveCollection {
|
|
|
180565
180607
|
return this._curves[i];
|
|
180566
180608
|
return undefined;
|
|
180567
180609
|
}
|
|
180568
|
-
/**
|
|
180610
|
+
/** Invoke `curve.extendRange(range, transform)` for each child */
|
|
180569
180611
|
extendRange(range, transform) {
|
|
180570
180612
|
for (const curve of this._curves)
|
|
180571
180613
|
curve.extendRange(range, transform);
|
|
@@ -180579,7 +180621,8 @@ class CurveChain extends CurveCollection {
|
|
|
180579
180621
|
curve.reverseInPlace();
|
|
180580
180622
|
this._curves.reverse();
|
|
180581
180623
|
}
|
|
180582
|
-
/**
|
|
180624
|
+
/**
|
|
180625
|
+
* Return the index where target is found in the array of children
|
|
180583
180626
|
* @param alsoSearchProxies whether to also check proxy curves of the children
|
|
180584
180627
|
*/
|
|
180585
180628
|
childIndex(target, alsoSearchProxies) {
|
|
@@ -180598,8 +180641,7 @@ class CurveChain extends CurveCollection {
|
|
|
180598
180641
|
}
|
|
180599
180642
|
return undefined;
|
|
180600
180643
|
}
|
|
180601
|
-
/** Evaluate an indexed curve at a fraction. Return as a CurveLocationDetail that indicates the primitive.
|
|
180602
|
-
*/
|
|
180644
|
+
/** Evaluate an indexed curve at a fraction. Return as a CurveLocationDetail that indicates the primitive. */
|
|
180603
180645
|
primitiveIndexAndFractionToCurveLocationDetailPointAndDerivative(index, fraction, cyclic = false, result) {
|
|
180604
180646
|
const primitive = this.cyclicCurvePrimitive(index, cyclic);
|
|
180605
180647
|
if (primitive) {
|
|
@@ -180614,8 +180656,10 @@ class CurveChain extends CurveCollection {
|
|
|
180614
180656
|
* @public
|
|
180615
180657
|
*/
|
|
180616
180658
|
class BagOfCurves extends CurveCollection {
|
|
180617
|
-
/**
|
|
180618
|
-
isSameGeometryClass(other) {
|
|
180659
|
+
/** Test if `other` is an instance of `BagOfCurves` */
|
|
180660
|
+
isSameGeometryClass(other) {
|
|
180661
|
+
return other instanceof BagOfCurves;
|
|
180662
|
+
}
|
|
180619
180663
|
/** Construct an empty `BagOfCurves` */
|
|
180620
180664
|
constructor() {
|
|
180621
180665
|
super();
|
|
@@ -180624,8 +180668,10 @@ class BagOfCurves extends CurveCollection {
|
|
|
180624
180668
|
this._children = [];
|
|
180625
180669
|
}
|
|
180626
180670
|
/** Return the (reference to) array of children */
|
|
180627
|
-
get children() {
|
|
180628
|
-
|
|
180671
|
+
get children() {
|
|
180672
|
+
return this._children;
|
|
180673
|
+
}
|
|
180674
|
+
/** Create with given curves. */
|
|
180629
180675
|
static create(...data) {
|
|
180630
180676
|
const result = new BagOfCurves();
|
|
180631
180677
|
for (const child of data) {
|
|
@@ -180634,8 +180680,10 @@ class BagOfCurves extends CurveCollection {
|
|
|
180634
180680
|
return result;
|
|
180635
180681
|
}
|
|
180636
180682
|
/** Return the boundary type (0) of a corresponding MicroStation CurveVector */
|
|
180637
|
-
dgnBoundaryType() {
|
|
180638
|
-
|
|
180683
|
+
dgnBoundaryType() {
|
|
180684
|
+
return 0;
|
|
180685
|
+
}
|
|
180686
|
+
/** Invoke `processor.announceBagOfCurves(this, indexInParent);` */
|
|
180639
180687
|
announceToCurveProcessor(processor, indexInParent = -1) {
|
|
180640
180688
|
return processor.announceBagOfCurves(this, indexInParent);
|
|
180641
180689
|
}
|
|
@@ -180659,7 +180707,9 @@ class BagOfCurves extends CurveCollection {
|
|
|
180659
180707
|
return clone;
|
|
180660
180708
|
}
|
|
180661
180709
|
/** Return an empty `BagOfCurves` */
|
|
180662
|
-
cloneEmptyPeer() {
|
|
180710
|
+
cloneEmptyPeer() {
|
|
180711
|
+
return new BagOfCurves();
|
|
180712
|
+
}
|
|
180663
180713
|
/** Add a child */
|
|
180664
180714
|
tryAddChild(child) {
|
|
180665
180715
|
if (child)
|
|
@@ -183846,7 +183896,7 @@ var CurveSearchStatus;
|
|
|
183846
183896
|
CurveSearchStatus[CurveSearchStatus["stoppedAtBoundary"] = 2] = "stoppedAtBoundary";
|
|
183847
183897
|
})(CurveSearchStatus || (CurveSearchStatus = {}));
|
|
183848
183898
|
/**
|
|
183849
|
-
*
|
|
183899
|
+
* Use to update a vector in case where source and prior result are both possibly undefined.
|
|
183850
183900
|
* * Any undefined source returns undefined.
|
|
183851
183901
|
* * For defined source, reuse optional result if available.
|
|
183852
183902
|
* @param source optional source
|
|
@@ -183865,6 +183915,7 @@ function optionalVectorUpdate(source, result) {
|
|
|
183865
183915
|
* @public
|
|
183866
183916
|
*/
|
|
183867
183917
|
class CurveLocationDetail {
|
|
183918
|
+
/** constructor */
|
|
183868
183919
|
constructor() {
|
|
183869
183920
|
this.pointQ = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.createZero();
|
|
183870
183921
|
this.fraction = 0;
|
|
@@ -183880,21 +183931,22 @@ class CurveLocationDetail {
|
|
|
183880
183931
|
this.fraction1 = fraction1;
|
|
183881
183932
|
this.point1 = point1;
|
|
183882
183933
|
}
|
|
183883
|
-
/**
|
|
183934
|
+
/** Test if this pair has fraction1 defined */
|
|
183884
183935
|
get hasFraction1() {
|
|
183885
183936
|
return this.fraction1 !== undefined;
|
|
183886
183937
|
}
|
|
183887
|
-
/**
|
|
183938
|
+
/** Test if this is an isolated point. This is true if intervalRole is any of (undefined, isolated, isolatedAtVertex) */
|
|
183888
183939
|
get isIsolated() {
|
|
183889
183940
|
return this.intervalRole === undefined
|
|
183890
183941
|
|| this.intervalRole === CurveIntervalRole.isolated
|
|
183891
183942
|
|| this.intervalRole === CurveIntervalRole.isolatedAtVertex;
|
|
183892
183943
|
}
|
|
183893
|
-
/**
|
|
183944
|
+
/** Return the fraction delta. (0 if no fraction1) */
|
|
183894
183945
|
get fractionDelta() {
|
|
183895
183946
|
return this.fraction1 !== undefined ? this.fraction1 - this.fraction : 0.0;
|
|
183896
183947
|
}
|
|
183897
|
-
/**
|
|
183948
|
+
/**
|
|
183949
|
+
* If (fraction1, point1) are defined, make them the primary (and only) data.
|
|
183898
183950
|
* * No action if undefined.
|
|
183899
183951
|
*/
|
|
183900
183952
|
collapseToEnd() {
|
|
@@ -183907,14 +183959,16 @@ class CurveLocationDetail {
|
|
|
183907
183959
|
this.point1 = undefined;
|
|
183908
183960
|
}
|
|
183909
183961
|
}
|
|
183910
|
-
/**
|
|
183962
|
+
/**
|
|
183963
|
+
* Make (fraction, point) the primary (and only) data.
|
|
183911
183964
|
* * No action if undefined.
|
|
183912
183965
|
*/
|
|
183913
183966
|
collapseToStart() {
|
|
183914
183967
|
this.fraction1 = undefined;
|
|
183915
183968
|
this.point1 = undefined;
|
|
183916
183969
|
}
|
|
183917
|
-
/**
|
|
183970
|
+
/**
|
|
183971
|
+
* Return a complete copy, WITH CAVEATS . . .
|
|
183918
183972
|
* * curve member is copied as a reference.
|
|
183919
183973
|
* * point and vector members are cloned.
|
|
183920
183974
|
*/
|
|
@@ -183958,22 +184012,19 @@ class CurveLocationDetail {
|
|
|
183958
184012
|
setFR(fraction, ray, a = 0) {
|
|
183959
184013
|
return this.setFP(fraction, ray.origin, ray.direction, a);
|
|
183960
184014
|
}
|
|
183961
|
-
/** Set the CurvePrimitive pointer, leaving all other properties untouched.
|
|
183962
|
-
*/
|
|
184015
|
+
/** Set the CurvePrimitive pointer, leaving all other properties untouched. */
|
|
183963
184016
|
setCurve(curve) { this.curve = curve; }
|
|
183964
184017
|
/** record the distance from the CurveLocationDetail's point to the parameter point. */
|
|
183965
184018
|
setDistanceTo(point) {
|
|
183966
184019
|
this.a = this.point.distance(point);
|
|
183967
184020
|
}
|
|
183968
|
-
/**
|
|
183969
|
-
*/
|
|
184021
|
+
/** Create with a CurvePrimitive pointer but no coordinate data. */
|
|
183970
184022
|
static create(curve, result) {
|
|
183971
184023
|
result = result ? result : new CurveLocationDetail();
|
|
183972
184024
|
result.curve = curve;
|
|
183973
184025
|
return result;
|
|
183974
184026
|
}
|
|
183975
|
-
/**
|
|
183976
|
-
*/
|
|
184027
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates. */
|
|
183977
184028
|
static createCurveFractionPoint(curve, fraction, point, result) {
|
|
183978
184029
|
result = result ? result : new CurveLocationDetail();
|
|
183979
184030
|
result.curve = curve;
|
|
@@ -183984,9 +184035,7 @@ class CurveLocationDetail {
|
|
|
183984
184035
|
result.curveSearchStatus = undefined;
|
|
183985
184036
|
return result;
|
|
183986
184037
|
}
|
|
183987
|
-
/**
|
|
183988
|
-
* Create a new detail with only ray, fraction, and point.
|
|
183989
|
-
*/
|
|
184038
|
+
/** Create a new detail with only ray, fraction, and point. */
|
|
183990
184039
|
static createRayFractionPoint(ray, fraction, point, result) {
|
|
183991
184040
|
result = result ? result : new CurveLocationDetail();
|
|
183992
184041
|
result.fraction = fraction;
|
|
@@ -183994,8 +184043,7 @@ class CurveLocationDetail {
|
|
|
183994
184043
|
result.point.setFromPoint3d(point);
|
|
183995
184044
|
return result;
|
|
183996
184045
|
}
|
|
183997
|
-
/**
|
|
183998
|
-
*/
|
|
184046
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates */
|
|
183999
184047
|
static createCurveFractionPointDistanceCurveSearchStatus(curve, fraction, point, distance, status, result) {
|
|
184000
184048
|
result = result ? result : new CurveLocationDetail();
|
|
184001
184049
|
result.curve = curve;
|
|
@@ -184006,9 +184054,7 @@ class CurveLocationDetail {
|
|
|
184006
184054
|
result.curveSearchStatus = status;
|
|
184007
184055
|
return result;
|
|
184008
184056
|
}
|
|
184009
|
-
/**
|
|
184010
|
-
* *
|
|
184011
|
-
*/
|
|
184057
|
+
/** Create with curveSearchStatus affected by allowExtension. */
|
|
184012
184058
|
static createConditionalMoveSignedDistance(allowExtension, curve, startFraction, endFraction, requestedSignedDistance, result) {
|
|
184013
184059
|
let a = requestedSignedDistance;
|
|
184014
184060
|
let status = CurveSearchStatus.success;
|
|
@@ -184034,8 +184080,7 @@ class CurveLocationDetail {
|
|
|
184034
184080
|
result.curveSearchStatus = status;
|
|
184035
184081
|
return result;
|
|
184036
184082
|
}
|
|
184037
|
-
/**
|
|
184038
|
-
*/
|
|
184083
|
+
/** Create with CurvePrimitive pointer and fraction for evaluation. */
|
|
184039
184084
|
static createCurveEvaluatedFraction(curve, fraction, result) {
|
|
184040
184085
|
result = result ? result : new CurveLocationDetail();
|
|
184041
184086
|
result.curve = curve;
|
|
@@ -184046,8 +184091,7 @@ class CurveLocationDetail {
|
|
|
184046
184091
|
result.a = 0.0;
|
|
184047
184092
|
return result;
|
|
184048
184093
|
}
|
|
184049
|
-
/**
|
|
184050
|
-
*/
|
|
184094
|
+
/** Create with CurvePrimitive pointer and fraction for evaluation. */
|
|
184051
184095
|
static createCurveEvaluatedFractionPointAndDerivative(curve, fraction, result) {
|
|
184052
184096
|
result = result ? result : new CurveLocationDetail();
|
|
184053
184097
|
result.curve = curve;
|
|
@@ -184059,8 +184103,7 @@ class CurveLocationDetail {
|
|
|
184059
184103
|
result.a = 0.0;
|
|
184060
184104
|
return result;
|
|
184061
184105
|
}
|
|
184062
|
-
/**
|
|
184063
|
-
*/
|
|
184106
|
+
/** Create with CurvePrimitive pointer and 2 fractions for evaluation. */
|
|
184064
184107
|
static createCurveEvaluatedFractionFraction(curve, fraction0, fraction1, result) {
|
|
184065
184108
|
result = result ? result : new CurveLocationDetail();
|
|
184066
184109
|
result.curve = curve;
|
|
@@ -184073,8 +184116,7 @@ class CurveLocationDetail {
|
|
|
184073
184116
|
result.a = 0.0;
|
|
184074
184117
|
return result;
|
|
184075
184118
|
}
|
|
184076
|
-
/**
|
|
184077
|
-
*/
|
|
184119
|
+
/** Create with CurvePrimitive pointer, fraction, and point coordinates. */
|
|
184078
184120
|
static createCurveFractionPointDistance(curve, fraction, point, a, result) {
|
|
184079
184121
|
result = result ? result : new CurveLocationDetail();
|
|
184080
184122
|
result.curve = curve;
|
|
@@ -184085,7 +184127,8 @@ class CurveLocationDetail {
|
|
|
184085
184127
|
result.curveSearchStatus = undefined;
|
|
184086
184128
|
return result;
|
|
184087
184129
|
}
|
|
184088
|
-
/**
|
|
184130
|
+
/**
|
|
184131
|
+
* Update or create if closer than current contents.
|
|
184089
184132
|
* @param curve candidate curve
|
|
184090
184133
|
* @param fraction candidate fraction
|
|
184091
184134
|
* @param point candidate point
|
|
@@ -184099,7 +184142,7 @@ class CurveLocationDetail {
|
|
|
184099
184142
|
return true;
|
|
184100
184143
|
}
|
|
184101
184144
|
/**
|
|
184102
|
-
*
|
|
184145
|
+
* Exchange the (fraction,fraction1) and (point, point1) pairs.
|
|
184103
184146
|
* * (Skip each swap if its "1" value is undefined)
|
|
184104
184147
|
*/
|
|
184105
184148
|
swapFractionsAndPoints() {
|
|
@@ -184115,7 +184158,7 @@ class CurveLocationDetail {
|
|
|
184115
184158
|
}
|
|
184116
184159
|
}
|
|
184117
184160
|
/**
|
|
184118
|
-
*
|
|
184161
|
+
* Return the fraction where f falls between fraction and fraction1.
|
|
184119
184162
|
* * ASSUME fraction1 defined
|
|
184120
184163
|
*/
|
|
184121
184164
|
inverseInterpolateFraction(f, defaultFraction = 0) {
|
|
@@ -184138,7 +184181,8 @@ class CurveLocationDetail {
|
|
|
184138
184181
|
return detailB;
|
|
184139
184182
|
}
|
|
184140
184183
|
}
|
|
184141
|
-
/**
|
|
184184
|
+
/**
|
|
184185
|
+
* Enumeration of configurations for intersections and min/max distance-between-curve
|
|
184142
184186
|
* @public
|
|
184143
184187
|
*/
|
|
184144
184188
|
var CurveCurveApproachType;
|
|
@@ -184152,7 +184196,8 @@ var CurveCurveApproachType;
|
|
|
184152
184196
|
/** Completely parallel geometry. */
|
|
184153
184197
|
CurveCurveApproachType[CurveCurveApproachType["ParallelGeometry"] = 3] = "ParallelGeometry";
|
|
184154
184198
|
})(CurveCurveApproachType || (CurveCurveApproachType = {}));
|
|
184155
|
-
/**
|
|
184199
|
+
/**
|
|
184200
|
+
* A pair of CurveLocationDetail.
|
|
184156
184201
|
* @public
|
|
184157
184202
|
*/
|
|
184158
184203
|
class CurveLocationDetailPair {
|
|
@@ -184167,7 +184212,8 @@ class CurveLocationDetailPair {
|
|
|
184167
184212
|
result.detailB = detailB;
|
|
184168
184213
|
return result;
|
|
184169
184214
|
}
|
|
184170
|
-
/**
|
|
184215
|
+
/**
|
|
184216
|
+
* Create a curve detail pair using references to two CurveLocationDetails.
|
|
184171
184217
|
* * optionally install in reversed positions
|
|
184172
184218
|
*/
|
|
184173
184219
|
static createCaptureOptionalReverse(detailA, detailB, reversed, result) {
|
|
@@ -184246,20 +184292,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
184246
184292
|
|
|
184247
184293
|
|
|
184248
184294
|
/**
|
|
184249
|
-
* A curve primitive is bounded
|
|
184295
|
+
* A curve primitive is bounded.
|
|
184250
184296
|
* A curve primitive maps fractions in 0..1 to points in space.
|
|
184251
184297
|
* As the fraction proceeds from 0 towards 1, the point moves "forward" along the curve.
|
|
184252
184298
|
* True distance along the curve is not always strictly proportional to fraction.
|
|
184253
|
-
* * LineSegment3d always has proportional fraction and distance
|
|
184254
|
-
* *
|
|
184255
|
-
* *
|
|
184256
|
-
* * A Spiral3d is proportional
|
|
184299
|
+
* * A LineSegment3d always has proportional fraction and distance.
|
|
184300
|
+
* * An Arc3d which is true circular has proportional fraction and distance.
|
|
184301
|
+
* * A LineString3d is not proportional (except for special case of all segments of equal length).
|
|
184302
|
+
* * A Spiral3d is proportional.
|
|
184257
184303
|
* * A BsplineCurve3d is only proportional for special cases.
|
|
184258
|
-
*
|
|
184259
|
-
*
|
|
184304
|
+
* For fractions outside 0..1, the curve primitive class may either (a) return the near endpoint or (b) evaluate
|
|
184305
|
+
* an extended curve.
|
|
184260
184306
|
* @public
|
|
184261
184307
|
*/
|
|
184262
184308
|
class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.GeometryQuery {
|
|
184309
|
+
/** Constructor */
|
|
184263
184310
|
constructor() {
|
|
184264
184311
|
super();
|
|
184265
184312
|
/** String name for schema properties */
|
|
@@ -184287,30 +184334,35 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184287
184334
|
const b = data.vectorU.magnitude();
|
|
184288
184335
|
return _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.conditionalDivideFraction(a, b * b * b);
|
|
184289
184336
|
}
|
|
184290
|
-
/**
|
|
184337
|
+
/**
|
|
184338
|
+
* Construct a frenet frame:
|
|
184291
184339
|
* * origin at the point on the curve
|
|
184292
184340
|
* * x axis is unit vector along the curve (tangent)
|
|
184293
|
-
* * y axis is perpendicular and in the plane of the osculating circle.
|
|
184294
|
-
* * z axis perpendicular to those.
|
|
184341
|
+
* * y axis is perpendicular and in the plane of the osculating circle. y axis is called "main normal"
|
|
184342
|
+
* * z axis perpendicular to those. z axis is called "bi-normal"
|
|
184295
184343
|
*/
|
|
184296
184344
|
fractionToFrenetFrame(fraction, result) {
|
|
184297
184345
|
const plane = this.fractionToPointAnd2Derivatives(fraction);
|
|
184298
184346
|
if (!plane)
|
|
184299
184347
|
return undefined;
|
|
184348
|
+
// first derivative (plane.vectorU) and second derivative (plane.vectorV) are not essentially
|
|
184349
|
+
// perpendicular so we use createRigidFromColumns to make 3 perpendicular vectors.
|
|
184300
184350
|
let axes = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createRigidFromColumns(plane.vectorU, plane.vectorV, _Geometry__WEBPACK_IMPORTED_MODULE_2__.AxisOrder.XYZ);
|
|
184301
184351
|
if (axes)
|
|
184302
184352
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_4__.Transform.createRefs(plane.origin, axes, result);
|
|
184303
|
-
// 2nd derivative not distinct
|
|
184353
|
+
// 2nd derivative not distinct. for example if curve is linear at fraction so second derivative is 0.
|
|
184354
|
+
// in this case we find perpendicular vector to plane.vectorU and pass it to createRigidFromColumns.
|
|
184304
184355
|
const perpVector = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createPerpendicularVectorFavorXYPlane(plane.vectorU, plane.vectorV);
|
|
184305
184356
|
axes = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createRigidFromColumns(plane.vectorU, perpVector, _Geometry__WEBPACK_IMPORTED_MODULE_2__.AxisOrder.XYZ);
|
|
184306
184357
|
if (axes)
|
|
184307
184358
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_4__.Transform.createRefs(plane.origin, axes, result);
|
|
184308
184359
|
return undefined;
|
|
184309
184360
|
}
|
|
184310
|
-
/**
|
|
184311
|
-
*
|
|
184312
|
-
* *
|
|
184313
|
-
* *
|
|
184361
|
+
/**
|
|
184362
|
+
* Construct signed distance from a point on the planar curve to its center of curvature (in xy only).
|
|
184363
|
+
* * Positive distance means the center is to the left of the curve at fraction.
|
|
184364
|
+
* * Negative distance means the center is to the right of the curve at fraction.
|
|
184365
|
+
* * Zero distance means curve is linear at fraction.
|
|
184314
184366
|
*/
|
|
184315
184367
|
fractionToSignedXYRadiusOfCurvature(fraction) {
|
|
184316
184368
|
const plane = this.fractionToPointAnd2Derivatives(fraction);
|
|
@@ -184335,7 +184387,7 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184335
184387
|
return ray.fractionToPoint(distance);
|
|
184336
184388
|
}
|
|
184337
184389
|
/**
|
|
184338
|
-
*
|
|
184390
|
+
* Return the length of the curve.
|
|
184339
184391
|
* * Curve length is always positive.
|
|
184340
184392
|
*/
|
|
184341
184393
|
curveLength() {
|
|
@@ -184344,9 +184396,9 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184344
184396
|
return context.getSum();
|
|
184345
184397
|
}
|
|
184346
184398
|
/**
|
|
184347
|
-
* Returns a (high accuracy) length of the curve between fractional positions
|
|
184399
|
+
* Returns a (high accuracy) length of the curve between fractional positions.
|
|
184348
184400
|
* * Curve length is always positive.
|
|
184349
|
-
* * Default implementation applies a generic
|
|
184401
|
+
* * Default implementation applies a generic Gaussian integration.
|
|
184350
184402
|
* * Most curve classes (certainly LineSegment, LineString, Arc) are expected to provide efficient implementations.
|
|
184351
184403
|
*/
|
|
184352
184404
|
curveLengthBetweenFractions(fraction0, fraction1) {
|
|
@@ -184354,7 +184406,7 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184354
184406
|
return 0.0;
|
|
184355
184407
|
const scale = this.getFractionToDistanceScale();
|
|
184356
184408
|
if (scale !== undefined) {
|
|
184357
|
-
// We are in luck! simple proportions determine it all
|
|
184409
|
+
// We are in luck! simple proportions determine it all !!!
|
|
184358
184410
|
// (for example, a LineSegment3d or a circular arc)
|
|
184359
184411
|
const totalLength = this.curveLength();
|
|
184360
184412
|
return Math.abs((fraction1 - fraction0) * totalLength);
|
|
@@ -184365,14 +184417,14 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184365
184417
|
}
|
|
184366
184418
|
/**
|
|
184367
184419
|
* Returns a (high accuracy) range of the curve between fractional positions
|
|
184368
|
-
* * Default implementation returns
|
|
184420
|
+
* * Default implementation returns the range of the curve from clonePartialCurve
|
|
184369
184421
|
*/
|
|
184370
184422
|
rangeBetweenFractions(fraction0, fraction1, transform) {
|
|
184371
184423
|
return this.rangeBetweenFractionsByClone(fraction0, fraction1, transform);
|
|
184372
184424
|
}
|
|
184373
184425
|
/**
|
|
184374
184426
|
* Returns a (high accuracy) range of the curve between fractional positions
|
|
184375
|
-
* * Default implementation returns
|
|
184427
|
+
* * Default implementation returns the range of the curve from clonePartialCurve
|
|
184376
184428
|
*/
|
|
184377
184429
|
rangeBetweenFractionsByClone(fraction0, fraction1, transform) {
|
|
184378
184430
|
if (fraction0 === fraction1)
|
|
@@ -184386,12 +184438,16 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184386
184438
|
* Returns an approximate range based on a fixed number of evaluations
|
|
184387
184439
|
* * Default implementation returns a range determined by evaluating a specified number of points on the curve.
|
|
184388
184440
|
* * Optional evaluate again at interval midpoints and extrapolate any increase
|
|
184389
|
-
* * For a smooth curve, Richardson extrapolation suggests each subdivision moves 3/4 of the way to final. So
|
|
184390
|
-
*
|
|
184441
|
+
* * For a smooth curve, Richardson extrapolation suggests each subdivision moves 3/4 of the way to final. So
|
|
184442
|
+
* extrapolationFactor of 1/3 gets speculatively moves closer to the tight range, and larger multipliers increase
|
|
184443
|
+
* confidence in being safely larger.
|
|
184444
|
+
* * This function is faster version to compute the range of a portion of a curve (because some curves can be
|
|
184445
|
+
* expensive to compute the partial curve and/or to compute the partial curve's range.
|
|
184391
184446
|
* @param fraction0 start fraction for evaluation
|
|
184392
184447
|
* @param fraction1 end fraction for evaluation
|
|
184393
184448
|
* @param count number of points to evaluate
|
|
184394
|
-
* @param extrapolationFactor if positive, evaluate again at interval midpoints and apply this fraction multiplier
|
|
184449
|
+
* @param extrapolationFactor if positive, evaluate again at interval midpoints and apply this fraction multiplier
|
|
184450
|
+
* to any increase in size.
|
|
184395
184451
|
*/
|
|
184396
184452
|
rangeBetweenFractionsByCount(fraction0, fraction1, count, transform, extrapolationFactor = 0.0) {
|
|
184397
184453
|
const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__.Range3d.createNull();
|
|
@@ -184416,8 +184472,8 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184416
184472
|
evaluateSteps(fraction0 + globalFractionStep, globalFractionStep, interiorCount);
|
|
184417
184473
|
}
|
|
184418
184474
|
if (extrapolationFactor > 0.0) {
|
|
184419
|
-
// Evaluate at midpoints. Where this makes the range larger, apply extrapolationFactor to move it to safer
|
|
184420
|
-
// same interior step, but shift to interval midpoints
|
|
184475
|
+
// Evaluate at midpoints. Where this makes the range larger, apply extrapolationFactor to move it to safer
|
|
184476
|
+
// excess value. same interior step, but shift to interval midpoints.
|
|
184421
184477
|
const baseRange = range.clone();
|
|
184422
184478
|
const interiorCount1 = interiorCount + 1;
|
|
184423
184479
|
const localFraction0 = 0.5 / interiorCount1; // we only evaluate at new midpoints.
|
|
@@ -184428,13 +184484,13 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184428
184484
|
return range;
|
|
184429
184485
|
}
|
|
184430
184486
|
/**
|
|
184431
|
-
*
|
|
184432
|
-
* * Run an integration (with a default gaussian quadrature) with a fixed fractional step
|
|
184487
|
+
* Run an integration (with a default Gaussian quadrature) with a fixed fractional step
|
|
184433
184488
|
* * This is typically called by specific curve type implementations of curveLengthBetweenFractions.
|
|
184434
|
-
*
|
|
184489
|
+
* * For example, in Arc3d implementation of curveLengthBetweenFractions:
|
|
184435
184490
|
* * If the Arc3d is true circular, it the arc is true circular, use the direct `arcLength = radius * sweepRadians`
|
|
184436
|
-
* * If the Arc3d is not true circular, call this method with an interval count appropriate to eccentricity and
|
|
184437
|
-
*
|
|
184491
|
+
* * If the Arc3d is not true circular, call this method with an interval count appropriate to eccentricity and
|
|
184492
|
+
* sweepRadians.
|
|
184493
|
+
* @returns Returns the curve length via an integral estimated by numerical quadrature between the fractional positions.
|
|
184438
184494
|
* @param fraction0 start fraction for integration
|
|
184439
184495
|
* @param fraction1 end fraction for integration
|
|
184440
184496
|
* @param numInterval number of quadrature intervals
|
|
@@ -184450,33 +184506,39 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184450
184506
|
return Math.abs(context.getSum());
|
|
184451
184507
|
}
|
|
184452
184508
|
/**
|
|
184453
|
-
*
|
|
184454
|
-
* * (Attempt to) find a position on the curve at a signed distance from start fraction.
|
|
184509
|
+
* (Attempt to) find a position on the curve at a signed distance from start fraction.
|
|
184455
184510
|
* * Return the position as a CurveLocationDetail.
|
|
184456
184511
|
* * In the `CurveLocationDetail`, record:
|
|
184457
184512
|
* * `fraction` = fractional position
|
|
184458
184513
|
* * `point` = coordinates of the point
|
|
184459
|
-
* * `a` = (signed!) distance moved. If `allowExtension` is false and the move reached the start or end of the
|
|
184514
|
+
* * `a` = (signed!) distance moved. If `allowExtension` is false and the move reached the start or end of the
|
|
184515
|
+
* curve, this distance is smaller than the requested signedDistance.
|
|
184460
184516
|
* * `curveSearchStatus` indicates one of:
|
|
184461
184517
|
* * `error` (unusual) computation failed not supported for this curve.
|
|
184462
184518
|
* * `success` full movement completed
|
|
184463
184519
|
* * `stoppedAtBoundary` partial movement completed. This can be due to either
|
|
184464
184520
|
* * `allowExtension` parameter sent as `false`
|
|
184465
184521
|
* * the curve type (e.g. bspline) does not support extended range.
|
|
184466
|
-
* * if `allowExtension` is true, movement may still end at the startPoint or end point for curves that do not support
|
|
184467
|
-
*
|
|
184522
|
+
* * if `allowExtension` is true, movement may still end at the startPoint or end point for curves that do not support
|
|
184523
|
+
* extended geometry (specifically bsplines)
|
|
184524
|
+
* * if the curve returns a value (i.e. not `undefined`) for `curve.getFractionToDistanceScale()`, the base class
|
|
184525
|
+
* carries out the computation
|
|
184468
184526
|
* and returns a final location.
|
|
184469
184527
|
* * LineSegment3d relies on this.
|
|
184470
|
-
* * If the curve does not implement the computation or the curve has zero length, the returned `CurveLocationDetail`
|
|
184528
|
+
* * If the curve does not implement the computation or the curve has zero length, the returned `CurveLocationDetail`
|
|
184529
|
+
* has
|
|
184471
184530
|
* * `fraction` = the value of `startFraction`
|
|
184472
184531
|
* * `point` = result of `curve.fractionToPoint(startFraction)`
|
|
184473
184532
|
* * `a` = 0
|
|
184474
184533
|
* * `curveStartState` = `CurveSearchStatus.error`
|
|
184475
184534
|
* @param startFraction fractional position where the move starts
|
|
184476
184535
|
* @param signedDistance distance to move. Negative distance is backwards in the fraction space
|
|
184477
|
-
* @param allowExtension if true, all the move to go beyond the startPoint or endpoint of the curve. If false, do not
|
|
184536
|
+
* @param allowExtension if true, all the move to go beyond the startPoint or endpoint of the curve. If false, do not
|
|
184537
|
+
* allow movement beyond the startPoint or endpoint
|
|
184478
184538
|
* @param result optional result.
|
|
184479
|
-
* @returns A CurveLocationDetail annotated as above.
|
|
184539
|
+
* @returns A CurveLocationDetail annotated as above. Note that if the curve does not support the calculation, there is
|
|
184540
|
+
* still a result which contains the point at the input startFraction, with failure indicated in the `curveStartState`
|
|
184541
|
+
* member
|
|
184480
184542
|
*/
|
|
184481
184543
|
moveSignedDistanceFromFraction(startFraction, signedDistance, allowExtension, result) {
|
|
184482
184544
|
const scale = this.getFractionToDistanceScale();
|
|
@@ -184496,13 +184558,14 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184496
184558
|
* Generic algorithm to search for point at signed distance from a fractional startPoint.
|
|
184497
184559
|
* * This will work for well for smooth curves.
|
|
184498
184560
|
* * Curves with tangent or other low-order-derivative discontinuities may need to implement specialized algorithms.
|
|
184499
|
-
* * We need to find an endFraction which is the end-of-interval (usually upper) limit of integration of the tangent
|
|
184561
|
+
* * We need to find an endFraction which is the end-of-interval (usually upper) limit of integration of the tangent
|
|
184562
|
+
* magnitude from startFraction to endFraction
|
|
184500
184563
|
* * That integral is a function of endFraction.
|
|
184501
184564
|
* * The derivative of that integral with respect to end fraction is the tangent magnitude at end fraction.
|
|
184502
184565
|
* * Use that function and (easily evaluated!) derivative for a Newton iteration
|
|
184503
|
-
* * TO ALL WHO HAVE FUZZY MEMORIES OF CALCULUS CLASS: "The derivative of the integral wrt upper limit is the value
|
|
184504
|
-
*
|
|
184505
|
-
*
|
|
184566
|
+
* * TO ALL WHO HAVE FUZZY MEMORIES OF CALCULUS CLASS: "The derivative of the integral wrt upper limit is the value
|
|
184567
|
+
* of the integrand there" is the fundamental theorem of integral calculus !!! The fundamental theorem is not just
|
|
184568
|
+
* an abstraction !!! It is being used here in its barest possible form !!!
|
|
184506
184569
|
* * See https://en.wikipedia.org/wiki/Fundamental_theorem_of_calculus
|
|
184507
184570
|
* @param startFraction
|
|
184508
184571
|
* @param signedDistance
|
|
@@ -184583,20 +184646,25 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184583
184646
|
return result;
|
|
184584
184647
|
}
|
|
184585
184648
|
/**
|
|
184586
|
-
* * Returns true if the curve
|
|
184649
|
+
* * Returns true if the curve can be easily extended past its start/end point (i.e., beyond the usual
|
|
184650
|
+
* fraction space [0,1]). Otherwise, returns false.
|
|
184587
184651
|
* * Base class default implementation returns false.
|
|
184588
|
-
* * These
|
|
184652
|
+
* * These classes (and perhaps others in the future) will return true:
|
|
184589
184653
|
* * LineSegment3d
|
|
184590
184654
|
* * LineString3d
|
|
184591
184655
|
* * Arc3d
|
|
184592
184656
|
*/
|
|
184593
|
-
get isExtensibleFractionSpace() {
|
|
184594
|
-
|
|
184595
|
-
|
|
184657
|
+
get isExtensibleFractionSpace() {
|
|
184658
|
+
return false;
|
|
184659
|
+
}
|
|
184660
|
+
/**
|
|
184661
|
+
* Search for a point on the curve that is closest to the spacePoint.
|
|
184596
184662
|
* * If the space point is exactly on the curve, this is the reverse of fractionToPoint.
|
|
184597
|
-
* * Since CurvePrimitive should always have start and end available as candidate points, this method should always
|
|
184663
|
+
* * Since CurvePrimitive should always have start and end available as candidate points, this method should always
|
|
184664
|
+
* succeed
|
|
184598
184665
|
* @param spacePoint point in space
|
|
184599
|
-
* @param extend true to extend the curve (if possible), false for no extend, single CurveExtendOptions (for both
|
|
184666
|
+
* @param extend true to extend the curve (if possible), false for no extend, single CurveExtendOptions (for both
|
|
184667
|
+
* directions), or array of distinct CurveExtendOptions for start and end.
|
|
184600
184668
|
* @returns Returns a CurveLocationDetail structure that holds the details of the close point.
|
|
184601
184669
|
*/
|
|
184602
184670
|
closestPoint(spacePoint, extend) {
|
|
@@ -184607,14 +184675,16 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184607
184675
|
/**
|
|
184608
184676
|
* Find intervals of this curvePrimitive that are interior to a clipper
|
|
184609
184677
|
* @param clipper clip structure (e.g. clip planes)
|
|
184610
|
-
* @param announce (optional) function to be called announcing fractional intervals
|
|
184678
|
+
* @param announce (optional) function to be called announcing fractional intervals
|
|
184679
|
+
* `announce(fraction0, fraction1, curvePrimitive)`
|
|
184611
184680
|
* @returns true if any "in" segments are announced.
|
|
184612
184681
|
*/
|
|
184613
184682
|
announceClipIntervals(_clipper, _announce) {
|
|
184614
184683
|
// DEFAULT IMPLEMENTATION -- no interior parts
|
|
184615
184684
|
return false;
|
|
184616
184685
|
}
|
|
184617
|
-
/**
|
|
184686
|
+
/**
|
|
184687
|
+
* Return (if possible) a curve primitive which is a portion of this curve.
|
|
184618
184688
|
* @param _fractionA [in] start fraction
|
|
184619
184689
|
* @param _fractionB [in] end fraction
|
|
184620
184690
|
*/
|
|
@@ -184622,8 +184692,8 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184622
184692
|
return undefined;
|
|
184623
184693
|
}
|
|
184624
184694
|
/**
|
|
184625
|
-
*
|
|
184626
|
-
*
|
|
184695
|
+
* If the curve primitive has distance-along-curve strictly proportional to curve fraction, return the scale factor.
|
|
184696
|
+
* If distance-along-the-curve is not proportional, return undefined.
|
|
184627
184697
|
* * When defined, the scale factor is always the length of the curve.
|
|
184628
184698
|
* * This scale factor is typically available for these curve types:
|
|
184629
184699
|
* * * All `LineSegment3d`
|
|
@@ -184634,12 +184704,14 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184634
184704
|
* * * bspline and bezier curves
|
|
184635
184705
|
* @returns scale factor or undefined
|
|
184636
184706
|
*/
|
|
184637
|
-
getFractionToDistanceScale() {
|
|
184707
|
+
getFractionToDistanceScale() {
|
|
184708
|
+
return undefined;
|
|
184709
|
+
}
|
|
184638
184710
|
/**
|
|
184639
|
-
* Compute intersections with a plane.
|
|
184711
|
+
* Compute intersections of the curve with a plane.
|
|
184640
184712
|
* * The intersections are appended to the result array.
|
|
184641
|
-
* * The base class implementation emits strokes to an AppendPlaneIntersectionStrokeHandler object, which uses a
|
|
184642
|
-
*
|
|
184713
|
+
* * The base class implementation emits strokes to an AppendPlaneIntersectionStrokeHandler object, which uses a
|
|
184714
|
+
* Newton iteration to get high-accuracy intersection points within strokes.
|
|
184643
184715
|
* * Derived classes should override this default implementation if there are easy analytic solutions.
|
|
184644
184716
|
* * Derived classes are free to implement extended intersections (e.g. arc!!!)
|
|
184645
184717
|
* @param plane The plane to be intersected.
|
|
@@ -184656,8 +184728,8 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184656
184728
|
* Examine contents of an array of CurveLocationDetail.
|
|
184657
184729
|
* Filter the intersections according to the parameters.
|
|
184658
184730
|
* @param allowExtend if false, remove points on the extension.
|
|
184659
|
-
* @param applySnappedCoordinates if true, change the stored fractions and coordinates to exact end values.
|
|
184660
|
-
*
|
|
184731
|
+
* @param applySnappedCoordinates if true, change the stored fractions and coordinates to exact end values.
|
|
184732
|
+
* Otherwise use the exact values only for purpose of updating the curveIntervalRole.
|
|
184661
184733
|
* @param startEndFractionTolerance if nonzero, adjust fraction to 0 or 1 with this tolerance.
|
|
184662
184734
|
* @param startEndXYZTolerance if nonzero, adjust to endpoint with this tolerance.
|
|
184663
184735
|
* @internal
|
|
@@ -184720,12 +184792,16 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184720
184792
|
if (acceptIndex < n0)
|
|
184721
184793
|
details.length = acceptIndex;
|
|
184722
184794
|
}
|
|
184723
|
-
/**
|
|
184724
|
-
startPoint(result) {
|
|
184725
|
-
|
|
184726
|
-
|
|
184795
|
+
/** Return the startPoint of the primitive. The default implementation returns fractionToPoint(0.0) */
|
|
184796
|
+
startPoint(result) {
|
|
184797
|
+
return this.fractionToPoint(0.0, result);
|
|
184798
|
+
}
|
|
184799
|
+
/** Return the end point of the primitive. The default implementation returns fractionToPoint(1.0) */
|
|
184800
|
+
endPoint(result) {
|
|
184801
|
+
return this.fractionToPoint(1.0, result);
|
|
184802
|
+
}
|
|
184727
184803
|
/**
|
|
184728
|
-
*
|
|
184804
|
+
* Attach StrokeCountMap structure to this primitive (and recursively to any children)
|
|
184729
184805
|
* * Base class implementation (here) gets the simple count from computeStrokeCountForOptions and attaches it.
|
|
184730
184806
|
* * LineString3d, arc3d, BezierCurve3d, BezierCurve3dH accept that default.
|
|
184731
184807
|
* * Subdivided primitives (linestring, bspline curve) implement themselves and attach a StrokeCountMap containing the
|
|
@@ -184733,7 +184809,8 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184733
184809
|
* * For CurvePrimitiveWithDistanceIndex, the top level gets (only) a total count, and each child gets
|
|
184734
184810
|
* its own StrokeCountMap with appropriate structure.
|
|
184735
184811
|
* @param options StrokeOptions that determine count
|
|
184736
|
-
* @param parentStrokeMap optional map from parent. Its count, curveLength, and a1 values are increased with count
|
|
184812
|
+
* @param parentStrokeMap optional map from parent. Its count, curveLength, and a1 values are increased with count
|
|
184813
|
+
* and distance from this primitive.
|
|
184737
184814
|
* @return sum of `a0+this.curveLength()`, for use as `a0` of successor in chain.
|
|
184738
184815
|
*/
|
|
184739
184816
|
computeAndAttachRecursiveStrokeCounts(options, parentMap) {
|
|
@@ -184742,8 +184819,9 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184742
184819
|
CurvePrimitive.installStrokeCountMap(this, _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_12__.StrokeCountMap.createWithCurvePrimitive(this, n, a, 0, a), parentMap);
|
|
184743
184820
|
}
|
|
184744
184821
|
/**
|
|
184745
|
-
*
|
|
184746
|
-
* * Base class implementation (here) gets the simple count from computeStrokeCountForOptions and strokes at
|
|
184822
|
+
* Evaluate strokes at fractions indicated in a StrokeCountMap.
|
|
184823
|
+
* * Base class implementation (here) gets the simple count from computeStrokeCountForOptions and strokes at
|
|
184824
|
+
* uniform fractions.
|
|
184747
184825
|
* * LineString3d, arc3d, BezierCurve3d, BezierCurve3dH accept that default.
|
|
184748
184826
|
* * Subdivided primitives (linestring, bspline curve) implement themselves and evaluate within components.
|
|
184749
184827
|
* * CurvePrimitiveWithDistanceIndex recurses to its children.
|
|
@@ -184763,7 +184841,7 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184763
184841
|
return linestring.numPoints() - numPoint0;
|
|
184764
184842
|
}
|
|
184765
184843
|
/**
|
|
184766
|
-
*
|
|
184844
|
+
* Final install step to save curveMap in curve. If parentMap is given, update its length, count, and a1 fields
|
|
184767
184845
|
* @param curve curve to receive the annotation
|
|
184768
184846
|
* @param map
|
|
184769
184847
|
* @param parentMap
|
|
@@ -184777,8 +184855,10 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184777
184855
|
* Return an array containing only the curve primitives.
|
|
184778
184856
|
* * This DEFAULT implementation simply pushes `this` to the collectorArray.
|
|
184779
184857
|
* @param collectorArray array to receive primitives (pushed -- the array is not cleared)
|
|
184780
|
-
* @param smallestPossiblePrimitives if true, a [[CurvePrimitiveWithDistanceIndex]] recurses on its (otherwise hidden)
|
|
184781
|
-
*
|
|
184858
|
+
* @param smallestPossiblePrimitives if true, a [[CurvePrimitiveWithDistanceIndex]] recurses on its (otherwise hidden)
|
|
184859
|
+
* children. If false, it returns only itself.
|
|
184860
|
+
* @param explodeLinestrings if true, push a [[LineSegment3d]] for each segment of a [[LineString3d]]. If false,
|
|
184861
|
+
* push only the [[LineString3d]].
|
|
184782
184862
|
*/
|
|
184783
184863
|
collectCurvePrimitivesGo(collectorArray, _smallestPossiblePrimitives, _explodeLinestrings = false) {
|
|
184784
184864
|
collectorArray.push(this);
|
|
@@ -184786,18 +184866,23 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
|
|
|
184786
184866
|
/**
|
|
184787
184867
|
* Return an array containing only the curve primitives.
|
|
184788
184868
|
* * This DEFAULT implementation captures the optional collector and calls [[collectCurvePrimitivesGo]].
|
|
184789
|
-
* @param collectorArray optional array to receive primitives. If present, new primitives are ADDED (without
|
|
184790
|
-
*
|
|
184869
|
+
* @param collectorArray optional array to receive primitives. If present, new primitives are ADDED (without
|
|
184870
|
+
* clearing the array.)
|
|
184871
|
+
* @param smallestPossiblePrimitives if false, CurvePrimitiveWithDistanceIndex returns only itself. If true,
|
|
184872
|
+
* it recurses to its (otherwise hidden) children.
|
|
184791
184873
|
*/
|
|
184792
184874
|
collectCurvePrimitives(collectorArray, smallestPossiblePrimitives = false, explodeLinestrings = false) {
|
|
184793
184875
|
const results = collectorArray === undefined ? [] : collectorArray;
|
|
184794
184876
|
this.collectCurvePrimitivesGo(results, smallestPossiblePrimitives, explodeLinestrings);
|
|
184795
184877
|
return results;
|
|
184796
184878
|
}
|
|
184797
|
-
/**
|
|
184879
|
+
/**
|
|
184880
|
+
* Project instance geometry (via dispatch) onto the line of the given ray, and return the extreme fractional
|
|
184881
|
+
* parameters of projection.
|
|
184798
184882
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
184799
184883
|
* @param lowHigh optional receiver for output
|
|
184800
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
184884
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
184885
|
+
* end of the ray.
|
|
184801
184886
|
*/
|
|
184802
184887
|
projectedParameterRange(_ray, _lowHigh) {
|
|
184803
184888
|
return undefined; // common implementation delegated to subclasses to avoid circular dependency
|
|
@@ -185044,13 +185129,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
185044
185129
|
/* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
|
|
185045
185130
|
|
|
185046
185131
|
|
|
185047
|
-
/** Queries to be supported by Curve, Surface, and Solid objects */
|
|
185048
185132
|
/**
|
|
185049
|
-
*
|
|
185133
|
+
* Queries to be supported by Curve, Surface, and Solid objects
|
|
185134
|
+
* * `GeometryQuery` is an abstract base class with (abstract) methods for querying curve, solid primitive, mesh,
|
|
185135
|
+
* and bspline surfaces
|
|
185050
185136
|
* @public
|
|
185051
185137
|
*/
|
|
185052
185138
|
class GeometryQuery {
|
|
185053
|
-
/**
|
|
185139
|
+
/** Return the range of the entire (tree) GeometryQuery */
|
|
185054
185140
|
range(transform, result) {
|
|
185055
185141
|
if (result)
|
|
185056
185142
|
result.setNull();
|
|
@@ -185058,17 +185144,17 @@ class GeometryQuery {
|
|
|
185058
185144
|
this.extendRange(range, transform);
|
|
185059
185145
|
return range;
|
|
185060
185146
|
}
|
|
185061
|
-
/**
|
|
185147
|
+
/** Try to move the geometry by dx,dy,dz */
|
|
185062
185148
|
tryTranslateInPlace(dx, dy = 0.0, dz = 0.0) {
|
|
185063
185149
|
return this.tryTransformInPlace(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_1__.Transform.createTranslationXYZ(dx, dy, dz));
|
|
185064
185150
|
}
|
|
185065
|
-
/**
|
|
185066
|
-
*
|
|
185151
|
+
/**
|
|
185152
|
+
* Return GeometryQuery children for recursive queries.
|
|
185067
185153
|
* * leaf classes do not need to implement.
|
|
185068
185154
|
*/
|
|
185069
185155
|
get children() { return undefined; }
|
|
185070
|
-
/**
|
|
185071
|
-
*
|
|
185156
|
+
/**
|
|
185157
|
+
* Test for exact structure and nearly identical geometry.
|
|
185072
185158
|
* * Leaf classes must implement !!!
|
|
185073
185159
|
* * base class implementation recurses through children.
|
|
185074
185160
|
* * base implementation is complete for classes with children and no properties.
|
|
@@ -185097,7 +185183,8 @@ class GeometryQuery {
|
|
|
185097
185183
|
}
|
|
185098
185184
|
return false;
|
|
185099
185185
|
}
|
|
185100
|
-
/**
|
|
185186
|
+
/**
|
|
185187
|
+
* Apply instance method isAlmostEqual if both are defined.
|
|
185101
185188
|
* * both undefined returns true
|
|
185102
185189
|
* * single defined returns false
|
|
185103
185190
|
*/
|
|
@@ -185153,33 +185240,41 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
185153
185240
|
/* eslint-disable @typescript-eslint/naming-convention, no-empty */
|
|
185154
185241
|
/**
|
|
185155
185242
|
* A LineSegment3d is:
|
|
185156
|
-
*
|
|
185157
185243
|
* * A 3d line segment represented by its start and end coordinates
|
|
185158
185244
|
* * startPoint
|
|
185159
185245
|
* * endPoint
|
|
185160
|
-
* * The segment is parameterized with fraction 0 at the start and fraction 1 at the end, i.e. either of these
|
|
185246
|
+
* * The segment is parameterized with fraction 0 at the start and fraction 1 at the end, i.e. either of these
|
|
185247
|
+
* equivalent forms to map fraction `f` to a point `X(f)`
|
|
185161
185248
|
* ```
|
|
185162
185249
|
* equation
|
|
185163
|
-
* X(f) = P_0 + f
|
|
185164
|
-
* X(f) = (1-f)*P_0
|
|
185250
|
+
* X(f) = P_0 + f*(P_1 - P_0)\newline
|
|
185251
|
+
* X(f) = (1-f)*P_0 + f*P_1
|
|
185165
185252
|
* ```
|
|
185166
185253
|
* @public
|
|
185167
185254
|
*/
|
|
185168
185255
|
class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive {
|
|
185169
|
-
/**
|
|
185170
|
-
isSameGeometryClass(other) {
|
|
185171
|
-
|
|
185172
|
-
|
|
185173
|
-
|
|
185174
|
-
|
|
185175
|
-
/** Return REFERENCE to the end point of this segment.
|
|
185256
|
+
/** Test if `other` is of class `LineSegment3d` */
|
|
185257
|
+
isSameGeometryClass(other) {
|
|
185258
|
+
return other instanceof LineSegment3d;
|
|
185259
|
+
}
|
|
185260
|
+
/**
|
|
185261
|
+
* Return REFERENCE to the start point of this segment.
|
|
185176
185262
|
* * (This is distinct from the `CurvePrimitive` abstract method `endPoint()` which creates a returned point
|
|
185177
185263
|
*/
|
|
185178
|
-
get
|
|
185264
|
+
get point0Ref() {
|
|
185265
|
+
return this._point0;
|
|
185266
|
+
}
|
|
185179
185267
|
/**
|
|
185180
|
-
*
|
|
185268
|
+
* Return REFERENCE to the end point of this segment.
|
|
185269
|
+
* * (This is distinct from the `CurvePrimitive` abstract method `endPoint()` which creates a returned point
|
|
185181
185270
|
*/
|
|
185182
|
-
get
|
|
185271
|
+
get point1Ref() {
|
|
185272
|
+
return this._point1;
|
|
185273
|
+
}
|
|
185274
|
+
/** A LineSegment3d extends along its infinite line. */
|
|
185275
|
+
get isExtensibleFractionSpace() {
|
|
185276
|
+
return true;
|
|
185277
|
+
}
|
|
185183
185278
|
/**
|
|
185184
185279
|
* CAPTURE point references as a `LineSegment3d`
|
|
185185
185280
|
* @param point0
|
|
@@ -185193,12 +185288,21 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185193
185288
|
this._point1 = point1;
|
|
185194
185289
|
}
|
|
185195
185290
|
/** Set the start and endpoints by capturing input references. */
|
|
185196
|
-
setRefs(point0, point1) {
|
|
185291
|
+
setRefs(point0, point1) {
|
|
185292
|
+
this._point0 = point0;
|
|
185293
|
+
this._point1 = point1;
|
|
185294
|
+
}
|
|
185197
185295
|
/** Set the start and endpoints by cloning the input parameters. */
|
|
185198
|
-
set(point0, point1) {
|
|
185199
|
-
|
|
185200
|
-
|
|
185201
|
-
|
|
185296
|
+
set(point0, point1) {
|
|
185297
|
+
this._point0 = point0.clone();
|
|
185298
|
+
this._point1 = point1.clone();
|
|
185299
|
+
}
|
|
185300
|
+
/** Copy (clone) data from other */
|
|
185301
|
+
setFrom(other) {
|
|
185302
|
+
this._point0.setFrom(other._point0);
|
|
185303
|
+
this._point1.setFrom(other._point1);
|
|
185304
|
+
}
|
|
185305
|
+
/** Return a (clone of) the start point (This is NOT a reference to the stored start point) */
|
|
185202
185306
|
startPoint(result) {
|
|
185203
185307
|
if (result) {
|
|
185204
185308
|
result.setFrom(this._point0);
|
|
@@ -185206,7 +185310,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185206
185310
|
}
|
|
185207
185311
|
return this._point0.clone();
|
|
185208
185312
|
}
|
|
185209
|
-
/** Return a (clone of) the end point
|
|
185313
|
+
/** Return a (clone of) the end point (This is NOT a reference to the stored end point) */
|
|
185210
185314
|
endPoint(result) {
|
|
185211
185315
|
if (result) {
|
|
185212
185316
|
result.setFrom(this._point1);
|
|
@@ -185221,7 +185325,8 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185221
185325
|
this._point0.interpolate(fraction, this._point1, result.origin);
|
|
185222
185326
|
return result;
|
|
185223
185327
|
}
|
|
185224
|
-
/**
|
|
185328
|
+
/**
|
|
185329
|
+
* Construct a plane with
|
|
185225
185330
|
* * origin at the fractional position along the line segment
|
|
185226
185331
|
* * x axis is the first derivative, i.e. along the line segment
|
|
185227
185332
|
* * y axis is the second derivative, i.e. 000
|
|
@@ -185234,7 +185339,9 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185234
185339
|
return result;
|
|
185235
185340
|
}
|
|
185236
185341
|
/** Clone the LineSegment3d */
|
|
185237
|
-
clone() {
|
|
185342
|
+
clone() {
|
|
185343
|
+
return LineSegment3d.create(this._point0, this._point1);
|
|
185344
|
+
}
|
|
185238
185345
|
/** Clone and apply transform to the clone. */
|
|
185239
185346
|
cloneTransformed(transform) {
|
|
185240
185347
|
const c = this.clone();
|
|
@@ -185253,7 +185360,8 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185253
185360
|
static createCapture(point0, point1) {
|
|
185254
185361
|
return new LineSegment3d(point0, point1);
|
|
185255
185362
|
}
|
|
185256
|
-
/**
|
|
185363
|
+
/**
|
|
185364
|
+
* Create a LineSegment3d from xy coordinates of start and end, with common z.
|
|
185257
185365
|
* @param x0 start point x coordinate.
|
|
185258
185366
|
* @param y0 start point y coordinate.
|
|
185259
185367
|
* @param x1 end point x coordinate.
|
|
@@ -185269,7 +185377,8 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185269
185377
|
}
|
|
185270
185378
|
return new LineSegment3d(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create(x0, y0, z), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create(x1, y1, z));
|
|
185271
185379
|
}
|
|
185272
|
-
/**
|
|
185380
|
+
/**
|
|
185381
|
+
* Create a LineSegment3d from xy coordinates of start and end, with common z.
|
|
185273
185382
|
* @param x0 start point x coordinate.
|
|
185274
185383
|
* @param y0 start point y coordinate.
|
|
185275
185384
|
* @param x1 end point x coordinate.
|
|
@@ -185286,19 +185395,26 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185286
185395
|
return new LineSegment3d(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create(x0, y0, z0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create(x1, y1, z1));
|
|
185287
185396
|
}
|
|
185288
185397
|
/** Return the point at fractional position along the line segment. */
|
|
185289
|
-
fractionToPoint(fraction, result) {
|
|
185398
|
+
fractionToPoint(fraction, result) {
|
|
185399
|
+
return this._point0.interpolate(fraction, this._point1, result);
|
|
185400
|
+
}
|
|
185290
185401
|
/** Return the length of the segment. */
|
|
185291
|
-
curveLength() {
|
|
185402
|
+
curveLength() {
|
|
185403
|
+
return this._point0.distance(this._point1);
|
|
185404
|
+
}
|
|
185292
185405
|
/** Return the length of the partial segment between fractions. */
|
|
185293
185406
|
curveLengthBetweenFractions(fraction0, fraction1) {
|
|
185294
185407
|
return Math.abs(fraction1 - fraction0) * this._point0.distance(this._point1);
|
|
185295
185408
|
}
|
|
185296
185409
|
/** Return the length of the segment. */
|
|
185297
|
-
quickLength() {
|
|
185410
|
+
quickLength() {
|
|
185411
|
+
return this.curveLength();
|
|
185412
|
+
}
|
|
185298
185413
|
/**
|
|
185299
185414
|
* Returns a curve location detail with both xyz and fractional coordinates of the closest point.
|
|
185300
185415
|
* @param spacePoint point in space
|
|
185301
|
-
* @param extend if false, only return points within the bounded line segment. If true, allow the point to be on
|
|
185416
|
+
* @param extend if false, only return points within the bounded line segment. If true, allow the point to be on
|
|
185417
|
+
* the unbounded line that contains the bounded segment.
|
|
185302
185418
|
*/
|
|
185303
185419
|
closestPoint(spacePoint, extend, result) {
|
|
185304
185420
|
let fraction = spacePoint.fractionOfProjectionToLine(this._point0, this._point1, 0.0);
|
|
@@ -185312,7 +185428,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185312
185428
|
result.a = result.point.distance(spacePoint);
|
|
185313
185429
|
return result;
|
|
185314
185430
|
}
|
|
185315
|
-
/**
|
|
185431
|
+
/** Swap the endpoint references. */
|
|
185316
185432
|
reverseInPlace() {
|
|
185317
185433
|
const a = this._point0;
|
|
185318
185434
|
this._point0 = this._point1;
|
|
@@ -185329,7 +185445,8 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185329
185445
|
return _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.isSmallMetricDistance(plane.altitude(this._point0))
|
|
185330
185446
|
&& _Geometry__WEBPACK_IMPORTED_MODULE_6__.Geometry.isSmallMetricDistance(plane.altitude(this._point1));
|
|
185331
185447
|
}
|
|
185332
|
-
/**
|
|
185448
|
+
/**
|
|
185449
|
+
* Compute points of simple (transverse) with a plane.
|
|
185333
185450
|
* * Use isInPlane to test if the line segment is completely in the plane.
|
|
185334
185451
|
*/
|
|
185335
185452
|
appendPlaneIntersectionPoints(plane, result) {
|
|
@@ -185387,12 +185504,16 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185387
185504
|
}
|
|
185388
185505
|
}
|
|
185389
185506
|
/** A simple line segment's fraction and distance are proportional. */
|
|
185390
|
-
getFractionToDistanceScale() {
|
|
185507
|
+
getFractionToDistanceScale() {
|
|
185508
|
+
return this.curveLength();
|
|
185509
|
+
}
|
|
185391
185510
|
/**
|
|
185392
185511
|
* Place the lineSegment3d start and points in a json object
|
|
185393
185512
|
* @return {*} [[x,y,z],[x,y,z]]
|
|
185394
185513
|
*/
|
|
185395
|
-
toJSON() {
|
|
185514
|
+
toJSON() {
|
|
185515
|
+
return [this._point0.toJSON(), this._point1.toJSON()];
|
|
185516
|
+
}
|
|
185396
185517
|
/** Create a new `LineSegment3d` with coordinates from json object. See `setFromJSON` for object layout description. */
|
|
185397
185518
|
static fromJSON(json) {
|
|
185398
185519
|
const result = new LineSegment3d(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.createZero(), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create());
|
|
@@ -185420,7 +185541,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185420
185541
|
handler.endCurvePrimitive(this);
|
|
185421
185542
|
}
|
|
185422
185543
|
/**
|
|
185423
|
-
*
|
|
185544
|
+
* Return the stroke count required for given options.
|
|
185424
185545
|
* @param options StrokeOptions that determine count
|
|
185425
185546
|
*/
|
|
185426
185547
|
computeStrokeCountForOptions(options) {
|
|
@@ -185432,19 +185553,20 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185432
185553
|
}
|
|
185433
185554
|
return numStroke;
|
|
185434
185555
|
}
|
|
185435
|
-
/** Second step of double dispatch:
|
|
185556
|
+
/** Second step of double dispatch: call `handler.handleLineSegment3d(this)` */
|
|
185436
185557
|
dispatchToGeometryHandler(handler) {
|
|
185437
185558
|
return handler.handleLineSegment3d(this);
|
|
185438
185559
|
}
|
|
185439
185560
|
/**
|
|
185440
185561
|
* Find intervals of this curve primitive that are interior to a clipper
|
|
185441
185562
|
* @param clipper clip structure (e.g. clip planes)
|
|
185442
|
-
* @param announce function to be called announcing fractional intervals
|
|
185563
|
+
* @param announce function to be called announcing fractional intervals `announce(fraction0, fraction1, curvePrimitive)`
|
|
185443
185564
|
*/
|
|
185444
185565
|
announceClipIntervals(clipper, announce) {
|
|
185445
185566
|
return clipper.announceClippedSegmentIntervals(0.0, 1.0, this._point0, this._point1, announce ? (fraction0, fraction1) => announce(fraction0, fraction1, this) : undefined);
|
|
185446
185567
|
}
|
|
185447
|
-
/**
|
|
185568
|
+
/**
|
|
185569
|
+
* Return (if possible) a curve primitive which is a portion of this curve.
|
|
185448
185570
|
* @param fractionA [in] start fraction
|
|
185449
185571
|
* @param fractionB [in] end fraction
|
|
185450
185572
|
*/
|
|
@@ -185484,10 +185606,13 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
|
|
|
185484
185606
|
}
|
|
185485
185607
|
return undefined;
|
|
185486
185608
|
}
|
|
185487
|
-
/**
|
|
185609
|
+
/**
|
|
185610
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of
|
|
185611
|
+
* projection.
|
|
185488
185612
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
185489
185613
|
* @param lowHigh optional receiver for output
|
|
185490
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
185614
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
|
|
185615
|
+
* end of the ray.
|
|
185491
185616
|
*/
|
|
185492
185617
|
projectedParameterRange(ray, lowHigh) {
|
|
185493
185618
|
return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
@@ -185548,11 +185673,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
185548
185673
|
|
|
185549
185674
|
|
|
185550
185675
|
/* eslint-disable @typescript-eslint/naming-convention, no-empty */
|
|
185551
|
-
|
|
185552
|
-
|
|
185553
|
-
|
|
185554
|
-
|
|
185555
|
-
|
|
185676
|
+
/**
|
|
185677
|
+
* Starting with baseIndex and moving index by stepDirection:
|
|
185678
|
+
* If the vector from baseIndex to baseIndex +1 crossed with vectorA can be normalized, accumulate it (scaled) to normal.
|
|
185679
|
+
* Return when successful.
|
|
185680
|
+
* (Do nothing if everything is parallel through limits of the array)
|
|
185681
|
+
*/
|
|
185556
185682
|
function accumulateGoodUnitPerpendicular(points, vectorA, baseIndex, stepDirection, weight, normal, workVector) {
|
|
185557
185683
|
const n = points.length;
|
|
185558
185684
|
if (stepDirection > 0) {
|
|
@@ -185580,43 +185706,67 @@ function accumulateGoodUnitPerpendicular(points, vectorA, baseIndex, stepDirecti
|
|
|
185580
185706
|
return false;
|
|
185581
185707
|
}
|
|
185582
185708
|
/**
|
|
185583
|
-
* * A LineString3d (sometimes called a PolyLine) is a sequence of xyz coordinates that are to be joined by line
|
|
185584
|
-
*
|
|
185709
|
+
* * A LineString3d (sometimes called a PolyLine) is a sequence of xyz coordinates that are to be joined by line
|
|
185710
|
+
* segments.
|
|
185711
|
+
* * The point coordinates are stored in a GrowableXYZArray, not as full point objects.
|
|
185585
185712
|
* * The parameterization of "fraction along" is
|
|
185586
|
-
* * In a linestring with `N` segments (i.e. `N+1` points), each segment (regardless of physical length) occupies
|
|
185713
|
+
* * In a linestring with `N` segments (i.e. `N+1` points), each segment (regardless of physical length) occupies
|
|
185714
|
+
* the same fraction (1/N) of the 0-to-1 fraction space.
|
|
185587
185715
|
* * Within segment `i`, the fraction interval `i/N` to `(i+1)/N` is mapped proportionally to the segment
|
|
185588
185716
|
* * Note that this `fraction` is therefore NOT fraction of true distance along.
|
|
185589
|
-
*
|
|
185717
|
+
* * Use `moveSignedDistanceFromFraction` to do true-length evaluations.
|
|
185590
185718
|
* @public
|
|
185591
185719
|
*/
|
|
185592
185720
|
class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive {
|
|
185593
185721
|
/** test if `other` is an instance of `LineString3d` */
|
|
185594
|
-
isSameGeometryClass(other) {
|
|
185595
|
-
|
|
185596
|
-
|
|
185597
|
-
|
|
185598
|
-
get isExtensibleFractionSpace() {
|
|
185599
|
-
|
|
185600
|
-
|
|
185722
|
+
isSameGeometryClass(other) {
|
|
185723
|
+
return other instanceof LineString3d;
|
|
185724
|
+
}
|
|
185725
|
+
/** A LineString3d extends along its first and final segments. */
|
|
185726
|
+
get isExtensibleFractionSpace() {
|
|
185727
|
+
return true;
|
|
185728
|
+
}
|
|
185729
|
+
/** Return the points array (cloned). */
|
|
185730
|
+
get points() {
|
|
185731
|
+
return this._points.getPoint3dArray();
|
|
185732
|
+
}
|
|
185601
185733
|
/** Return (reference to) point data in packed GrowableXYZArray. */
|
|
185602
|
-
get packedPoints() {
|
|
185603
|
-
|
|
185734
|
+
get packedPoints() {
|
|
185735
|
+
return this._points;
|
|
185736
|
+
}
|
|
185737
|
+
/**
|
|
185738
|
+
* Return array of fraction parameters.
|
|
185604
185739
|
* * These Are only present during certain constructions such as faceting.
|
|
185605
|
-
* * When present, these fractions are fractions of some other curve being stroked, and are NOT related to the
|
|
185740
|
+
* * When present, these fractions are fractions of some other curve being stroked, and are NOT related to the
|
|
185741
|
+
* linestring fraction parameters.
|
|
185606
185742
|
*/
|
|
185607
|
-
get fractions() {
|
|
185743
|
+
get fractions() {
|
|
185744
|
+
return this._fractions;
|
|
185745
|
+
}
|
|
185608
185746
|
/** Return the (optional) array of derivatives. These Are only present during certain constructions such as faceting. */
|
|
185609
|
-
get packedDerivatives() {
|
|
185747
|
+
get packedDerivatives() {
|
|
185748
|
+
return this._derivatives;
|
|
185749
|
+
}
|
|
185610
185750
|
/** Return the (optional) array of uv params. These Are only present during certain constructions such as faceting. */
|
|
185611
|
-
get packedUVParams() {
|
|
185751
|
+
get packedUVParams() {
|
|
185752
|
+
return this._uvParams;
|
|
185753
|
+
}
|
|
185612
185754
|
/** Return the (optional) array of surface normals. These Are only present during certain constructions such as faceting. */
|
|
185613
|
-
get packedSurfaceNormals() {
|
|
185755
|
+
get packedSurfaceNormals() {
|
|
185756
|
+
return this._surfaceNormals;
|
|
185757
|
+
}
|
|
185614
185758
|
/** Return the (optional) array of normal indices. These Are only present during certain constructions such as faceting. */
|
|
185615
|
-
get normalIndices() {
|
|
185759
|
+
get normalIndices() {
|
|
185760
|
+
return this._normalIndices;
|
|
185761
|
+
}
|
|
185616
185762
|
/** Return the (optional) array of param indices. These Are only present during certain constructions such as faceting. */
|
|
185617
|
-
get paramIndices() {
|
|
185763
|
+
get paramIndices() {
|
|
185764
|
+
return this._uvIndices;
|
|
185765
|
+
}
|
|
185618
185766
|
/** Return the (optional) array of point indices. These Are only present during certain constructions such as faceting. */
|
|
185619
|
-
get pointIndices() {
|
|
185767
|
+
get pointIndices() {
|
|
185768
|
+
return this._pointIndices;
|
|
185769
|
+
}
|
|
185620
185770
|
constructor(points) {
|
|
185621
185771
|
super();
|
|
185622
185772
|
/** String name for schema properties */
|
|
@@ -185632,7 +185782,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185632
185782
|
c.tryTransformInPlace(transform);
|
|
185633
185783
|
return c;
|
|
185634
185784
|
}
|
|
185635
|
-
/**
|
|
185785
|
+
/**
|
|
185786
|
+
* Create a linestring, using flex length arg list and any typical combination of points such as
|
|
185636
185787
|
* Point3d, Point2d, `[1,2,3]', array of any of those, or GrowableXYZArray
|
|
185637
185788
|
*/
|
|
185638
185789
|
static create(...points) {
|
|
@@ -185640,7 +185791,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185640
185791
|
result.addPoints(points);
|
|
185641
185792
|
return result;
|
|
185642
185793
|
}
|
|
185643
|
-
/**
|
|
185794
|
+
/**
|
|
185795
|
+
* Create a linestring, capturing the given GrowableXYZArray as the points.
|
|
185644
185796
|
* Point3d, Point2d, `[1,2,3]', array of any of those, or GrowableXYZArray
|
|
185645
185797
|
*/
|
|
185646
185798
|
static createCapture(points) {
|
|
@@ -185665,7 +185817,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185665
185817
|
}
|
|
185666
185818
|
return result;
|
|
185667
185819
|
}
|
|
185668
|
-
/**
|
|
185820
|
+
/**
|
|
185821
|
+
* Add points to the linestring.
|
|
185669
185822
|
* Valid inputs are:
|
|
185670
185823
|
* * a Point2d
|
|
185671
185824
|
* * a point3d
|
|
@@ -185817,9 +185970,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185817
185970
|
this._surfaceNormals = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_1__.GrowableXYZArray();
|
|
185818
185971
|
this._surfaceNormals.push(vector);
|
|
185819
185972
|
}
|
|
185820
|
-
/**
|
|
185821
|
-
* If the linestring is not already closed, add a closure point.
|
|
185822
|
-
*/
|
|
185973
|
+
/** If the linestring is not already closed, add a closure point. */
|
|
185823
185974
|
addClosurePoint() {
|
|
185824
185975
|
const distance = this._points.distanceIndexIndex(0, this._points.length - 1);
|
|
185825
185976
|
if (distance !== undefined && !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSameCoordinate(distance, 0))
|
|
@@ -185833,7 +185984,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185833
185984
|
computeUVFromXYZTransform(transform) {
|
|
185834
185985
|
this._uvParams = _geometry3d_GrowableXYArray__WEBPACK_IMPORTED_MODULE_4__.GrowableXYArray.createFromGrowableXYZArray(this._points, transform);
|
|
185835
185986
|
}
|
|
185836
|
-
/**
|
|
185987
|
+
/**
|
|
185988
|
+
* Create the linestring for a rectangle parallel to the xy plane.
|
|
185837
185989
|
* * The z coordinate from `point0` is used for all points.
|
|
185838
185990
|
* * `ax` and `ay` are signed.
|
|
185839
185991
|
* * The point sequence is:
|
|
@@ -185864,7 +186016,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185864
186016
|
* @param center center of the polygon.
|
|
185865
186017
|
* @param edgeCount number of edges.
|
|
185866
186018
|
* @param radius distance to vertex or edge (see `radiusToVertices`)
|
|
185867
|
-
* @param radiusToVertices true if polygon is inscribed in circle (radius measured to vertices); false if polygon
|
|
186019
|
+
* @param radiusToVertices true if polygon is inscribed in circle (radius measured to vertices); false if polygon
|
|
186020
|
+
* is outside circle (radius to edges)
|
|
185868
186021
|
*/
|
|
185869
186022
|
static createRegularPolygonXY(center, edgeCount, radius, radiusToVertices = true) {
|
|
185870
186023
|
if (edgeCount < 3)
|
|
@@ -185946,7 +186099,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185946
186099
|
retVal.setFrom(this);
|
|
185947
186100
|
return retVal;
|
|
185948
186101
|
}
|
|
185949
|
-
/**
|
|
186102
|
+
/**
|
|
186103
|
+
* Set point coordinates from a json array, e.g. `[[1,2,3],[4,5,6] . . .]`
|
|
185950
186104
|
* * The `json` parameter must be an array.
|
|
185951
186105
|
* * Each member `i` of the array is converted to a point with `Point3d.fromJSON(json[i]`)
|
|
185952
186106
|
*/
|
|
@@ -185971,7 +186125,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
185971
186125
|
}
|
|
185972
186126
|
return value;
|
|
185973
186127
|
}
|
|
185974
|
-
/**
|
|
186128
|
+
/**
|
|
186129
|
+
* Construct a new linestring.
|
|
185975
186130
|
* * See `LineString3d.setFromJSON ()` for remarks on `json` structure.
|
|
185976
186131
|
*/
|
|
185977
186132
|
static fromJSON(json) {
|
|
@@ -186061,7 +186216,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186061
186216
|
}
|
|
186062
186217
|
/**
|
|
186063
186218
|
* Convert a global fraction to a segment index and local fraction.
|
|
186064
|
-
* @param globalFraction a fraction f in [0,1] in the linestring parameterization, where the i_th segment
|
|
186219
|
+
* @param globalFraction a fraction f in [0,1] in the linestring parameterization, where the i_th segment
|
|
186220
|
+
* (0 <= i < N) is parameterized by i/N <= f <= (i+1)/N.
|
|
186065
186221
|
*/
|
|
186066
186222
|
globalFractionToSegmentIndexAndLocalFraction(globalFraction) {
|
|
186067
186223
|
const numSegment = this._points.length - 1;
|
|
@@ -186125,7 +186281,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186125
186281
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__.Transform.createOriginAndMatrix(origin, matrix, result);
|
|
186126
186282
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_9__.Transform.createTranslation(origin, result);
|
|
186127
186283
|
}
|
|
186128
|
-
/**
|
|
186284
|
+
/** Evaluate the start point of the linestring. */
|
|
186129
186285
|
startPoint() {
|
|
186130
186286
|
if (this._points.length === 0)
|
|
186131
186287
|
return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.createZero();
|
|
@@ -186137,8 +186293,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186137
186293
|
return this._points.getPoint3dAtUncheckedPointIndex(i, result);
|
|
186138
186294
|
return undefined;
|
|
186139
186295
|
}
|
|
186140
|
-
/** If i and j are both valid indices, return the vector from point i to point j
|
|
186141
|
-
*/
|
|
186296
|
+
/** If i and j are both valid indices, return the vector from point i to point j */
|
|
186142
186297
|
vectorBetween(i, j, result) {
|
|
186143
186298
|
return this._points.vectorIndexIndex(i, j, result);
|
|
186144
186299
|
}
|
|
@@ -186155,8 +186310,10 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186155
186310
|
return undefined;
|
|
186156
186311
|
}
|
|
186157
186312
|
/** Return the number of points in this linestring. */
|
|
186158
|
-
numPoints() {
|
|
186159
|
-
|
|
186313
|
+
numPoints() {
|
|
186314
|
+
return this._points.length;
|
|
186315
|
+
}
|
|
186316
|
+
/** Evaluate the end point of the linestring. */
|
|
186160
186317
|
endPoint() {
|
|
186161
186318
|
if (this._points.length === 0)
|
|
186162
186319
|
return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.createZero();
|
|
@@ -186180,7 +186337,9 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186180
186337
|
return true;
|
|
186181
186338
|
}
|
|
186182
186339
|
/** Sum the lengths of segments within the linestring */
|
|
186183
|
-
curveLength() {
|
|
186340
|
+
curveLength() {
|
|
186341
|
+
return this._points.sumLengths();
|
|
186342
|
+
}
|
|
186184
186343
|
/** Sum the lengths of segments between fractional positions on a linestring. */
|
|
186185
186344
|
curveLengthBetweenFractions(fraction0, fraction1) {
|
|
186186
186345
|
const numSegments = this._points.length - 1;
|
|
@@ -186279,10 +186438,10 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186279
186438
|
return _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.createCurveFractionPointDistanceCurveSearchStatus(this, context.fraction0, context.point0, -context.distance0, context.distanceStatus(), result);
|
|
186280
186439
|
}
|
|
186281
186440
|
}
|
|
186282
|
-
/**
|
|
186441
|
+
/** Sum lengths of segments in the linestring. (This is a true length.) */
|
|
186283
186442
|
quickLength() { return this.curveLength(); }
|
|
186284
186443
|
/**
|
|
186285
|
-
*
|
|
186444
|
+
* Compute and normalize cross product among 3 points on the linestring.
|
|
186286
186445
|
* * "any" 3 points are acceptable -- no test for positive overall sense.
|
|
186287
186446
|
* * This is appropriate for polygon known to be convex.
|
|
186288
186447
|
* * use points spread at index step n/3, hopefully avoiding colinear points.
|
|
@@ -186321,7 +186480,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186321
186480
|
if (!extend1 || i < lastIndex)
|
|
186322
186481
|
segmentFraction = 1.0;
|
|
186323
186482
|
}
|
|
186324
|
-
this._points.getPoint3dAtUncheckedPointIndex(i - 1)
|
|
186483
|
+
this._points.getPoint3dAtUncheckedPointIndex(i - 1)
|
|
186484
|
+
.interpolate(segmentFraction, this._points.getPoint3dAtUncheckedPointIndex(i), result.pointQ);
|
|
186325
186485
|
d = result.pointQ.distance(spacePoint);
|
|
186326
186486
|
if (d < result.a) {
|
|
186327
186487
|
result.setFP(this.segmentIndexAndLocalFractionToGlobalFraction(i - 1, segmentFraction), result.pointQ, undefined, d);
|
|
@@ -186335,8 +186495,9 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186335
186495
|
isInPlane(plane) {
|
|
186336
186496
|
return this._points.isCloseToPlane(plane, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
|
|
186337
186497
|
}
|
|
186338
|
-
/**
|
|
186339
|
-
*
|
|
186498
|
+
/**
|
|
186499
|
+
* Push a hit, fixing up the prior entry if needed.
|
|
186500
|
+
* Return the incremented counter.
|
|
186340
186501
|
*/
|
|
186341
186502
|
static pushVertexHit(result, counter, cp, fraction, point) {
|
|
186342
186503
|
const detail = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.createCurveFractionPoint(cp, fraction, point);
|
|
@@ -186353,7 +186514,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186353
186514
|
detail.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveIntervalRole.intervalEnd);
|
|
186354
186515
|
}
|
|
186355
186516
|
}
|
|
186356
|
-
/**
|
|
186517
|
+
/**
|
|
186518
|
+
* Find intersections with a plane.
|
|
186357
186519
|
* Intersections within segments are recorded as CurveIntervalRole.isolated
|
|
186358
186520
|
* Intersections at isolated "on" vertex are recoded as CurveIntervalRole.isolatedAtVertex.
|
|
186359
186521
|
*/
|
|
@@ -186390,7 +186552,9 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186390
186552
|
return result.length - initialLength;
|
|
186391
186553
|
}
|
|
186392
186554
|
/** Extend `rangeToExtend` to include all points of this linestring. */
|
|
186393
|
-
extendRange(rangeToExtend, transform) {
|
|
186555
|
+
extendRange(rangeToExtend, transform) {
|
|
186556
|
+
this._points.extendRange(rangeToExtend, transform);
|
|
186557
|
+
}
|
|
186394
186558
|
/** Test if each point of this linestring isAlmostEqual with corresponding point in `other`. */
|
|
186395
186559
|
isAlmostEqual(other) {
|
|
186396
186560
|
if (!(other instanceof LineString3d))
|
|
@@ -186399,7 +186563,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186399
186563
|
return false;
|
|
186400
186564
|
return true;
|
|
186401
186565
|
}
|
|
186402
|
-
/**
|
|
186566
|
+
/**
|
|
186567
|
+
* Append (clone of) one point.
|
|
186403
186568
|
* * BUT ... skip if duplicates the tail of prior points.
|
|
186404
186569
|
* * if fraction is given, "duplicate" considers both point and fraction.
|
|
186405
186570
|
*/
|
|
@@ -186419,8 +186584,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186419
186584
|
this.addFraction(fraction);
|
|
186420
186585
|
}
|
|
186421
186586
|
}
|
|
186422
|
-
/** Compress out duplicate points (according to point.isAlmostEqual)
|
|
186423
|
-
*/
|
|
186587
|
+
/** Compress out duplicate points (according to point.isAlmostEqual) */
|
|
186424
186588
|
removeDuplicatePoints(tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
186425
186589
|
const n = this._points.length;
|
|
186426
186590
|
if (n < 2)
|
|
@@ -186443,7 +186607,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186443
186607
|
if (this._derivatives)
|
|
186444
186608
|
this._derivatives.resize(n1);
|
|
186445
186609
|
}
|
|
186446
|
-
/**
|
|
186610
|
+
/**
|
|
186611
|
+
* Append a suitable evaluation of a curve ..
|
|
186447
186612
|
* * always append the curve point
|
|
186448
186613
|
* * if fraction array is present, append the fraction
|
|
186449
186614
|
* * if derivative array is present, append the derivative
|
|
@@ -186466,7 +186631,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186466
186631
|
}
|
|
186467
186632
|
}
|
|
186468
186633
|
/**
|
|
186469
|
-
*
|
|
186634
|
+
* Clear all array data:
|
|
186470
186635
|
* * points
|
|
186471
186636
|
* * optional fractions.
|
|
186472
186637
|
* * optional derivatives.
|
|
@@ -186500,7 +186665,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186500
186665
|
}
|
|
186501
186666
|
return ls;
|
|
186502
186667
|
}
|
|
186503
|
-
/**
|
|
186668
|
+
/**
|
|
186669
|
+
* Evaluate a curve at uniform fractions. Append the evaluations to this linestring.
|
|
186504
186670
|
* @param curve primitive to evaluate.
|
|
186505
186671
|
* @param numStrokes number of strokes (edges).
|
|
186506
186672
|
* @param fraction0 starting fraction coordinate
|
|
@@ -186520,7 +186686,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186520
186686
|
this.appendFractionToPoint(curve, fraction0 + i * df);
|
|
186521
186687
|
}
|
|
186522
186688
|
}
|
|
186523
|
-
/**
|
|
186689
|
+
/**
|
|
186690
|
+
* Append points constructed as interpolation between two points.
|
|
186524
186691
|
* @param numStrokes number of strokes.
|
|
186525
186692
|
* @param point0 first point
|
|
186526
186693
|
* @param point1 last point
|
|
@@ -186566,7 +186733,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186566
186733
|
}
|
|
186567
186734
|
}
|
|
186568
186735
|
}
|
|
186569
|
-
/**
|
|
186736
|
+
/**
|
|
186737
|
+
* Emit strokable parts of the curve to a caller-supplied handler.
|
|
186570
186738
|
* If the stroke options does not have a maxEdgeLength, one stroke is emitted for each segment of the linestring.
|
|
186571
186739
|
* If the stroke options has a maxEdgeLength, smaller segments are emitted as needed.
|
|
186572
186740
|
*/
|
|
@@ -186593,7 +186761,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186593
186761
|
handler.endCurvePrimitive(this);
|
|
186594
186762
|
}
|
|
186595
186763
|
/**
|
|
186596
|
-
*
|
|
186764
|
+
* Return the stroke count required for given options.
|
|
186597
186765
|
* @param options StrokeOptions that determine count
|
|
186598
186766
|
*/
|
|
186599
186767
|
computeStrokeCountForOptions(options) {
|
|
@@ -186632,7 +186800,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186632
186800
|
/**
|
|
186633
186801
|
* Find intervals of this CurvePrimitive that are interior to a clipper
|
|
186634
186802
|
* @param clipper clip structure (e.g. clip planes)
|
|
186635
|
-
* @param announce (optional) function to be called announcing fractional intervals"
|
|
186803
|
+
* @param announce (optional) function to be called announcing fractional intervals"
|
|
186804
|
+
* ` announce(fraction0, fraction1, curvePrimitive)`
|
|
186636
186805
|
* @returns true if any "in" segments are announced.
|
|
186637
186806
|
*/
|
|
186638
186807
|
announceClipIntervals(clipper, announce) {
|
|
@@ -186676,7 +186845,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186676
186845
|
this._points.interpolate(index, fraction, index + 1, LineString3d._indexPoint);
|
|
186677
186846
|
dest.push(LineString3d._indexPoint);
|
|
186678
186847
|
}
|
|
186679
|
-
/**
|
|
186848
|
+
/**
|
|
186849
|
+
* Return a LineString which is a portion of this curve.
|
|
186680
186850
|
* * Fractions outside [0,1] extend the relevant end segment.
|
|
186681
186851
|
* @param fractionA [in] start fraction
|
|
186682
186852
|
* @param fractionB [in] end fraction
|
|
@@ -186736,14 +186906,12 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186736
186906
|
return _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__.LineSegment3d.create(this._points.getPoint3dAtCheckedPointIndex(index), this._points.getPoint3dAtCheckedPointIndex(index + 1));
|
|
186737
186907
|
return undefined;
|
|
186738
186908
|
}
|
|
186739
|
-
/**
|
|
186740
|
-
* Returns true if first and last points are within metric tolerance.
|
|
186741
|
-
*/
|
|
186909
|
+
/** Returns true if first and last points are within metric tolerance. */
|
|
186742
186910
|
get isPhysicallyClosed() {
|
|
186743
186911
|
return this._points.length > 0 && _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(this._points.distanceIndexIndex(0, this._points.length - 1));
|
|
186744
186912
|
}
|
|
186745
186913
|
/**
|
|
186746
|
-
*
|
|
186914
|
+
* Evaluate strokes at fractions indicated in a StrokeCountMap.
|
|
186747
186915
|
* * The map must have an array of component counts corresponding to the segment of this linestring.
|
|
186748
186916
|
* * "fractions" in the output are mapped within a0,a1 of the map.componentData
|
|
186749
186917
|
* @param map = stroke count data.
|
|
@@ -186780,7 +186948,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186780
186948
|
}
|
|
186781
186949
|
return destLinestring.numPoints() - numPoint0;
|
|
186782
186950
|
}
|
|
186783
|
-
/**
|
|
186951
|
+
/**
|
|
186952
|
+
* Convert variant point data to a single level array of linestrings.
|
|
186784
186953
|
* * The result is always an array of LineString3d.
|
|
186785
186954
|
* * Single linestring is NOT bubbled out as a special case.
|
|
186786
186955
|
* * data with no point is an empty array.
|
|
@@ -186815,7 +186984,8 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186815
186984
|
}
|
|
186816
186985
|
/**
|
|
186817
186986
|
* Construct an offset of each segment as viewed in the xy-plane (ignoring z).
|
|
186818
|
-
* * No attempt is made to join the offset segments. Use RegionOps.constructCurveXYOffset() to return a fully
|
|
186987
|
+
* * No attempt is made to join the offset segments. Use RegionOps.constructCurveXYOffset() to return a fully
|
|
186988
|
+
* joined offset.
|
|
186819
186989
|
* @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
|
|
186820
186990
|
*/
|
|
186821
186991
|
constructOffsetXY(offsetDistanceOrOptions) {
|
|
@@ -186832,10 +187002,13 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
|
|
|
186832
187002
|
}
|
|
186833
187003
|
return offsets;
|
|
186834
187004
|
}
|
|
186835
|
-
/**
|
|
187005
|
+
/**
|
|
187006
|
+
* Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters
|
|
187007
|
+
* of projection.
|
|
186836
187008
|
* @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
|
|
186837
187009
|
* @param lowHigh optional receiver for output
|
|
186838
|
-
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is
|
|
187010
|
+
* @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is
|
|
187011
|
+
* the end of the ray.
|
|
186839
187012
|
*/
|
|
186840
187013
|
projectedParameterRange(ray, lowHigh) {
|
|
186841
187014
|
return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
|
|
@@ -186847,14 +187020,15 @@ LineString3d._workPointC = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_
|
|
|
186847
187020
|
LineString3d._workRay = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_7__.Ray3d.createXAxis();
|
|
186848
187021
|
LineString3d._indexPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create(); // private point for addResolvedPoint
|
|
186849
187022
|
|
|
186850
|
-
/**
|
|
187023
|
+
/**
|
|
187024
|
+
* An AnnotatedLineString3d is a linestring with additional surface-related data attached to each point
|
|
186851
187025
|
* * This is useful in facet construction.
|
|
186852
187026
|
* @internal
|
|
186853
187027
|
*/
|
|
186854
187028
|
class AnnotatedLineString3d {
|
|
186855
187029
|
}
|
|
186856
187030
|
/**
|
|
186857
|
-
*
|
|
187031
|
+
* Context to be called to incrementally accumulate distance along line segments.
|
|
186858
187032
|
*/
|
|
186859
187033
|
class MoveByDistanceContext {
|
|
186860
187034
|
/** CAPTURE point0, fraction0, targetDistance */
|
|
@@ -188849,15 +189023,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
188849
189023
|
*/
|
|
188850
189024
|
|
|
188851
189025
|
/**
|
|
188852
|
-
*
|
|
188853
|
-
* * For a simple primitive (
|
|
189026
|
+
* Data carrier interface for per-primitive stroke counts and distances used by PolyfaceBuilder.
|
|
189027
|
+
* * For a simple primitive (line segment or arc) that is stroked with uniform fraction, the members are:
|
|
188854
189028
|
* * `numStroke` = total number of strokes
|
|
188855
189029
|
* * `curveLength` = length of this curve
|
|
188856
189030
|
* * `a0` = external mapped coordinate for fraction 0 on this primitive or component
|
|
188857
189031
|
* * `a1` = external mapped coordinate for fraction 1 on this primitive or component
|
|
188858
189032
|
*
|
|
188859
189033
|
* * For linestring and bspline curve, those numbers are totals for the overall curve, and breakdown within
|
|
188860
|
-
*
|
|
189034
|
+
* the components (line segments or bezier spans) is recorded on the optional array `componentData[]`
|
|
188861
189035
|
* * Members of the array are annotated with componentIndex within the linestring or bspline curve
|
|
188862
189036
|
* @public
|
|
188863
189037
|
*/
|
|
@@ -188907,7 +189081,7 @@ class StrokeCountMap {
|
|
|
188907
189081
|
return result;
|
|
188908
189082
|
}
|
|
188909
189083
|
/**
|
|
188910
|
-
*
|
|
189084
|
+
* Create a StrokeCountMap, optionally
|
|
188911
189085
|
* * (a) use parent a1 as new a0
|
|
188912
189086
|
* * (b) attach a (usually empty) array for component counts.
|
|
188913
189087
|
* @param parentMap optional map whose a1 becomes a0 in the new map.
|
|
@@ -188935,8 +189109,9 @@ class StrokeCountMap {
|
|
|
188935
189109
|
this.curveLength += curveLength;
|
|
188936
189110
|
this.a1 = a2;
|
|
188937
189111
|
}
|
|
188938
|
-
/**
|
|
188939
|
-
*
|
|
189112
|
+
/**
|
|
189113
|
+
* Return true if `other` has the same component structure as `this`
|
|
189114
|
+
* * Testing recurses through corresponding members of componentData arrays.
|
|
188940
189115
|
*/
|
|
188941
189116
|
isCompatibleComponentStructure(other, enforceCounts) {
|
|
188942
189117
|
if (enforceCounts && this.numStroke !== other.numStroke)
|
|
@@ -188957,7 +189132,7 @@ class StrokeCountMap {
|
|
|
188957
189132
|
return false;
|
|
188958
189133
|
}
|
|
188959
189134
|
/**
|
|
188960
|
-
*
|
|
189135
|
+
* Clone all data from root.
|
|
188961
189136
|
* * clone componentData arrays recursively.
|
|
188962
189137
|
*/
|
|
188963
189138
|
clone() {
|
|
@@ -188970,7 +189145,7 @@ class StrokeCountMap {
|
|
|
188970
189145
|
return a;
|
|
188971
189146
|
}
|
|
188972
189147
|
/**
|
|
188973
|
-
*
|
|
189148
|
+
* Interpolate in the a0,a1 mapping.
|
|
188974
189149
|
* @param fraction fractional position between a0 and a1
|
|
188975
189150
|
*/
|
|
188976
189151
|
fractionToA(fraction) {
|
|
@@ -190647,7 +190822,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190647
190822
|
|
|
190648
190823
|
|
|
190649
190824
|
/* eslint-disable @typescript-eslint/naming-convention, no-empty */
|
|
190650
|
-
/**
|
|
190825
|
+
/**
|
|
190826
|
+
* Tolerance blob for various stroking methods.
|
|
190651
190827
|
*
|
|
190652
190828
|
* * Across many applications, the critical concepts are: chordTol, angleTol, maxEdgeLength
|
|
190653
190829
|
* * Chord error is an distance measured from a curve or facet to its approximating stroke or facet.
|
|
@@ -190670,26 +190846,40 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190670
190846
|
*/
|
|
190671
190847
|
class StrokeOptions {
|
|
190672
190848
|
constructor() {
|
|
190673
|
-
/**
|
|
190849
|
+
/** Whether or not to triangulate each added facet */
|
|
190674
190850
|
this.shouldTriangulate = false;
|
|
190675
|
-
/**
|
|
190851
|
+
/** Default number of strokes for a circle. */
|
|
190676
190852
|
this.defaultCircleStrokes = 16;
|
|
190677
190853
|
}
|
|
190678
190854
|
/** Whether params are requested. */
|
|
190679
|
-
get needParams() {
|
|
190680
|
-
|
|
190855
|
+
get needParams() {
|
|
190856
|
+
return this._needParams !== undefined ? this._needParams : false;
|
|
190857
|
+
}
|
|
190858
|
+
set needParams(value) {
|
|
190859
|
+
this._needParams = value;
|
|
190860
|
+
}
|
|
190681
190861
|
/** Whether normals are requested */
|
|
190682
|
-
get needNormals() {
|
|
190862
|
+
get needNormals() {
|
|
190863
|
+
return this._needNormals !== undefined ? this._needNormals : false;
|
|
190864
|
+
}
|
|
190683
190865
|
set needNormals(value) { this._needNormals = value; }
|
|
190684
190866
|
/** Whether twoSided is requested. */
|
|
190685
|
-
get needTwoSided() {
|
|
190867
|
+
get needTwoSided() {
|
|
190868
|
+
return this._needTwoSided !== undefined ? this._needTwoSided : false;
|
|
190869
|
+
}
|
|
190686
190870
|
set needTwoSided(value) { this._needTwoSided = value; }
|
|
190687
|
-
/**
|
|
190688
|
-
get hasAngleTol() {
|
|
190689
|
-
|
|
190690
|
-
|
|
190691
|
-
/**
|
|
190692
|
-
get
|
|
190871
|
+
/** Ask if angleTol is specified */
|
|
190872
|
+
get hasAngleTol() {
|
|
190873
|
+
return this.angleTol !== undefined && Math.abs(this.angleTol.radians) > 0.0;
|
|
190874
|
+
}
|
|
190875
|
+
/** Ask if chordTol is specified */
|
|
190876
|
+
get hasChordTol() {
|
|
190877
|
+
return this.chordTol !== undefined && this.chordTol > 0.0;
|
|
190878
|
+
}
|
|
190879
|
+
/** Ask if maxEdgeLength is specified */
|
|
190880
|
+
get hasMaxEdgeLength() {
|
|
190881
|
+
return this.maxEdgeLength !== undefined && this.maxEdgeLength > 0.0;
|
|
190882
|
+
}
|
|
190693
190883
|
/** Return a deep clone */
|
|
190694
190884
|
clone() {
|
|
190695
190885
|
const options = new StrokeOptions();
|
|
@@ -190706,7 +190896,7 @@ class StrokeOptions {
|
|
|
190706
190896
|
options.defaultCircleStrokes = this.defaultCircleStrokes;
|
|
190707
190897
|
return options;
|
|
190708
190898
|
}
|
|
190709
|
-
/**
|
|
190899
|
+
/** Return stroke count which is the larger of the minCount or count needed for edge length condition. */
|
|
190710
190900
|
applyMaxEdgeLength(minCount, totalLength) {
|
|
190711
190901
|
totalLength = Math.abs(totalLength);
|
|
190712
190902
|
if (this.maxEdgeLength && this.maxEdgeLength > 0.0 && minCount * this.maxEdgeLength < totalLength) {
|
|
@@ -190715,14 +190905,16 @@ class StrokeOptions {
|
|
|
190715
190905
|
return minCount;
|
|
190716
190906
|
}
|
|
190717
190907
|
/**
|
|
190718
|
-
*
|
|
190908
|
+
* Return stroke count which is the larger of the existing count or count needed for angle condition for given
|
|
190909
|
+
* sweepRadians.
|
|
190719
190910
|
* * defaultStepRadians is assumed to be larger than zero.
|
|
190720
190911
|
*/
|
|
190721
190912
|
applyAngleTol(minCount, sweepRadians, defaultStepRadians) {
|
|
190722
190913
|
return StrokeOptions.applyAngleTol(this, minCount, sweepRadians, defaultStepRadians);
|
|
190723
190914
|
}
|
|
190724
190915
|
/**
|
|
190725
|
-
*
|
|
190916
|
+
* Return stroke count which is the larger of minCount and the count required to turn sweepRadians, using tolerance
|
|
190917
|
+
* from the options.
|
|
190726
190918
|
*/
|
|
190727
190919
|
static applyAngleTol(options, minCount, sweepRadians, defaultStepRadians) {
|
|
190728
190920
|
sweepRadians = Math.abs(sweepRadians);
|
|
@@ -190750,7 +190942,8 @@ class StrokeOptions {
|
|
|
190750
190942
|
return minCount;
|
|
190751
190943
|
}
|
|
190752
190944
|
/**
|
|
190753
|
-
* Determine a stroke count for a (partial) circular arc of given radius. This considers angle, maxEdgeLength,
|
|
190945
|
+
* Determine a stroke count for a (partial) circular arc of given radius. This considers angle, maxEdgeLength,
|
|
190946
|
+
* chord, and minimum stroke.
|
|
190754
190947
|
*/
|
|
190755
190948
|
applyTolerancesToArc(radius, sweepRadians = Math.PI * 2) {
|
|
190756
190949
|
let numStrokes = 1;
|
|
@@ -190760,7 +190953,7 @@ class StrokeOptions {
|
|
|
190760
190953
|
numStrokes = this.applyMinStrokesPerPrimitive(numStrokes);
|
|
190761
190954
|
return numStrokes;
|
|
190762
190955
|
}
|
|
190763
|
-
/**
|
|
190956
|
+
/** Return stroke count which is the larger of existing count or count needed for circular arc chord tolerance condition. */
|
|
190764
190957
|
applyChordTol(minCount, radius, sweepRadians) {
|
|
190765
190958
|
if (this.chordTol && this.chordTol > 0.0 && this.chordTol < radius) {
|
|
190766
190959
|
const a = this.chordTol;
|
|
@@ -190769,7 +190962,9 @@ class StrokeOptions {
|
|
|
190769
190962
|
}
|
|
190770
190963
|
return minCount;
|
|
190771
190964
|
}
|
|
190772
|
-
/**
|
|
190965
|
+
/**
|
|
190966
|
+
* Return stroke count which is the larger of existing count or count needed for circular arc chord tol with given
|
|
190967
|
+
* arc length and radians
|
|
190773
190968
|
*/
|
|
190774
190969
|
applyChordTolToLengthAndRadians(minCount, length, sweepRadians) {
|
|
190775
190970
|
if (this.chordTol && this.chordTol > 0.0) {
|
|
@@ -190779,14 +190974,15 @@ class StrokeOptions {
|
|
|
190779
190974
|
}
|
|
190780
190975
|
return minCount;
|
|
190781
190976
|
}
|
|
190782
|
-
/**
|
|
190977
|
+
/** Return stroke count which is the larger of existing count or `this.minStrokesPerPrimitive` */
|
|
190783
190978
|
applyMinStrokesPerPrimitive(minCount) {
|
|
190784
190979
|
if (this.minStrokesPerPrimitive !== undefined && Number.isFinite(this.minStrokesPerPrimitive)
|
|
190785
190980
|
&& this.minStrokesPerPrimitive > minCount)
|
|
190786
190981
|
minCount = this.minStrokesPerPrimitive;
|
|
190787
190982
|
return minCount;
|
|
190788
190983
|
}
|
|
190789
|
-
/**
|
|
190984
|
+
/**
|
|
190985
|
+
* Create `StrokeOptions` with defaults appropriate for curves.
|
|
190790
190986
|
* * angle tolerance of 15 degrees.
|
|
190791
190987
|
* * all others inactive.
|
|
190792
190988
|
*/
|
|
@@ -190795,7 +190991,8 @@ class StrokeOptions {
|
|
|
190795
190991
|
options.angleTol = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(15.0);
|
|
190796
190992
|
return options;
|
|
190797
190993
|
}
|
|
190798
|
-
/**
|
|
190994
|
+
/**
|
|
190995
|
+
* Create `StrokeOptions` with defaults appropriate for surfaces facets
|
|
190799
190996
|
* * angle tolerance of 22.5 degrees.
|
|
190800
190997
|
* * all others inactive.
|
|
190801
190998
|
*/
|
|
@@ -202838,8 +203035,8 @@ class Matrix3d {
|
|
|
202838
203035
|
}
|
|
202839
203036
|
/**
|
|
202840
203037
|
* Create a matrix from column vectors, shuffled into place per axisOrder
|
|
202841
|
-
* For example, if axisOrder = XYZ then it returns [vectorU, vectorV, vectorW]
|
|
202842
|
-
* Another example, if axisOrder = YZX then it returns [vectorW, vectorU, vectorV] because
|
|
203038
|
+
* * For example, if axisOrder = XYZ then it returns [vectorU, vectorV, vectorW]
|
|
203039
|
+
* * Another example, if axisOrder = YZX then it returns [vectorW, vectorU, vectorV] because
|
|
202843
203040
|
* Y is at index 0 so vectorU goes to the column Y (column 2), Z is at index 1 so vectorV goes
|
|
202844
203041
|
* to the column Z (column 3), and X is at index 2 so vectorW goes to the column X (column 1)
|
|
202845
203042
|
*/
|
|
@@ -272237,9 +272434,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
272237
272434
|
/* harmony export */ "DialogProperty": () => (/* reexport safe */ _appui_abstract_dialogs_DialogItem__WEBPACK_IMPORTED_MODULE_4__.DialogProperty),
|
|
272238
272435
|
/* harmony export */ "DisplayMessageType": () => (/* reexport safe */ _appui_abstract_notification_MessagePresenter__WEBPACK_IMPORTED_MODULE_14__.DisplayMessageType),
|
|
272239
272436
|
/* harmony export */ "FunctionKey": () => (/* reexport safe */ _appui_abstract_common_KeyboardKey__WEBPACK_IMPORTED_MODULE_1__.FunctionKey),
|
|
272240
|
-
/* harmony export */ "FuzzyScore": () => (/* reexport safe */
|
|
272437
|
+
/* harmony export */ "FuzzyScore": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.FuzzyScore),
|
|
272241
272438
|
/* harmony export */ "GenericUiEvent": () => (/* reexport safe */ _appui_abstract_UiAdmin__WEBPACK_IMPORTED_MODULE_0__.GenericUiEvent),
|
|
272242
|
-
/* harmony export */ "IconSpecUtilities": () => (/* reexport safe */
|
|
272439
|
+
/* harmony export */ "IconSpecUtilities": () => (/* reexport safe */ _appui_abstract_utils_IconSpecUtilities__WEBPACK_IMPORTED_MODULE_27__.IconSpecUtilities),
|
|
272243
272440
|
/* harmony export */ "MessageSeverity": () => (/* reexport safe */ _appui_abstract_notification_MessageSeverity__WEBPACK_IMPORTED_MODULE_15__.MessageSeverity),
|
|
272244
272441
|
/* harmony export */ "PropertyChangeStatus": () => (/* reexport safe */ _appui_abstract_dialogs_UiDataProvider__WEBPACK_IMPORTED_MODULE_6__.PropertyChangeStatus),
|
|
272245
272442
|
/* harmony export */ "PropertyDescriptionHelper": () => (/* reexport safe */ _appui_abstract_properties_Description__WEBPACK_IMPORTED_MODULE_16__.PropertyDescriptionHelper),
|
|
@@ -272256,17 +272453,17 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
272256
272453
|
/* harmony export */ "ToolbarItemUtilities": () => (/* reexport safe */ _appui_abstract_toolbars_ToolbarItem__WEBPACK_IMPORTED_MODULE_24__.ToolbarItemUtilities),
|
|
272257
272454
|
/* harmony export */ "UiAdmin": () => (/* reexport safe */ _appui_abstract_UiAdmin__WEBPACK_IMPORTED_MODULE_0__.UiAdmin),
|
|
272258
272455
|
/* harmony export */ "UiDataProvider": () => (/* reexport safe */ _appui_abstract_dialogs_UiDataProvider__WEBPACK_IMPORTED_MODULE_6__.UiDataProvider),
|
|
272259
|
-
/* harmony export */ "UiError": () => (/* reexport safe */
|
|
272260
|
-
/* harmony export */ "UiEvent": () => (/* reexport safe */
|
|
272261
|
-
/* harmony export */ "UiEventDispatcher": () => (/* reexport safe */
|
|
272456
|
+
/* harmony export */ "UiError": () => (/* reexport safe */ _appui_abstract_utils_UiError__WEBPACK_IMPORTED_MODULE_29__.UiError),
|
|
272457
|
+
/* harmony export */ "UiEvent": () => (/* reexport safe */ _appui_abstract_utils_UiEvent__WEBPACK_IMPORTED_MODULE_31__.UiEvent),
|
|
272458
|
+
/* harmony export */ "UiEventDispatcher": () => (/* reexport safe */ _appui_abstract_utils_UiEventDispatcher__WEBPACK_IMPORTED_MODULE_30__.UiEventDispatcher),
|
|
272262
272459
|
/* harmony export */ "UiLayoutDataProvider": () => (/* reexport safe */ _appui_abstract_dialogs_UiLayoutDataProvider__WEBPACK_IMPORTED_MODULE_5__.UiLayoutDataProvider),
|
|
272263
|
-
/* harmony export */ "UiSyncEvent": () => (/* reexport safe */
|
|
272264
|
-
/* harmony export */ "convertSimple2RegExpPattern": () => (/* reexport safe */
|
|
272265
|
-
/* harmony export */ "createMatches": () => (/* reexport safe */
|
|
272266
|
-
/* harmony export */ "equalsIgnoreCase": () => (/* reexport safe */
|
|
272267
|
-
/* harmony export */ "fuzzyScore": () => (/* reexport safe */
|
|
272268
|
-
/* harmony export */ "fuzzyScoreGraceful": () => (/* reexport safe */
|
|
272269
|
-
/* harmony export */ "fuzzyScoreGracefulAggressive": () => (/* reexport safe */
|
|
272460
|
+
/* harmony export */ "UiSyncEvent": () => (/* reexport safe */ _appui_abstract_utils_UiEventDispatcher__WEBPACK_IMPORTED_MODULE_30__.UiSyncEvent),
|
|
272461
|
+
/* harmony export */ "convertSimple2RegExpPattern": () => (/* reexport safe */ _appui_abstract_utils_filter_strings__WEBPACK_IMPORTED_MODULE_34__.convertSimple2RegExpPattern),
|
|
272462
|
+
/* harmony export */ "createMatches": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.createMatches),
|
|
272463
|
+
/* harmony export */ "equalsIgnoreCase": () => (/* reexport safe */ _appui_abstract_utils_filter_strings__WEBPACK_IMPORTED_MODULE_34__.equalsIgnoreCase),
|
|
272464
|
+
/* harmony export */ "fuzzyScore": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.fuzzyScore),
|
|
272465
|
+
/* harmony export */ "fuzzyScoreGraceful": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.fuzzyScoreGraceful),
|
|
272466
|
+
/* harmony export */ "fuzzyScoreGracefulAggressive": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.fuzzyScoreGracefulAggressive),
|
|
272270
272467
|
/* harmony export */ "getClassName": () => (/* reexport safe */ _appui_abstract_utils_misc__WEBPACK_IMPORTED_MODULE_26__.getClassName),
|
|
272271
272468
|
/* harmony export */ "isArrowKey": () => (/* reexport safe */ _appui_abstract_common_KeyboardKey__WEBPACK_IMPORTED_MODULE_1__.isArrowKey),
|
|
272272
272469
|
/* harmony export */ "isButtonGroupEditorParams": () => (/* reexport safe */ _appui_abstract_properties_EditorParams__WEBPACK_IMPORTED_MODULE_17__.isButtonGroupEditorParams),
|
|
@@ -272274,22 +272471,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
272274
272471
|
/* harmony export */ "isCustomFormattedNumberParams": () => (/* reexport safe */ _appui_abstract_properties_EditorParams__WEBPACK_IMPORTED_MODULE_17__.isCustomFormattedNumberParams),
|
|
272275
272472
|
/* harmony export */ "isIconListEditorParams": () => (/* reexport safe */ _appui_abstract_properties_EditorParams__WEBPACK_IMPORTED_MODULE_17__.isIconListEditorParams),
|
|
272276
272473
|
/* harmony export */ "isInputEditorSizeParams": () => (/* reexport safe */ _appui_abstract_properties_EditorParams__WEBPACK_IMPORTED_MODULE_17__.isInputEditorSizeParams),
|
|
272277
|
-
/* harmony export */ "
|
|
272278
|
-
/* harmony export */ "
|
|
272279
|
-
/* harmony export */ "isPatternInWord": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_34__.isPatternInWord),
|
|
272474
|
+
/* harmony export */ "isLowerAsciiLetter": () => (/* reexport safe */ _appui_abstract_utils_filter_strings__WEBPACK_IMPORTED_MODULE_34__.isLowerAsciiLetter),
|
|
272475
|
+
/* harmony export */ "isPatternInWord": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.isPatternInWord),
|
|
272280
272476
|
/* harmony export */ "isSuppressLabelEditorParams": () => (/* reexport safe */ _appui_abstract_properties_EditorParams__WEBPACK_IMPORTED_MODULE_17__.isSuppressLabelEditorParams),
|
|
272281
|
-
/* harmony export */ "isUpperAsciiLetter": () => (/* reexport safe */
|
|
272477
|
+
/* harmony export */ "isUpperAsciiLetter": () => (/* reexport safe */ _appui_abstract_utils_filter_strings__WEBPACK_IMPORTED_MODULE_34__.isUpperAsciiLetter),
|
|
272282
272478
|
/* harmony export */ "loggerCategory": () => (/* reexport safe */ _appui_abstract_utils_misc__WEBPACK_IMPORTED_MODULE_26__.loggerCategory),
|
|
272283
|
-
/* harmony export */ "matchesCamelCase": () => (/* reexport safe */
|
|
272284
|
-
/* harmony export */ "matchesContiguousSubString": () => (/* reexport safe */
|
|
272285
|
-
/* harmony export */ "matchesFuzzy": () => (/* reexport safe */
|
|
272286
|
-
/* harmony export */ "matchesFuzzy2": () => (/* reexport safe */
|
|
272287
|
-
/* harmony export */ "matchesPrefix": () => (/* reexport safe */
|
|
272288
|
-
/* harmony export */ "matchesStrictPrefix": () => (/* reexport safe */
|
|
272289
|
-
/* harmony export */ "matchesSubString": () => (/* reexport safe */
|
|
272290
|
-
/* harmony export */ "matchesWords": () => (/* reexport safe */
|
|
272291
|
-
/* harmony export */ "or": () => (/* reexport safe */
|
|
272292
|
-
/* harmony export */ "startsWithIgnoreCase": () => (/* reexport safe */
|
|
272479
|
+
/* harmony export */ "matchesCamelCase": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesCamelCase),
|
|
272480
|
+
/* harmony export */ "matchesContiguousSubString": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesContiguousSubString),
|
|
272481
|
+
/* harmony export */ "matchesFuzzy": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesFuzzy),
|
|
272482
|
+
/* harmony export */ "matchesFuzzy2": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesFuzzy2),
|
|
272483
|
+
/* harmony export */ "matchesPrefix": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesPrefix),
|
|
272484
|
+
/* harmony export */ "matchesStrictPrefix": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesStrictPrefix),
|
|
272485
|
+
/* harmony export */ "matchesSubString": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesSubString),
|
|
272486
|
+
/* harmony export */ "matchesWords": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.matchesWords),
|
|
272487
|
+
/* harmony export */ "or": () => (/* reexport safe */ _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__.or),
|
|
272488
|
+
/* harmony export */ "startsWithIgnoreCase": () => (/* reexport safe */ _appui_abstract_utils_filter_strings__WEBPACK_IMPORTED_MODULE_34__.startsWithIgnoreCase)
|
|
272293
272489
|
/* harmony export */ });
|
|
272294
272490
|
/* harmony import */ var _appui_abstract_UiAdmin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appui-abstract/UiAdmin */ "../../ui/appui-abstract/lib/esm/appui-abstract/UiAdmin.js");
|
|
272295
272491
|
/* harmony import */ var _appui_abstract_common_KeyboardKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./appui-abstract/common/KeyboardKey */ "../../ui/appui-abstract/lib/esm/appui-abstract/common/KeyboardKey.js");
|
|
@@ -272318,15 +272514,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
272318
272514
|
/* harmony import */ var _appui_abstract_toolbars_ToolbarItem__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./appui-abstract/toolbars/ToolbarItem */ "../../ui/appui-abstract/lib/esm/appui-abstract/toolbars/ToolbarItem.js");
|
|
272319
272515
|
/* harmony import */ var _appui_abstract_utils_callbacks__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./appui-abstract/utils/callbacks */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/callbacks.js");
|
|
272320
272516
|
/* harmony import */ var _appui_abstract_utils_misc__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./appui-abstract/utils/misc */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/misc.js");
|
|
272321
|
-
/* harmony import */ var
|
|
272322
|
-
/* harmony import */ var
|
|
272323
|
-
/* harmony import */ var
|
|
272324
|
-
/* harmony import */ var
|
|
272325
|
-
/* harmony import */ var
|
|
272326
|
-
/* harmony import */ var
|
|
272327
|
-
/* harmony import */ var
|
|
272328
|
-
/* harmony import */ var
|
|
272329
|
-
/* harmony import */ var _appui_abstract_utils_filter_strings__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./appui-abstract/utils/filter/strings */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/filter/strings.js");
|
|
272517
|
+
/* harmony import */ var _appui_abstract_utils_IconSpecUtilities__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./appui-abstract/utils/IconSpecUtilities */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/IconSpecUtilities.js");
|
|
272518
|
+
/* harmony import */ var _appui_abstract_utils_PointProps__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./appui-abstract/utils/PointProps */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/PointProps.js");
|
|
272519
|
+
/* harmony import */ var _appui_abstract_utils_UiError__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./appui-abstract/utils/UiError */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/UiError.js");
|
|
272520
|
+
/* harmony import */ var _appui_abstract_utils_UiEventDispatcher__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./appui-abstract/utils/UiEventDispatcher */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/UiEventDispatcher.js");
|
|
272521
|
+
/* harmony import */ var _appui_abstract_utils_UiEvent__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./appui-abstract/utils/UiEvent */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/UiEvent.js");
|
|
272522
|
+
/* harmony import */ var _appui_abstract_utils_filter_charCode__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./appui-abstract/utils/filter/charCode */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/filter/charCode.js");
|
|
272523
|
+
/* harmony import */ var _appui_abstract_utils_filter_filters__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./appui-abstract/utils/filter/filters */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/filter/filters.js");
|
|
272524
|
+
/* harmony import */ var _appui_abstract_utils_filter_strings__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./appui-abstract/utils/filter/strings */ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/filter/strings.js");
|
|
272330
272525
|
/*---------------------------------------------------------------------------------------------
|
|
272331
272526
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
272332
272527
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -272364,7 +272559,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
272364
272559
|
|
|
272365
272560
|
|
|
272366
272561
|
|
|
272367
|
-
|
|
272368
272562
|
|
|
272369
272563
|
|
|
272370
272564
|
/** @docs-package-description
|
|
@@ -275793,36 +275987,6 @@ function startsWithIgnoreCase(str, candidate) {
|
|
|
275793
275987
|
}
|
|
275794
275988
|
|
|
275795
275989
|
|
|
275796
|
-
/***/ }),
|
|
275797
|
-
|
|
275798
|
-
/***/ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/isLetter.js":
|
|
275799
|
-
/*!************************************************************************!*\
|
|
275800
|
-
!*** ../../ui/appui-abstract/lib/esm/appui-abstract/utils/isLetter.js ***!
|
|
275801
|
-
\************************************************************************/
|
|
275802
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
275803
|
-
|
|
275804
|
-
"use strict";
|
|
275805
|
-
__webpack_require__.r(__webpack_exports__);
|
|
275806
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
275807
|
-
/* harmony export */ "isLetter": () => (/* binding */ isLetter)
|
|
275808
|
-
/* harmony export */ });
|
|
275809
|
-
/*---------------------------------------------------------------------------------------------
|
|
275810
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
275811
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
275812
|
-
*--------------------------------------------------------------------------------------------*/
|
|
275813
|
-
/** @packageDocumentation
|
|
275814
|
-
* @module Utilities
|
|
275815
|
-
*/
|
|
275816
|
-
/** Uses ECMAScript case transformation (toLowerCase() and toUpperCase()) to check whether or not a given character is a letter.
|
|
275817
|
-
* Beyond the English alphabet, this solution will also work for most Greek, Armenian, Cyrillic, and Latin characters.
|
|
275818
|
-
* But, it will not work for Chinese or Japanese characters since those languages do not have uppercase and lowercase letters.
|
|
275819
|
-
* @alpha
|
|
275820
|
-
*/
|
|
275821
|
-
function isLetter(char) {
|
|
275822
|
-
return char.length === 1 && char.toLowerCase() !== char.toUpperCase();
|
|
275823
|
-
}
|
|
275824
|
-
|
|
275825
|
-
|
|
275826
275990
|
/***/ }),
|
|
275827
275991
|
|
|
275828
275992
|
/***/ "../../ui/appui-abstract/lib/esm/appui-abstract/utils/misc.js":
|
|
@@ -281214,7 +281378,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
|
|
|
281214
281378
|
/***/ ((module) => {
|
|
281215
281379
|
|
|
281216
281380
|
"use strict";
|
|
281217
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.
|
|
281381
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.1.0-dev.5","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm","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","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"},"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.5","@itwin/core-bentley":"workspace:^4.1.0-dev.5","@itwin/core-common":"workspace:^4.1.0-dev.5","@itwin/core-geometry":"workspace:^4.1.0-dev.5","@itwin/core-orbitgt":"workspace:^4.1.0-dev.5","@itwin/core-quantity":"workspace:^4.1.0-dev.5"},"//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"}}]}}');
|
|
281218
281382
|
|
|
281219
281383
|
/***/ })
|
|
281220
281384
|
|