@itwin/core-geometry 5.3.0-dev.17 → 5.3.0-dev.18

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.d.ts +10 -13
  3. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -1
  4. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js +23 -22
  5. package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  6. package/lib/cjs/curve/spiral/ClothoidSeries.d.ts +5 -5
  7. package/lib/cjs/curve/spiral/ClothoidSeries.d.ts.map +1 -1
  8. package/lib/cjs/curve/spiral/ClothoidSeries.js +28 -16
  9. package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
  10. package/lib/cjs/curve/spiral/CubicEvaluator.d.ts +7 -6
  11. package/lib/cjs/curve/spiral/CubicEvaluator.d.ts.map +1 -1
  12. package/lib/cjs/curve/spiral/CubicEvaluator.js +29 -14
  13. package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
  14. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.d.ts +30 -40
  15. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -1
  16. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js +43 -49
  17. package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  18. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts +2 -2
  19. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -1
  20. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js +17 -7
  21. package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  22. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +103 -95
  23. package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  24. package/lib/cjs/curve/spiral/DirectSpiral3d.js +132 -106
  25. package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
  26. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +70 -52
  27. package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  28. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +97 -65
  29. package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  30. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +7 -11
  31. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -1
  32. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +10 -12
  33. package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  34. package/lib/cjs/curve/spiral/NormalizedTransition.d.ts +29 -24
  35. package/lib/cjs/curve/spiral/NormalizedTransition.d.ts.map +1 -1
  36. package/lib/cjs/curve/spiral/NormalizedTransition.js +53 -35
  37. package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
  38. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.d.ts +12 -17
  39. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -1
  40. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js +20 -23
  41. package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  42. package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts +25 -23
  43. package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
  44. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js +34 -29
  45. package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  46. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts +43 -33
  47. package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  48. package/lib/cjs/curve/spiral/TransitionSpiral3d.js +56 -38
  49. package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
  50. package/lib/cjs/curve/spiral/XYCurveEvaluator.d.ts +27 -21
  51. package/lib/cjs/curve/spiral/XYCurveEvaluator.d.ts.map +1 -1
  52. package/lib/cjs/curve/spiral/XYCurveEvaluator.js +23 -18
  53. package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
  54. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts +10 -13
  55. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -1
  56. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +23 -22
  57. package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
  58. package/lib/esm/curve/spiral/ClothoidSeries.d.ts +5 -5
  59. package/lib/esm/curve/spiral/ClothoidSeries.d.ts.map +1 -1
  60. package/lib/esm/curve/spiral/ClothoidSeries.js +28 -16
  61. package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
  62. package/lib/esm/curve/spiral/CubicEvaluator.d.ts +7 -6
  63. package/lib/esm/curve/spiral/CubicEvaluator.d.ts.map +1 -1
  64. package/lib/esm/curve/spiral/CubicEvaluator.js +29 -14
  65. package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
  66. package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts +30 -40
  67. package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -1
  68. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +43 -49
  69. package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
  70. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts +2 -2
  71. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -1
  72. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +17 -7
  73. package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
  74. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +103 -95
  75. package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
  76. package/lib/esm/curve/spiral/DirectSpiral3d.js +132 -106
  77. package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
  78. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +70 -52
  79. package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
  80. package/lib/esm/curve/spiral/IntegratedSpiral3d.js +97 -65
  81. package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
  82. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +7 -11
  83. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -1
  84. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +10 -12
  85. package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
  86. package/lib/esm/curve/spiral/NormalizedTransition.d.ts +29 -24
  87. package/lib/esm/curve/spiral/NormalizedTransition.d.ts.map +1 -1
  88. package/lib/esm/curve/spiral/NormalizedTransition.js +53 -35
  89. package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
  90. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts +12 -17
  91. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -1
  92. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +20 -23
  93. package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
  94. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts +25 -23
  95. package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -1
  96. package/lib/esm/curve/spiral/TransitionConditionalProperties.js +34 -29
  97. package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
  98. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +43 -33
  99. package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -1
  100. package/lib/esm/curve/spiral/TransitionSpiral3d.js +56 -38
  101. package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
  102. package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts +27 -21
  103. package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts.map +1 -1
  104. package/lib/esm/curve/spiral/XYCurveEvaluator.js +23 -18
  105. package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
  106. package/package.json +3 -3
@@ -1,53 +1,55 @@
1
1
  import { Angle } from "../../geometry3d/Angle";
2
- /** A true transition spiral is a curve defined by its curvature, with the curvature function symmetric about midpoint.
2
+ /**
3
+ * A true transition spiral is a curve defined by its curvature, with the curvature function symmetric about midpoint.
3
4
  * * The symmetry condition creates a relationship among the following 4 quantities:
4
5
  * ** curvature0 = curvature (i.e. 1/radius) at start
5
6
  * ** curvature1 = curvature (i.e. 1/radius) at end
6
7
  * ** sweepRadians = signed turning angle from start to end
7
8
  * ** arcLength = length of curve
8
- * * The relationship is the equation
9
+ * * The relationship is the equation:
9
10
  * ** `sweepRadians = arcLength * average Curvature = arcLength * 0.5 * (curvature0 + curvature1)`
10
- * * That is, regardless of any curvature properties other than symmetry, specifying any 3 of the quantities fully determines the remaining one.
11
+ * * That is, regardless of any curvature properties other than symmetry, specifying any 3 of the quantities fully
12
+ * determines the remaining one.
11
13
  * @public
12
14
  */
13
15
  export declare class TransitionConditionalProperties {
14
- /** radius (or 0 at start) */
16
+ /** Radius (or 0 at start). */
15
17
  radius0: number | undefined;
16
- /** radius (or 0) at end */
18
+ /** Radius (or 0) at end. */
17
19
  radius1: number | undefined;
18
- /** bearing at start, measured from x towards y */
20
+ /** Bearing at start, measured from x towards y. */
19
21
  bearing0: Angle | undefined;
20
- /** bearing at end, measured from x towards y */
22
+ /** Bearing at end, measured from x towards y. */
21
23
  bearing1: Angle | undefined;
22
- /** curve length */
24
+ /** Curve length. */
23
25
  curveLength: number | undefined;
24
26
  /**
25
- * capture numeric or undefined values
26
- * @param radius0 start radius or undefined
27
- * @param radius1 end radius or undefined
28
- * @param bearing0 start bearing or undefined
29
- * @param bearing1 end bearing or undefined
30
- * @param arcLength arc length or undefined
27
+ * Capture numeric or undefined values.
28
+ * @param radius0 start radius or undefined.
29
+ * @param radius1 end radius or undefined.
30
+ * @param bearing0 start bearing or undefined.
31
+ * @param bearing1 end bearing or undefined.
32
+ * @param arcLength arc length or undefined.
31
33
  */
32
34
  constructor(radius0: number | undefined, radius1: number | undefined, bearing0: Angle | undefined, bearing1: Angle | undefined, arcLength: number | undefined);
33
- /** return the number of defined values among the 5 properties. */
35
+ /** Return the number of defined values among the 5 properties. */
34
36
  numDefinedProperties(): number;
35
- /** clone with all properties (i.e. preserve undefined states) */
37
+ /** Clone with all 5 properties (i.e., preserve undefined states). */
36
38
  clone(): TransitionConditionalProperties;
37
- /** Return true if all components are defined and agree equationally. */
39
+ /** Return true if all 5 properties are defined and agree equationally. */
38
40
  getIsValidCompleteSet(): boolean;
39
- /** Examine which properties are defined and compute the (single) undefined.
40
- * @returns Return true if the input state had precisely one undefined member.
41
+ /**
42
+ * Examine which properties are defined and compute the (single) undefined.
43
+ * @returns true if the input state had precisely one undefined member.
41
44
  */
42
45
  tryResolveAnySingleUnknown(): boolean;
43
46
  private almostEqualCoordinate;
44
47
  private almostEqualBearing;
45
- /**
46
- * Test if this and other have matching numeric and undefined members.
47
- */
48
+ /** Test if `this` and `other` have matching numeric and undefined members. */
48
49
  isAlmostEqual(other?: TransitionConditionalProperties): boolean;
49
- /** Apply a NONZERO scale factor to all distances. */
50
+ /** Apply a NONZERO scale factor to all distances. If `a` is zero, do nothing. */
50
51
  applyScaleFactor(a: number): void;
52
+ /** Test if `a` and `b` have matching numeric and undefined members. */
51
53
  static areAlmostEqual(a: TransitionConditionalProperties | undefined, b: TransitionConditionalProperties | undefined): boolean;
52
54
  }
53
55
  //# sourceMappingURL=TransitionConditionalProperties.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransitionConditionalProperties.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/TransitionConditionalProperties.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C;;;;;;;;;;GAUG;AACH,qBAAa,+BAA+B;IAC1C,6BAA6B;IACtB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,2BAA2B;IACpB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kDAAkD;IAC3C,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,gDAAgD;IACzC,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,mBAAmB;IACZ,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;;;OAOG;gBAED,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS;IAO/B,kEAAkE;IAC3D,oBAAoB;IAO3B,iEAAiE;IAC1D,KAAK,IAAI,+BAA+B;IAQ/C,wEAAwE;IACjE,qBAAqB;IAS5B;;OAEG;IACI,0BAA0B,IAAI,OAAO;IAkC5C,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IAEI,aAAa,CAAC,KAAK,CAAC,EAAE,+BAA+B;IAe5D,qDAAqD;IAC9C,gBAAgB,CAAC,CAAC,EAAE,MAAM;WAQnB,cAAc,CAAC,CAAC,EAAE,+BAA+B,GAAG,SAAS,EAAE,CAAC,EAAE,+BAA+B,GAAG,SAAS,GAAG,OAAO;CAKtI"}
1
+ {"version":3,"file":"TransitionConditionalProperties.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/TransitionConditionalProperties.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C;;;;;;;;;;;;GAYG;AACH,qBAAa,+BAA+B;IAC1C,8BAA8B;IACvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,4BAA4B;IACrB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mDAAmD;IAC5C,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,iDAAiD;IAC1C,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,oBAAoB;IACb,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;;;OAOG;gBAED,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,QAAQ,EAAE,KAAK,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS;IAQ/B,kEAAkE;IAC3D,oBAAoB;IAO3B,qEAAqE;IAC9D,KAAK,IAAI,+BAA+B;IAS/C,0EAA0E;IACnE,qBAAqB,IAAI,OAAO;IAUvC;;;OAGG;IACI,0BAA0B,IAAI,OAAO;IAsC5C,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,kBAAkB;IAO1B,8EAA8E;IACvE,aAAa,CAAC,KAAK,CAAC,EAAE,+BAA+B,GAAG,OAAO;IAetE,iFAAiF;IAC1E,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAUxC,uEAAuE;WACzD,cAAc,CAC1B,CAAC,EAAE,+BAA+B,GAAG,SAAS,EAAE,CAAC,EAAE,+BAA+B,GAAG,SAAS,GAC7F,OAAO;CAKX"}
@@ -8,36 +8,37 @@
8
8
  import { Geometry } from "../../Geometry";
9
9
  import { Angle } from "../../geometry3d/Angle";
10
10
  import { TransitionSpiral3d } from "./TransitionSpiral3d";
11
- // import {} from "./";
12
- /** A true transition spiral is a curve defined by its curvature, with the curvature function symmetric about midpoint.
11
+ /**
12
+ * A true transition spiral is a curve defined by its curvature, with the curvature function symmetric about midpoint.
13
13
  * * The symmetry condition creates a relationship among the following 4 quantities:
14
14
  * ** curvature0 = curvature (i.e. 1/radius) at start
15
15
  * ** curvature1 = curvature (i.e. 1/radius) at end
16
16
  * ** sweepRadians = signed turning angle from start to end
17
17
  * ** arcLength = length of curve
18
- * * The relationship is the equation
18
+ * * The relationship is the equation:
19
19
  * ** `sweepRadians = arcLength * average Curvature = arcLength * 0.5 * (curvature0 + curvature1)`
20
- * * That is, regardless of any curvature properties other than symmetry, specifying any 3 of the quantities fully determines the remaining one.
20
+ * * That is, regardless of any curvature properties other than symmetry, specifying any 3 of the quantities fully
21
+ * determines the remaining one.
21
22
  * @public
22
23
  */
23
24
  export class TransitionConditionalProperties {
24
- /** radius (or 0 at start) */
25
+ /** Radius (or 0 at start). */
25
26
  radius0;
26
- /** radius (or 0) at end */
27
+ /** Radius (or 0) at end. */
27
28
  radius1;
28
- /** bearing at start, measured from x towards y */
29
+ /** Bearing at start, measured from x towards y. */
29
30
  bearing0;
30
- /** bearing at end, measured from x towards y */
31
+ /** Bearing at end, measured from x towards y. */
31
32
  bearing1;
32
- /** curve length */
33
+ /** Curve length. */
33
34
  curveLength;
34
35
  /**
35
- * capture numeric or undefined values
36
- * @param radius0 start radius or undefined
37
- * @param radius1 end radius or undefined
38
- * @param bearing0 start bearing or undefined
39
- * @param bearing1 end bearing or undefined
40
- * @param arcLength arc length or undefined
36
+ * Capture numeric or undefined values.
37
+ * @param radius0 start radius or undefined.
38
+ * @param radius1 end radius or undefined.
39
+ * @param bearing0 start bearing or undefined.
40
+ * @param bearing1 end bearing or undefined.
41
+ * @param arcLength arc length or undefined.
41
42
  */
42
43
  constructor(radius0, radius1, bearing0, bearing1, arcLength) {
43
44
  this.radius0 = radius0;
@@ -46,7 +47,7 @@ export class TransitionConditionalProperties {
46
47
  this.bearing1 = bearing1;
47
48
  this.curveLength = arcLength;
48
49
  }
49
- /** return the number of defined values among the 5 properties. */
50
+ /** Return the number of defined values among the 5 properties. */
50
51
  numDefinedProperties() {
51
52
  return Geometry.defined01(this.radius0)
52
53
  + Geometry.defined01(this.radius1)
@@ -54,21 +55,22 @@ export class TransitionConditionalProperties {
54
55
  + Geometry.defined01(this.bearing1)
55
56
  + Geometry.defined01(this.curveLength);
56
57
  }
57
- /** clone with all properties (i.e. preserve undefined states) */
58
+ /** Clone with all 5 properties (i.e., preserve undefined states). */
58
59
  clone() {
59
60
  return new TransitionConditionalProperties(this.radius0, this.radius1, this.bearing0 === undefined ? undefined : this.bearing0.clone(), this.bearing1 === undefined ? undefined : this.bearing1.clone(), this.curveLength);
60
61
  }
61
- /** Return true if all components are defined and agree equationally. */
62
+ /** Return true if all 5 properties are defined and agree equationally. */
62
63
  getIsValidCompleteSet() {
63
64
  if (this.curveLength !== undefined && this.bearing0 !== undefined && this.bearing1 !== undefined
64
65
  && this.radius0 !== undefined && this.radius1 !== undefined) {
65
- const length1 = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(this.radius0, this.radius1, this.bearing1.radians - this.bearing0.radians);
66
- return Geometry.isSameCoordinate(this.curveLength, length1);
66
+ const arcLength = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(this.radius0, this.radius1, this.bearing1.radians - this.bearing0.radians);
67
+ return Geometry.isSameCoordinate(this.curveLength, arcLength);
67
68
  }
68
69
  return false;
69
70
  }
70
- /** Examine which properties are defined and compute the (single) undefined.
71
- * @returns Return true if the input state had precisely one undefined member.
71
+ /**
72
+ * Examine which properties are defined and compute the (single) undefined.
73
+ * @returns true if the input state had precisely one undefined member.
72
74
  */
73
75
  tryResolveAnySingleUnknown() {
74
76
  if (this.getIsValidCompleteSet())
@@ -89,15 +91,17 @@ export class TransitionConditionalProperties {
89
91
  }
90
92
  return false;
91
93
  }
92
- // at least one bearing is undefined ...
94
+ // at least one bearing is undefined
93
95
  if (this.curveLength === undefined || this.radius0 === undefined || this.radius1 === undefined)
94
96
  return false;
95
97
  if (this.bearing0) { // bearing 1 is undefined
96
- this.bearing1 = Angle.createRadians(this.bearing0.radians + TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength));
98
+ this.bearing1 = Angle.createRadians(this.bearing0.radians +
99
+ TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength));
97
100
  return true;
98
101
  }
99
102
  if (this.bearing1) { // bearing 0 is undefined
100
- this.bearing0 = Angle.createRadians(this.bearing1.radians - TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength));
103
+ this.bearing0 = Angle.createRadians(this.bearing1.radians -
104
+ TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength));
101
105
  return true;
102
106
  }
103
107
  return false;
@@ -116,9 +120,7 @@ export class TransitionConditionalProperties {
116
120
  return a.isAlmostEqualNoPeriodShift(b);
117
121
  return false;
118
122
  }
119
- /**
120
- * Test if this and other have matching numeric and undefined members.
121
- */
123
+ /** Test if `this` and `other` have matching numeric and undefined members. */
122
124
  isAlmostEqual(other) {
123
125
  if (!other)
124
126
  return false;
@@ -134,8 +136,10 @@ export class TransitionConditionalProperties {
134
136
  return false;
135
137
  return true;
136
138
  }
137
- /** Apply a NONZERO scale factor to all distances. */
139
+ /** Apply a NONZERO scale factor to all distances. If `a` is zero, do nothing. */
138
140
  applyScaleFactor(a) {
141
+ if (a === 0)
142
+ return;
139
143
  if (this.radius0 !== undefined)
140
144
  this.radius0 *= a;
141
145
  if (this.radius1 !== undefined)
@@ -143,6 +147,7 @@ export class TransitionConditionalProperties {
143
147
  if (this.curveLength !== undefined)
144
148
  this.curveLength *= a;
145
149
  }
150
+ /** Test if `a` and `b` have matching numeric and undefined members. */
146
151
  static areAlmostEqual(a, b) {
147
152
  if (a === undefined)
148
153
  return b === undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"TransitionConditionalProperties.js","sourceRoot":"","sources":["../../../../src/curve/spiral/TransitionConditionalProperties.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\nimport { Geometry } from \"../../Geometry\";\nimport { Angle } from \"../../geometry3d/Angle\";\nimport { TransitionSpiral3d } from \"./TransitionSpiral3d\";\n// import {} from \"./\";\n/** A true transition spiral is a curve defined by its curvature, with the curvature function symmetric about midpoint.\n * * The symmetry condition creates a relationship among the following 4 quantities:\n * ** curvature0 = curvature (i.e. 1/radius) at start\n * ** curvature1 = curvature (i.e. 1/radius) at end\n * ** sweepRadians = signed turning angle from start to end\n * ** arcLength = length of curve\n * * The relationship is the equation\n * ** `sweepRadians = arcLength * average Curvature = arcLength * 0.5 * (curvature0 + curvature1)`\n * * That is, regardless of any curvature properties other than symmetry, specifying any 3 of the quantities fully determines the remaining one.\n * @public\n */\nexport class TransitionConditionalProperties {\n /** radius (or 0 at start) */\n public radius0: number | undefined;\n /** radius (or 0) at end */\n public radius1: number | undefined;\n /** bearing at start, measured from x towards y */\n public bearing0: Angle | undefined;\n /** bearing at end, measured from x towards y */\n public bearing1: Angle | undefined;\n /** curve length */\n public curveLength: number | undefined;\n /**\n * capture numeric or undefined values\n * @param radius0 start radius or undefined\n * @param radius1 end radius or undefined\n * @param bearing0 start bearing or undefined\n * @param bearing1 end bearing or undefined\n * @param arcLength arc length or undefined\n */\n public constructor(\n radius0: number | undefined,\n radius1: number | undefined,\n bearing0: Angle | undefined,\n bearing1: Angle | undefined,\n arcLength: number | undefined) {\n this.radius0 = radius0;\n this.radius1 = radius1;\n this.bearing0 = bearing0;\n this.bearing1 = bearing1;\n this.curveLength = arcLength;\n }\n /** return the number of defined values among the 5 properties. */\n public numDefinedProperties() {\n return Geometry.defined01(this.radius0)\n + Geometry.defined01(this.radius1)\n + Geometry.defined01(this.bearing0)\n + Geometry.defined01(this.bearing1)\n + Geometry.defined01(this.curveLength);\n }\n /** clone with all properties (i.e. preserve undefined states) */\n public clone(): TransitionConditionalProperties {\n return new TransitionConditionalProperties(\n this.radius0,\n this.radius1,\n this.bearing0 === undefined ? undefined : this.bearing0.clone(),\n this.bearing1 === undefined ? undefined : this.bearing1.clone(),\n this.curveLength);\n }\n /** Return true if all components are defined and agree equationally. */\n public getIsValidCompleteSet() {\n if (this.curveLength !== undefined && this.bearing0 !== undefined && this.bearing1 !== undefined\n && this.radius0 !== undefined && this.radius1 !== undefined) {\n const length1 = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(this.radius0, this.radius1,\n this.bearing1.radians - this.bearing0.radians);\n return Geometry.isSameCoordinate(this.curveLength, length1);\n }\n return false;\n }\n /** Examine which properties are defined and compute the (single) undefined.\n * @returns Return true if the input state had precisely one undefined member.\n */\n public tryResolveAnySingleUnknown(): boolean {\n if (this.getIsValidCompleteSet())\n return true;\n if (this.bearing0 && this.bearing1) {\n const sweepRadians = this.bearing1.radians - this.bearing0.radians;\n if (this.curveLength === undefined && this.radius0 !== undefined && this.radius1 !== undefined) {\n this.curveLength = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(this.radius0, this.radius1, sweepRadians);\n return true;\n }\n if (this.curveLength !== undefined && this.radius0 === undefined && this.radius1 !== undefined) {\n this.radius0 = TransitionSpiral3d.radius1LengthSweepRadiansToRadius0(this.radius1, this.curveLength, sweepRadians);\n return true;\n }\n if (this.curveLength !== undefined && this.radius0 !== undefined && this.radius1 === undefined) {\n this.radius1 = TransitionSpiral3d.radius0LengthSweepRadiansToRadius1(this.radius0, this.curveLength, sweepRadians);\n return true;\n }\n return false;\n }\n // at least one bearing is undefined ...\n if (this.curveLength === undefined || this.radius0 === undefined || this.radius1 === undefined)\n return false;\n\n if (this.bearing0) { // bearing 1 is undefined\n this.bearing1 = Angle.createRadians(this.bearing0.radians + TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength));\n return true;\n }\n\n if (this.bearing1) { // bearing 0 is undefined\n this.bearing0 = Angle.createRadians(this.bearing1.radians - TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength));\n return true;\n }\n return false;\n }\n private almostEqualCoordinate(a: number | undefined, b: number | undefined): boolean {\n if (a === undefined && b === undefined)\n return true;\n if (a !== undefined && b !== undefined)\n return Geometry.isSameCoordinate(a, b);\n return false;\n }\n private almostEqualBearing(a: Angle | undefined, b: Angle | undefined): boolean {\n if (a === undefined && b === undefined)\n return true;\n if (a !== undefined && b !== undefined)\n return a.isAlmostEqualNoPeriodShift(b);\n return false;\n }\n\n /**\n * Test if this and other have matching numeric and undefined members.\n */\n\n public isAlmostEqual(other?: TransitionConditionalProperties) {\n if (!other)\n return false;\n if (!this.almostEqualCoordinate(this.radius0, other.radius0))\n return false;\n if (!this.almostEqualCoordinate(this.radius1, other.radius1))\n return false;\n if (!this.almostEqualBearing(this.bearing0, other.bearing0))\n return false;\n if (!this.almostEqualBearing(this.bearing1, other.bearing1))\n return false;\n if (!this.almostEqualCoordinate(this.curveLength, other.curveLength))\n return false;\n return true;\n }\n /** Apply a NONZERO scale factor to all distances. */\n public applyScaleFactor(a: number) {\n if (this.radius0 !== undefined)\n this.radius0 *= a;\n if (this.radius1 !== undefined)\n this.radius1 *= a;\n if (this.curveLength !== undefined)\n this.curveLength *= a;\n }\n public static areAlmostEqual(a: TransitionConditionalProperties | undefined, b: TransitionConditionalProperties | undefined): boolean {\n if (a === undefined)\n return b === undefined;\n return a.isAlmostEqual(b);\n }\n}\n"]}
1
+ {"version":3,"file":"TransitionConditionalProperties.js","sourceRoot":"","sources":["../../../../src/curve/spiral/TransitionConditionalProperties.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Curve\n */\nimport { Geometry } from \"../../Geometry\";\nimport { Angle } from \"../../geometry3d/Angle\";\nimport { TransitionSpiral3d } from \"./TransitionSpiral3d\";\n\n/**\n * A true transition spiral is a curve defined by its curvature, with the curvature function symmetric about midpoint.\n * * The symmetry condition creates a relationship among the following 4 quantities:\n * ** curvature0 = curvature (i.e. 1/radius) at start\n * ** curvature1 = curvature (i.e. 1/radius) at end\n * ** sweepRadians = signed turning angle from start to end\n * ** arcLength = length of curve\n * * The relationship is the equation:\n * ** `sweepRadians = arcLength * average Curvature = arcLength * 0.5 * (curvature0 + curvature1)`\n * * That is, regardless of any curvature properties other than symmetry, specifying any 3 of the quantities fully\n * determines the remaining one.\n * @public\n */\nexport class TransitionConditionalProperties {\n /** Radius (or 0 at start). */\n public radius0: number | undefined;\n /** Radius (or 0) at end. */\n public radius1: number | undefined;\n /** Bearing at start, measured from x towards y. */\n public bearing0: Angle | undefined;\n /** Bearing at end, measured from x towards y. */\n public bearing1: Angle | undefined;\n /** Curve length. */\n public curveLength: number | undefined;\n /**\n * Capture numeric or undefined values.\n * @param radius0 start radius or undefined.\n * @param radius1 end radius or undefined.\n * @param bearing0 start bearing or undefined.\n * @param bearing1 end bearing or undefined.\n * @param arcLength arc length or undefined.\n */\n public constructor(\n radius0: number | undefined,\n radius1: number | undefined,\n bearing0: Angle | undefined,\n bearing1: Angle | undefined,\n arcLength: number | undefined,\n ) {\n this.radius0 = radius0;\n this.radius1 = radius1;\n this.bearing0 = bearing0;\n this.bearing1 = bearing1;\n this.curveLength = arcLength;\n }\n /** Return the number of defined values among the 5 properties. */\n public numDefinedProperties() {\n return Geometry.defined01(this.radius0)\n + Geometry.defined01(this.radius1)\n + Geometry.defined01(this.bearing0)\n + Geometry.defined01(this.bearing1)\n + Geometry.defined01(this.curveLength);\n }\n /** Clone with all 5 properties (i.e., preserve undefined states). */\n public clone(): TransitionConditionalProperties {\n return new TransitionConditionalProperties(\n this.radius0,\n this.radius1,\n this.bearing0 === undefined ? undefined : this.bearing0.clone(),\n this.bearing1 === undefined ? undefined : this.bearing1.clone(),\n this.curveLength,\n );\n }\n /** Return true if all 5 properties are defined and agree equationally. */\n public getIsValidCompleteSet(): boolean {\n if (this.curveLength !== undefined && this.bearing0 !== undefined && this.bearing1 !== undefined\n && this.radius0 !== undefined && this.radius1 !== undefined) {\n const arcLength = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(\n this.radius0, this.radius1, this.bearing1.radians - this.bearing0.radians,\n );\n return Geometry.isSameCoordinate(this.curveLength, arcLength);\n }\n return false;\n }\n /**\n * Examine which properties are defined and compute the (single) undefined.\n * @returns true if the input state had precisely one undefined member.\n */\n public tryResolveAnySingleUnknown(): boolean {\n if (this.getIsValidCompleteSet())\n return true;\n if (this.bearing0 && this.bearing1) {\n const sweepRadians = this.bearing1.radians - this.bearing0.radians;\n if (this.curveLength === undefined && this.radius0 !== undefined && this.radius1 !== undefined) {\n this.curveLength = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(this.radius0, this.radius1, sweepRadians);\n return true;\n }\n if (this.curveLength !== undefined && this.radius0 === undefined && this.radius1 !== undefined) {\n this.radius0 = TransitionSpiral3d.radius1LengthSweepRadiansToRadius0(this.radius1, this.curveLength, sweepRadians);\n return true;\n }\n if (this.curveLength !== undefined && this.radius0 !== undefined && this.radius1 === undefined) {\n this.radius1 = TransitionSpiral3d.radius0LengthSweepRadiansToRadius1(this.radius0, this.curveLength, sweepRadians);\n return true;\n }\n return false;\n }\n // at least one bearing is undefined\n if (this.curveLength === undefined || this.radius0 === undefined || this.radius1 === undefined)\n return false;\n if (this.bearing0) { // bearing 1 is undefined\n this.bearing1 = Angle.createRadians(\n this.bearing0.radians +\n TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength),\n );\n return true;\n }\n if (this.bearing1) { // bearing 0 is undefined\n this.bearing0 = Angle.createRadians(\n this.bearing1.radians -\n TransitionSpiral3d.radiusRadiusLengthToSweepRadians(this.radius0, this.radius1, this.curveLength),\n );\n return true;\n }\n return false;\n }\n private almostEqualCoordinate(a: number | undefined, b: number | undefined): boolean {\n if (a === undefined && b === undefined)\n return true;\n if (a !== undefined && b !== undefined)\n return Geometry.isSameCoordinate(a, b);\n return false;\n }\n private almostEqualBearing(a: Angle | undefined, b: Angle | undefined): boolean {\n if (a === undefined && b === undefined)\n return true;\n if (a !== undefined && b !== undefined)\n return a.isAlmostEqualNoPeriodShift(b);\n return false;\n }\n /** Test if `this` and `other` have matching numeric and undefined members. */\n public isAlmostEqual(other?: TransitionConditionalProperties): boolean {\n if (!other)\n return false;\n if (!this.almostEqualCoordinate(this.radius0, other.radius0))\n return false;\n if (!this.almostEqualCoordinate(this.radius1, other.radius1))\n return false;\n if (!this.almostEqualBearing(this.bearing0, other.bearing0))\n return false;\n if (!this.almostEqualBearing(this.bearing1, other.bearing1))\n return false;\n if (!this.almostEqualCoordinate(this.curveLength, other.curveLength))\n return false;\n return true;\n }\n /** Apply a NONZERO scale factor to all distances. If `a` is zero, do nothing. */\n public applyScaleFactor(a: number): void {\n if (a === 0)\n return;\n if (this.radius0 !== undefined)\n this.radius0 *= a;\n if (this.radius1 !== undefined)\n this.radius1 *= a;\n if (this.curveLength !== undefined)\n this.curveLength *= a;\n }\n /** Test if `a` and `b` have matching numeric and undefined members. */\n public static areAlmostEqual(\n a: TransitionConditionalProperties | undefined, b: TransitionConditionalProperties | undefined,\n ): boolean {\n if (a === undefined)\n return b === undefined;\n return a.isAlmostEqual(b);\n }\n}\n"]}
@@ -13,12 +13,13 @@ import { TransitionConditionalProperties } from "./TransitionConditionalProperti
13
13
  import type { Vector3d } from "../../geometry3d/Point3dVector3d";
14
14
  import type { Ray3d } from "../../geometry3d/Ray3d";
15
15
  /**
16
- * This is the set of valid type names for "integrated" spirals
16
+ * This is the set of valid type names for "integrated" spirals.
17
17
  * * Behavior is expressed by a `NormalizedTransition` snap function.
18
- * * The snap function varies smoothly from f(0)=0 to f(1)=1
18
+ * * The snap function varies smoothly from f(0)=0 to f(1)=1.
19
19
  * * The various snap functions are:
20
20
  * * clothoid: linear
21
- * * biquadratic: 2 quadratics pieced together, joining with 1st derivative continuity at f(0.) = 0.5, with zero slope f'(0)=0 and f'(1)= 0
21
+ * * biquadratic: 2 quadratics pieced together, joining with 1st derivative continuity at f(0.) = 0.5, with zero
22
+ * slope f'(0)=0 and f'(1)= 0
22
23
  * * bloss: A single cubic with zero slope at 0 and 1
23
24
  * * cosine: half of a cosine wave, centered around 0.5
24
25
  * * sine: full period of a sine wave added to the line f(u)=u
@@ -35,59 +36,63 @@ export type DirectSpiralTypeName = "JapaneseCubic" | "Arema" | "ChineseCubic" |
35
36
  /**
36
37
  * TransitionSpiral3d is a base class for multiple variants of spirals.
37
38
  * * The menagerie of spiral types have 2 broad categories:
38
- * * IntegratedSpiral3d -- a spiral whose direct function for curvature versus distance must be integrated to determine x,y
39
- * * The IntegratedSpiral3d types are enumerated in `IntegratedSpiralTypes`
39
+ * * IntegratedSpiral3d -- a spiral whose direct function for curvature versus distance must be integrated to
40
+ * determine x,y.
41
+ * * The IntegratedSpiral3d types are enumerated in `IntegratedSpiralTypes`.
40
42
  * * DirectSpiral3d -- a spiral implemented with direct calculation of x,y from fractional position along the spiral.
41
- * * The direct spiral types are enumerated in the `DirectSpiralType`
42
- * * The method set for CurvePrimitive support includes a `handleTransitionSpiral(g: TransitionSpiral3d)` which receives all the spiral types.
43
+ * * The direct spiral types are enumerated in the `DirectSpiralType`.
44
+ * * The method set for CurvePrimitive support includes a `handleTransitionSpiral(g: TransitionSpiral3d)` which receives
45
+ * all the spiral types.
43
46
  * * The spiral class may impose expectations that its inflection is at the origin, with tangent along the x axis.
44
47
  * * This is generally necessary for direct spirals.
45
48
  * * This is not necessary for integrated spirals.
46
49
  * @public
47
50
  */
48
51
  export declare abstract class TransitionSpiral3d extends CurvePrimitive {
49
- /** string name of spiral type */
52
+ /** String name of spiral type. */
50
53
  protected _spiralType: string;
51
54
  /** Original defining properties. */
52
55
  protected _designProperties: TransitionConditionalProperties | undefined;
53
- /** Fractional interval for the "active" part of a containing spiral.
54
- * (The radius, angle, and length conditions define a complete spiral, and some portion of it is "active")
56
+ /** Placement transform. */
57
+ protected _localToWorld: Transform;
58
+ /**
59
+ * Fractional interval for the "active" part of a containing spiral.
60
+ * (the radius, angle, and length conditions define a complete spiral, and some portion of it is "active")
55
61
  */
56
62
  protected _activeFractionInterval: Segment1d;
57
63
  /** Return (reference to) the active portion of the reference spiral. */
58
64
  get activeFractionInterval(): Segment1d;
59
- /** strokes in the active portion */
65
+ /** Strokes in the active portion. */
60
66
  abstract get activeStrokes(): LineString3d;
61
- /** Placement transform */
62
- protected _localToWorld: Transform;
63
- /** (reference to) placement transform. */
67
+ /** (Reference to) placement transform. */
64
68
  get localToWorld(): Transform;
65
69
  protected constructor(spiralType: string | undefined, localToWorld: Transform, activeFractionInterval: Segment1d | undefined, designProperties: TransitionConditionalProperties | undefined);
66
70
  get spiralType(): string;
67
- /** Return 1/r with convention that if true zero is given as radius it represents infinite radius (0 curvature, straight line) */
71
+ /** Return 1/r with convention that exact zero input returns 0 (straight line, zero curvature, infinite radius). */
68
72
  static radiusToCurvature(radius: number): number;
69
- /** Return 1/k with convention that if near-zero is given as curvature, its infinite radius is returned as 0 */
73
+ /** Return 1/k with convention that near-zero input returns 0 (straight line, zero curvature, infinite radius). */
70
74
  static curvatureToRadius(curvature: number): number;
71
75
  /** Return a deep clone. */
72
76
  abstract clone(): TransitionSpiral3d;
73
- /** Recompute strokes */
77
+ /** Recompute strokes. */
74
78
  abstract refreshComputedProperties(): void;
75
79
  /** Return (if possible) a spiral which is a portion of this curve. */
76
80
  clonePartialCurve(fractionA: number, fractionB: number): TransitionSpiral3d;
77
- /** Clone with a transform applied */
81
+ /** Clone with a transform applied. */
78
82
  cloneTransformed(transform: Transform): TransitionSpiral3d;
79
83
  /** Return the average of the start and end curvatures. */
80
84
  static averageCurvature(radiusLimits: Segment1d): number;
81
85
  /**
82
- * Given two radii (or zeros for 0 curvature) return the average curvature
83
- * @param r0 start radius, or 0 for line
84
- * @param r1 end radius, or 0 for line
86
+ * Given two radii (or zeros for 0 curvature) return the average curvature.
87
+ * @param r0 start radius, or 0 for line.
88
+ * @param r1 end radius, or 0 for line.
85
89
  */
86
90
  static averageCurvatureR0R1(r0: number, r1: number): number;
87
91
  /**
88
- * Given two radii (or zeros for 0 curvature) return the average curvature
89
- * @param r0 start radius, or 0 for line
90
- * @param r1 end radius, or 0 for line
92
+ * Given two radii (or zeros for 0 curvature) return the curvature at the given fraction.
93
+ * @param r0 start radius, or 0 for line.
94
+ * @param fraction fractional position between the curvatures defined by r0 and r1.
95
+ * @param r1 end radius, or 0 for line.
91
96
  */
92
97
  static interpolateCurvatureR0R1(r0: number, fraction: number, r1: number): number;
93
98
  /** Return the arc length of a transition spiral with given sweep and radius pair. */
@@ -101,7 +106,8 @@ export declare abstract class TransitionSpiral3d extends CurvePrimitive {
101
106
  /** Return the original defining properties (if any) saved by the constructor. */
102
107
  get designProperties(): TransitionConditionalProperties | undefined;
103
108
  /**
104
- * * If transformA is rigid with uniform scale, apply the rigid part of transformA to the localToWorld transform and return the scale and rigid separation.
109
+ * * If transformA is rigid with uniform scale, apply the rigid part of transformA to the localToWorld transform and
110
+ * return the scale and rigid separation.
105
111
  * * If not rigid, do nothing and return undefined.
106
112
  * * Also apply the scale factor to the designProperties.
107
113
  * @param transformA
@@ -112,21 +118,25 @@ export declare abstract class TransitionSpiral3d extends CurvePrimitive {
112
118
  } | undefined;
113
119
  /**
114
120
  * Construct an offset of the instance curve as viewed in the xy-plane (ignoring z).
115
- * * No attempt is made to join the offsets of smaller constituent primitives. To construct a fully joined offset
116
- * for an aggregate instance (e.g., LineString3d, CurveChainWithDistanceIndex), use RegionOps.constructCurveXYOffset() instead.
117
- * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object
121
+ * * No attempt is made to join the offsets of smaller constituent primitives. To construct a fully joined offset for an
122
+ * aggregate instance (e.g., LineString3d, CurveChainWithDistanceIndex), use RegionOps.constructCurveXYOffset() instead.
123
+ * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object.
118
124
  */
119
125
  constructOffsetXY(offsetDistanceOrOptions: number | OffsetOptions): BSplineCurve3d | undefined;
120
- /** extend the range by the strokes of the spiral */
126
+ /** Extend the range by the strokes of the spiral. */
121
127
  extendRange(rangeToExtend: Range3d, transform?: Transform): void;
122
- /** return the range of spiral between fractions of the activeStrokes.
123
- * * Use activeStrokes point count times interval factor for initial evaluation count, but do at least 5
128
+ /**
129
+ * Return the range of spiral between fractions of the activeStrokes.
130
+ * * Use activeStrokes point count times interval factor for initial evaluation count, but do at least 5.
124
131
  */
125
132
  rangeBetweenFractions(fractionA: number, fractionB: number, transform?: Transform): Range3d;
126
- /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
133
+ /**
134
+ * Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of
135
+ * projection.
127
136
  * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
128
137
  * @param lowHigh optional receiver for output
129
- * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
138
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the
139
+ * end of the ray.
130
140
  */
131
141
  projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): Range1d | undefined;
132
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TransitionSpiral3d.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/TransitionSpiral3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransitionSpiral3d.d.ts","sourceRoot":"","sources":["../../../../src/curve/spiral/TransitionSpiral3d.ts"],"names":[],"mappings":"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"}