@itwin/rpcinterface-full-stack-tests 4.0.0-dev.55 → 4.0.0-dev.56
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/_d48c.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +474 -425
- 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.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_itwin_object-storage-azure_1_5_0_node_modules_itwin_obj-e3e81d.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_3_1_node_modules_loaders_gl_draco_di-d3af41.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 +13 -13
|
@@ -176432,7 +176432,11 @@ class Geometry {
|
|
|
176432
176432
|
static resolveToUndefined(value, targetValue) {
|
|
176433
176433
|
return value === targetValue ? undefined : value;
|
|
176434
176434
|
}
|
|
176435
|
-
/**
|
|
176435
|
+
/**
|
|
176436
|
+
* Simple interpolation between values, but choosing (based on fraction) a or b as starting
|
|
176437
|
+
* point for maximum accuracy.
|
|
176438
|
+
* * If `f = 0`, then `a` is returned and if `f = 1`, then `b` is returned.
|
|
176439
|
+
*/
|
|
176436
176440
|
static interpolate(a, f, b) {
|
|
176437
176441
|
return f <= 0.5 ? a + f * (b - a) : b - (1.0 - f) * (b - a);
|
|
176438
176442
|
}
|
|
@@ -205259,11 +205263,11 @@ class Angle {
|
|
|
205259
205263
|
}
|
|
205260
205264
|
}
|
|
205261
205265
|
/**
|
|
205262
|
-
|
|
205263
|
-
|
|
205264
|
-
|
|
205265
|
-
|
|
205266
|
-
|
|
205266
|
+
* Create an Angle from a JSON object
|
|
205267
|
+
* @param json object from JSON.parse. If a number, value is in *DEGREES*
|
|
205268
|
+
* @param defaultValRadians if json is undefined, default value in radians.
|
|
205269
|
+
* @return a new Angle
|
|
205270
|
+
*/
|
|
205267
205271
|
static fromJSON(json, defaultValRadians) {
|
|
205268
205272
|
const val = new Angle();
|
|
205269
205273
|
val.setFromJSON(json, defaultValRadians);
|
|
@@ -205318,21 +205322,15 @@ class Angle {
|
|
|
205318
205322
|
// all larger radians reference from 360 degrees (2PI)
|
|
205319
205323
|
return 360.0 + 180 * ((radians - 2.0 * pi) / pi);
|
|
205320
205324
|
}
|
|
205321
|
-
/**
|
|
205322
|
-
* Return the cosine of this Angle object's angle.
|
|
205323
|
-
*/
|
|
205325
|
+
/** Return the cosine of this Angle object's angle */
|
|
205324
205326
|
cos() {
|
|
205325
205327
|
return Math.cos(this._radians);
|
|
205326
205328
|
}
|
|
205327
|
-
/**
|
|
205328
|
-
* Return the sine of this Angle object's angle.
|
|
205329
|
-
*/
|
|
205329
|
+
/** Return the sine of this Angle object's angle */
|
|
205330
205330
|
sin() {
|
|
205331
205331
|
return Math.sin(this._radians);
|
|
205332
205332
|
}
|
|
205333
|
-
/**
|
|
205334
|
-
* Return the tangent of this Angle object's angle.
|
|
205335
|
-
*/
|
|
205333
|
+
/** Return the tangent of this Angle object's angle */
|
|
205336
205334
|
tan() {
|
|
205337
205335
|
return Math.tan(this._radians);
|
|
205338
205336
|
}
|
|
@@ -205344,11 +205342,11 @@ class Angle {
|
|
|
205344
205342
|
static isHalfCircleRadians(radians) {
|
|
205345
205343
|
return Math.abs(Math.abs(radians) - Math.PI) <= _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallAngleRadians;
|
|
205346
205344
|
}
|
|
205347
|
-
/**
|
|
205345
|
+
/** Test if the angle is a full circle */
|
|
205348
205346
|
get isFullCircle() {
|
|
205349
205347
|
return Angle.isFullCircleRadians(this._radians);
|
|
205350
205348
|
}
|
|
205351
|
-
/**
|
|
205349
|
+
/** Test if the angle is a half circle (in either direction) */
|
|
205352
205350
|
get isHalfCircle() {
|
|
205353
205351
|
return Angle.isHalfCircleRadians(this._radians);
|
|
205354
205352
|
}
|
|
@@ -205417,7 +205415,7 @@ class Angle {
|
|
|
205417
205415
|
// fall through for NaN disaster.
|
|
205418
205416
|
return 0;
|
|
205419
205417
|
}
|
|
205420
|
-
/**
|
|
205418
|
+
/** Return a (newly allocated) Angle object with value 0 radians */
|
|
205421
205419
|
static zero() {
|
|
205422
205420
|
return new Angle(0);
|
|
205423
205421
|
}
|
|
@@ -205571,19 +205569,19 @@ class Angle {
|
|
|
205571
205569
|
return value;
|
|
205572
205570
|
}
|
|
205573
205571
|
/**
|
|
205574
|
-
|
|
205575
|
-
|
|
205576
|
-
|
|
205577
|
-
|
|
205578
|
-
|
|
205579
|
-
|
|
205580
|
-
|
|
205581
|
-
|
|
205582
|
-
|
|
205583
|
-
|
|
205584
|
-
|
|
205585
|
-
|
|
205586
|
-
|
|
205572
|
+
* Return the half angle cosine, sine, and radians for given dot products between vectors. The vectors define
|
|
205573
|
+
* an ellipse using x(t) = c + U cos(t) + V sin(t) so U and V are at angle t=0 degree and t=90 degree. The
|
|
205574
|
+
* half angle t0 is an angle such that x(t0) is one of the ellipse semi-axis.
|
|
205575
|
+
* * This construction arises e.g. in `Arc3d.toScaledMatrix3d`.
|
|
205576
|
+
* * Given ellipse x(t) = c + U cos(t) + V sin(t), find t0 such that radial vector W(t0) = x(t0) - c is
|
|
205577
|
+
* perpendicular to the ellipse.
|
|
205578
|
+
* * Then 0 = W(t0).x'(t0) = (U cos(t0) + V sin(t0)).(V cos(t0) - U sin(t0)) = U.V cos(2t0) + 0.5 (V.V - U.U) sin(2t0)
|
|
205579
|
+
* implies sin(2t0) / cos(2t0) = 2 U.V / (U.U - V.V), i.e., t0 can be computed given the three dot products on the RHS.
|
|
205580
|
+
* math details can be found at docs/learning/geometry/Angle.md
|
|
205581
|
+
* @param dotUU dot product of vectorU with itself
|
|
205582
|
+
* @param dotVV dot product of vectorV with itself
|
|
205583
|
+
* @param dotUV dot product of vectorU with vectorV
|
|
205584
|
+
*/
|
|
205587
205585
|
static dotProductsToHalfAngleTrigValues(dotUU, dotVV, dotUV, favorZero = true) {
|
|
205588
205586
|
const cos2t0 = dotUU - dotVV;
|
|
205589
205587
|
const sin2t0 = 2.0 * dotUV;
|
|
@@ -205592,9 +205590,8 @@ class Angle {
|
|
|
205592
205590
|
return Angle.trigValuesToHalfAngleTrigValues(cos2t0, sin2t0);
|
|
205593
205591
|
}
|
|
205594
205592
|
/**
|
|
205595
|
-
*
|
|
205593
|
+
* Returns the angle between two vectors, with the vectors given as xyz components
|
|
205596
205594
|
* * The returned angle is between 0 and PI
|
|
205597
|
-
*
|
|
205598
205595
|
* @param ux x component of vector u
|
|
205599
205596
|
* @param uy y component of vector u
|
|
205600
205597
|
* @param uz z component of vector u
|
|
@@ -205607,7 +205604,8 @@ class Angle {
|
|
|
205607
205604
|
return Math.atan2(_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductMagnitude(ux, uy, uz, vx, vy, vz), uDotV);
|
|
205608
205605
|
}
|
|
205609
205606
|
/**
|
|
205610
|
-
*
|
|
205607
|
+
* Returns the angle between two vectors, with the vectors given as xyz components, and an up vector to resolve
|
|
205608
|
+
* angle to a full 2PI range.
|
|
205611
205609
|
* * The returned angle is (-PI < radians <= PI) or (0 <= radians < 2 * PI)
|
|
205612
205610
|
* * The angle is in the plane of the U and V vectors.
|
|
205613
205611
|
* * The upVector determines a positive side of the plane but need not be strictly perpendicular to the plane.
|
|
@@ -205621,7 +205619,8 @@ class Angle {
|
|
|
205621
205619
|
* @param upVectorX x component of vector to positive side of plane.
|
|
205622
205620
|
* @param upVectorY y component of vector to positive side of plane.
|
|
205623
205621
|
* @param upVectorZ z component of vector to positive side of plane.
|
|
205624
|
-
* @param adjustToAllPositive if true, return strictly non-negative sweep (0 <= radians < 2*PI).
|
|
205622
|
+
* @param adjustToAllPositive if true, return strictly non-negative sweep (0 <= radians < 2*PI). If false, return
|
|
205623
|
+
* signed (-PI < radians <= PI)
|
|
205625
205624
|
*/
|
|
205626
205625
|
static orientedRadiansBetweenVectorsXYZ(ux, uy, uz, vx, vy, vz, upVectorX, upVectorY, upVectorZ, adjustToPositive = false) {
|
|
205627
205626
|
const uDotV = ux * vx + uy * vy + uz * vz;
|
|
@@ -205632,8 +205631,8 @@ class Angle {
|
|
|
205632
205631
|
const crossMagnitude = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(wx, wy, wz);
|
|
205633
205632
|
if (upDotW < 0.0) {
|
|
205634
205633
|
if (adjustToPositive) {
|
|
205635
|
-
// The turn is greater than 180 degrees. Take a peculiarly oriented atan2 to get the excess-180 part as
|
|
205636
|
-
// This gives the smoothest numerical transition passing PI.
|
|
205634
|
+
// The turn is greater than 180 degrees. Take a peculiarly oriented atan2 to get the excess-180 part as
|
|
205635
|
+
// addition to PI. This gives the smoothest numerical transition passing PI.
|
|
205637
205636
|
return Math.PI + Math.atan2(crossMagnitude, -uDotV);
|
|
205638
205637
|
}
|
|
205639
205638
|
else {
|
|
@@ -205748,7 +205747,8 @@ class AngleSweep {
|
|
|
205748
205747
|
get endAngle() {
|
|
205749
205748
|
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createRadians(this._radians1);
|
|
205750
205749
|
}
|
|
205751
|
-
/**
|
|
205750
|
+
/**
|
|
205751
|
+
* Create a sweep as one of
|
|
205752
205752
|
* * A clone of a given sweep
|
|
205753
205753
|
* * 0 to given angle
|
|
205754
205754
|
* * full circle if no arg given (sweep 0 to 360 degrees)
|
|
@@ -205760,7 +205760,8 @@ class AngleSweep {
|
|
|
205760
205760
|
return new AngleSweep(0, data.radians);
|
|
205761
205761
|
return AngleSweep.create360();
|
|
205762
205762
|
}
|
|
205763
|
-
/**
|
|
205763
|
+
/**
|
|
205764
|
+
* (private) constructor with start and end angles in radians.
|
|
205764
205765
|
* * Use explicitly named static methods to clarify intent and units of inputs:
|
|
205765
205766
|
*
|
|
205766
205767
|
* * createStartEndRadians (startRadians:number, endRadians:number)
|
|
@@ -205775,9 +205776,9 @@ class AngleSweep {
|
|
|
205775
205776
|
this._radians1 = endRadians;
|
|
205776
205777
|
}
|
|
205777
205778
|
/**
|
|
205778
|
-
*
|
|
205779
|
+
* Directly set the start and end angles in radians
|
|
205779
205780
|
* * If the difference between startRadians and endRadians is greater than 360, the function limits the angle sweep to 360.
|
|
205780
|
-
|
|
205781
|
+
*/
|
|
205781
205782
|
setStartEndRadians(startRadians = 0, endRadians = 2.0 * Math.PI) {
|
|
205782
205783
|
const delta = endRadians - startRadians;
|
|
205783
205784
|
if (_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isFullCircleRadians(delta)) {
|
|
@@ -205786,14 +205787,14 @@ class AngleSweep {
|
|
|
205786
205787
|
this._radians0 = startRadians;
|
|
205787
205788
|
this._radians1 = endRadians;
|
|
205788
205789
|
}
|
|
205789
|
-
/**
|
|
205790
|
+
/** Directly set the start and end angles in degrees */
|
|
205790
205791
|
setStartEndDegrees(startDegrees = 0, endDegrees = 360.0) {
|
|
205791
205792
|
this.setStartEndRadians(_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.degreesToRadians(startDegrees), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.degreesToRadians(endDegrees));
|
|
205792
205793
|
}
|
|
205793
205794
|
/**
|
|
205794
|
-
*
|
|
205795
|
+
* Create an AngleSweep from start and end angles given in radians.
|
|
205795
205796
|
* * If the difference between startRadians and endRadians is greater than 360, the function limits the angle sweep to 360.
|
|
205796
|
-
|
|
205797
|
+
*/
|
|
205797
205798
|
static createStartEndRadians(startRadians = 0, endRadians = 2.0 * Math.PI, result) {
|
|
205798
205799
|
result = result ? result : new AngleSweep();
|
|
205799
205800
|
result.setStartEndRadians(startRadians, endRadians);
|
|
@@ -205803,23 +205804,23 @@ class AngleSweep {
|
|
|
205803
205804
|
cloneMinusRadians(radians) {
|
|
205804
205805
|
return new AngleSweep(this._radians0 - radians, this._radians1 - radians);
|
|
205805
205806
|
}
|
|
205806
|
-
/**
|
|
205807
|
+
/** Create an AngleSweep from start and end angles given in degrees. */
|
|
205807
205808
|
static createStartEndDegrees(startDegrees = 0, endDegrees = 360, result) {
|
|
205808
205809
|
return AngleSweep.createStartEndRadians(_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.degreesToRadians(startDegrees), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.degreesToRadians(endDegrees), result);
|
|
205809
205810
|
}
|
|
205810
|
-
/**
|
|
205811
|
+
/** Create an angle sweep from strongly typed start and end angles */
|
|
205811
205812
|
static createStartEnd(startAngle, endAngle, result) {
|
|
205812
205813
|
result = result ? result : new AngleSweep();
|
|
205813
205814
|
result.setStartEndRadians(startAngle.radians, endAngle.radians);
|
|
205814
205815
|
return result;
|
|
205815
205816
|
}
|
|
205816
|
-
/**
|
|
205817
|
+
/** Create an AngleSweep from start and end angles given in radians. */
|
|
205817
205818
|
static createStartSweepRadians(startRadians = 0, sweepRadians = Math.PI, result) {
|
|
205818
205819
|
result = result ? result : new AngleSweep();
|
|
205819
205820
|
result.setStartEndRadians(startRadians, startRadians + sweepRadians);
|
|
205820
205821
|
return result;
|
|
205821
205822
|
}
|
|
205822
|
-
/**
|
|
205823
|
+
/** Create an AngleSweep from start and sweep given in degrees. */
|
|
205823
205824
|
static createStartSweepDegrees(startDegrees = 0, sweepDegrees = 360, result) {
|
|
205824
205825
|
return AngleSweep.createStartEndRadians(_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.degreesToRadians(startDegrees), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.degreesToRadians(startDegrees + sweepDegrees), result);
|
|
205825
205826
|
}
|
|
@@ -205831,17 +205832,17 @@ class AngleSweep {
|
|
|
205831
205832
|
interpolate(fraction, other) {
|
|
205832
205833
|
return new AngleSweep(_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(this._radians0, fraction, other._radians0), _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(this._radians1, fraction, other._radians1));
|
|
205833
205834
|
}
|
|
205834
|
-
/**
|
|
205835
|
+
/** Copy from other AngleSweep. */
|
|
205835
205836
|
setFrom(other) {
|
|
205836
205837
|
this._radians0 = other._radians0;
|
|
205837
205838
|
this._radians1 = other._radians1;
|
|
205838
205839
|
}
|
|
205839
|
-
/**
|
|
205840
|
+
/** Create a full circle sweep (CCW). startRadians defaults to 0 */
|
|
205840
205841
|
static create360(startRadians) {
|
|
205841
205842
|
startRadians = startRadians ? startRadians : 0.0;
|
|
205842
205843
|
return new AngleSweep(startRadians, startRadians + 2.0 * Math.PI);
|
|
205843
205844
|
}
|
|
205844
|
-
/**
|
|
205845
|
+
/** Create a sweep from the south pole to the north pole (-90 to +90). */
|
|
205845
205846
|
static createFullLatitude() {
|
|
205846
205847
|
return AngleSweep.createStartEndRadians(-0.5 * Math.PI, 0.5 * Math.PI);
|
|
205847
205848
|
}
|
|
@@ -205851,7 +205852,8 @@ class AngleSweep {
|
|
|
205851
205852
|
this._radians0 = this._radians1;
|
|
205852
205853
|
this._radians1 = tmp;
|
|
205853
205854
|
}
|
|
205854
|
-
/**
|
|
205855
|
+
/**
|
|
205856
|
+
* Return a sweep for the "other" part of the circle.
|
|
205855
205857
|
* @param reverseDirection true to move backwards (CW) from start to end, false to more forwards (CCW) from start to end.
|
|
205856
205858
|
*/
|
|
205857
205859
|
cloneComplement(reverseDirection = false, result) {
|
|
@@ -205861,9 +205863,7 @@ class AngleSweep {
|
|
|
205861
205863
|
else
|
|
205862
205864
|
return AngleSweep.createStartEndRadians(this.endRadians, this.startRadians + s * Math.PI, result);
|
|
205863
205865
|
}
|
|
205864
|
-
/**
|
|
205865
|
-
* Restrict start and end angles into the range (-90,+90) in degrees.
|
|
205866
|
-
* */
|
|
205866
|
+
/** Restrict start and end angles into the range (-90,+90) in degrees */
|
|
205867
205867
|
capLatitudeInPlace() {
|
|
205868
205868
|
const limit = 0.5 * Math.PI;
|
|
205869
205869
|
this._radians0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.clampToStartEnd(this._radians0, -limit, limit);
|
|
@@ -205883,7 +205883,7 @@ class AngleSweep {
|
|
|
205883
205883
|
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(this._radians0, -a)
|
|
205884
205884
|
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(this._radians1, a);
|
|
205885
205885
|
}
|
|
205886
|
-
/**
|
|
205886
|
+
/** Return a clone of this sweep. */
|
|
205887
205887
|
clone() {
|
|
205888
205888
|
return new AngleSweep(this._radians0, this._radians1);
|
|
205889
205889
|
}
|
|
@@ -205897,15 +205897,16 @@ class AngleSweep {
|
|
|
205897
205897
|
fractionToAngle(fraction) {
|
|
205898
205898
|
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createRadians(this.fractionToRadians(fraction));
|
|
205899
205899
|
}
|
|
205900
|
-
/**
|
|
205900
|
+
/**
|
|
205901
|
+
* Return 2PI divided by the sweep radians (i.e. 360 degrees divided by sweep angle).
|
|
205901
205902
|
* * This is the number of fractional intervals required to cover a whole circle.
|
|
205902
205903
|
*/
|
|
205903
205904
|
fractionPeriod() {
|
|
205904
205905
|
return _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.safeDivideFraction(Math.PI * 2.0, Math.abs(this._radians1 - this._radians0), 1.0);
|
|
205905
205906
|
}
|
|
205906
|
-
/**
|
|
205907
|
+
/**
|
|
205908
|
+
* Return the fractionalized position of the given angle (as Angle) computed without consideration of
|
|
205907
205909
|
* 2PI period and without consideration of angle sweep direction (CW or CCW).
|
|
205908
|
-
*
|
|
205909
205910
|
* * the start angle is at fraction 0
|
|
205910
205911
|
* * the end angle is at fraction 1
|
|
205911
205912
|
* * interior angles are between 0 and 1
|
|
@@ -205918,8 +205919,8 @@ class AngleSweep {
|
|
|
205918
205919
|
angleToUnboundedFraction(theta) {
|
|
205919
205920
|
return _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.safeDivideFraction(theta.radians - this._radians0, this._radians1 - this._radians0, 1.0);
|
|
205920
205921
|
}
|
|
205921
|
-
/**
|
|
205922
|
-
*
|
|
205922
|
+
/**
|
|
205923
|
+
* Return the fractionalized position of the given angle (as radians), computed with consideration of 2PI period.
|
|
205923
205924
|
* * consider radians0 as `start` angle of the sweep and radians1 as `end` angle of the sweep
|
|
205924
205925
|
* * fraction is always positive
|
|
205925
205926
|
* * the start angle is at fraction 0
|
|
@@ -205944,8 +205945,8 @@ class AngleSweep {
|
|
|
205944
205945
|
const fraction2 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.safeDivideFraction(delta2, -sweep, zeroSweepDefault);
|
|
205945
205946
|
return fraction2;
|
|
205946
205947
|
}
|
|
205947
|
-
/**
|
|
205948
|
-
*
|
|
205948
|
+
/**
|
|
205949
|
+
* Return the fractionalized position of the given angle (as radians), computed with consideration of 2PI period.
|
|
205949
205950
|
* * fraction is always positive
|
|
205950
205951
|
* * the start angle is at fraction 0
|
|
205951
205952
|
* * the end angle is at fraction 1
|
|
@@ -205956,8 +205957,8 @@ class AngleSweep {
|
|
|
205956
205957
|
radiansToPositivePeriodicFraction(radians, zeroSweepDefault = 0.0) {
|
|
205957
205958
|
return AngleSweep.radiansToPositivePeriodicFractionStartEnd(radians, this._radians0, this._radians1, zeroSweepDefault);
|
|
205958
205959
|
}
|
|
205959
|
-
/**
|
|
205960
|
-
*
|
|
205960
|
+
/**
|
|
205961
|
+
* Return the fractionalized position of the given angle (as Angle), computed with consideration of 2PI period.
|
|
205961
205962
|
* * fraction is always positive
|
|
205962
205963
|
* * the start angle is at fraction 0
|
|
205963
205964
|
* * the end angle is at fraction 1
|
|
@@ -205968,8 +205969,8 @@ class AngleSweep {
|
|
|
205968
205969
|
angleToPositivePeriodicFraction(theta) {
|
|
205969
205970
|
return this.radiansToPositivePeriodicFraction(theta.radians);
|
|
205970
205971
|
}
|
|
205971
|
-
/**
|
|
205972
|
-
*
|
|
205972
|
+
/**
|
|
205973
|
+
* Return the fractionalized position of the given array of angles (as radian), computed with consideration of 2PI period.
|
|
205973
205974
|
* * fraction is always positive
|
|
205974
205975
|
* * the start angle is at fraction 0
|
|
205975
205976
|
* * the end angle is at fraction 1
|
|
@@ -205983,9 +205984,9 @@ class AngleSweep {
|
|
|
205983
205984
|
data.reassign(i, this.radiansToPositivePeriodicFraction(data.atUncheckedIndex(i)));
|
|
205984
205985
|
}
|
|
205985
205986
|
}
|
|
205986
|
-
/**
|
|
205987
|
+
/**
|
|
205988
|
+
* Return the fractionalized position of the given angle (as radian) computed with consideration of
|
|
205987
205989
|
* 2PI period and with consideration of angle sweep direction (CW or CCW).
|
|
205988
|
-
*
|
|
205989
205990
|
* * the start angle is at fraction 0
|
|
205990
205991
|
* * the end angle is at fraction 1
|
|
205991
205992
|
* * interior angles are between 0 and 1
|
|
@@ -206009,9 +206010,9 @@ class AngleSweep {
|
|
|
206009
206010
|
const fraction = 0.5 + _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.safeDivideFraction(delta2, -sweep, 0.0);
|
|
206010
206011
|
return fraction;
|
|
206011
206012
|
}
|
|
206012
|
-
/**
|
|
206013
|
+
/**
|
|
206014
|
+
* Return the fractionalized position of the given angle (as Angle) computed with consideration of
|
|
206013
206015
|
* 2PI period and with consideration of angle sweep direction (CW or CCW).
|
|
206014
|
-
*
|
|
206015
206016
|
* * the start angle is at fraction 0
|
|
206016
206017
|
* * the end angle is at fraction 1
|
|
206017
206018
|
* * interior angles are between 0 and 1
|
|
@@ -206022,7 +206023,7 @@ class AngleSweep {
|
|
|
206022
206023
|
angleToSignedPeriodicFraction(theta) {
|
|
206023
206024
|
return this.radiansToSignedPeriodicFraction(theta.radians);
|
|
206024
206025
|
}
|
|
206025
|
-
/**
|
|
206026
|
+
/** Test if the given angle (as radians) is within sweep (between radians0 and radians1) */
|
|
206026
206027
|
static isRadiansInStartEnd(radians, radians0, radians1, allowPeriodShift = true) {
|
|
206027
206028
|
const delta0 = radians - radians0;
|
|
206028
206029
|
const delta1 = radians - radians1;
|
|
@@ -206032,16 +206033,16 @@ class AngleSweep {
|
|
|
206032
206033
|
return allowPeriodShift ? _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansAllowPeriodShift(radians, radians0) : _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(radians, radians0);
|
|
206033
206034
|
return allowPeriodShift ? this.radiansToPositivePeriodicFractionStartEnd(radians, radians0, radians1, 1000.0) <= 1.0 : false;
|
|
206034
206035
|
}
|
|
206035
|
-
/**
|
|
206036
|
+
/** Test if the given angle (as radians) is within sweep */
|
|
206036
206037
|
isRadiansInSweep(radians, allowPeriodShift = true) {
|
|
206037
206038
|
return AngleSweep.isRadiansInStartEnd(radians, this.startRadians, this.endRadians, allowPeriodShift);
|
|
206038
206039
|
}
|
|
206039
|
-
/**
|
|
206040
|
+
/** Test if the given angle (as Angle) is within the sweep */
|
|
206040
206041
|
isAngleInSweep(angle) {
|
|
206041
206042
|
return this.isRadiansInSweep(angle.radians);
|
|
206042
206043
|
}
|
|
206043
|
-
/**
|
|
206044
|
-
*
|
|
206044
|
+
/**
|
|
206045
|
+
* Set this AngleSweep from various sources:
|
|
206045
206046
|
* * if json is undefined, a full-circle sweep is returned.
|
|
206046
206047
|
* * If json is an AngleSweep object, it is cloned
|
|
206047
206048
|
* * If json is an array of 2 numbers, those numbers are start and end angles in degrees.
|
|
@@ -206063,7 +206064,7 @@ class AngleSweep {
|
|
|
206063
206064
|
else
|
|
206064
206065
|
this.setStartEndRadians(); // default full circle
|
|
206065
206066
|
}
|
|
206066
|
-
/**
|
|
206067
|
+
/** Create an AngleSweep from a json object. */
|
|
206067
206068
|
static fromJSON(json) {
|
|
206068
206069
|
const result = AngleSweep.create360();
|
|
206069
206070
|
result.setFromJSON(json);
|
|
@@ -206076,7 +206077,8 @@ class AngleSweep {
|
|
|
206076
206077
|
toJSON() {
|
|
206077
206078
|
return [this.startDegrees, this.endDegrees];
|
|
206078
206079
|
}
|
|
206079
|
-
/**
|
|
206080
|
+
/**
|
|
206081
|
+
* Test if this angle sweep and other angle sweep match with radians tolerance.
|
|
206080
206082
|
* * Period shifts are allowed.
|
|
206081
206083
|
*/
|
|
206082
206084
|
isAlmostEqualAllowPeriodShift(other) {
|
|
@@ -206085,14 +206087,16 @@ class AngleSweep {
|
|
|
206085
206087
|
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansAllowPeriodShift(this._radians0, other._radians0)
|
|
206086
206088
|
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansAllowPeriodShift(this._radians1 - this._radians0, other._radians1 - other._radians0);
|
|
206087
206089
|
}
|
|
206088
|
-
/**
|
|
206090
|
+
/**
|
|
206091
|
+
* Test if this angle sweep and other angle sweep match with radians tolerance.
|
|
206089
206092
|
* * Period shifts are not allowed.
|
|
206090
206093
|
*/
|
|
206091
206094
|
isAlmostEqualNoPeriodShift(other) {
|
|
206092
206095
|
return _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(this._radians0, other._radians0)
|
|
206093
206096
|
&& _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.isAlmostEqualRadiansNoPeriodShift(this._radians1 - this._radians0, other._radians1 - other._radians0);
|
|
206094
206097
|
}
|
|
206095
|
-
/**
|
|
206098
|
+
/**
|
|
206099
|
+
* Test if start and end angles match with radians tolerance.
|
|
206096
206100
|
* * Period shifts are not allowed.
|
|
206097
206101
|
* * This function is equivalent to isAlmostEqualNoPeriodShift. It is present for consistency with other classes.
|
|
206098
206102
|
* However, it is recommended to use isAlmostEqualNoPeriodShift which has a clearer name.
|
|
@@ -213359,7 +213363,7 @@ class Matrix3d {
|
|
|
213359
213363
|
return undefined;
|
|
213360
213364
|
}
|
|
213361
213365
|
/**
|
|
213362
|
-
* Multiply `matrixInverse * [x,y,z]` and return result as `Point4d` the
|
|
213366
|
+
* Multiply `matrixInverse * [x,y,z]` and return result as a `Point4d` with the given weight as the last coordinate.
|
|
213363
213367
|
* * Equivalent to solving `matrix * result = [x,y,z]` for an unknown `result`.
|
|
213364
213368
|
* * Result is `undefined` if the matrix is singular (e.g. has parallel columns or a zero magnitude column)
|
|
213365
213369
|
* @return result as a Point4d with the same weight.
|
|
@@ -213495,20 +213499,17 @@ class Matrix3d {
|
|
|
213495
213499
|
}
|
|
213496
213500
|
/**
|
|
213497
213501
|
* Multiply `this` Matrix3d (considered to be a Transform with 0 `origin`) times `other` Transform.
|
|
213498
|
-
* **Note:** If `other = [B b]`, then
|
|
213499
|
-
* Then `this * other` is defined as [A*B Aa]. That's because we create a 4x4 matrix for each Transform
|
|
213500
|
-
* with the 3x3 `matrix` and `origin` as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we
|
|
213501
|
-
* multiply those two 4x4 matrixes:
|
|
213502
|
+
* * **Note:** If `this = [A 0]` and `other = [B b]`, then `this * other` is defined as [A*B Ab] because:
|
|
213502
213503
|
* ```
|
|
213503
213504
|
* equation
|
|
213504
213505
|
* \begin{matrix}
|
|
213505
|
-
* \text{
|
|
213506
|
-
* \text{
|
|
213506
|
+
* \text{this matrix }\bold{A}\text{ promoted to block Transform} & \blockTransform{A}{0} \\
|
|
213507
|
+
* \text{other Transform with `matrix` part }\bold{B}\text{ and origin part }\bold{b} & \blockTransform{B}{b}\\
|
|
213507
213508
|
* \text{product}& \blockTransform{A}{0}\blockTransform{B}{b}=\blockTransform{AB}{Ab}
|
|
213508
213509
|
* \end{matrix}
|
|
213509
213510
|
* ```
|
|
213510
213511
|
* @param other the `other` Transform to be multiplied to `this` matrix.
|
|
213511
|
-
* @param result optional preallocated result to reuse.
|
|
213512
|
+
* @param result optional preallocated `result` to reuse.
|
|
213512
213513
|
*/
|
|
213513
213514
|
multiplyMatrixTransform(other, result) {
|
|
213514
213515
|
if (!result)
|
|
@@ -214291,7 +214292,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
214291
214292
|
|
|
214292
214293
|
/* cspell:word cxcz, cxsz, cxcy, cxsy, sxcz, sxsz, sxcy, sxsy, cycz, cysz, sycz, sysz */
|
|
214293
214294
|
/**
|
|
214294
|
-
*
|
|
214295
|
+
* Represents a non-trivial rotation using three simple axis rotation angles and an order in which to apply them.
|
|
214295
214296
|
* * This class accommodates application-specific interpretation of "multiplying 3 rotation matrices" with regard to
|
|
214296
214297
|
* * Whether a "vector" is a "row" or a "column"
|
|
214297
214298
|
* * The order in which the X,Y,Z rotations are applied.
|
|
@@ -214349,7 +214350,7 @@ class OrderedRotationAngles {
|
|
|
214349
214350
|
get zRadians() {
|
|
214350
214351
|
return this._z.radians;
|
|
214351
214352
|
}
|
|
214352
|
-
/**
|
|
214353
|
+
/** The flag controlling whether vectors are treated as rows or as columns */
|
|
214353
214354
|
static get treatVectorsAsColumns() {
|
|
214354
214355
|
return OrderedRotationAngles._sTreatVectorsAsColumns;
|
|
214355
214356
|
}
|
|
@@ -214432,7 +214433,7 @@ class OrderedRotationAngles {
|
|
|
214432
214433
|
* * In the failure case the method's return value is `undefined`.
|
|
214433
214434
|
* * In the failure case, if the optional result was supplied, that result will nonetheless be filled with
|
|
214434
214435
|
* a set of angles.
|
|
214435
|
-
|
|
214436
|
+
*/
|
|
214436
214437
|
static createFromMatrix3d(matrix, order, result) {
|
|
214437
214438
|
// treat vector as columns
|
|
214438
214439
|
let m11 = matrix.coffs[0], m12 = matrix.coffs[1], m13 = matrix.coffs[2];
|
|
@@ -215229,21 +215230,19 @@ class Point2dArrayCarrier extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_
|
|
|
215229
215230
|
return undefined;
|
|
215230
215231
|
}
|
|
215231
215232
|
/**
|
|
215232
|
-
|
|
215233
|
-
|
|
215234
|
-
|
|
215235
|
-
|
|
215236
|
-
|
|
215237
|
-
|
|
215238
|
-
|
|
215233
|
+
* Return the cross product of vectors from point at originIndex to points at indexA and indexB
|
|
215234
|
+
* @param originIndex index of origin
|
|
215235
|
+
* @param indexA index of first target within the array
|
|
215236
|
+
* @param indexB index of second target within the array
|
|
215237
|
+
* @param result caller-allocated vector.
|
|
215238
|
+
* @returns return true if indexA, indexB both valid
|
|
215239
|
+
*/
|
|
215239
215240
|
crossProductIndexIndexIndex(originIndex, indexA, indexB) {
|
|
215240
215241
|
if (this.isValidIndex(originIndex) && this.isValidIndex(indexA) && this.isValidIndex(indexB))
|
|
215241
215242
|
return _Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.XY.crossProductToPoints(this.data[originIndex], this.data[indexA], this.data[indexB]);
|
|
215242
215243
|
return undefined;
|
|
215243
215244
|
}
|
|
215244
|
-
/**
|
|
215245
|
-
* read-only property for number of XYZ in the collection.
|
|
215246
|
-
*/
|
|
215245
|
+
/** Read-only property for number of XYZ in the collection. */
|
|
215247
215246
|
get length() {
|
|
215248
215247
|
return this.data.length;
|
|
215249
215248
|
}
|
|
@@ -215289,10 +215288,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
215289
215288
|
* @module CartesianGeometry
|
|
215290
215289
|
*/
|
|
215291
215290
|
// cspell:word JSONXY
|
|
215292
|
-
// cspell:word CWXY
|
|
215291
|
+
// cspell:word CWXY CCWXY
|
|
215293
215292
|
|
|
215294
215293
|
|
|
215295
|
-
/**
|
|
215294
|
+
/**
|
|
215295
|
+
* Minimal object containing x,y and operations that are meaningful without change in both point and vector.
|
|
215296
215296
|
* * `XY` is not instantiable.
|
|
215297
215297
|
* * The derived (instantiable) classes are
|
|
215298
215298
|
* * `Point2d`
|
|
@@ -215337,11 +215337,11 @@ class XY {
|
|
|
215337
215337
|
isAlmostEqualXY(x, y, tol) {
|
|
215338
215338
|
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(this.x, x, tol) && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(this.y, y, tol);
|
|
215339
215339
|
}
|
|
215340
|
-
/**
|
|
215340
|
+
/** Return a json array `[x,y]` */
|
|
215341
215341
|
toJSON() {
|
|
215342
215342
|
return [this.x, this.y];
|
|
215343
215343
|
}
|
|
215344
|
-
/**
|
|
215344
|
+
/** Return a json object `{x: 1, y:2}` */
|
|
215345
215345
|
toJSONXY() {
|
|
215346
215346
|
return { x: this.x, y: this.y };
|
|
215347
215347
|
}
|
|
@@ -215349,7 +215349,7 @@ class XY {
|
|
|
215349
215349
|
* Set x and y from a JSON input such as `[1,2]` or `{x:1, y:2}`
|
|
215350
215350
|
* * If no JSON input is provided, 0 would be used as default values for x and y.
|
|
215351
215351
|
* @param json the JSON input
|
|
215352
|
-
|
|
215352
|
+
*/
|
|
215353
215353
|
setFromJSON(json) {
|
|
215354
215354
|
if (Array.isArray(json)) {
|
|
215355
215355
|
this.set(json[0] || 0, json[1] || 0);
|
|
@@ -215377,17 +215377,13 @@ class XY {
|
|
|
215377
215377
|
maxDiff(other) {
|
|
215378
215378
|
return Math.max(Math.abs(this.x - other.x), Math.abs(this.y - other.y));
|
|
215379
215379
|
}
|
|
215380
|
-
/**
|
|
215381
|
-
* Return the x,y component corresponding to 0,1.
|
|
215382
|
-
*/
|
|
215380
|
+
/** Return the x,y component corresponding to 0,1 */
|
|
215383
215381
|
at(index) {
|
|
215384
215382
|
if (index < 0.5)
|
|
215385
215383
|
return this.x;
|
|
215386
215384
|
return this.y;
|
|
215387
215385
|
}
|
|
215388
|
-
/**
|
|
215389
|
-
* Set value at index 0 or 1.
|
|
215390
|
-
*/
|
|
215386
|
+
/** Set value at index 0 or 1 */
|
|
215391
215387
|
setAt(index, value) {
|
|
215392
215388
|
if (index < 0.5)
|
|
215393
215389
|
this.x = value;
|
|
@@ -215404,7 +215400,7 @@ class XY {
|
|
|
215404
215400
|
}
|
|
215405
215401
|
return index;
|
|
215406
215402
|
}
|
|
215407
|
-
/**
|
|
215403
|
+
/** Returns true if the x,y components are both small by metric metric tolerance */
|
|
215408
215404
|
get isAlmostZero() {
|
|
215409
215405
|
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallMetricDistance(this.x) && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallMetricDistance(this.y);
|
|
215410
215406
|
}
|
|
@@ -215420,11 +215416,11 @@ class XY {
|
|
|
215420
215416
|
magnitudeSquared() {
|
|
215421
215417
|
return this.x * this.x + this.y * this.y;
|
|
215422
215418
|
}
|
|
215423
|
-
/**
|
|
215419
|
+
/** Returns true if the x,y components are exactly equal. */
|
|
215424
215420
|
isExactEqual(other) {
|
|
215425
215421
|
return this.x === other.x && this.y === other.y;
|
|
215426
215422
|
}
|
|
215427
|
-
/**
|
|
215423
|
+
/** Returns true if x,y match `other` within metric tolerance */
|
|
215428
215424
|
isAlmostEqualMetric(other, distanceTol = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
|
|
215429
215425
|
return this.maxDiff(other) <= distanceTol;
|
|
215430
215426
|
}
|
|
@@ -215436,7 +215432,7 @@ class XY {
|
|
|
215436
215432
|
unitVectorTo(other, result) {
|
|
215437
215433
|
return this.vectorTo(other, result).normalize(result);
|
|
215438
215434
|
}
|
|
215439
|
-
/**
|
|
215435
|
+
/** Cross product of vectors from origin to targets */
|
|
215440
215436
|
static crossProductToPoints(origin, targetA, targetB) {
|
|
215441
215437
|
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(targetA.x - origin.x, targetA.y - origin.y, targetB.x - origin.x, targetB.y - origin.y);
|
|
215442
215438
|
}
|
|
@@ -215449,7 +215445,7 @@ class Point2d extends XY {
|
|
|
215449
215445
|
constructor(x = 0, y = 0) {
|
|
215450
215446
|
super(x, y);
|
|
215451
215447
|
}
|
|
215452
|
-
/**
|
|
215448
|
+
/** Return a new Point2d with x,y coordinates from this. */
|
|
215453
215449
|
clone(result) {
|
|
215454
215450
|
return Point2d.create(this.x, this.y, result);
|
|
215455
215451
|
}
|
|
@@ -215471,7 +215467,7 @@ class Point2d extends XY {
|
|
|
215471
215467
|
* Set x and y from a JSON input such as `[1,2]` or `{x:1, y:2}`
|
|
215472
215468
|
* * If no JSON input is provided, 0 would be used as default values for x and y.
|
|
215473
215469
|
* @param json the JSON input
|
|
215474
|
-
|
|
215470
|
+
*/
|
|
215475
215471
|
static fromJSON(json) {
|
|
215476
215472
|
const val = new Point2d();
|
|
215477
215473
|
val.setFromJSON(json);
|
|
@@ -215487,7 +215483,8 @@ class Point2d extends XY {
|
|
|
215487
215483
|
static createZero(result) {
|
|
215488
215484
|
return Point2d.create(0, 0, result);
|
|
215489
215485
|
}
|
|
215490
|
-
/**
|
|
215486
|
+
/**
|
|
215487
|
+
* Starting at this point, move along vector by tangentFraction of the vector length, and then
|
|
215491
215488
|
* to the left by leftFraction of the perpendicular vector length.
|
|
215492
215489
|
* @param tangentFraction distance to move along the vector, as a fraction of vector
|
|
215493
215490
|
* @param leftFraction distance to move perpendicular to the vector, as a fraction of the rotated vector
|
|
@@ -215498,7 +215495,8 @@ class Point2d extends XY {
|
|
|
215498
215495
|
const dy = vector.y;
|
|
215499
215496
|
return Point2d.create(this.x + tangentFraction * dx - leftFraction * dy, this.y + tangentFraction * dy + leftFraction * dx);
|
|
215500
215497
|
}
|
|
215501
|
-
/**
|
|
215498
|
+
/**
|
|
215499
|
+
* Interpolate at tangentFraction between this instance and point, and then Move by leftFraction
|
|
215502
215500
|
* along the xy perpendicular of the vector between the points.
|
|
215503
215501
|
*/
|
|
215504
215502
|
forwardLeftInterpolate(tangentFraction, leftFraction, point) {
|
|
@@ -215561,7 +215559,8 @@ class Point2d extends XY {
|
|
|
215561
215559
|
const y2 = target2.y - this.y;
|
|
215562
215560
|
return x1 * y2 - y1 * x2;
|
|
215563
215561
|
}
|
|
215564
|
-
/**
|
|
215562
|
+
/**
|
|
215563
|
+
* Return the fractional coordinate of the projection of this instance x,y onto the
|
|
215565
215564
|
* line from startPoint to endPoint.
|
|
215566
215565
|
* @param startPoint start point of line
|
|
215567
215566
|
* @param endPoint end point of line
|
|
@@ -215575,7 +215574,8 @@ class Point2d extends XY {
|
|
|
215575
215574
|
return numerator / denominator;
|
|
215576
215575
|
}
|
|
215577
215576
|
}
|
|
215578
|
-
/**
|
|
215577
|
+
/**
|
|
215578
|
+
* 2D vector with `x`,`y` as properties
|
|
215579
215579
|
* @public
|
|
215580
215580
|
*/
|
|
215581
215581
|
class Vector2d extends XY {
|
|
@@ -215613,7 +215613,7 @@ class Vector2d extends XY {
|
|
|
215613
215613
|
static createZero(result) {
|
|
215614
215614
|
return Vector2d.create(0, 0, result);
|
|
215615
215615
|
}
|
|
215616
|
-
/**
|
|
215616
|
+
/** Copy contents from another Point3d, Point2d, Vector2d, or Vector3d, or leading entries of Float64Array */
|
|
215617
215617
|
static createFrom(data, result) {
|
|
215618
215618
|
if (data instanceof Float64Array) {
|
|
215619
215619
|
if (data.length >= 2)
|
|
@@ -215628,7 +215628,7 @@ class Vector2d extends XY {
|
|
|
215628
215628
|
* Set x and y from a JSON input such as `[1,2]` or `{x:1, y:2}`
|
|
215629
215629
|
* * If no JSON input is provided, 0 would be used as default values for x and y.
|
|
215630
215630
|
* @param json the JSON input
|
|
215631
|
-
|
|
215631
|
+
*/
|
|
215632
215632
|
static fromJSON(json) {
|
|
215633
215633
|
const val = new Vector2d();
|
|
215634
215634
|
val.setFromJSON(json);
|
|
@@ -215660,7 +215660,8 @@ class Vector2d extends XY {
|
|
|
215660
215660
|
}
|
|
215661
215661
|
return undefined;
|
|
215662
215662
|
}
|
|
215663
|
-
/**
|
|
215663
|
+
/**
|
|
215664
|
+
* Return a (new or optionally reused) vector which is `this` divided by `denominator`
|
|
215664
215665
|
* * return undefined if denominator is zero.
|
|
215665
215666
|
*/
|
|
215666
215667
|
safeDivideOrNull(denominator, result) {
|
|
@@ -215681,7 +215682,7 @@ class Vector2d extends XY {
|
|
|
215681
215682
|
* it's returning the length of the projection as a fraction of the target magnitude.
|
|
215682
215683
|
* @param target the target vector
|
|
215683
215684
|
* @param defaultFraction the returned value in case magnitude square of target vector is very small
|
|
215684
|
-
|
|
215685
|
+
*/
|
|
215685
215686
|
fractionOfProjectionToVector(target, defaultFraction) {
|
|
215686
215687
|
/*
|
|
215687
215688
|
* projection length is (this.target)/||target||
|
|
@@ -215736,7 +215737,7 @@ class Vector2d extends XY {
|
|
|
215736
215737
|
}
|
|
215737
215738
|
return result;
|
|
215738
215739
|
}
|
|
215739
|
-
/**
|
|
215740
|
+
/** Return a new Vector2d rotated CCW by given angle */
|
|
215740
215741
|
rotateXY(angle, result) {
|
|
215741
215742
|
const s = angle.sin();
|
|
215742
215743
|
const c = angle.cos();
|
|
@@ -215748,7 +215749,8 @@ class Vector2d extends XY {
|
|
|
215748
215749
|
result.y = xx * s + yy * c;
|
|
215749
215750
|
return result;
|
|
215750
215751
|
}
|
|
215751
|
-
/**
|
|
215752
|
+
/**
|
|
215753
|
+
* Return a vector computed at fractional position between this vector and vectorB
|
|
215752
215754
|
* @param fraction fractional position. 0 is at `this`. 1 is at `vectorB`.
|
|
215753
215755
|
* True fractions are "between", negatives are "before this", beyond 1 is "beyond vectorB".
|
|
215754
215756
|
* @param vectorB second vector
|
|
@@ -215771,14 +215773,14 @@ class Vector2d extends XY {
|
|
|
215771
215773
|
}
|
|
215772
215774
|
return result;
|
|
215773
215775
|
}
|
|
215774
|
-
/**
|
|
215776
|
+
/** Return {this + vector}. */
|
|
215775
215777
|
plus(vector, result) {
|
|
215776
215778
|
result = result ? result : new Vector2d();
|
|
215777
215779
|
result.x = this.x + vector.x;
|
|
215778
215780
|
result.y = this.y + vector.y;
|
|
215779
215781
|
return result;
|
|
215780
215782
|
}
|
|
215781
|
-
/**
|
|
215783
|
+
/** Return {this - vector}. */
|
|
215782
215784
|
minus(vector, result) {
|
|
215783
215785
|
result = result ? result : new Vector2d();
|
|
215784
215786
|
result.x = this.x - vector.x;
|
|
@@ -215813,34 +215815,34 @@ class Vector2d extends XY {
|
|
|
215813
215815
|
result.y = this.y * scale;
|
|
215814
215816
|
return result;
|
|
215815
215817
|
}
|
|
215816
|
-
/**
|
|
215818
|
+
/** Return a vector parallel to this but with specified length */
|
|
215817
215819
|
scaleToLength(length, result) {
|
|
215818
215820
|
const mag = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.correctSmallMetricDistance(this.magnitude());
|
|
215819
215821
|
if (mag === 0)
|
|
215820
215822
|
return undefined;
|
|
215821
215823
|
return this.scale(length / mag, result);
|
|
215822
215824
|
}
|
|
215823
|
-
/**
|
|
215825
|
+
/** Return the dot product of this with vectorB */
|
|
215824
215826
|
dotProduct(vectorB) {
|
|
215825
215827
|
return this.x * vectorB.x + this.y * vectorB.y;
|
|
215826
215828
|
}
|
|
215827
|
-
/**
|
|
215829
|
+
/** Dot product with vector from pointA to pointB */
|
|
215828
215830
|
dotProductStartEnd(pointA, pointB) {
|
|
215829
215831
|
return this.x * (pointB.x - pointA.x) + this.y * (pointB.y - pointA.y);
|
|
215830
215832
|
}
|
|
215831
|
-
/**
|
|
215833
|
+
/** Vector cross product {this CROSS vectorB} */
|
|
215832
215834
|
crossProduct(vectorB) {
|
|
215833
215835
|
return this.x * vectorB.y - this.y * vectorB.x;
|
|
215834
215836
|
}
|
|
215835
215837
|
/**
|
|
215836
|
-
*
|
|
215838
|
+
* Return the radians (as a simple number, not strongly typed Angle) signed angle from this to vectorB.
|
|
215837
215839
|
* This is positive if the shortest turn is counterclockwise, negative if clockwise.
|
|
215838
215840
|
*/
|
|
215839
215841
|
radiansTo(vectorB) {
|
|
215840
215842
|
return Math.atan2(this.crossProduct(vectorB), this.dotProduct(vectorB));
|
|
215841
215843
|
}
|
|
215842
215844
|
/**
|
|
215843
|
-
*
|
|
215845
|
+
* Return the (strongly typed) signed angle from this to vectorB.
|
|
215844
215846
|
* This is positive if the shortest turn is counterclockwise, negative if clockwise.
|
|
215845
215847
|
*/
|
|
215846
215848
|
angleTo(vectorB) {
|
|
@@ -215928,7 +215930,7 @@ class Point3dArrayCarrier extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE
|
|
|
215928
215930
|
super();
|
|
215929
215931
|
this.data = data;
|
|
215930
215932
|
}
|
|
215931
|
-
/**
|
|
215933
|
+
/** Test if `index` is a valid index into the array. */
|
|
215932
215934
|
isValidIndex(index) {
|
|
215933
215935
|
return index >= 0 && index < this.data.length;
|
|
215934
215936
|
}
|
|
@@ -215970,23 +215972,23 @@ class Point3dArrayCarrier extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE
|
|
|
215970
215972
|
return undefined;
|
|
215971
215973
|
}
|
|
215972
215974
|
/**
|
|
215973
|
-
*
|
|
215975
|
+
* Access x of indexed point
|
|
215974
215976
|
* * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results
|
|
215975
|
-
|
|
215977
|
+
*/
|
|
215976
215978
|
getXAtUncheckedPointIndex(pointIndex) {
|
|
215977
215979
|
return this.data[pointIndex].x;
|
|
215978
215980
|
}
|
|
215979
215981
|
/**
|
|
215980
|
-
*
|
|
215982
|
+
* Access y of indexed point
|
|
215981
215983
|
* * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results
|
|
215982
|
-
|
|
215984
|
+
*/
|
|
215983
215985
|
getYAtUncheckedPointIndex(pointIndex) {
|
|
215984
215986
|
return this.data[pointIndex].y;
|
|
215985
215987
|
}
|
|
215986
215988
|
/**
|
|
215987
|
-
*
|
|
215989
|
+
* Access z of indexed point
|
|
215988
215990
|
* * WARNING: make sure `pointIndex` is a valid index, otherwise, you get random results
|
|
215989
|
-
|
|
215991
|
+
*/
|
|
215990
215992
|
getZAtUncheckedPointIndex(pointIndex) {
|
|
215991
215993
|
return this.data[pointIndex].z;
|
|
215992
215994
|
}
|
|
@@ -216053,10 +216055,7 @@ class Point3dArrayCarrier extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE
|
|
|
216053
216055
|
if (this.isValidIndex(originIndex) && this.isValidIndex(indexA) && this.isValidIndex(indexB))
|
|
216054
216056
|
result.addCrossProductToTargetsInPlace(data[originIndex].x, data[originIndex].y, data[originIndex].z, data[indexA].x, data[indexA].y, data[indexA].z, data[indexB].x, data[indexB].y, data[indexB].z);
|
|
216055
216057
|
}
|
|
216056
|
-
/**
|
|
216057
|
-
* Accumulate scale times the x,y,z values at index to the sum.
|
|
216058
|
-
* No action if index is out of bounds.
|
|
216059
|
-
*/
|
|
216058
|
+
/** Accumulate scale times the x,y,z values at index to the sum. No action if index is out of bounds */
|
|
216060
216059
|
accumulateScaledXYZ(index, scale, sum) {
|
|
216061
216060
|
if (this.isValidIndex(index)) {
|
|
216062
216061
|
const point = this.data[index];
|
|
@@ -216065,20 +216064,19 @@ class Point3dArrayCarrier extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE
|
|
|
216065
216064
|
sum.z += scale * point.z;
|
|
216066
216065
|
}
|
|
216067
216066
|
}
|
|
216068
|
-
/**
|
|
216069
|
-
* read-only property for number of XYZ in the collection.
|
|
216070
|
-
*/
|
|
216067
|
+
/** Read-only property for number of XYZ in the collection */
|
|
216071
216068
|
get length() {
|
|
216072
216069
|
return this.data.length;
|
|
216073
216070
|
}
|
|
216074
|
-
/**
|
|
216071
|
+
/**
|
|
216072
|
+
* Push a (clone of) point onto the collection
|
|
216075
216073
|
* * point itself is not pushed -- xyz data is extracted into the native form of the collection.
|
|
216076
216074
|
*/
|
|
216077
216075
|
push(data) {
|
|
216078
216076
|
this.data.push(data.clone());
|
|
216079
216077
|
}
|
|
216080
216078
|
/**
|
|
216081
|
-
*
|
|
216079
|
+
* Push a new point (given by coordinates) onto the collection
|
|
216082
216080
|
* @param x x coordinate
|
|
216083
216081
|
* @param y y coordinate
|
|
216084
216082
|
* @param z z coordinate
|
|
@@ -216086,26 +216084,26 @@ class Point3dArrayCarrier extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE
|
|
|
216086
216084
|
pushXYZ(x, y, z) {
|
|
216087
216085
|
this.data.push(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x === undefined ? 0.0 : x, y === undefined ? 0.0 : y, z === undefined ? 0.0 : z));
|
|
216088
216086
|
}
|
|
216089
|
-
/**
|
|
216087
|
+
/** Extract (copy) the final point */
|
|
216090
216088
|
back(result) {
|
|
216091
216089
|
if (this.data.length > 0) {
|
|
216092
216090
|
return this.data[this.data.length - 1].clone(result);
|
|
216093
216091
|
}
|
|
216094
216092
|
return undefined;
|
|
216095
216093
|
}
|
|
216096
|
-
/**
|
|
216094
|
+
/** Extract (copy) the first point */
|
|
216097
216095
|
front(result) {
|
|
216098
216096
|
if (this.data.length > 0) {
|
|
216099
216097
|
return this.data[0].clone(result);
|
|
216100
216098
|
}
|
|
216101
216099
|
return undefined;
|
|
216102
216100
|
}
|
|
216103
|
-
/**
|
|
216101
|
+
/** Remove the final point. */
|
|
216104
216102
|
pop() {
|
|
216105
216103
|
if (this.data.length > 0)
|
|
216106
216104
|
this.data.pop();
|
|
216107
216105
|
}
|
|
216108
|
-
/**
|
|
216106
|
+
/** Remove all points. */
|
|
216109
216107
|
clear() {
|
|
216110
216108
|
this.data.length = 0;
|
|
216111
216109
|
}
|
|
@@ -216174,7 +216172,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
216174
216172
|
|
|
216175
216173
|
// cspell:words CWXY CCWXY arctan Rodrigues
|
|
216176
216174
|
/**
|
|
216177
|
-
*
|
|
216175
|
+
* * `XYZ` is a minimal object containing x,y,z and operations that are meaningful without change in both
|
|
216176
|
+
* point and vector.
|
|
216178
216177
|
* * `XYZ` is not instantiable.
|
|
216179
216178
|
* * The derived (instantiable) classes are
|
|
216180
216179
|
* * `Point3d`
|
|
@@ -216218,7 +216217,8 @@ class XYZ {
|
|
|
216218
216217
|
static isXYAndZ(arg) {
|
|
216219
216218
|
return this.isXAndY(arg) && this.hasZ(arg);
|
|
216220
216219
|
}
|
|
216221
|
-
/**
|
|
216220
|
+
/**
|
|
216221
|
+
* Test if arg is any of:
|
|
216222
216222
|
* * XAndY
|
|
216223
216223
|
* * XYAndZ
|
|
216224
216224
|
* * [number,number]
|
|
@@ -216227,7 +216227,8 @@ class XYZ {
|
|
|
216227
216227
|
static isAnyImmediatePointType(arg) {
|
|
216228
216228
|
return Point3d.isXAndY(arg) || _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isNumberArray(arg, 2);
|
|
216229
216229
|
}
|
|
216230
|
-
/**
|
|
216230
|
+
/**
|
|
216231
|
+
* Look for (in order) an x coordinate present as:
|
|
216231
216232
|
* * arg.x
|
|
216232
216233
|
* * arg[0]
|
|
216233
216234
|
*/
|
|
@@ -216238,7 +216239,8 @@ class XYZ {
|
|
|
216238
216239
|
return arg[0];
|
|
216239
216240
|
return defaultValue;
|
|
216240
216241
|
}
|
|
216241
|
-
/**
|
|
216242
|
+
/**
|
|
216243
|
+
* Look for (in order) an x coordinate present as:
|
|
216242
216244
|
* * arg.y
|
|
216243
216245
|
* * arg[1]
|
|
216244
216246
|
*/
|
|
@@ -216249,7 +216251,8 @@ class XYZ {
|
|
|
216249
216251
|
return arg[1];
|
|
216250
216252
|
return defaultValue;
|
|
216251
216253
|
}
|
|
216252
|
-
/**
|
|
216254
|
+
/**
|
|
216255
|
+
* Look for (in order) an x coordinate present as:
|
|
216253
216256
|
* * arg.z
|
|
216254
216257
|
* * arg[2]
|
|
216255
216258
|
*/
|
|
@@ -216312,7 +216315,8 @@ class XYZ {
|
|
|
216312
216315
|
this.setZero();
|
|
216313
216316
|
}
|
|
216314
216317
|
}
|
|
216315
|
-
/**
|
|
216318
|
+
/**
|
|
216319
|
+
* Returns true if this and other have equal x,y,z parts within Geometry.smallMetricDistance.
|
|
216316
216320
|
* @param other The other XYAndZ to compare
|
|
216317
216321
|
* @param tol The tolerance for the comparison. If undefined, use [[Geometry.smallMetricDistance]]
|
|
216318
216322
|
*/
|
|
@@ -216393,9 +216397,7 @@ class XYZ {
|
|
|
216393
216397
|
maxDiff(other) {
|
|
216394
216398
|
return Math.max(Math.abs(this.x - other.x), Math.abs(this.y - other.y), Math.abs(this.z - other.z));
|
|
216395
216399
|
}
|
|
216396
|
-
/**
|
|
216397
|
-
* Return the x,y, z component corresponding to 0,1,2.
|
|
216398
|
-
*/
|
|
216400
|
+
/** Return the x,y, z component corresponding to 0,1,2 */
|
|
216399
216401
|
at(index) {
|
|
216400
216402
|
if (index < 0.5)
|
|
216401
216403
|
return this.x;
|
|
@@ -216403,9 +216405,7 @@ class XYZ {
|
|
|
216403
216405
|
return this.z;
|
|
216404
216406
|
return this.y;
|
|
216405
216407
|
}
|
|
216406
|
-
/**
|
|
216407
|
-
* Set value at index 0 or 1 or 2.
|
|
216408
|
-
*/
|
|
216408
|
+
/** Set value at index 0 or 1 or 2 */
|
|
216409
216409
|
setAt(index, value) {
|
|
216410
216410
|
if (index < 0.5)
|
|
216411
216411
|
this.x = value;
|
|
@@ -216459,27 +216459,27 @@ class XYZ {
|
|
|
216459
216459
|
magnitudeSquaredXY() {
|
|
216460
216460
|
return this.x * this.x + this.y * this.y;
|
|
216461
216461
|
}
|
|
216462
|
-
/**
|
|
216462
|
+
/** Exact equality test. */
|
|
216463
216463
|
isExactEqual(other) {
|
|
216464
216464
|
return this.x === other.x && this.y === other.y && this.z === other.z;
|
|
216465
216465
|
}
|
|
216466
|
-
/**
|
|
216466
|
+
/** Equality test with Geometry.smallMetricDistance tolerance */
|
|
216467
216467
|
isAlmostEqualMetric(other) {
|
|
216468
216468
|
return this.maxDiff(other) <= _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
|
|
216469
216469
|
}
|
|
216470
|
-
/**
|
|
216470
|
+
/** Add x,y,z from other in place. */
|
|
216471
216471
|
addInPlace(other) {
|
|
216472
216472
|
this.x += other.x;
|
|
216473
216473
|
this.y += other.y;
|
|
216474
216474
|
this.z += other.z;
|
|
216475
216475
|
}
|
|
216476
|
-
/**
|
|
216476
|
+
/** Add x,y,z from other in place. */
|
|
216477
216477
|
subtractInPlace(other) {
|
|
216478
216478
|
this.x -= other.x;
|
|
216479
216479
|
this.y -= other.y;
|
|
216480
216480
|
this.z -= other.z;
|
|
216481
216481
|
}
|
|
216482
|
-
/**
|
|
216482
|
+
/** Add (in place) the scaled x,y,z of other */
|
|
216483
216483
|
addScaledInPlace(other, scale) {
|
|
216484
216484
|
this.x += scale * other.x;
|
|
216485
216485
|
this.y += scale * other.y;
|
|
@@ -216491,7 +216491,7 @@ class XYZ {
|
|
|
216491
216491
|
this.y *= scale;
|
|
216492
216492
|
this.z *= scale;
|
|
216493
216493
|
}
|
|
216494
|
-
/**
|
|
216494
|
+
/** Add to x, y, z parts */
|
|
216495
216495
|
addXYZInPlace(dx = 0.0, dy = 0.0, dz = 0.0) {
|
|
216496
216496
|
this.x += dx;
|
|
216497
216497
|
this.y += dy;
|
|
@@ -216509,7 +216509,8 @@ class XYZ {
|
|
|
216509
216509
|
scaledVectorTo(other, scale, result) {
|
|
216510
216510
|
return Vector3d.create(scale * (other.x - this.x), scale * (other.y - this.y), scale * (other.z - this.z), result);
|
|
216511
216511
|
}
|
|
216512
|
-
/**
|
|
216512
|
+
/**
|
|
216513
|
+
* Return a unit vector from this vector to other. Return a 000 vector if the input is too small to normalize.
|
|
216513
216514
|
* @param other target of created vector.
|
|
216514
216515
|
* @param result optional result vector.
|
|
216515
216516
|
*/
|
|
@@ -216520,7 +216521,7 @@ class XYZ {
|
|
|
216520
216521
|
freeze() {
|
|
216521
216522
|
return Object.freeze(this);
|
|
216522
216523
|
}
|
|
216523
|
-
/**
|
|
216524
|
+
/** Access x part of XYZProps (which may be .x or [0]) */
|
|
216524
216525
|
static x(xyz, defaultValue = 0) {
|
|
216525
216526
|
if (xyz === undefined)
|
|
216526
216527
|
return defaultValue;
|
|
@@ -216530,7 +216531,7 @@ class XYZ {
|
|
|
216530
216531
|
return xyz.x;
|
|
216531
216532
|
return defaultValue;
|
|
216532
216533
|
}
|
|
216533
|
-
/**
|
|
216534
|
+
/** Access x part of XYZProps (which may be .x or [0]) */
|
|
216534
216535
|
static y(xyz, defaultValue = 0) {
|
|
216535
216536
|
if (xyz === undefined)
|
|
216536
216537
|
return defaultValue;
|
|
@@ -216540,7 +216541,7 @@ class XYZ {
|
|
|
216540
216541
|
return xyz.y;
|
|
216541
216542
|
return defaultValue;
|
|
216542
216543
|
}
|
|
216543
|
-
/**
|
|
216544
|
+
/** Access x part of XYZProps (which may be .x or [0]) */
|
|
216544
216545
|
static z(xyz, defaultValue = 0) {
|
|
216545
216546
|
if (xyz === undefined)
|
|
216546
216547
|
return defaultValue;
|
|
@@ -216575,7 +216576,8 @@ class Point3d extends XYZ {
|
|
|
216575
216576
|
clone(result) {
|
|
216576
216577
|
return Point3d.create(this.x, this.y, this.z, result);
|
|
216577
216578
|
}
|
|
216578
|
-
/**
|
|
216579
|
+
/**
|
|
216580
|
+
* Create a new Point3d with given coordinates
|
|
216579
216581
|
* @param x x part
|
|
216580
216582
|
* @param y y part
|
|
216581
216583
|
* @param z z part
|
|
@@ -216648,8 +216650,8 @@ class Point3d extends XYZ {
|
|
|
216648
216650
|
static createZero(result) {
|
|
216649
216651
|
return Point3d.create(0, 0, 0, result);
|
|
216650
216652
|
}
|
|
216651
|
-
/**
|
|
216652
|
-
*
|
|
216653
|
+
/**
|
|
216654
|
+
* Return the cross product of the vectors from this to pointA and pointB
|
|
216653
216655
|
* * the result is a vector
|
|
216654
216656
|
* * the result is perpendicular to both vectors, with right hand orientation
|
|
216655
216657
|
* * the magnitude of the vector is twice the area of the triangle.
|
|
@@ -216657,21 +216659,20 @@ class Point3d extends XYZ {
|
|
|
216657
216659
|
crossProductToPoints(pointA, pointB, result) {
|
|
216658
216660
|
return Vector3d.createCrossProduct(pointA.x - this.x, pointA.y - this.y, pointA.z - this.z, pointB.x - this.x, pointB.y - this.y, pointB.z - this.z, result);
|
|
216659
216661
|
}
|
|
216660
|
-
/** Return the magnitude of the cross product of the vectors from this to pointA and pointB
|
|
216661
|
-
*/
|
|
216662
|
+
/** Return the magnitude of the cross product of the vectors from this to pointA and pointB */
|
|
216662
216663
|
crossProductToPointsMagnitude(pointA, pointB) {
|
|
216663
216664
|
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductMagnitude(pointA.x - this.x, pointA.y - this.y, pointA.z - this.z, pointB.x - this.x, pointB.y - this.y, pointB.z - this.z);
|
|
216664
216665
|
}
|
|
216665
|
-
/**
|
|
216666
|
-
*
|
|
216666
|
+
/**
|
|
216667
|
+
* Return the triple product of the vectors from this to pointA, pointB, pointC
|
|
216667
216668
|
* * This is a scalar (number)
|
|
216668
216669
|
* * This is 6 times the (signed) volume of the tetrahedron on the 4 points.
|
|
216669
216670
|
*/
|
|
216670
216671
|
tripleProductToPoints(pointA, pointB, pointC) {
|
|
216671
216672
|
return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.tripleProduct(pointA.x - this.x, pointA.y - this.y, pointA.z - this.z, pointB.x - this.x, pointB.y - this.y, pointB.z - this.z, pointC.x - this.x, pointC.y - this.y, pointC.z - this.z);
|
|
216672
216673
|
}
|
|
216673
|
-
/**
|
|
216674
|
-
*
|
|
216674
|
+
/**
|
|
216675
|
+
* Return the cross product of the vectors from this to pointA and pointB
|
|
216675
216676
|
* * the result is a scalar
|
|
216676
216677
|
* * the magnitude of the vector is twice the signed area of the triangle.
|
|
216677
216678
|
* * this is positive for counter-clockwise order of the points, negative for clockwise.
|
|
@@ -216681,8 +216682,8 @@ class Point3d extends XYZ {
|
|
|
216681
216682
|
}
|
|
216682
216683
|
/**
|
|
216683
216684
|
* Return a point interpolated between `this` point and the `other` point.
|
|
216684
|
-
* *
|
|
216685
|
-
|
|
216685
|
+
* * Fraction specifies where the interpolated point is located on the line passing `this` and `other`.
|
|
216686
|
+
*/
|
|
216686
216687
|
interpolate(fraction, other, result) {
|
|
216687
216688
|
if (fraction <= 0.5)
|
|
216688
216689
|
return Point3d.create(this.x + fraction * (other.x - this.x), this.y + fraction * (other.y - this.y), this.z + fraction * (other.z - this.z), result);
|
|
@@ -216735,7 +216736,8 @@ class Point3d extends XYZ {
|
|
|
216735
216736
|
static createScale(source, scale, result) {
|
|
216736
216737
|
return Point3d.create(source.x * scale, source.y * scale, source.z * scale, result);
|
|
216737
216738
|
}
|
|
216738
|
-
/**
|
|
216739
|
+
/**
|
|
216740
|
+
* Create a point that is a linear combination (weighted sum) of 2 input points.
|
|
216739
216741
|
* @param pointA first input point
|
|
216740
216742
|
* @param scaleA scale factor for pointA
|
|
216741
216743
|
* @param pointB second input point
|
|
@@ -216773,7 +216775,8 @@ class Point3d extends XYZ {
|
|
|
216773
216775
|
return startPoint.dotVectorsToTargets(endPoint, this) / denominator;
|
|
216774
216776
|
}
|
|
216775
216777
|
}
|
|
216776
|
-
/**
|
|
216778
|
+
/**
|
|
216779
|
+
* 3D vector with `x`,`y`,`z` as properties
|
|
216777
216780
|
* @public
|
|
216778
216781
|
*/
|
|
216779
216782
|
class Vector3d extends XYZ {
|
|
@@ -216798,7 +216801,7 @@ class Vector3d extends XYZ {
|
|
|
216798
216801
|
return Vector3d.create(this.x, this.y, this.z, result);
|
|
216799
216802
|
}
|
|
216800
216803
|
/**
|
|
216801
|
-
*
|
|
216804
|
+
* Return a Vector3d (new or reused from optional result)
|
|
216802
216805
|
* @param x x component
|
|
216803
216806
|
* @param y y component
|
|
216804
216807
|
* @param z z component
|
|
@@ -216851,7 +216854,6 @@ class Vector3d extends XYZ {
|
|
|
216851
216854
|
}
|
|
216852
216855
|
/**
|
|
216853
216856
|
* Return the cross product of the vectors from origin to pointA and pointB.
|
|
216854
|
-
*
|
|
216855
216857
|
* * the result is a vector
|
|
216856
216858
|
* * the result is perpendicular to both vectors, with right hand orientation
|
|
216857
216859
|
* * the magnitude of the vector is twice the area of the triangle.
|
|
@@ -217028,7 +217030,8 @@ class Vector3d extends XYZ {
|
|
|
217028
217030
|
this.z *= a;
|
|
217029
217031
|
return true;
|
|
217030
217032
|
}
|
|
217031
|
-
/**
|
|
217033
|
+
/**
|
|
217034
|
+
* Create a normalized vector from the inputs.
|
|
217032
217035
|
* @param result optional result
|
|
217033
217036
|
* @returns undefined if and only if normalization fails
|
|
217034
217037
|
*/
|
|
@@ -217062,7 +217065,8 @@ class Vector3d extends XYZ {
|
|
|
217062
217065
|
return defaultFraction;
|
|
217063
217066
|
return numerator / denominator;
|
|
217064
217067
|
}
|
|
217065
|
-
/**
|
|
217068
|
+
/**
|
|
217069
|
+
* Return a new vector with components negated from the calling instance.
|
|
217066
217070
|
* @param result optional result vector.
|
|
217067
217071
|
*/
|
|
217068
217072
|
negate(result) {
|
|
@@ -217144,7 +217148,8 @@ class Vector3d extends XYZ {
|
|
|
217144
217148
|
const normal = this.crossProduct(target).normalize();
|
|
217145
217149
|
return normal ? normal.crossProduct(this, result) : undefined;
|
|
217146
217150
|
}
|
|
217147
|
-
/**
|
|
217151
|
+
/**
|
|
217152
|
+
* Rotate this vector 90 degrees around an axis vector.
|
|
217148
217153
|
* * Note that simple cross is in the plane perpendicular to axis -- it loses the part
|
|
217149
217154
|
* of "this" that is along the axis. The unit and scale is supposed to fix that.
|
|
217150
217155
|
* This matches with Rodrigues' rotation formula because cos(theta) = 0 and sin(theta) = 1
|
|
@@ -217233,8 +217238,10 @@ class Vector3d extends XYZ {
|
|
|
217233
217238
|
static createAdd2Scaled(vectorA, scaleA, vectorB, scaleB, result) {
|
|
217234
217239
|
return Vector3d.create(vectorA.x * scaleA + vectorB.x * scaleB, vectorA.y * scaleA + vectorB.y * scaleB, vectorA.z * scaleA + vectorB.z * scaleB, result);
|
|
217235
217240
|
}
|
|
217236
|
-
/**
|
|
217237
|
-
*
|
|
217241
|
+
/**
|
|
217242
|
+
* Return the (strongly typed Vector3d) `thisVector3d + vectorA * scalarA + vectorB * scalarB`
|
|
217243
|
+
* with all components presented as numbers
|
|
217244
|
+
*/
|
|
217238
217245
|
static createAdd2ScaledXYZ(ax, ay, az, scaleA, bx, by, bz, scaleB, result) {
|
|
217239
217246
|
return Vector3d.create(ax * scaleA + bx * scaleB, ay * scaleA + by * scaleB, az * scaleA + bz * scaleB, result);
|
|
217240
217247
|
}
|
|
@@ -217261,7 +217268,8 @@ class Vector3d extends XYZ {
|
|
|
217261
217268
|
return undefined;
|
|
217262
217269
|
return this.scale(length / mag, result);
|
|
217263
217270
|
}
|
|
217264
|
-
/**
|
|
217271
|
+
/**
|
|
217272
|
+
* Compute the cross product of this vector with `vectorB`. Immediately pass it to `normalize`.
|
|
217265
217273
|
* @param vectorB second vector for cross product.
|
|
217266
217274
|
* @returns see `Vector3d` method `normalize()` for error condition.
|
|
217267
217275
|
*/
|
|
@@ -217348,7 +217356,8 @@ class Vector3d extends XYZ {
|
|
|
217348
217356
|
crossProductMagnitude(vectorB) {
|
|
217349
217357
|
return Math.sqrt(this.crossProductMagnitudeSquared(vectorB));
|
|
217350
217358
|
}
|
|
217351
|
-
/**
|
|
217359
|
+
/**
|
|
217360
|
+
* Return the dot product of this vector with vectorB.
|
|
217352
217361
|
* @param vectorB second vector of cross product
|
|
217353
217362
|
* @returns the dot product of this instance with vectorB
|
|
217354
217363
|
*/
|
|
@@ -217404,7 +217413,8 @@ class Vector3d extends XYZ {
|
|
|
217404
217413
|
return this.x * (pointB.x - pointA.x)
|
|
217405
217414
|
+ this.y * (pointB.y - pointA.y);
|
|
217406
217415
|
}
|
|
217407
|
-
/**
|
|
217416
|
+
/**
|
|
217417
|
+
* Dot product with vector from pointA to pointB, with pointB given as (weighted) wx,wy,wz,w
|
|
217408
217418
|
* * We need to unweight pointB (which is a homogeneous point) to be able to participate in the
|
|
217409
217419
|
* vector dot product
|
|
217410
217420
|
* * if the weight is near zero metric, the return is zero.
|
|
@@ -217448,7 +217458,7 @@ class Vector3d extends XYZ {
|
|
|
217448
217458
|
return Vector3d.createCrossProduct(this.x, this.y, this.z, vectorB.x, vectorB.y, vectorB.z, result);
|
|
217449
217459
|
}
|
|
217450
217460
|
/**
|
|
217451
|
-
*
|
|
217461
|
+
* Return cross product of `this` with the vector `(x, y, z)`
|
|
217452
217462
|
* @param x x component of second vector
|
|
217453
217463
|
* @param y y component of second vector
|
|
217454
217464
|
* @param z z component of second vector
|
|
@@ -217458,12 +217468,12 @@ class Vector3d extends XYZ {
|
|
|
217458
217468
|
return Vector3d.createCrossProduct(this.x, this.y, this.z, x, y, z, result);
|
|
217459
217469
|
}
|
|
217460
217470
|
/**
|
|
217461
|
-
|
|
217462
|
-
|
|
217463
|
-
|
|
217464
|
-
|
|
217465
|
-
|
|
217466
|
-
|
|
217471
|
+
* Return the angle in radians (not as strongly typed Angle) from this vector to vectorB.
|
|
217472
|
+
* * The returned angle is between 0 and `Math.PI`.
|
|
217473
|
+
* * The returned angle is measured in the plane containing the two vectors.
|
|
217474
|
+
* * Use `planarRadiansTo` and `signedRadiansTo` to return an angle measured in a specific plane.
|
|
217475
|
+
* @param vectorB target vector.
|
|
217476
|
+
*/
|
|
217467
217477
|
radiansTo(vectorB) {
|
|
217468
217478
|
// ||axb|| = ||a|| ||b|| |sin(t)| and a.b = ||a|| ||b|| cos(t) ==>
|
|
217469
217479
|
// ||axb|| / a.b = sin(t)/cos(t) = tan(t) ==> t = arctan(||axb|| / a.b).
|
|
@@ -217499,16 +217509,16 @@ class Vector3d extends XYZ {
|
|
|
217499
217509
|
return _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createAtan2(this.crossProductXY(vectorB), this.dotProductXY(vectorB));
|
|
217500
217510
|
}
|
|
217501
217511
|
/**
|
|
217502
|
-
|
|
217503
|
-
|
|
217504
|
-
|
|
217505
|
-
|
|
217506
|
-
|
|
217507
|
-
|
|
217508
|
-
|
|
217509
|
-
|
|
217510
|
-
|
|
217511
|
-
|
|
217512
|
+
* Return the angle in radians (not as strongly-typed Angle) from this vector to vectorB, measured
|
|
217513
|
+
* in their containing plane whose normal lies in the same half-space as vectorW.
|
|
217514
|
+
* * The returned angle is between `-Math.PI` and `Math.PI`.
|
|
217515
|
+
* * If the cross product of this vector and vectorB lies on the same side of the plane as vectorW,
|
|
217516
|
+
* this function returns `radiansTo(vectorB)`; otherwise, it returns `-radiansTo(vectorB)`.
|
|
217517
|
+
* * `vectorW` does not have to be perpendicular to the plane.
|
|
217518
|
+
* * Use `planarRadiansTo` to measure the angle between vectors that are projected to another plane.
|
|
217519
|
+
* @param vectorB target vector.
|
|
217520
|
+
* @param vectorW determines the side of the plane in which the returned angle is measured
|
|
217521
|
+
*/
|
|
217512
217522
|
signedRadiansTo(vectorB, vectorW) {
|
|
217513
217523
|
const p = this.crossProduct(vectorB);
|
|
217514
217524
|
const theta = Math.atan2(p.magnitude(), this.dotProduct(vectorB));
|
|
@@ -217517,7 +217527,8 @@ class Vector3d extends XYZ {
|
|
|
217517
217527
|
else
|
|
217518
217528
|
return theta;
|
|
217519
217529
|
}
|
|
217520
|
-
/**
|
|
217530
|
+
/**
|
|
217531
|
+
* Return the (strongly-typed) angle from this vector to vectorB, measured
|
|
217521
217532
|
* in their containing plane whose normal lies in the same half-space as vectorW.
|
|
217522
217533
|
* * The returned angle is between -180 and 180 degrees.
|
|
217523
217534
|
* * If the cross product of this vector and vectorB lies on the same side of the plane as vectorW,
|
|
@@ -217560,15 +217571,19 @@ class Vector3d extends XYZ {
|
|
|
217560
217571
|
planarAngleTo(vectorB, planeNormal) {
|
|
217561
217572
|
return _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(this.planarRadiansTo(vectorB, planeNormal));
|
|
217562
217573
|
}
|
|
217563
|
-
/**
|
|
217564
|
-
|
|
217574
|
+
/**
|
|
217575
|
+
* Return the smallest angle (in radians) from the (bidirectional) line containing `this`
|
|
217576
|
+
* to the (bidirectional) line containing `vectorB`
|
|
217577
|
+
*/
|
|
217565
217578
|
smallerUnorientedRadiansTo(vectorB) {
|
|
217566
217579
|
const c = this.dotProduct(vectorB);
|
|
217567
217580
|
const s = this.crossProductMagnitude(vectorB);
|
|
217568
217581
|
return Math.atan2(Math.abs(s), Math.abs(c));
|
|
217569
217582
|
}
|
|
217570
|
-
/**
|
|
217571
|
-
*
|
|
217583
|
+
/**
|
|
217584
|
+
* Return the smallest (strongly typed) angle from the (bidirectional) line containing `this`
|
|
217585
|
+
* to the (bidirectional) line containing `vectorB`
|
|
217586
|
+
*/
|
|
217572
217587
|
smallerUnorientedAngleTo(vectorB) {
|
|
217573
217588
|
return _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(this.smallerUnorientedRadiansTo(vectorB));
|
|
217574
217589
|
}
|
|
@@ -223469,7 +223484,7 @@ class Transform {
|
|
|
223469
223484
|
}
|
|
223470
223485
|
/**
|
|
223471
223486
|
* Return a modified copy of `this` Transform so that its `matrix` part is rigid (`origin` part is untouched).
|
|
223472
|
-
* *
|
|
223487
|
+
* * @see [[Matrix3d.axisOrderCrossProductsInPlace]] documentation for details of how the matrix is modified to rigid.
|
|
223473
223488
|
*/
|
|
223474
223489
|
cloneRigid(axisOrder = _Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisOrder.XYZ) {
|
|
223475
223490
|
const modifiedMatrix = _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createRigidFromMatrix3d(this.matrix, axisOrder);
|
|
@@ -223477,7 +223492,7 @@ class Transform {
|
|
|
223477
223492
|
return undefined;
|
|
223478
223493
|
return new Transform(this.origin.cloneAsPoint3d(), modifiedMatrix);
|
|
223479
223494
|
}
|
|
223480
|
-
/** Create a Transform with the given `origin` and `matrix`. */
|
|
223495
|
+
/** Create a Transform with the given `origin` and `matrix`. Inputs are captured, not cloned. */
|
|
223481
223496
|
static createRefs(origin, matrix, result) {
|
|
223482
223497
|
if (!origin)
|
|
223483
223498
|
origin = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero();
|
|
@@ -223488,7 +223503,7 @@ class Transform {
|
|
|
223488
223503
|
}
|
|
223489
223504
|
return new Transform(origin, matrix);
|
|
223490
223505
|
}
|
|
223491
|
-
/** Create a Transform with complete contents given */
|
|
223506
|
+
/** Create a Transform with complete contents given. `q` inputs make the matrix and `a` inputs make the origin */
|
|
223492
223507
|
static createRowValues(qxx, qxy, qxz, ax, qyx, qyy, qyz, ay, qzx, qzy, qzz, az, result) {
|
|
223493
223508
|
if (result) {
|
|
223494
223509
|
result._origin.set(ax, ay, az);
|
|
@@ -223503,6 +223518,8 @@ class Transform {
|
|
|
223503
223518
|
}
|
|
223504
223519
|
/**
|
|
223505
223520
|
* Create a Transform with translation provided by x,y,z parts.
|
|
223521
|
+
* * Translation Transform maps any vector `v` to `v + p` where `p = (x,y,z)`
|
|
223522
|
+
* * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/MoveCube
|
|
223506
223523
|
* @param x x part of translation
|
|
223507
223524
|
* @param y y part of translation
|
|
223508
223525
|
* @param z z part of translation
|
|
@@ -223514,6 +223531,8 @@ class Transform {
|
|
|
223514
223531
|
}
|
|
223515
223532
|
/**
|
|
223516
223533
|
* Create a Transform with specified `translation` part.
|
|
223534
|
+
* * Translation Transform maps any vector `v` to `v + translation`
|
|
223535
|
+
* * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/MoveCube
|
|
223517
223536
|
* @param translation x,y,z parts of the translation
|
|
223518
223537
|
* @param result optional pre-allocated Transform
|
|
223519
223538
|
* @returns new or updated transform
|
|
@@ -223560,6 +223579,7 @@ class Transform {
|
|
|
223560
223579
|
* local-to-world mapping.
|
|
223561
223580
|
* * This function is a closely related to `createFixedPointAndMatrix` whose point input is the fixed point
|
|
223562
223581
|
* of the world-to-world transformation.
|
|
223582
|
+
* * If origin is `undefined`, (0,0,0) is used. If matrix is `undefined` the identity matrix is used.
|
|
223563
223583
|
*/
|
|
223564
223584
|
static createOriginAndMatrix(origin, matrix, result) {
|
|
223565
223585
|
if (result) {
|
|
@@ -223585,7 +223605,7 @@ class Transform {
|
|
|
223585
223605
|
}
|
|
223586
223606
|
/**
|
|
223587
223607
|
* Create a Transform such that its `matrix` part is rigid.
|
|
223588
|
-
*
|
|
223608
|
+
* @see [[Matrix3d.createRigidFromColumns]] for details of how the matrix is created to be rigid.
|
|
223589
223609
|
*/
|
|
223590
223610
|
static createRigidFromOriginAndColumns(origin, vectorX, vectorY, axisOrder, result) {
|
|
223591
223611
|
const matrix = _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createRigidFromColumns(vectorX, vectorY, axisOrder, result ? result._matrix : undefined);
|
|
@@ -223597,10 +223617,10 @@ class Transform {
|
|
|
223597
223617
|
return result;
|
|
223598
223618
|
}
|
|
223599
223619
|
/**
|
|
223600
|
-
* We don't want to pass "origin" to createRefs because createRefs does not clone "origin"
|
|
223601
|
-
*
|
|
223602
|
-
*
|
|
223603
|
-
*
|
|
223620
|
+
* We don't want to pass "origin" to createRefs because createRefs does not clone "origin". That means if "origin"
|
|
223621
|
+
* is changed via Transform at any point, the initial "origin" passed by the user is also changed. To avoid that,
|
|
223622
|
+
* we pass "undefined" to createRefs so that it allocates a new point which then we set it to the "origin" which
|
|
223623
|
+
* is passed by user in the next line.
|
|
223604
223624
|
*/
|
|
223605
223625
|
result = Transform.createRefs(undefined, matrix);
|
|
223606
223626
|
result._origin.setFromPoint3d(origin);
|
|
@@ -223623,18 +223643,19 @@ class Transform {
|
|
|
223623
223643
|
return Transform.createRefs(undefined, matrix.clone());
|
|
223624
223644
|
}
|
|
223625
223645
|
/**
|
|
223626
|
-
* Create a transform with the specified `matrix` and points `a` and `b`. The returned Transform
|
|
223627
|
-
* point `p` to `M*(p-a) + b` (i.e., `Tp = M*(p-a) + b`) so
|
|
223646
|
+
* Create a transform with the specified `matrix` and points `a` and `b`. The returned Transform maps
|
|
223647
|
+
* point `p` to `M*(p-a) + b` (i.e., `Tp = M*(p-a) + b`), so maps `a` to 'b'.
|
|
223628
223648
|
*/
|
|
223629
223649
|
static createMatrixPickupPutdown(matrix, a, b, result) {
|
|
223630
|
-
// we define the origin o = b - M*a so Tp = M*p + o = M*p + (b - M*a) = M*(
|
|
223650
|
+
// we define the origin o = b - M*a so Tp = M*p + o = M*p + (b - M*a) = M*(p-a) + b
|
|
223631
223651
|
const origin = _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzMinusMatrixTimesXYZ(b, matrix, a);
|
|
223632
223652
|
return Transform.createRefs(origin, matrix.clone(), result);
|
|
223633
223653
|
}
|
|
223634
223654
|
/**
|
|
223635
223655
|
* Create a Transform which leaves the fixedPoint unchanged and scales everything else around it by
|
|
223636
|
-
* a single scale factor. The returned Transform
|
|
223656
|
+
* a single scale factor. The returned Transform maps a point `p` to `M*p + (f - M*f)`
|
|
223637
223657
|
* where `f` is the fixedPoint and M is the scale matrix (i.e., `Tp = M*(p-f) + f`).
|
|
223658
|
+
* * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/ScaleCube
|
|
223638
223659
|
*/
|
|
223639
223660
|
static createScaleAboutPoint(fixedPoint, scale, result) {
|
|
223640
223661
|
const matrix = _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createScale(scale, scale, scale);
|
|
@@ -223676,8 +223697,7 @@ class Transform {
|
|
|
223676
223697
|
return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesCoordinates(this._origin, this._matrix, x, y, z, result);
|
|
223677
223698
|
}
|
|
223678
223699
|
/**
|
|
223679
|
-
* Multiply a specific row (component) of the
|
|
223680
|
-
* at the same row. Return the result.
|
|
223700
|
+
* Multiply a specific row (component) of the 3x4 instance times (x,y,z,1). Return the result.
|
|
223681
223701
|
*/
|
|
223682
223702
|
multiplyComponentXYZ(componentIndex, x, y, z = 0) {
|
|
223683
223703
|
const coffs = this._matrix.coffs;
|
|
@@ -223685,8 +223705,7 @@ class Transform {
|
|
|
223685
223705
|
return this.origin.at(componentIndex) + (coffs[idx] * x) + (coffs[idx + 1] * y) + (coffs[idx + 2] * z);
|
|
223686
223706
|
}
|
|
223687
223707
|
/**
|
|
223688
|
-
* Multiply a specific row (component) of the
|
|
223689
|
-
* at the same row times w. Return the result.
|
|
223708
|
+
* Multiply a specific row (component) of the 3x4 instance times (x,y,z,w). Return the result.
|
|
223690
223709
|
*/
|
|
223691
223710
|
multiplyComponentXYZW(componentIndex, x, y, z, w) {
|
|
223692
223711
|
const coffs = this._matrix.coffs;
|
|
@@ -223694,31 +223713,38 @@ class Transform {
|
|
|
223694
223713
|
return (this.origin.at(componentIndex) * w) + (coffs[idx] * x) + (coffs[idx + 1] * y) + (coffs[idx + 2] * z);
|
|
223695
223714
|
}
|
|
223696
223715
|
/**
|
|
223697
|
-
*
|
|
223698
|
-
*
|
|
223716
|
+
* Transform the homogeneous point. Return as a new `Point4d`, or in the pre-allocated result (if result is given).
|
|
223717
|
+
* * If `p = (x,y,z)` then this method computes `Tp = M*p + o*w` and returns the `Point4d` formed by `Tp` in the
|
|
223718
|
+
* first three coordinates, and `w` in the fourth.
|
|
223719
|
+
* * Logically, this is multiplication by the 4x4 matrix formed from the 3x4 instance augmented with fourth row 0001.
|
|
223699
223720
|
*/
|
|
223700
223721
|
multiplyXYZW(x, y, z, w, result) {
|
|
223701
223722
|
return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesWeightedCoordinates(this._origin, this._matrix, x, y, z, w, result);
|
|
223702
223723
|
}
|
|
223703
223724
|
/**
|
|
223704
|
-
*
|
|
223705
|
-
*
|
|
223706
|
-
* (
|
|
223725
|
+
* Transform the homogeneous point. Return as new `Float64Array` with size 4, or in the pre-allocated result (if
|
|
223726
|
+
* result is given).
|
|
223727
|
+
* * If `p = (x,y,z)` then this method computes `Tp = M*p + o*w` and returns the `Float64Array` formed by `Tp`
|
|
223728
|
+
* in the first 3 numbers of the array and `w` as the fourth.
|
|
223729
|
+
* * Logically, this is multiplication by the 4x4 matrix formed from the 3x4 instance augmented with fourth row 0001.
|
|
223707
223730
|
*/
|
|
223708
223731
|
multiplyXYZWToFloat64Array(x, y, z, w, result) {
|
|
223709
223732
|
return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesWeightedCoordinatesToFloat64Array(this._origin, this._matrix, x, y, z, w, result);
|
|
223710
223733
|
}
|
|
223711
223734
|
/**
|
|
223712
|
-
*
|
|
223713
|
-
*
|
|
223735
|
+
* * Transform the point. Return as new `Float64Array` with size 3, or in the pre-allocated result (if result is given).
|
|
223736
|
+
* * If `p = (x,y,z)` then this method computes `Tp = M*p + o` and returns it as the first 3 elements of the array.
|
|
223714
223737
|
*/
|
|
223715
223738
|
multiplyXYZToFloat64Array(x, y, z, result) {
|
|
223716
223739
|
return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesCoordinatesToFloat64Array(this._origin, this._matrix, x, y, z, result);
|
|
223717
223740
|
}
|
|
223718
223741
|
/**
|
|
223719
|
-
*
|
|
223720
|
-
*
|
|
223721
|
-
*
|
|
223742
|
+
* Multiply the homogeneous point by the transpose of `this` Transform. Return as a new `Point4d` or in the
|
|
223743
|
+
* pre-allocated result (if result is given).
|
|
223744
|
+
* * If `p = (x,y,z)` then this method computes `M^t*p` and returns it in the first three coordinates of the `Point4d`,
|
|
223745
|
+
* and `o*p + w` in the fourth.
|
|
223746
|
+
* * Logically, this is multiplication by the transpose of the 4x4 matrix formed from the 3x4 instance augmented with
|
|
223747
|
+
* fourth row 0001.
|
|
223722
223748
|
*/
|
|
223723
223749
|
multiplyTransposeXYZW(x, y, z, w, result) {
|
|
223724
223750
|
const coffs = this._matrix.coffs;
|
|
@@ -223737,9 +223763,9 @@ class Transform {
|
|
|
223737
223763
|
this.multiplyPoint3dArrayInPlace(chain);
|
|
223738
223764
|
}
|
|
223739
223765
|
/**
|
|
223740
|
-
*
|
|
223741
|
-
* `p = MInverse
|
|
223742
|
-
*
|
|
223766
|
+
* Multiply the point by the inverse Transform.
|
|
223767
|
+
* * If for a point `p` we have `Tp = M*p + o = q`, then `p = MInverse*(q - o) = TInverse q` so `TInverse`
|
|
223768
|
+
* Transform has matrix part `MInverse` and origin part `-MInverse*o`.
|
|
223743
223769
|
* * Return as a new point or in the optional `result`.
|
|
223744
223770
|
* * Returns `undefined` if the `matrix` part if this Transform is singular.
|
|
223745
223771
|
*/
|
|
@@ -223747,9 +223773,13 @@ class Transform {
|
|
|
223747
223773
|
return this._matrix.multiplyInverseXYZAsPoint3d(point.x - this._origin.x, point.y - this._origin.y, point.z - this._origin.z, result);
|
|
223748
223774
|
}
|
|
223749
223775
|
/**
|
|
223750
|
-
*
|
|
223751
|
-
* `p =
|
|
223752
|
-
*
|
|
223776
|
+
* Multiply the homogenous point by the inverse Transform.
|
|
223777
|
+
* * If for a point `p` we have `Tp = M*p + o = q`, then `p = MInverse*(q - o) = TInverse q` so `TInverse` Transform
|
|
223778
|
+
* has matrix part `MInverse` and origin part `-MInverse*o`.
|
|
223779
|
+
* * This method computes `TInverse p = MInverse*p - w*MInverse*o` and returns the `Point4d` formed by `TInverse*p`
|
|
223780
|
+
* in the first three coordinates, and `w` in the fourth.
|
|
223781
|
+
* * Logically, this is multiplication by the inverse of the 4x4 matrix formed from the 3x4 instance augmented with
|
|
223782
|
+
* fourth row 0001. This is equivalent to the 4x4 matrix formed in similar fashion from the inverse of this instance.
|
|
223753
223783
|
* * Return as a new point or in the optional `result`.
|
|
223754
223784
|
* * Returns `undefined` if the `matrix` part if this Transform is singular.
|
|
223755
223785
|
*/
|
|
@@ -223758,9 +223788,9 @@ class Transform {
|
|
|
223758
223788
|
return this._matrix.multiplyInverseXYZW(weightedPoint.x - w * this.origin.x, weightedPoint.y - w * this.origin.y, weightedPoint.z - w * this.origin.z, w, result);
|
|
223759
223789
|
}
|
|
223760
223790
|
/**
|
|
223761
|
-
*
|
|
223762
|
-
* `p = MInverse
|
|
223763
|
-
*
|
|
223791
|
+
* Multiply the point by the inverse Transform.
|
|
223792
|
+
* * If for a point `p` we have `Tp = M*p + o = q`, then `p = MInverse*(q - o) = TInverse q` so `TInverse` Transform
|
|
223793
|
+
* has matrix part `MInverse` and origin part `-MInverse*o`.
|
|
223764
223794
|
* * Return as a new point or in the optional `result`.
|
|
223765
223795
|
* * Returns `undefined` if the `matrix` part if this Transform is singular.
|
|
223766
223796
|
*/
|
|
@@ -223799,35 +223829,35 @@ class Transform {
|
|
|
223799
223829
|
return numSource;
|
|
223800
223830
|
}
|
|
223801
223831
|
/**
|
|
223802
|
-
*
|
|
223803
|
-
*
|
|
223804
|
-
*
|
|
223805
|
-
* * If `
|
|
223806
|
-
* * If `
|
|
223832
|
+
* Multiply each point in the array by the inverse of `this` Transform.
|
|
223833
|
+
* * For a transform `T = [M o]` the inverse transform `T' = [M' -M'o]` exists if and only if `M` has an inverse
|
|
223834
|
+
* `M'`. Indeed, for any point `p`, we have `T'Tp = T'(Mp + o) = M'(Mp + o) - M'o = M'Mp + M'o - M'o = p.`
|
|
223835
|
+
* * If `result` is given, resize it to match the input `points` array and update it with original points `p[]`.
|
|
223836
|
+
* * If `result` is not given, return a new array.
|
|
223807
223837
|
* * Returns `undefined` if the `matrix` part if this Transform is singular.
|
|
223808
223838
|
*/
|
|
223809
|
-
multiplyInversePoint3dArray(points,
|
|
223839
|
+
multiplyInversePoint3dArray(points, result) {
|
|
223810
223840
|
if (!this._matrix.computeCachedInverse(true))
|
|
223811
223841
|
return undefined;
|
|
223812
223842
|
const originX = this.origin.x;
|
|
223813
223843
|
const originY = this.origin.y;
|
|
223814
223844
|
const originZ = this.origin.z;
|
|
223815
|
-
if (
|
|
223816
|
-
const n = Transform.matchArrayLengths(points,
|
|
223845
|
+
if (result) {
|
|
223846
|
+
const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
|
|
223817
223847
|
for (let i = 0; i < n; i++)
|
|
223818
|
-
this._matrix.multiplyInverseXYZAsPoint3d(points[i].x - originX, points[i].y - originY, points[i].z - originZ,
|
|
223848
|
+
this._matrix.multiplyInverseXYZAsPoint3d(points[i].x - originX, points[i].y - originY, points[i].z - originZ, result[i]);
|
|
223849
|
+
return result;
|
|
223819
223850
|
}
|
|
223820
|
-
|
|
223851
|
+
result = [];
|
|
223821
223852
|
for (const point of points)
|
|
223822
|
-
|
|
223823
|
-
return
|
|
223853
|
+
result.push(this._matrix.multiplyInverseXYZAsPoint3d(point.x - originX, point.y - originY, point.z - originZ));
|
|
223854
|
+
return result;
|
|
223824
223855
|
}
|
|
223825
223856
|
/**
|
|
223826
|
-
*
|
|
223827
|
-
*
|
|
223828
|
-
*
|
|
223829
|
-
*
|
|
223830
|
-
* * Returns `true` if the `matrix` part if this Transform is invertible and `false if singular.
|
|
223857
|
+
* Multiply each point in the array by the inverse of `this` Transform in place.
|
|
223858
|
+
* * For a transform `T = [M o]` the inverse transform `T' = [M' -M'o]` exists if and only if `M` has an inverse
|
|
223859
|
+
* `M'`. Indeed, for any point `p`, we have `T'Tp = T'(Mp + o) = M'(Mp + o) - M'o = M'Mp + M'o - M'o = p.`
|
|
223860
|
+
* * Returns `true` if the `matrix` part if this Transform is invertible and `false` if singular.
|
|
223831
223861
|
*/
|
|
223832
223862
|
multiplyInversePoint3dArrayInPlace(points) {
|
|
223833
223863
|
if (!this._matrix.computeCachedInverse(true))
|
|
@@ -223896,7 +223926,8 @@ class Transform {
|
|
|
223896
223926
|
/**
|
|
223897
223927
|
* Calculate `transformA * transformB` and store it into the calling instance (`this`).
|
|
223898
223928
|
* * **Note:** If `transformA = [A a]` and `transformB = [B b]` then `transformA * transformB` is defined as
|
|
223899
|
-
* `[A*B Ab+a]`.
|
|
223929
|
+
* `[A*B Ab+a]`.
|
|
223930
|
+
* * @see [[multiplyTransformTransform]] documentation for math details.
|
|
223900
223931
|
* @param transformA first operand
|
|
223901
223932
|
* @param transformB second operand
|
|
223902
223933
|
*/
|
|
@@ -223906,19 +223937,17 @@ class Transform {
|
|
|
223906
223937
|
}
|
|
223907
223938
|
/**
|
|
223908
223939
|
* Multiply `this` Transform times `other` Transform.
|
|
223909
|
-
* **Note:** If `this = [A a]` and `other = [B b]` then `this * other` is defined as [A*B Ab+a]
|
|
223910
|
-
* That's because we create a 4x4 matrix for each Transform with the 3x3 `matrix` and `origin`
|
|
223911
|
-
* as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we multiply those two 4x4 matrixes:
|
|
223940
|
+
* * **Note:** If `this = [A a]` and `other = [B b]` then `this * other` is defined as [A*B Ab+a] because:
|
|
223912
223941
|
* ```
|
|
223913
223942
|
* equation
|
|
223914
223943
|
* \begin{matrix}
|
|
223915
|
-
* \text{
|
|
223916
|
-
* \text{
|
|
223944
|
+
* \text{this Transform with matrix part }\bold{A}\text{ and origin part }\bold{a} & \blockTransform{A}{a}\\
|
|
223945
|
+
* \text{other Transform with matrix part }\bold{B}\text{ and origin part }\bold{b} & \blockTransform{B}{b} \\
|
|
223917
223946
|
* \text{product}& \blockTransform{A}{a}\blockTransform{B}{b}=\blockTransform{AB}{Ab + a}
|
|
223918
223947
|
* \end{matrix}
|
|
223919
223948
|
* ```
|
|
223920
223949
|
* @param other the 'other` Transform to be multiplied to `this` Transform.
|
|
223921
|
-
* @param result optional preallocated result to reuse.
|
|
223950
|
+
* @param result optional preallocated `result` to reuse.
|
|
223922
223951
|
*/
|
|
223923
223952
|
multiplyTransformTransform(other, result) {
|
|
223924
223953
|
if (!result)
|
|
@@ -223928,20 +223957,17 @@ class Transform {
|
|
|
223928
223957
|
}
|
|
223929
223958
|
/**
|
|
223930
223959
|
* Multiply `this` Transform times `other` Matrix3d (considered to be a Transform with 0 `origin`).
|
|
223931
|
-
* **Note:** If `this = [A a]`, then
|
|
223932
|
-
* Then `this * other` is defined as [A*B a]. That's because we create a 4x4 matrix for each Transform
|
|
223933
|
-
* with the 3x3 `matrix` and `origin` as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we
|
|
223934
|
-
* multiply those two 4x4 matrixes:
|
|
223960
|
+
* * **Note:** If `this = [A a]` and `other = [B 0]`, then `this * other` is defined as [A*B a] because:
|
|
223935
223961
|
* ```
|
|
223936
223962
|
* equation
|
|
223937
223963
|
* \begin{matrix}
|
|
223938
|
-
* \text{
|
|
223939
|
-
* \text{
|
|
223964
|
+
* \text{this Transform with matrix part }\bold{A}\text{ and origin part }\bold{a} & \blockTransform{A}{a}\\
|
|
223965
|
+
* \text{other matrix }\bold{B}\text{ promoted to block Transform} & \blockTransform{B}{0} \\
|
|
223940
223966
|
* \text{product}& \blockTransform{A}{a}\blockTransform{B}{0}=\blockTransform{AB}{a}
|
|
223941
223967
|
* \end{matrix}
|
|
223942
223968
|
* ```
|
|
223943
223969
|
* @param other the `other` Matrix3d to be multiplied to `this` Transform.
|
|
223944
|
-
* @param result optional preallocated result to reuse.
|
|
223970
|
+
* @param result optional preallocated `result` to reuse.
|
|
223945
223971
|
*/
|
|
223946
223972
|
multiplyTransformMatrix3d(other, result) {
|
|
223947
223973
|
if (!result)
|
|
@@ -223951,13 +223977,13 @@ class Transform {
|
|
|
223951
223977
|
return result;
|
|
223952
223978
|
}
|
|
223953
223979
|
/**
|
|
223954
|
-
* Return the
|
|
223980
|
+
* Return the range of the transformed corners.
|
|
223955
223981
|
* * The 8 corners are transformed individually.
|
|
223956
223982
|
* * **Note:** Suppose you have a geometry, a range box around that geometry, and your Transform is a rotation.
|
|
223957
223983
|
* If you rotate the range box and recompute a new range box around the rotated range box, then the new range
|
|
223958
223984
|
* box will have a larger volume than the original range box. However, if you rotate the geometry itself and
|
|
223959
223985
|
* then recompute the range box, it will be a tighter range box around the rotated geometry. `multiplyRange`
|
|
223960
|
-
* function creates the larger range box because it only has access to the range box and the geometry itself.
|
|
223986
|
+
* function creates the larger range box because it only has access to the range box and not the geometry itself.
|
|
223961
223987
|
*/
|
|
223962
223988
|
multiplyRange(range, result) {
|
|
223963
223989
|
if (range.isNull)
|
|
@@ -223981,7 +224007,7 @@ class Transform {
|
|
|
223981
224007
|
}
|
|
223982
224008
|
/**
|
|
223983
224009
|
* Return a Transform which is the inverse of `this` Transform.
|
|
223984
|
-
* * If `transform = [M o]` then `transformInverse = [MInverse MInverse
|
|
224010
|
+
* * If `transform = [M o]` then `transformInverse = [MInverse -MInverse*o]`
|
|
223985
224011
|
* * Return `undefined` if this Transform's matrix is singular.
|
|
223986
224012
|
*/
|
|
223987
224013
|
inverse(result) {
|
|
@@ -223996,14 +224022,14 @@ class Transform {
|
|
|
223996
224022
|
return Transform.createRefs(matrixInverse.multiplyXYZ(-this._origin.x, -this._origin.y, -this._origin.z), matrixInverse);
|
|
223997
224023
|
}
|
|
223998
224024
|
/**
|
|
223999
|
-
* Initialize 2 Transforms
|
|
224000
|
-
*
|
|
224001
|
-
* @param min the min corner of the box
|
|
224002
|
-
* @param max the max corner of the box
|
|
224003
|
-
* @param npcToGlobal maps
|
|
224004
|
-
*
|
|
224005
|
-
* @param globalToNpc maps
|
|
224006
|
-
*
|
|
224025
|
+
* Initialize 2 Transforms that map between the unit box (specified by 000 and 111) and the range box specified
|
|
224026
|
+
* by the input points.
|
|
224027
|
+
* @param min the min corner of the range box
|
|
224028
|
+
* @param max the max corner of the range box
|
|
224029
|
+
* @param npcToGlobal maps NPC coordinates into range box coordinates. Specifically, maps 000 to `min` and maps
|
|
224030
|
+
* 111 to `max`. This Transform is the inverse of `globalToNpc`. Object created by caller, re-initialized here.
|
|
224031
|
+
* @param globalToNpc maps range box coordinates into NPC coordinates. Specifically, maps `min` to 000 and maps
|
|
224032
|
+
* `max` to 111. This Transform is the inverse of `npcToGlobal`. Object created by caller, re-initialized here.
|
|
224007
224033
|
* * NPC stands for `Normalized Projection Coordinate`
|
|
224008
224034
|
*/
|
|
224009
224035
|
static initFromRange(min, max, npcToGlobal, globalToNpc) {
|
|
@@ -224256,11 +224282,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
224256
224282
|
*/
|
|
224257
224283
|
class YawPitchRollAngles {
|
|
224258
224284
|
/**
|
|
224259
|
-
*
|
|
224285
|
+
* Constructor
|
|
224260
224286
|
* @param yaw counterclockwise rotation angle around z
|
|
224261
224287
|
* @param pitch **clockwise** rotation angle around y
|
|
224262
224288
|
* @param roll counterclockwise rotation angle around x
|
|
224263
|
-
|
|
224289
|
+
*/
|
|
224264
224290
|
constructor(yaw = _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.zero(), pitch = _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.zero(), roll = _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.zero()) {
|
|
224265
224291
|
this.yaw = yaw;
|
|
224266
224292
|
this.pitch = pitch;
|
|
@@ -224274,29 +224300,29 @@ class YawPitchRollAngles {
|
|
|
224274
224300
|
return Object.freeze(this);
|
|
224275
224301
|
}
|
|
224276
224302
|
/**
|
|
224277
|
-
*
|
|
224303
|
+
* Constructor for YawPitchRollAngles with angles in degrees.
|
|
224278
224304
|
* @param yawDegrees counterclockwise rotation angle (in degrees) around z
|
|
224279
224305
|
* @param pitchDegrees **clockwise** rotation angle (in degrees) around y
|
|
224280
224306
|
* @param rollDegrees counterclockwise rotation angle (in degrees) around x
|
|
224281
|
-
|
|
224307
|
+
*/
|
|
224282
224308
|
static createDegrees(yawDegrees, pitchDegrees, rollDegrees) {
|
|
224283
224309
|
return new YawPitchRollAngles(_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createDegrees(yawDegrees), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createDegrees(pitchDegrees), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createDegrees(rollDegrees));
|
|
224284
224310
|
}
|
|
224285
224311
|
/**
|
|
224286
|
-
*
|
|
224312
|
+
* Constructor for YawPitchRollAngles with angles in radians.
|
|
224287
224313
|
* @param yawRadians counterclockwise rotation angle (in radians) around z
|
|
224288
224314
|
* @param pitchRadians **clockwise** rotation angle (in radians) around y
|
|
224289
224315
|
* @param rollRadians counterclockwise rotation angle (in radians) around x
|
|
224290
|
-
|
|
224316
|
+
*/
|
|
224291
224317
|
static createRadians(yawRadians, pitchRadians, rollRadians) {
|
|
224292
224318
|
return new YawPitchRollAngles(_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createRadians(yawRadians), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createRadians(pitchRadians), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.createRadians(rollRadians));
|
|
224293
224319
|
}
|
|
224294
|
-
/**
|
|
224320
|
+
/** Construct a `YawPitchRoll` object from an object with 3 named angles */
|
|
224295
224321
|
static fromJSON(json) {
|
|
224296
224322
|
json = json ? json : {};
|
|
224297
224323
|
return new YawPitchRollAngles(_Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.fromJSON(json.yaw), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.fromJSON(json.pitch), _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.fromJSON(json.roll));
|
|
224298
224324
|
}
|
|
224299
|
-
/**
|
|
224325
|
+
/** Populate yaw, pitch and roll fields using `Angle.fromJSON` */
|
|
224300
224326
|
setFromJSON(json) {
|
|
224301
224327
|
json = json ? json : {};
|
|
224302
224328
|
this.yaw = _Angle__WEBPACK_IMPORTED_MODULE_0__.Angle.fromJSON(json.yaw);
|
|
@@ -224306,7 +224332,7 @@ class YawPitchRollAngles {
|
|
|
224306
224332
|
/**
|
|
224307
224333
|
* Convert to a JSON object of form { pitch: 20 , roll: 30 , yaw: 10 }. Angles are in degrees.
|
|
224308
224334
|
* Any values that are exactly zero (with tolerance `Geometry.smallAngleRadians`) are omitted.
|
|
224309
|
-
|
|
224335
|
+
*/
|
|
224310
224336
|
toJSON() {
|
|
224311
224337
|
const val = {};
|
|
224312
224338
|
if (!this.pitch.isAlmostZero)
|
|
@@ -224336,15 +224362,12 @@ class YawPitchRollAngles {
|
|
|
224336
224362
|
&& this.pitch.isAlmostEqualAllowPeriodShift(other.pitch)
|
|
224337
224363
|
&& this.roll.isAlmostEqualAllowPeriodShift(other.roll);
|
|
224338
224364
|
}
|
|
224339
|
-
/**
|
|
224340
|
-
* Make a copy of this YawPitchRollAngles.
|
|
224341
|
-
*/
|
|
224365
|
+
/** Make a copy of this YawPitchRollAngles */
|
|
224342
224366
|
clone() {
|
|
224343
224367
|
return new YawPitchRollAngles(this.yaw.clone(), this.pitch.clone(), this.roll.clone());
|
|
224344
224368
|
}
|
|
224345
224369
|
/**
|
|
224346
224370
|
* Expand the angles into a (rigid rotation) matrix.
|
|
224347
|
-
*
|
|
224348
224371
|
* * The returned matrix is "rigid" (i.e., it has unit length rows and columns, and its transpose is its inverse).
|
|
224349
224372
|
* * The rigid matrix is always a right handed coordinate system.
|
|
224350
224373
|
* @param result optional pre-allocated `Matrix3d`
|
|
@@ -224381,7 +224404,8 @@ class YawPitchRollAngles {
|
|
|
224381
224404
|
*/
|
|
224382
224405
|
return _Matrix3d__WEBPACK_IMPORTED_MODULE_1__.Matrix3d.createRowValues(cz * cy, -(sz * cx + cz * sy * sx), (sz * sx - cz * sy * cx), sz * cy, (cz * cx - sz * sy * sx), -(cz * sx + sz * sy * cx), sy, cy * sx, cy * cx, result);
|
|
224383
224406
|
}
|
|
224384
|
-
/**
|
|
224407
|
+
/**
|
|
224408
|
+
* Returns true if this rotation does nothing.
|
|
224385
224409
|
* * If allowPeriodShift is false, any nonzero angle is considered a non-identity
|
|
224386
224410
|
* * If allowPeriodShift is true, all angles are individually allowed to be any multiple of 360 degrees.
|
|
224387
224411
|
*/
|
|
@@ -224426,7 +224450,8 @@ class YawPitchRollAngles {
|
|
|
224426
224450
|
angles: YawPitchRollAngles.createFromMatrix3d(transform.matrix),
|
|
224427
224451
|
};
|
|
224428
224452
|
}
|
|
224429
|
-
/**
|
|
224453
|
+
/**
|
|
224454
|
+
* Attempts to create a YawPitchRollAngles object from a Matrix3d
|
|
224430
224455
|
* * This conversion fails if the matrix is not rigid (unit rows and columns, and transpose is inverse)
|
|
224431
224456
|
* * In the failure case the method's return value is `undefined`.
|
|
224432
224457
|
* * In the failure case, if the optional result was supplied, that result will nonetheless be filled with
|
|
@@ -248738,19 +248763,22 @@ class SteppedIndexFunctionFactory {
|
|
|
248738
248763
|
static createConstant(value = 0) {
|
|
248739
248764
|
return (_i, _n) => value;
|
|
248740
248765
|
}
|
|
248741
|
-
/**
|
|
248766
|
+
/**
|
|
248767
|
+
* Return a function that steps linearly
|
|
248742
248768
|
* * f(i,n) = y0 + (i/n) * a
|
|
248743
248769
|
*/
|
|
248744
248770
|
static createLinear(a, f0 = 0) {
|
|
248745
248771
|
return (i, n) => (f0 + a * (i / n));
|
|
248746
248772
|
}
|
|
248747
|
-
/**
|
|
248773
|
+
/**
|
|
248774
|
+
* Return a function that steps with cosine of angles in sweep
|
|
248748
248775
|
* * f(i,n) = y0 + amplitude * cos(i/n)
|
|
248749
248776
|
*/
|
|
248750
248777
|
static createCosine(amplitude, sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.create360(), f0 = 0) {
|
|
248751
248778
|
return (i, n) => (f0 + amplitude * Math.cos(sweep.fractionToRadians(i / n)));
|
|
248752
248779
|
}
|
|
248753
|
-
/**
|
|
248780
|
+
/**
|
|
248781
|
+
* Return a function that steps with cosine of angles in sweep.
|
|
248754
248782
|
* * f(i,n) = y0 + amplitude * sin(i/n)
|
|
248755
248783
|
*/
|
|
248756
248784
|
static createSine(amplitude, sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.create360(), f0 = 0) {
|
|
@@ -248762,7 +248790,8 @@ class SteppedIndexFunctionFactory {
|
|
|
248762
248790
|
* @alpha
|
|
248763
248791
|
*/
|
|
248764
248792
|
class Sample {
|
|
248765
|
-
/**
|
|
248793
|
+
/**
|
|
248794
|
+
* Return an array of Point3d, with x,y,z all stepping through a range of values.
|
|
248766
248795
|
* x varies fastest, then y then z
|
|
248767
248796
|
*/
|
|
248768
248797
|
static createPoint3dLattice(low, step, high) {
|
|
@@ -248773,7 +248802,8 @@ class Sample {
|
|
|
248773
248802
|
points.push(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z));
|
|
248774
248803
|
return points;
|
|
248775
248804
|
}
|
|
248776
|
-
/**
|
|
248805
|
+
/**
|
|
248806
|
+
* Return an array of Point2d, with x,y all stepping through a range of values.
|
|
248777
248807
|
* x varies fastest, then y
|
|
248778
248808
|
*/
|
|
248779
248809
|
static createPoint2dLattice(low, step, high) {
|
|
@@ -248821,7 +248851,8 @@ class Sample {
|
|
|
248821
248851
|
static createCenteredRectangleXY(cx, cy, ax, ay, z = 0) {
|
|
248822
248852
|
return this.createRectangleXY(cx - ax, cy - ay, 2 * ax, 2 * ay, z);
|
|
248823
248853
|
}
|
|
248824
|
-
/**
|
|
248854
|
+
/**
|
|
248855
|
+
* Access the last point in the array. push another shifted by dx,dy,dz.
|
|
248825
248856
|
* * No push if all are 0.
|
|
248826
248857
|
* * If array is empty, push a leading 000
|
|
248827
248858
|
*/
|
|
@@ -248843,7 +248874,8 @@ class Sample {
|
|
|
248843
248874
|
points.push(points[0].clone());
|
|
248844
248875
|
return points;
|
|
248845
248876
|
}
|
|
248846
|
-
/**
|
|
248877
|
+
/**
|
|
248878
|
+
* Create points for an L shaped polygon
|
|
248847
248879
|
* * lower left at x0,y0.
|
|
248848
248880
|
* * ax,ay are larger side lengths (lower left to corners along x and y directions)
|
|
248849
248881
|
* * bx,by are smaller side lengths (inner corner to points along x and y directions)
|
|
@@ -248868,7 +248900,7 @@ class Sample {
|
|
|
248868
248900
|
return [
|
|
248869
248901
|
plane0, plane1, plane2,
|
|
248870
248902
|
_clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_6__.ClipPlane.createNormalAndDistance(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(3, 4, 0), 2.0),
|
|
248871
|
-
_clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_6__.ClipPlane.createEdgeXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(24, 32, 0))
|
|
248903
|
+
_clipping_ClipPlane__WEBPACK_IMPORTED_MODULE_6__.ClipPlane.createEdgeXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(24, 32, 0)),
|
|
248872
248904
|
];
|
|
248873
248905
|
}
|
|
248874
248906
|
/**
|
|
@@ -248884,16 +248916,17 @@ class Sample {
|
|
|
248884
248916
|
const quadrant4 = _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_7__.ConvexClipPlaneSet.createXYBox(0, -1, 1, 0);
|
|
248885
248917
|
result.push(_clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_8__.UnionOfConvexClipPlaneSets.createConvexSets([
|
|
248886
248918
|
quadrant1.clone(),
|
|
248887
|
-
quadrant4.clone()
|
|
248919
|
+
quadrant4.clone(),
|
|
248888
248920
|
]));
|
|
248889
248921
|
result.push(_clipping_UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_8__.UnionOfConvexClipPlaneSets.createConvexSets([
|
|
248890
248922
|
quadrant1.clone(),
|
|
248891
248923
|
quadrant2.clone(),
|
|
248892
|
-
quadrant4.clone()
|
|
248924
|
+
quadrant4.clone(),
|
|
248893
248925
|
]));
|
|
248894
248926
|
return result;
|
|
248895
248927
|
}
|
|
248896
|
-
/**
|
|
248928
|
+
/**
|
|
248929
|
+
* Create (unweighted) bspline curves.
|
|
248897
248930
|
* order varies from 2 to 5
|
|
248898
248931
|
*/
|
|
248899
248932
|
static createBsplineCurves(includeMultipleKnots = false) {
|
|
@@ -248930,7 +248963,8 @@ class Sample {
|
|
|
248930
248963
|
}
|
|
248931
248964
|
return result;
|
|
248932
248965
|
}
|
|
248933
|
-
/**
|
|
248966
|
+
/**
|
|
248967
|
+
* Create weighted bspline curves.
|
|
248934
248968
|
* order varies from 2 to 5
|
|
248935
248969
|
*/
|
|
248936
248970
|
static createBspline3dHCurves() {
|
|
@@ -248968,8 +249002,7 @@ class Sample {
|
|
|
248968
249002
|
}
|
|
248969
249003
|
return result;
|
|
248970
249004
|
}
|
|
248971
|
-
/** Create weighted bsplines for circular arcs.
|
|
248972
|
-
*/
|
|
249005
|
+
/** Create weighted bsplines for circular arcs. */
|
|
248973
249006
|
static createBspline3dHArcs() {
|
|
248974
249007
|
const result = [];
|
|
248975
249008
|
const halfRadians = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.degreesToRadians(60.0);
|
|
@@ -248984,14 +249017,15 @@ class Sample {
|
|
|
248984
249017
|
_geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create(-1, 0, 0, c),
|
|
248985
249018
|
_geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create(-c, -s, 0, 1),
|
|
248986
249019
|
_geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create(c, -s, 0, c),
|
|
248987
|
-
_geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create(1, 0, 0, 1)
|
|
249020
|
+
_geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create(1, 0, 0, 1),
|
|
248988
249021
|
];
|
|
248989
249022
|
const knots = [0, 0, 1, 1, 2, 2, 3, 3];
|
|
248990
249023
|
const curve = _bspline_BSplineCurve3dH__WEBPACK_IMPORTED_MODULE_11__.BSplineCurve3dH.create(points, knots, 3);
|
|
248991
249024
|
result.push(curve);
|
|
248992
249025
|
return result;
|
|
248993
249026
|
}
|
|
248994
|
-
/**
|
|
249027
|
+
/**
|
|
249028
|
+
* Return array [x,y,z,w] bspline control points for an arc in 90 degree bspline spans.
|
|
248995
249029
|
* @param points array of [x,y,z,w]
|
|
248996
249030
|
* @param center center of arc
|
|
248997
249031
|
* @param axes matrix with 0 and 90 degree axes
|
|
@@ -249037,7 +249071,7 @@ class Sample {
|
|
|
249037
249071
|
result.push(b);
|
|
249038
249072
|
return result;
|
|
249039
249073
|
}
|
|
249040
|
-
/**
|
|
249074
|
+
/** Create a plane from origin and normal coordinates -- default to 001 normal if needed. */
|
|
249041
249075
|
static createPlane(x, y, z, u, v, w) {
|
|
249042
249076
|
const point = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z);
|
|
249043
249077
|
const vector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(u, v, w).normalize();
|
|
@@ -249057,22 +249091,23 @@ class Sample {
|
|
|
249057
249091
|
return [
|
|
249058
249092
|
_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.createPoints([
|
|
249059
249093
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0),
|
|
249060
|
-
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 0, 0)
|
|
249094
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 0, 0),
|
|
249061
249095
|
]),
|
|
249062
249096
|
_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.createPoints([
|
|
249063
249097
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0),
|
|
249064
249098
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 0, 0),
|
|
249065
|
-
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 1, 0)
|
|
249099
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 1, 0),
|
|
249066
249100
|
]),
|
|
249067
249101
|
_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.createPoints([
|
|
249068
249102
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0),
|
|
249069
249103
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 0, 0),
|
|
249070
249104
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 1, 0),
|
|
249071
|
-
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(2, 2, 0)
|
|
249072
|
-
])
|
|
249105
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(2, 2, 0),
|
|
249106
|
+
]),
|
|
249073
249107
|
];
|
|
249074
249108
|
}
|
|
249075
|
-
/**
|
|
249109
|
+
/**
|
|
249110
|
+
* Assorted Matrix3d:
|
|
249076
249111
|
* * identity
|
|
249077
249112
|
* * rotation around x
|
|
249078
249113
|
* * rotation around general vector
|
|
@@ -249097,10 +249132,11 @@ class Sample {
|
|
|
249097
249132
|
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createTranslationXYZ(1, 2, 0),
|
|
249098
249133
|
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createTranslationXYZ(1, 2, 3),
|
|
249099
249134
|
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(4, 1, -2), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createUniformScale(2.0)),
|
|
249100
|
-
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(4, 1, -2), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(1, 2, 3), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createRadians(10)))
|
|
249135
|
+
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(4, 1, -2), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(1, 2, 3), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createRadians(10))),
|
|
249101
249136
|
];
|
|
249102
249137
|
}
|
|
249103
|
-
/**
|
|
249138
|
+
/**
|
|
249139
|
+
* Return an array of Matrix3d with various skew and scale. This includes at least:
|
|
249104
249140
|
* * identity
|
|
249105
249141
|
* * 3 distinct diagonals.
|
|
249106
249142
|
* * The distinct diagonal base with smaller value added to other 6 spots in succession.
|
|
@@ -249119,9 +249155,10 @@ class Sample {
|
|
|
249119
249155
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRowValues(5, 2, 3, 2, 6, 1, -1, 2, 7),
|
|
249120
249156
|
];
|
|
249121
249157
|
}
|
|
249122
|
-
/**
|
|
249158
|
+
/**
|
|
249159
|
+
* Return an array of singular Matrix3d. This includes at least:
|
|
249123
249160
|
* * all zeros
|
|
249124
|
-
* * one
|
|
249161
|
+
* * one non-zero column
|
|
249125
249162
|
* * two independent columns, third is zero
|
|
249126
249163
|
* * two independent columns, third is sum of those
|
|
249127
249164
|
* * two independent columns, third is copy of one
|
|
@@ -249133,26 +249170,26 @@ class Sample {
|
|
|
249133
249170
|
const vector0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createZero();
|
|
249134
249171
|
return [
|
|
249135
249172
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createZero(),
|
|
249136
|
-
// one
|
|
249173
|
+
// one non-zero column
|
|
249137
249174
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vector0, vector0),
|
|
249138
249175
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vector0, vectorU, vector0),
|
|
249139
|
-
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vector0, vector0,
|
|
249140
|
-
// two independent
|
|
249176
|
+
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vector0, vector0, vectorU),
|
|
249177
|
+
// two independent non-zero columns with one zero column
|
|
249141
249178
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vectorV, vector0),
|
|
249142
249179
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vector0, vectorU, vectorV),
|
|
249143
|
-
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(
|
|
249144
|
-
//
|
|
249180
|
+
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vector0, vectorV),
|
|
249181
|
+
// two independent columns with one dependent column
|
|
249145
249182
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vectorV, vectorUPlusV),
|
|
249146
249183
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vectorUPlusV, vectorV),
|
|
249147
|
-
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorUPlusV,
|
|
249148
|
-
// two independent with duplicate
|
|
249149
|
-
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vectorV, vectorU),
|
|
249184
|
+
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorUPlusV, vectorU, vectorV),
|
|
249185
|
+
// two independent with columns with one duplicate column
|
|
249150
249186
|
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vectorU, vectorV),
|
|
249151
|
-
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(
|
|
249187
|
+
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorU, vectorV, vectorU),
|
|
249188
|
+
_geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createColumns(vectorV, vectorU, vectorU),
|
|
249152
249189
|
];
|
|
249153
249190
|
}
|
|
249154
249191
|
/**
|
|
249155
|
-
*
|
|
249192
|
+
* Return an array of rigid transforms. This includes (at least)
|
|
249156
249193
|
* * Identity
|
|
249157
249194
|
* * translation with identity matrix
|
|
249158
249195
|
* * rotation around origin and arbitrary vector
|
|
@@ -249167,16 +249204,15 @@ class Sample {
|
|
|
249167
249204
|
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createTranslationXYZ(distanceScale3 * 1, distanceScale3 * 2, distanceScale3 * 3),
|
|
249168
249205
|
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitY(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(10))),
|
|
249169
249206
|
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(distanceScale4 * 4, distanceScale4 * 1, -distanceScale4 * 2), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(1, 2, 3), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(10))),
|
|
249170
|
-
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(distanceScale4 * 4, distanceScale4 * 1, -distanceScale4 * 2), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(-2, 1, 4), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(35)))
|
|
249207
|
+
_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(distanceScale4 * 4, distanceScale4 * 1, -distanceScale4 * 2), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(-2, 1, 4), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(35))),
|
|
249171
249208
|
];
|
|
249172
249209
|
}
|
|
249173
|
-
/**
|
|
249174
|
-
* Return a single rigid transform with all terms nonzero.
|
|
249175
|
-
*/
|
|
249210
|
+
/** Return a single rigid transform with all terms nonzero. */
|
|
249176
249211
|
static createMessyRigidTransform(fixedPoint) {
|
|
249177
249212
|
return _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFixedPointAndMatrix(fixedPoint ? fixedPoint : _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 2, 3), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0.3, -0.2, 1.2), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(15.7)));
|
|
249178
249213
|
}
|
|
249179
|
-
/**
|
|
249214
|
+
/**
|
|
249215
|
+
* Return various rigid matrices:
|
|
249180
249216
|
* * identity
|
|
249181
249217
|
* * small rotations around x, y, z
|
|
249182
249218
|
* * small rotation around (1,2,3)
|
|
@@ -249206,9 +249242,7 @@ class Sample {
|
|
|
249206
249242
|
}
|
|
249207
249243
|
return result;
|
|
249208
249244
|
}
|
|
249209
|
-
/**
|
|
249210
|
-
* Create full Map4d for each `Sample.createInvertibleTransforms ()`
|
|
249211
|
-
*/
|
|
249245
|
+
/** Create full Map4d for each `Sample.createInvertibleTransforms()` */
|
|
249212
249246
|
static createMap4ds() {
|
|
249213
249247
|
const result = [];
|
|
249214
249248
|
let transform;
|
|
@@ -249226,7 +249260,12 @@ class Sample {
|
|
|
249226
249260
|
static createSimplePaths(withGaps = false) {
|
|
249227
249261
|
const point0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0);
|
|
249228
249262
|
const point1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(10, 0, 0);
|
|
249229
|
-
const p1 = [
|
|
249263
|
+
const p1 = [
|
|
249264
|
+
point1, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 10, 0),
|
|
249265
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(6, 10, 0),
|
|
249266
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(6, 10, 0),
|
|
249267
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 10, 0),
|
|
249268
|
+
];
|
|
249230
249269
|
const segment1 = _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(point0, point1);
|
|
249231
249270
|
const vectorU = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitX(3);
|
|
249232
249271
|
const vectorV = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitY(3);
|
|
@@ -249241,7 +249280,8 @@ class Sample {
|
|
|
249241
249280
|
simplePaths.push(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(10, 0, 0)), _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(10, 10, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(5, 0, 0))));
|
|
249242
249281
|
return simplePaths;
|
|
249243
249282
|
}
|
|
249244
|
-
/**
|
|
249283
|
+
/**
|
|
249284
|
+
* Assorted `Path` with lines and arcs.
|
|
249245
249285
|
* Specifically useful for offset tests.
|
|
249246
249286
|
*/
|
|
249247
249287
|
static createLineArcPaths() {
|
|
@@ -249270,12 +249310,16 @@ class Sample {
|
|
|
249270
249310
|
}
|
|
249271
249311
|
/** Assorted `PointString3d` objects. */
|
|
249272
249312
|
static createSimplePointStrings() {
|
|
249273
|
-
const p1 = [
|
|
249313
|
+
const p1 = [
|
|
249314
|
+
[_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 10, 0)],
|
|
249315
|
+
[_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(6, 10, 0)],
|
|
249316
|
+
[_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(6, 10, 0), [_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(6, 10, 0)]],
|
|
249317
|
+
];
|
|
249274
249318
|
const simplePaths = [
|
|
249275
249319
|
_curve_PointString3d__WEBPACK_IMPORTED_MODULE_22__.PointString3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 2, 0)),
|
|
249276
249320
|
_curve_PointString3d__WEBPACK_IMPORTED_MODULE_22__.PointString3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(10, 0, 0)),
|
|
249277
249321
|
_curve_PointString3d__WEBPACK_IMPORTED_MODULE_22__.PointString3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(10, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(10, 5, 0)),
|
|
249278
|
-
_curve_PointString3d__WEBPACK_IMPORTED_MODULE_22__.PointString3d.create(p1)
|
|
249322
|
+
_curve_PointString3d__WEBPACK_IMPORTED_MODULE_22__.PointString3d.create(p1),
|
|
249279
249323
|
];
|
|
249280
249324
|
return simplePaths;
|
|
249281
249325
|
}
|
|
@@ -249304,8 +249348,7 @@ class Sample {
|
|
|
249304
249348
|
* @param dx1 distance along x axis at y=dy
|
|
249305
249349
|
* @param numPhase number of phases of the jump.
|
|
249306
249350
|
* @param dyReturn y value for return to origin. If 0, the wave ends at y=0 after then final "down" with one extra horizontal dx0
|
|
249307
|
-
*
|
|
249308
|
-
*
|
|
249351
|
+
* If nonzero, rise to that y value, return to x=0, and return down to origin.
|
|
249309
249352
|
*/
|
|
249310
249353
|
static createSquareWave(origin, dx0, dy, dx1, numPhase, dyReturn) {
|
|
249311
249354
|
const result = [origin.clone()];
|
|
@@ -249366,7 +249409,7 @@ class Sample {
|
|
|
249366
249409
|
}
|
|
249367
249410
|
return points;
|
|
249368
249411
|
}
|
|
249369
|
-
/**
|
|
249412
|
+
/** Append sawtooth with x distances successively scaled by xFactor */
|
|
249370
249413
|
static appendVariableSawTooth(points, dxLow, riseX, riseY, dxHigh, numPhase, xFactor) {
|
|
249371
249414
|
let factor = 1.0;
|
|
249372
249415
|
for (let i = 0; i < numPhase; i++) {
|
|
@@ -249407,7 +249450,8 @@ class Sample {
|
|
|
249407
249450
|
data.push(data[0].clone());
|
|
249408
249451
|
return data;
|
|
249409
249452
|
}
|
|
249410
|
-
/**
|
|
249453
|
+
/**
|
|
249454
|
+
* Append to a linestring, taking steps along given vector directions
|
|
249411
249455
|
* If the linestring is empty, a 000 point is added.
|
|
249412
249456
|
* @param linestring LineString3d to receive points.
|
|
249413
249457
|
* @param numPhase number of phases of the sawtooth
|
|
@@ -249424,7 +249468,8 @@ class Sample {
|
|
|
249424
249468
|
}
|
|
249425
249469
|
}
|
|
249426
249470
|
}
|
|
249427
|
-
/**
|
|
249471
|
+
/**
|
|
249472
|
+
* Assorted regions with arc boundaries
|
|
249428
249473
|
* * full circle
|
|
249429
249474
|
* * with varying sweep:
|
|
249430
249475
|
* * partial arc with single chord closure
|
|
@@ -249451,7 +249496,8 @@ class Sample {
|
|
|
249451
249496
|
}
|
|
249452
249497
|
return result;
|
|
249453
249498
|
}
|
|
249454
|
-
/**
|
|
249499
|
+
/**
|
|
249500
|
+
* Assorted loops in xy plane:
|
|
249455
249501
|
* * unit square
|
|
249456
249502
|
* * rectangle
|
|
249457
249503
|
* * L shape
|
|
@@ -249491,10 +249537,14 @@ class Sample {
|
|
|
249491
249537
|
];
|
|
249492
249538
|
if (includeBCurves) {
|
|
249493
249539
|
const ey = 1.0;
|
|
249494
|
-
result.push(_curve_ParityRegion__WEBPACK_IMPORTED_MODULE_24__.ParityRegion.create(_curve_Loop__WEBPACK_IMPORTED_MODULE_23__.Loop.create(_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(point0, pointA), _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d.createUniformKnots([
|
|
249540
|
+
result.push(_curve_ParityRegion__WEBPACK_IMPORTED_MODULE_24__.ParityRegion.create(_curve_Loop__WEBPACK_IMPORTED_MODULE_23__.Loop.create(_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(point0, pointA), _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d.createUniformKnots([
|
|
249541
|
+
pointA,
|
|
249542
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(ax + 1, ey),
|
|
249495
249543
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(ax + 1, 2 * ey),
|
|
249496
249544
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(ax + 2, 3 * ey),
|
|
249497
|
-
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(ax + 1, 4 * ey),
|
|
249545
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(ax + 1, 4 * ey),
|
|
249546
|
+
pointB,
|
|
249547
|
+
], 3), _curve_Arc3d__WEBPACK_IMPORTED_MODULE_20__.Arc3d.createCircularStartMiddleEnd(pointB, pointC1, point0))));
|
|
249498
249548
|
}
|
|
249499
249549
|
return result;
|
|
249500
249550
|
}
|
|
@@ -249508,7 +249558,7 @@ class Sample {
|
|
|
249508
249558
|
const by = 2.0;
|
|
249509
249559
|
const result = [
|
|
249510
249560
|
_curve_UnionRegion__WEBPACK_IMPORTED_MODULE_25__.UnionRegion.create(_curve_Loop__WEBPACK_IMPORTED_MODULE_23__.Loop.create(_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.createRectangleXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), ax, ay)), _curve_Loop__WEBPACK_IMPORTED_MODULE_23__.Loop.create(_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.createRectangleXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 2 * ay, 0), bx, by))),
|
|
249511
|
-
_curve_UnionRegion__WEBPACK_IMPORTED_MODULE_25__.UnionRegion.create(_curve_Loop__WEBPACK_IMPORTED_MODULE_23__.Loop.create(_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.create(Sample.createRectangleXY(parityRange.low.x, parityRange.high.y + 0.5, parityRange.xLength(), parityRange.yLength()))), parityRegions[0])
|
|
249561
|
+
_curve_UnionRegion__WEBPACK_IMPORTED_MODULE_25__.UnionRegion.create(_curve_Loop__WEBPACK_IMPORTED_MODULE_23__.Loop.create(_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.create(Sample.createRectangleXY(parityRange.low.x, parityRange.high.y + 0.5, parityRange.xLength(), parityRange.yLength()))), parityRegions[0]),
|
|
249512
249562
|
];
|
|
249513
249563
|
return result;
|
|
249514
249564
|
}
|
|
@@ -249527,7 +249577,8 @@ class Sample {
|
|
|
249527
249577
|
];
|
|
249528
249578
|
return result;
|
|
249529
249579
|
}
|
|
249530
|
-
/**
|
|
249580
|
+
/**
|
|
249581
|
+
* Assorted smooth curve primitives:
|
|
249531
249582
|
* * line segments
|
|
249532
249583
|
* * arcs
|
|
249533
249584
|
*/
|
|
@@ -249542,7 +249593,7 @@ class Sample {
|
|
|
249542
249593
|
_curve_Arc3d__WEBPACK_IMPORTED_MODULE_20__.Arc3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(size, alpha * size, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(-alpha * beta * size, beta * size, 0), _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(-40, 270)),
|
|
249543
249594
|
];
|
|
249544
249595
|
}
|
|
249545
|
-
/**
|
|
249596
|
+
/** Assorted small polyface grids, possibly expanded by gridMultiplier */
|
|
249546
249597
|
static createSimpleIndexedPolyfaces(gridMultiplier) {
|
|
249547
249598
|
const meshes = [
|
|
249548
249599
|
Sample.createTriangularUnitGridPolyface(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitX(), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitY(), gridMultiplier * 3, 2 * gridMultiplier, false, false, false),
|
|
@@ -249773,7 +249824,7 @@ class Sample {
|
|
|
249773
249824
|
}
|
|
249774
249825
|
return _bspline_BSplineSurface__WEBPACK_IMPORTED_MODULE_28__.BSplineSurface3dH.create(xyzPoles, weights, numU, orderU, undefined, numV, orderV, undefined);
|
|
249775
249826
|
}
|
|
249776
|
-
/**
|
|
249827
|
+
/** Assorted linear sweeps */
|
|
249777
249828
|
static createSimpleLinearSweeps() {
|
|
249778
249829
|
const result = [];
|
|
249779
249830
|
const base = _curve_Loop__WEBPACK_IMPORTED_MODULE_23__.Loop.create(_curve_LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d.createRectangleXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(), 2, 3));
|
|
@@ -249792,7 +249843,7 @@ class Sample {
|
|
|
249792
249843
|
const xyPoints = [
|
|
249793
249844
|
_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d.create(0, 0),
|
|
249794
249845
|
_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d.create(1, 0),
|
|
249795
|
-
_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d.create(1, 1)
|
|
249846
|
+
_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d.create(1, 1),
|
|
249796
249847
|
];
|
|
249797
249848
|
result.push(_solid_LinearSweep__WEBPACK_IMPORTED_MODULE_30__.LinearSweep.createZSweep(xyPoints, 1, 3, false));
|
|
249798
249849
|
// this forces artificial closure point . . .
|
|
@@ -249836,7 +249887,7 @@ class Sample {
|
|
|
249836
249887
|
for (const axis of [
|
|
249837
249888
|
_geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.createXYZUVW(0, 0, 0, 0, 1, 0),
|
|
249838
249889
|
_geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.createXYZUVW(5, 0, 0, 0, 1, 0),
|
|
249839
|
-
_geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.createXYZUVW(-1, 0, 0, -1, 1, 0)
|
|
249890
|
+
_geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.createXYZUVW(-1, 0, 0, -1, 1, 0),
|
|
249840
249891
|
]) {
|
|
249841
249892
|
result.push(_solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_31__.RotationalSweep.create(base, axis, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(45.0), false));
|
|
249842
249893
|
result.push(_solid_RotationalSweep__WEBPACK_IMPORTED_MODULE_31__.RotationalSweep.create(base, axis, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(150.0), true));
|
|
@@ -249861,7 +249912,7 @@ class Sample {
|
|
|
249861
249912
|
/** Create true (non-spherical) ellipsoids. */
|
|
249862
249913
|
static createEllipsoids() {
|
|
249863
249914
|
return [
|
|
249864
|
-
_solid_Sphere__WEBPACK_IMPORTED_MODULE_32__.Sphere.createEllipsoid(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRowValues(4, 1, 1, 1, 4, 1, 0.5, 0.2, 5)), _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createFullLatitude(), true)
|
|
249915
|
+
_solid_Sphere__WEBPACK_IMPORTED_MODULE_32__.Sphere.createEllipsoid(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRowValues(4, 1, 1, 1, 4, 1, 0.5, 0.2, 5)), _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createFullLatitude(), true),
|
|
249865
249916
|
];
|
|
249866
249917
|
}
|
|
249867
249918
|
/** Create assorted cones. */
|
|
@@ -249919,8 +249970,7 @@ class Sample {
|
|
|
249919
249970
|
result.push(_solid_Box__WEBPACK_IMPORTED_MODULE_35__.Box.createDgnBox(cornerA, frameY.columnX(), frameY.columnY(), cornerA.plusScaled(frameY.columnZ(), h), aX, aY, bX, bY, capped));
|
|
249920
249971
|
return result;
|
|
249921
249972
|
}
|
|
249922
|
-
/**
|
|
249923
|
-
*/
|
|
249973
|
+
/** Create an array of points for a rectangle with corners (x0,y0,z) and (x1,y1,z) */
|
|
249924
249974
|
static createRectangle(x0, y0, x1, y1, z = 0.0, closed = false) {
|
|
249925
249975
|
const points = [
|
|
249926
249976
|
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x0, y0, z),
|
|
@@ -249932,8 +249982,7 @@ class Sample {
|
|
|
249932
249982
|
points.push(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x0, y0, z));
|
|
249933
249983
|
return points;
|
|
249934
249984
|
}
|
|
249935
|
-
/**
|
|
249936
|
-
*/
|
|
249985
|
+
/** Create an array of points for a rectangle with corners of a Range2d. */
|
|
249937
249986
|
static createRectangleInRange2d(range, z = 0.0, closed = false) {
|
|
249938
249987
|
const x0 = range.low.x;
|
|
249939
249988
|
const x1 = range.high.x;
|
|
@@ -250042,8 +250091,9 @@ class Sample {
|
|
|
250042
250091
|
}
|
|
250043
250092
|
return points;
|
|
250044
250093
|
}
|
|
250045
|
-
/**
|
|
250046
|
-
*
|
|
250094
|
+
/**
|
|
250095
|
+
* Primary shape is a "triangle" with lower edge pushed in so it becomes a mild nonconvex quad.
|
|
250096
|
+
* Fractal effects are gentle.
|
|
250047
250097
|
*/
|
|
250048
250098
|
static nonConvexQuadSimpleFractal(numRecursion, perpendicularFactor) {
|
|
250049
250099
|
const pattern = [
|
|
@@ -250060,7 +250110,7 @@ class Sample {
|
|
|
250060
250110
|
];
|
|
250061
250111
|
return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);
|
|
250062
250112
|
}
|
|
250063
|
-
/**
|
|
250113
|
+
/** Create a diamond with convex fractal */
|
|
250064
250114
|
static createFractalDiamondConvexPattern(numRecursion, perpendicularFactor) {
|
|
250065
250115
|
const pattern = [
|
|
250066
250116
|
_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d.create(),
|
|
@@ -250157,7 +250207,7 @@ class Sample {
|
|
|
250157
250207
|
];
|
|
250158
250208
|
return Sample.createRecursiveFractalPolygon(poles, pattern, numRecursion, perpendicularFactor);
|
|
250159
250209
|
}
|
|
250160
|
-
/**
|
|
250210
|
+
/** Append interpolated points from the array tail to the target. */
|
|
250161
250211
|
static appendSplits(points, target, numSplit, includeTarget) {
|
|
250162
250212
|
const pointA = points[points.length - 1];
|
|
250163
250213
|
for (let i = 0; i < numSplit; i++)
|
|
@@ -250201,7 +250251,8 @@ class Sample {
|
|
|
250201
250251
|
geometry.push(_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.createXYZXYZ(x0, y1, z0, x0, y1, z1));
|
|
250202
250252
|
return geometry;
|
|
250203
250253
|
}
|
|
250204
|
-
/**
|
|
250254
|
+
/**
|
|
250255
|
+
* Assorted transition spirals
|
|
250205
250256
|
* * (All combinations of bearing radius bearing radius length subsets.)
|
|
250206
250257
|
*/
|
|
250207
250258
|
static createSimpleTransitionSpirals() {
|
|
@@ -250222,10 +250273,11 @@ class Sample {
|
|
|
250222
250273
|
_curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_41__.DirectSpiral3d.createFromLengthAndRadius("ChineseCubic", r0, r1, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(0), undefined, arcLength, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 2, 0), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitZ(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(15)))),
|
|
250223
250274
|
_curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_41__.DirectSpiral3d.createFromLengthAndRadius("JapaneseCubic", r0, r1, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(0), undefined, arcLength, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 2, 0), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitZ(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(15)))),
|
|
250224
250275
|
_curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_41__.DirectSpiral3d.createFromLengthAndRadius("DirectHalfCosine", r0, r1, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(0), undefined, arcLength, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 2, 0), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundVector(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.unitZ(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(15)))),
|
|
250225
|
-
_curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_41__.DirectSpiral3d.createCzechCubic(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createIdentity(), arcLength, r1)
|
|
250276
|
+
_curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_41__.DirectSpiral3d.createCzechCubic(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createIdentity(), arcLength, r1),
|
|
250226
250277
|
];
|
|
250227
250278
|
}
|
|
250228
|
-
/**
|
|
250279
|
+
/**
|
|
250280
|
+
* Create a Bezier curve with significant twist effects
|
|
250229
250281
|
* * r and theta are circle in xy plane at steps in thetaStepper
|
|
250230
250282
|
* * z varies with sin(phi) at steps in phiStepper.
|
|
250231
250283
|
*/
|
|
@@ -250281,18 +250333,10 @@ class Sample {
|
|
|
250281
250333
|
result.push(_curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_44__.CurveChainWithDistanceIndex.createCapture(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(// arc spline with smooth joins
|
|
250282
250334
|
_curve_Arc3d__WEBPACK_IMPORTED_MODULE_20__.Arc3d.createXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(5, 0), 5, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(180, 0)), _curve_Arc3d__WEBPACK_IMPORTED_MODULE_20__.Arc3d.createXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(15, 0), 5, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(180, 360)), _curve_Arc3d__WEBPACK_IMPORTED_MODULE_20__.Arc3d.createXY(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(25, 0), 5, _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(180, 0)))));
|
|
250283
250335
|
result.push(_curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_44__.CurveChainWithDistanceIndex.createCapture(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(// 2-pt Interpolation Curve
|
|
250284
|
-
_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3d.createCapture(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3dOptions.create({
|
|
250285
|
-
fitPoints: [pointsA[0], pointsA[1]],
|
|
250286
|
-
})))));
|
|
250336
|
+
_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3d.createCapture(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3dOptions.create({ fitPoints: [pointsA[0], pointsA[1]] })))));
|
|
250287
250337
|
result.push(_curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_44__.CurveChainWithDistanceIndex.createCapture(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(// 3-pt Interpolation Curve
|
|
250288
|
-
_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3d.createCapture(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3dOptions.create({
|
|
250289
|
-
|
|
250290
|
-
})))));
|
|
250291
|
-
result.push(_curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_44__.CurveChainWithDistanceIndex.createCapture(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3d.createCapture(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3dOptions.create({
|
|
250292
|
-
fitPoints: pointsA,
|
|
250293
|
-
startTangent: _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, -1),
|
|
250294
|
-
endTangent: _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(-1, -1),
|
|
250295
|
-
})))));
|
|
250338
|
+
_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3d.createCapture(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3dOptions.create({ fitPoints: [pointsA[0], pointsA[1], pointsA[2]] })))));
|
|
250339
|
+
result.push(_curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_44__.CurveChainWithDistanceIndex.createCapture(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3d.createCapture(_bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_45__.InterpolationCurve3dOptions.create({ fitPoints: pointsA, startTangent: _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, -1), endTangent: _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(-1, -1) })))));
|
|
250296
250340
|
result.push(_curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_44__.CurveChainWithDistanceIndex.createCapture(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(_curve_spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_39__.IntegratedSpiral3d.createRadiusRadiusBearingBearing(_geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_40__.Segment1d.create(0, 100), _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(10, 75), _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_40__.Segment1d.create(0, 1), _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero(), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundAxisIndex(2, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(30))), "bloss"))));
|
|
250297
250341
|
result.push(_curve_CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_44__.CurveChainWithDistanceIndex.createCapture(_curve_Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(_curve_spiral_DirectSpiral3d__WEBPACK_IMPORTED_MODULE_41__.DirectSpiral3d.createDirectHalfCosine(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero(), _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_12__.Matrix3d.createRotationAroundAxisIndex(2, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(110))), 50, 350, _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_40__.Segment1d.create(0, 1)))));
|
|
250298
250342
|
return result;
|
|
@@ -250376,7 +250420,7 @@ class Sample {
|
|
|
250376
250420
|
const sweep2 = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(160.0, 380.0);
|
|
250377
250421
|
for (const arcs of [
|
|
250378
250422
|
Sample.createArcs(1.0), Sample.createArcs(0.5),
|
|
250379
|
-
Sample.createArcs(1.0, sweep1), Sample.createArcs(0.3, sweep2)
|
|
250423
|
+
Sample.createArcs(1.0, sweep1), Sample.createArcs(0.3, sweep2),
|
|
250380
250424
|
]) {
|
|
250381
250425
|
for (const arc of arcs)
|
|
250382
250426
|
result.push(arc);
|
|
@@ -250479,10 +250523,10 @@ class Sample {
|
|
|
250479
250523
|
return points;
|
|
250480
250524
|
}
|
|
250481
250525
|
/**
|
|
250482
|
-
* *
|
|
250483
|
-
* *
|
|
250484
|
-
* *
|
|
250485
|
-
* *
|
|
250526
|
+
* * Let ay = 4
|
|
250527
|
+
* * Base polygon has vertices (0,0), (ax,0), (2*ax,0), (2* ax,ay), (ax,ay), (0,ay), (0,0).
|
|
250528
|
+
* * Shift the x coordinates of vertices 1,4 by indicated amounts (0-based numbering)
|
|
250529
|
+
* * Shift the y coordinates for points 1,2,3,4 by indicated amounts (in 0-based numbering)
|
|
250486
250530
|
* * This is useful for testing non-y-monotonic face situations.
|
|
250487
250531
|
* * Return as points.
|
|
250488
250532
|
* @param dy1
|
|
@@ -250502,7 +250546,7 @@ class Sample {
|
|
|
250502
250546
|
return points;
|
|
250503
250547
|
}
|
|
250504
250548
|
/**
|
|
250505
|
-
*
|
|
250549
|
+
* Make line segments for each pair of adjacent points.
|
|
250506
250550
|
* @param points array of points
|
|
250507
250551
|
* @param forceClosure if true, inspect coordinates to determine if a closure edge is needed.
|
|
250508
250552
|
*/
|
|
@@ -250618,7 +250662,8 @@ class Sample {
|
|
|
250618
250662
|
this.appendGeometry(this.createBagOfCurves(), result);
|
|
250619
250663
|
return result;
|
|
250620
250664
|
}
|
|
250621
|
-
/**
|
|
250665
|
+
/**
|
|
250666
|
+
* Create points on a sine wave
|
|
250622
250667
|
* Point i is origin + (i * xStep, a *sin(theta0 + i * dTheta), b * sin(beta0 + i * dBeta))
|
|
250623
250668
|
* * Default b is zero, so it is a simple sine wave
|
|
250624
250669
|
* * If the dTheta and dBeta are equal, it is a sine wave in a tilted plane.
|
|
@@ -250627,8 +250672,9 @@ class Sample {
|
|
|
250627
250672
|
static createPointSineWave(origin, numInterval = 24, xStep = Math.PI / 12, a = 1, thetaSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(0, 360), b = 0, betaSweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(0, 180)) {
|
|
250628
250673
|
return this.createPointsByIndexFunctions(numInterval, SteppedIndexFunctionFactory.createLinear(xStep, origin ? origin.x : 0), SteppedIndexFunctionFactory.createCosine(a, thetaSweep, origin ? origin.y : 0), SteppedIndexFunctionFactory.createCosine(b, betaSweep, origin ? origin.z : 0));
|
|
250629
250674
|
}
|
|
250630
|
-
/**
|
|
250631
|
-
*
|
|
250675
|
+
/**
|
|
250676
|
+
* Create points with x,y,z independent functions of i and numInterval,
|
|
250677
|
+
* Point3d.create (fx(i,numInterval), fy(i,numInterval), fz(i, numInterval));
|
|
250632
250678
|
*/
|
|
250633
250679
|
static createPointsByIndexFunctions(numInterval, fx, fy, fz) {
|
|
250634
250680
|
const points = [];
|
|
@@ -250699,9 +250745,7 @@ class Sample {
|
|
|
250699
250745
|
builder.addGreedyTriangulationBetweenLineStrings(point0, point1);
|
|
250700
250746
|
return builder.claimPolyface();
|
|
250701
250747
|
}
|
|
250702
|
-
/**
|
|
250703
|
-
* create strokes on an arc at radius r0, then returning at radius r1.
|
|
250704
|
-
*/
|
|
250748
|
+
/** Create strokes on an arc at radius r0, then returning at radius r1. */
|
|
250705
250749
|
static createAnnulusPolyline(edgesPerQuadrant, center, r0, r1, theta0, theta1, addClosure) {
|
|
250706
250750
|
const point0 = [];
|
|
250707
250751
|
const point1 = [];
|
|
@@ -250771,7 +250815,12 @@ class Sample {
|
|
|
250771
250815
|
for (let yC = 0; yC + 1 <= ySweep; yC++) {
|
|
250772
250816
|
const yD = yC + 1;
|
|
250773
250817
|
if (acceptFunction(xA, yC))
|
|
250774
|
-
builder.addPolygon([
|
|
250818
|
+
builder.addPolygon([
|
|
250819
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(xA, yC, zA),
|
|
250820
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(xB, yC, zB),
|
|
250821
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(xB, yD, zB),
|
|
250822
|
+
_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(xA, yD, zA),
|
|
250823
|
+
]);
|
|
250775
250824
|
}
|
|
250776
250825
|
}
|
|
250777
250826
|
}
|
|
@@ -250829,7 +250878,7 @@ Sample.plane3dByOriginAndUnitNormal = [
|
|
|
250829
250878
|
_geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_13__.Plane3dByOriginAndUnitNormal.createYZPlane(),
|
|
250830
250879
|
_geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_13__.Plane3dByOriginAndUnitNormal.createZXPlane(),
|
|
250831
250880
|
Sample.createPlane(0, 0, 0, 3, 0, 1),
|
|
250832
|
-
Sample.createPlane(1, 2, 3, 2, 4, -1)
|
|
250881
|
+
Sample.createPlane(1, 2, 3, 2, 4, -1),
|
|
250833
250882
|
];
|
|
250834
250883
|
/** Assorted Ray3d, not all unit direction vectors. */
|
|
250835
250884
|
Sample.ray3d = [
|
|
@@ -250837,7 +250886,7 @@ Sample.ray3d = [
|
|
|
250837
250886
|
Sample.createRay(0, 0, 0, 0, 1, 0),
|
|
250838
250887
|
Sample.createRay(0, 0, 0, 0, 0, 1),
|
|
250839
250888
|
Sample.createRay(0, 0, 0, 1, 2, 0),
|
|
250840
|
-
Sample.createRay(1, 2, 3, 4, 2, -1)
|
|
250889
|
+
Sample.createRay(1, 2, 3, 4, 2, -1),
|
|
250841
250890
|
];
|
|
250842
250891
|
/** Assorted angles. All principal directions, some others included. */
|
|
250843
250892
|
Sample.angle = [
|
|
@@ -250846,7 +250895,7 @@ Sample.angle = [
|
|
|
250846
250895
|
_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(180),
|
|
250847
250896
|
_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(-90),
|
|
250848
250897
|
_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(30),
|
|
250849
|
-
_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(-105)
|
|
250898
|
+
_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.createDegrees(-105),
|
|
250850
250899
|
];
|
|
250851
250900
|
/** Assorted angle sweeps */
|
|
250852
250901
|
Sample.angleSweep = [
|
|
@@ -250855,35 +250904,35 @@ Sample.angleSweep = [
|
|
|
250855
250904
|
_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(-90, 0),
|
|
250856
250905
|
_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(0, -90),
|
|
250857
250906
|
_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(0, 30),
|
|
250858
|
-
_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(45, 110)
|
|
250907
|
+
_geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_0__.AngleSweep.createStartEndDegrees(45, 110),
|
|
250859
250908
|
];
|
|
250860
|
-
/**
|
|
250909
|
+
/** Assorted line segments */
|
|
250861
250910
|
Sample.lineSegment3d = [
|
|
250862
250911
|
_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 0, 0)),
|
|
250863
250912
|
_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 1, 0)),
|
|
250864
250913
|
_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 0), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(0, 0, 1)),
|
|
250865
|
-
_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 2, 3), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(-2, -3, 0.5))
|
|
250914
|
+
_curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_19__.LineSegment3d.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(1, 2, 3), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(-2, -3, 0.5)),
|
|
250866
250915
|
];
|
|
250867
|
-
/** Assorted Range1d:
|
|
250916
|
+
/** Assorted Range1d: single point, null, simple forward, simple reverse */
|
|
250868
250917
|
Sample.range1d = [
|
|
250869
250918
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createX(1),
|
|
250870
250919
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createNull(),
|
|
250871
250920
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createXX(1, 2),
|
|
250872
|
-
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createXX(2, 1)
|
|
250921
|
+
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createXX(2, 1),
|
|
250873
250922
|
];
|
|
250874
250923
|
/** Assorted range2d: single point, null, 2 point with various creation orders. */
|
|
250875
250924
|
Sample.range2d = [
|
|
250876
250925
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range2d.createXY(1, 2),
|
|
250877
250926
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range2d.createNull(),
|
|
250878
250927
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range2d.createXYXY(1, 2, 0, 3),
|
|
250879
|
-
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range2d.createXYXY(1, 2, 3, 4)
|
|
250928
|
+
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range2d.createXYXY(1, 2, 3, 4),
|
|
250880
250929
|
];
|
|
250881
250930
|
/** Assorted range2d: single point, null, 2 point with various creation orders. */
|
|
250882
250931
|
Sample.range3d = [
|
|
250883
250932
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createXYZ(1, 2, 3),
|
|
250884
250933
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createNull(),
|
|
250885
250934
|
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createXYZXYZ(1, 2, 0, 3, 4, 7),
|
|
250886
|
-
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createXYZXYZ(1, 2, 3, -2, -4, -1)
|
|
250935
|
+
_geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createXYZXYZ(1, 2, 3, -2, -4, -1),
|
|
250887
250936
|
];
|
|
250888
250937
|
|
|
250889
250938
|
|
|
@@ -281034,7 +281083,7 @@ class TestContext {
|
|
|
281034
281083
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
281035
281084
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
281036
281085
|
await core_frontend_1.NoRenderApp.startup({
|
|
281037
|
-
applicationVersion: "4.0.0-dev.
|
|
281086
|
+
applicationVersion: "4.0.0-dev.56",
|
|
281038
281087
|
applicationId: this.settings.gprid,
|
|
281039
281088
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
281040
281089
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -300607,7 +300656,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
|
|
|
300607
300656
|
/***/ ((module) => {
|
|
300608
300657
|
|
|
300609
300658
|
"use strict";
|
|
300610
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.0.0-dev.
|
|
300659
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.0.0-dev.56","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","build:ci":"npm run -s build && 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/tree/master/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.0.0-dev.56","@itwin/core-bentley":"workspace:^4.0.0-dev.56","@itwin/core-common":"workspace:^4.0.0-dev.56","@itwin/core-geometry":"workspace:^4.0.0-dev.56","@itwin/core-orbitgt":"workspace:^4.0.0-dev.56","@itwin/core-quantity":"workspace:^4.0.0-dev.56"},"//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.32","@itwin/webgl-compatibility":"workspace:*","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/deep-assign":"^0.1.0","@types/mocha":"^8.2.2","@types/node":"^18.11.5","@types/qs":"^6.5.0","@types/semver":"7.3.10","@types/superagent":"^4.1.14","@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":"^7.11.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","deep-assign":"^2.0.0","fuse.js":"^3.3.0","qs":"^6.5.3","semver":"^7.3.5","superagent":"^7.1.5","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"}}]}}');
|
|
300611
300660
|
|
|
300612
300661
|
/***/ }),
|
|
300613
300662
|
|