@mlightcad/geometry-engine 3.2.38 → 3.2.39

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 (54) hide show
  1. package/dist/geometry-engine.umd.cjs +1 -1
  2. package/lib/geometry/AcGeCircArc3d.d.ts +7 -0
  3. package/lib/geometry/AcGeCircArc3d.d.ts.map +1 -1
  4. package/lib/geometry/AcGeCircArc3d.js +12 -0
  5. package/lib/geometry/AcGeCircArc3d.js.map +1 -1
  6. package/lib/geometry/AcGeEllipseArc3d.d.ts +7 -0
  7. package/lib/geometry/AcGeEllipseArc3d.d.ts.map +1 -1
  8. package/lib/geometry/AcGeEllipseArc3d.js +13 -0
  9. package/lib/geometry/AcGeEllipseArc3d.js.map +1 -1
  10. package/lib/geometry/AcGeLine3d.d.ts +7 -0
  11. package/lib/geometry/AcGeLine3d.d.ts.map +1 -1
  12. package/lib/geometry/AcGeLine3d.js +16 -0
  13. package/lib/geometry/AcGeLine3d.js.map +1 -1
  14. package/lib/geometry/AcGeNurbsCurve.d.ts +55 -1
  15. package/lib/geometry/AcGeNurbsCurve.d.ts.map +1 -1
  16. package/lib/geometry/AcGeNurbsCurve.js +146 -4
  17. package/lib/geometry/AcGeNurbsCurve.js.map +1 -1
  18. package/lib/geometry/AcGePolyline2d.d.ts +7 -0
  19. package/lib/geometry/AcGePolyline2d.d.ts.map +1 -1
  20. package/lib/geometry/AcGePolyline2d.js +10 -0
  21. package/lib/geometry/AcGePolyline2d.js.map +1 -1
  22. package/lib/geometry/AcGePolyline2dOffset.d.ts +28 -0
  23. package/lib/geometry/AcGePolyline2dOffset.d.ts.map +1 -0
  24. package/lib/geometry/AcGePolyline2dOffset.js +886 -0
  25. package/lib/geometry/AcGePolyline2dOffset.js.map +1 -0
  26. package/lib/geometry/AcGeSpline3d.d.ts +9 -1
  27. package/lib/geometry/AcGeSpline3d.d.ts.map +1 -1
  28. package/lib/geometry/AcGeSpline3d.js +7 -0
  29. package/lib/geometry/AcGeSpline3d.js.map +1 -1
  30. package/lib/index.d.ts +1 -1
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +1 -1
  33. package/lib/index.js.map +1 -1
  34. package/lib/util/AcGeCurveOffsetUtil.d.ts +22 -0
  35. package/lib/util/AcGeCurveOffsetUtil.d.ts.map +1 -0
  36. package/lib/util/AcGeCurveOffsetUtil.js +37 -0
  37. package/lib/util/AcGeCurveOffsetUtil.js.map +1 -0
  38. package/lib/util/AcGeNurbsUtil.d.ts +13 -0
  39. package/lib/util/AcGeNurbsUtil.d.ts.map +1 -1
  40. package/lib/util/AcGeNurbsUtil.js +105 -0
  41. package/lib/util/AcGeNurbsUtil.js.map +1 -1
  42. package/lib/util/AcGeSampledCurveOffsetUtil.d.ts +21 -0
  43. package/lib/util/AcGeSampledCurveOffsetUtil.d.ts.map +1 -0
  44. package/lib/util/AcGeSampledCurveOffsetUtil.js +302 -0
  45. package/lib/util/AcGeSampledCurveOffsetUtil.js.map +1 -0
  46. package/lib/util/AcGeTol.d.ts +8 -0
  47. package/lib/util/AcGeTol.d.ts.map +1 -1
  48. package/lib/util/AcGeTol.js +14 -0
  49. package/lib/util/AcGeTol.js.map +1 -1
  50. package/lib/util/index.d.ts +3 -1
  51. package/lib/util/index.d.ts.map +1 -1
  52. package/lib/util/index.js +3 -1
  53. package/lib/util/index.js.map +1 -1
  54. package/package.json +2 -2
@@ -0,0 +1,302 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
+ if (ar || !(i in from)) {
20
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
+ ar[i] = from[i];
22
+ }
23
+ }
24
+ return to.concat(ar || Array.prototype.slice.call(from));
25
+ };
26
+ import { AcGePolyline2d } from '../geometry/AcGePolyline2d';
27
+ import { AcGePoint2d } from '../math/AcGePoint2d';
28
+ import { AcGeTol, DEFAULT_TOL } from './AcGeTol';
29
+ /**
30
+ * Offsets a densely sampled smooth curve path in the XY plane.
31
+ *
32
+ * Unlike vertex polyline offset (parallel edges with miter joins), each sample
33
+ * is shifted along the local left normal. Self-intersecting loops that appear
34
+ * when the offset distance exceeds the local radius of curvature are trimmed.
35
+ *
36
+ * Sign convention: positive `offsetDist` offsets to the left of the travel
37
+ * direction along the sampled path (consistent with {@link offsetAcGePolyline2d}).
38
+ *
39
+ * @param points - Sampled path points in travel order
40
+ * @param closed - Whether the path is treated as a closed polygon for trimming
41
+ * @param offsetDist - Signed offset distance in drawing units (left = positive)
42
+ * @param tangents - Optional unit tangents aligned with `points`; when omitted,
43
+ * tangents are estimated from neighboring samples via central differences
44
+ * @returns Offset polyline, or `null` when input is degenerate or offset distance is zero
45
+ */
46
+ export function offsetSmoothedSampledPath(points, closed, offsetDist, tangents) {
47
+ if (points.length < 2 || AcGeTol.equalToZero(offsetDist))
48
+ return null;
49
+ var _a = dedupeConsecutiveSamples(points, tangents), source = _a.points, sourceTangents = _a.tangents;
50
+ if (source.length < 2)
51
+ return null;
52
+ var resolvedTangents = sourceTangents !== null && sourceTangents !== void 0 ? sourceTangents : computePathSampleTangents(source, closed);
53
+ var offsetPoints = offsetPointsByNormals(source, resolvedTangents, offsetDist);
54
+ var trimmed = closed
55
+ ? trimClosedPolylineSelfIntersections(offsetPoints)
56
+ : trimOpenPolylineSelfIntersections(offsetPoints);
57
+ if (trimmed.length < 2)
58
+ return null;
59
+ var result = new AcGePolyline2d();
60
+ trimmed.forEach(function (point, index) {
61
+ result.addVertexAt(index, { x: point.x, y: point.y });
62
+ });
63
+ result.closed = closed;
64
+ return result;
65
+ }
66
+ /**
67
+ * Computes unit tangents for a sampled path using central differences.
68
+ *
69
+ * Open paths use one-sided differences at endpoints and central differences
70
+ * at interior samples. Closed paths wrap the predecessor of the first point
71
+ * and the successor of the last.
72
+ *
73
+ * @param points - Sampled path vertices in travel order
74
+ * @param closed - Whether the path wraps from last point back to first
75
+ * @returns Unit tangent at each sample; degenerate segments fall back to `(1, 0)`
76
+ */
77
+ function computePathSampleTangents(points, closed) {
78
+ var count = points.length;
79
+ var tangents = new Array(count);
80
+ for (var i = 0; i < count; i++) {
81
+ var dx = 0;
82
+ var dy = 0;
83
+ if (closed) {
84
+ var prev = points[(i - 1 + count) % count];
85
+ var next = points[(i + 1) % count];
86
+ dx = next.x - prev.x;
87
+ dy = next.y - prev.y;
88
+ }
89
+ else if (i === 0) {
90
+ dx = points[1].x - points[0].x;
91
+ dy = points[1].y - points[0].y;
92
+ }
93
+ else if (i === count - 1) {
94
+ dx = points[count - 1].x - points[count - 2].x;
95
+ dy = points[count - 1].y - points[count - 2].y;
96
+ }
97
+ else {
98
+ dx = points[i + 1].x - points[i - 1].x;
99
+ dy = points[i + 1].y - points[i - 1].y;
100
+ }
101
+ var len = Math.hypot(dx, dy);
102
+ if (AcGeTol.isNonPositive(len)) {
103
+ tangents[i] = new AcGePoint2d(1, 0);
104
+ }
105
+ else {
106
+ tangents[i] = new AcGePoint2d(dx / len, dy / len);
107
+ }
108
+ }
109
+ return tangents;
110
+ }
111
+ /**
112
+ * Offsets each sample along the left normal of its tangent.
113
+ *
114
+ * The left normal of a unit tangent `(tx, ty)` is `(-ty, tx)`, scaled by
115
+ * `offsetDist` and added to the sample position.
116
+ *
117
+ * @param points - Source samples in travel order
118
+ * @param tangents - Unit tangents aligned index-for-index with `points`
119
+ * @param offsetDist - Signed offset distance in drawing units
120
+ * @returns Translated samples forming the raw offset polyline before trimming
121
+ */
122
+ function offsetPointsByNormals(points, tangents, offsetDist) {
123
+ return points.map(function (point, index) {
124
+ var tangent = tangents[index];
125
+ var nx = -tangent.y * offsetDist;
126
+ var ny = tangent.x * offsetDist;
127
+ return new AcGePoint2d(point.x + nx, point.y + ny);
128
+ });
129
+ }
130
+ /**
131
+ * Removes self-intersecting loops from an open offset polyline.
132
+ *
133
+ * Repeatedly finds the earliest non-adjacent segment crossing and replaces the
134
+ * enclosed vertex chain with the intersection point until no crossings remain.
135
+ * This produces cusp-style joins when the offset distance exceeds the local
136
+ * radius of curvature at concave bends.
137
+ *
138
+ * @param points - Raw offset samples connected in order
139
+ * @returns Trimmed open vertex chain with loops removed
140
+ */
141
+ function trimOpenPolylineSelfIntersections(points) {
142
+ var current = dedupeConsecutivePoints(points);
143
+ if (current.length < 3)
144
+ return current;
145
+ while (true) {
146
+ var hit = findFirstSelfIntersection(current, false);
147
+ if (!hit)
148
+ break;
149
+ current = dedupeConsecutivePoints(__spreadArray(__spreadArray(__spreadArray([], __read(current.slice(0, hit.segmentA + 1)), false), [
150
+ hit.point
151
+ ], false), __read(current.slice(hit.segmentB + 1)), false));
152
+ if (current.length < 2)
153
+ break;
154
+ }
155
+ return current;
156
+ }
157
+ /**
158
+ * Removes self-intersecting loops from a closed offset polyline.
159
+ *
160
+ * Uses the same earliest-intersection trimming strategy as
161
+ * {@link trimOpenPolylineSelfIntersections}, but treats the last-to-first
162
+ * segment as part of the closed ring.
163
+ *
164
+ * @param points - Raw offset samples forming a closed ring
165
+ * @returns Trimmed closed vertex chain with loops removed
166
+ */
167
+ function trimClosedPolylineSelfIntersections(points) {
168
+ var current = dedupeConsecutivePoints(points);
169
+ if (current.length < 4)
170
+ return current;
171
+ while (true) {
172
+ var hit = findFirstSelfIntersection(current, true);
173
+ if (!hit)
174
+ break;
175
+ current = dedupeConsecutivePoints(__spreadArray(__spreadArray(__spreadArray([], __read(current.slice(0, hit.segmentA + 1)), false), [
176
+ hit.point
177
+ ], false), __read(current.slice(hit.segmentB + 1)), false));
178
+ if (current.length < 3)
179
+ break;
180
+ }
181
+ return current;
182
+ }
183
+ /**
184
+ * Finds the earliest non-adjacent segment intersection in a polyline.
185
+ *
186
+ * Segments are tested in lexicographic order `(segmentA, segmentB)` so trimming
187
+ * removes the innermost loop encountered first along the path.
188
+ *
189
+ * @param points - Polyline vertices in order
190
+ * @param closed - Whether the polyline wraps from last vertex back to first
191
+ * @returns Intersection data, or `null` when no crossing exists
192
+ */
193
+ function findFirstSelfIntersection(points, closed) {
194
+ var segmentCount = closed ? points.length : points.length - 1;
195
+ if (segmentCount < 2)
196
+ return null;
197
+ for (var i = 0; i < segmentCount; i++) {
198
+ var a0 = points[i];
199
+ var a1 = points[(i + 1) % points.length];
200
+ for (var j = i + 1; j < segmentCount; j++) {
201
+ if (areAdjacentSegments(i, j, segmentCount, closed))
202
+ continue;
203
+ var b0 = points[j];
204
+ var b1 = points[(j + 1) % points.length];
205
+ var point = intersectBoundedSegments(a0, a1, b0, b1);
206
+ if (point) {
207
+ return { point: point, segmentA: i, segmentB: j };
208
+ }
209
+ }
210
+ }
211
+ return null;
212
+ }
213
+ /**
214
+ * Tests whether two segment indices share a vertex and should be skipped
215
+ * during self-intersection search.
216
+ *
217
+ * @param i - Index of the first segment
218
+ * @param j - Index of the second segment
219
+ * @param segmentCount - Total number of segments in the polyline
220
+ * @param closed - Whether the polyline is closed
221
+ * @returns `true` when the segments are identical or share an endpoint
222
+ */
223
+ function areAdjacentSegments(i, j, segmentCount, closed) {
224
+ if (j === i)
225
+ return true;
226
+ if (j === i + 1)
227
+ return true;
228
+ if (closed && i === 0 && j === segmentCount - 1)
229
+ return true;
230
+ return false;
231
+ }
232
+ /**
233
+ * Computes the intersection point of two bounded line segments, if any.
234
+ *
235
+ * Uses parametric line intersection and requires both parameters to lie in
236
+ * `[0, 1]` within {@link DEFAULT_TOL}. Parallel or collinear segments return
237
+ * `null`.
238
+ *
239
+ * @param a0 - Start of the first segment
240
+ * @param a1 - End of the first segment
241
+ * @param b0 - Start of the second segment
242
+ * @param b1 - End of the second segment
243
+ * @returns Intersection point, or `null` when segments do not cross
244
+ */
245
+ function intersectBoundedSegments(a0, a1, b0, b1) {
246
+ var dx1 = a1.x - a0.x;
247
+ var dy1 = a1.y - a0.y;
248
+ var dx2 = b1.x - b0.x;
249
+ var dy2 = b1.y - b0.y;
250
+ var det = dx1 * dy2 - dy1 * dx2;
251
+ if (AcGeTol.equalToZero(det))
252
+ return null;
253
+ var qpx = b0.x - a0.x;
254
+ var qpy = b0.y - a0.y;
255
+ var t = (qpx * dy2 - qpy * dx2) / det;
256
+ var u = (qpx * dy1 - qpy * dx1) / det;
257
+ var tol = DEFAULT_TOL.equalPointTol;
258
+ if (t < -tol || t > 1 + tol || u < -tol || u > 1 + tol) {
259
+ return null;
260
+ }
261
+ return new AcGePoint2d(a0.x + t * dx1, a0.y + t * dy1);
262
+ }
263
+ /**
264
+ * Removes consecutive duplicate samples while keeping tangents aligned.
265
+ *
266
+ * When `tangents` is provided with the same length as `points`, tangents
267
+ * corresponding to dropped duplicates are removed as well.
268
+ *
269
+ * @param points - Input sample chain, possibly containing consecutive duplicates
270
+ * @param tangents - Optional unit tangents aligned with `points`
271
+ * @returns Deduplicated points and, when supplied, matching tangents
272
+ */
273
+ function dedupeConsecutiveSamples(points, tangents) {
274
+ var resultPoints = [];
275
+ var resultTangents = [];
276
+ var keepTangents = tangents != null && tangents.length === points.length;
277
+ points.forEach(function (point, index) {
278
+ var last = resultPoints[resultPoints.length - 1];
279
+ if (!last ||
280
+ AcGeTol.isPositive(Math.hypot(last.x - point.x, last.y - point.y))) {
281
+ resultPoints.push(new AcGePoint2d(point.x, point.y));
282
+ if (keepTangents) {
283
+ var tangent = tangents[index];
284
+ resultTangents.push(new AcGePoint2d(tangent.x, tangent.y));
285
+ }
286
+ }
287
+ });
288
+ return {
289
+ points: resultPoints,
290
+ tangents: keepTangents ? resultTangents : undefined
291
+ };
292
+ }
293
+ /**
294
+ * Removes consecutive duplicate vertices from a point chain.
295
+ *
296
+ * @param points - Input vertex chain
297
+ * @returns New array with only distinct consecutive points
298
+ */
299
+ function dedupeConsecutivePoints(points) {
300
+ return dedupeConsecutiveSamples(points).points;
301
+ }
302
+ //# sourceMappingURL=AcGeSampledCurveOffsetUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeSampledCurveOffsetUtil.js","sourceRoot":"","sources":["../../src/util/AcGeSampledCurveOffsetUtil.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,14 @@ export declare class AcGeTol {
90
90
  * tolerance value
91
91
  */
92
92
  static less(value1: number, value2: number, tol?: number): boolean;
93
+ /**
94
+ * Return true if the value is greater than the specified tolerance.
95
+ */
96
+ static isPositive(value: number, tol?: number): boolean;
97
+ /**
98
+ * Return true if the value is less than or equal to the specified tolerance.
99
+ */
100
+ static isNonPositive(value: number, tol?: number): boolean;
93
101
  }
94
102
  export declare const DEFAULT_TOL: AcGeTol;
95
103
  //# sourceMappingURL=AcGeTol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeTol.d.ts","sourceRoot":"","sources":["../../src/util/AcGeTol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EAGhB,MAAM,SAAS,CAAA;AAGhB;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;;IAMH;;OAEG;IACH,KAAK;IAOL;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe;IAIrD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe;IAIrD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB;IAIrD;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAkB,GACtB,OAAO;IAIV;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAkB,GACtB,OAAO;IAIV;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB;CAGpE;AAED,eAAO,MAAM,WAAW,SAAgB,CAAA"}
1
+ {"version":3,"file":"AcGeTol.d.ts","sourceRoot":"","sources":["../../src/util/AcGeTol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EAGhB,MAAM,SAAS,CAAA;AAGhB;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;;IAMH;;OAEG;IACH,KAAK;IAOL;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe;IAIrD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe;IAIrD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB;IAIrD;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAkB,GACtB,OAAO;IAIV;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAkB,GACtB,OAAO;IAIV;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB;IAInE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO;IAIlE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO;CAGtE;AAED,eAAO,MAAM,WAAW,SAAgB,CAAA"}
@@ -85,6 +85,20 @@ var AcGeTol = /** @class */ (function () {
85
85
  if (tol === void 0) { tol = FLOAT_TOL; }
86
86
  return value1 - value2 < tol;
87
87
  };
88
+ /**
89
+ * Return true if the value is greater than the specified tolerance.
90
+ */
91
+ AcGeTol.isPositive = function (value, tol) {
92
+ if (tol === void 0) { tol = FLOAT_TOL; }
93
+ return value > tol;
94
+ };
95
+ /**
96
+ * Return true if the value is less than or equal to the specified tolerance.
97
+ */
98
+ AcGeTol.isNonPositive = function (value, tol) {
99
+ if (tol === void 0) { tol = FLOAT_TOL; }
100
+ return value <= tol;
101
+ };
88
102
  return AcGeTol;
89
103
  }());
90
104
  export { AcGeTol };
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeTol.js","sourceRoot":"","sources":["../../src/util/AcGeTol.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C;;GAEG;AACH;IAgCE;;OAEG;IACH;QACE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,uBAAK,GAAL;QACE,IAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAA;QAC5B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACzC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAC3C,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,8BAAY,GAAZ,UAAa,EAAmB,EAAE,EAAmB;QACnD,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;IACnE,CAAC;IAED;;;;;OAKG;IACH,8BAAY,GAAZ,UAAa,EAAmB,EAAE,EAAmB;QACnD,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;IACnE,CAAC;IAED;;OAEG;IACI,mBAAW,GAAlB,UAAmB,CAAS,EAAE,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QACnD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC5B,CAAC;IAED;;;;;;;OAOG;IACI,aAAK,GAAZ,UACE,MAAc,EACd,MAAc,EACd,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QAEvB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAA;IACxC,CAAC;IAED;;;;;;;;;OASG;IACI,aAAK,GAAZ,UACE,MAAc,EACd,MAAc,EACd,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QAEvB,OAAO,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACI,YAAI,GAAX,UAAY,MAAc,EAAE,MAAc,EAAE,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QACjE,OAAO,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;IAC9B,CAAC;IACH,cAAC;AAAD,CAAC,AA5HD,IA4HC;;AAED,MAAM,CAAC,IAAM,WAAW,GAAG,IAAI,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"AcGeTol.js","sourceRoot":"","sources":["../../src/util/AcGeTol.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,YAAY,EACb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C;;GAEG;AACH;IAgCE;;OAEG;IACH;QACE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,uBAAK,GAAL;QACE,IAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAA;QAC5B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACzC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAC3C,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,8BAAY,GAAZ,UAAa,EAAmB,EAAE,EAAmB;QACnD,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;IACnE,CAAC;IAED;;;;;OAKG;IACH,8BAAY,GAAZ,UAAa,EAAmB,EAAE,EAAmB;QACnD,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAA;IACnE,CAAC;IAED;;OAEG;IACI,mBAAW,GAAlB,UAAmB,CAAS,EAAE,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QACnD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC5B,CAAC;IAED;;;;;;;OAOG;IACI,aAAK,GAAZ,UACE,MAAc,EACd,MAAc,EACd,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QAEvB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAA;IACxC,CAAC;IAED;;;;;;;;;OASG;IACI,aAAK,GAAZ,UACE,MAAc,EACd,MAAc,EACd,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QAEvB,OAAO,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACI,YAAI,GAAX,UAAY,MAAc,EAAE,MAAc,EAAE,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QACjE,OAAO,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;IAC9B,CAAC;IAED;;OAEG;IACI,kBAAU,GAAjB,UAAkB,KAAa,EAAE,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QACtD,OAAO,KAAK,GAAG,GAAG,CAAA;IACpB,CAAC;IAED;;OAEG;IACI,qBAAa,GAApB,UAAqB,KAAa,EAAE,GAAuB;QAAvB,oBAAA,EAAA,eAAuB;QACzD,OAAO,KAAK,IAAI,GAAG,CAAA;IACrB,CAAC;IACH,cAAC;AAAD,CAAC,AA1ID,IA0IC;;AAED,MAAM,CAAC,IAAM,WAAW,GAAG,IAAI,OAAO,EAAE,CAAA"}
@@ -1,7 +1,9 @@
1
1
  export { FLOAT_TOL, ORIGIN_POINT_2D, ORIGIN_POINT_3D, TAU } from './AcGeConstants';
2
2
  export { AcGeGeometryUtil, isPointInPolygon, isPolygonIntersect } from './AcGeGeometryUtil';
3
3
  export { AcGeMathUtil, DEG2RAD, RAD2DEG, ceilPowerOfTwo, clamp, damp, degToRad, euclideanModulo, floorPowerOfTwo, generateUUID, intPartLength, inverseLerp, isBetween, isBetweenAngle, isPowerOfTwo, lerp, mapLinear, normalizeAngle, pingpong, radToDeg, randFloat, randFloatSpread, randInt, relativeEps, seededRandom, smootherstep, smoothstep } from './AcGeMathUtil';
4
- export { basisFunction, calculateCurveLength, computeParameterValues, evaluateNurbsPoint, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUniformKnots, interpolateControlPoints, interpolateNurbsCurve } from './AcGeNurbsUtil';
4
+ export { basisFunction, calculateCurveLength, computeParameterValues, evaluateNurbsPoint, evaluateNurbsDerivatives, signedPlanarCurvature, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUniformKnots, interpolateControlPoints, interpolateNurbsCurve } from './AcGeNurbsUtil';
5
5
  export { getOcsAngle, getOcsReferenceVector, transformOcsPointToWcs, transformWcsPointToOcs } from './AcGeOcsUtil';
6
6
  export { AcGeTol, DEFAULT_TOL } from './AcGeTol';
7
+ export { offsetPointByDirectionInXY, offsetVertexPath } from './AcGeCurveOffsetUtil';
8
+ export { offsetSmoothedSampledPath } from './AcGeSampledCurveOffsetUtil';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA"}
package/lib/util/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  export { FLOAT_TOL, ORIGIN_POINT_2D, ORIGIN_POINT_3D, TAU } from './AcGeConstants';
2
2
  export { AcGeGeometryUtil, isPointInPolygon, isPolygonIntersect } from './AcGeGeometryUtil';
3
3
  export { AcGeMathUtil, DEG2RAD, RAD2DEG, ceilPowerOfTwo, clamp, damp, degToRad, euclideanModulo, floorPowerOfTwo, generateUUID, intPartLength, inverseLerp, isBetween, isBetweenAngle, isPowerOfTwo, lerp, mapLinear, normalizeAngle, pingpong, radToDeg, randFloat, randFloatSpread, randInt, relativeEps, seededRandom, smootherstep, smoothstep } from './AcGeMathUtil';
4
- export { basisFunction, calculateCurveLength, computeParameterValues, evaluateNurbsPoint, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUniformKnots, interpolateControlPoints, interpolateNurbsCurve } from './AcGeNurbsUtil';
4
+ export { basisFunction, calculateCurveLength, computeParameterValues, evaluateNurbsPoint, evaluateNurbsDerivatives, signedPlanarCurvature, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUniformKnots, interpolateControlPoints, interpolateNurbsCurve } from './AcGeNurbsUtil';
5
5
  export { getOcsAngle, getOcsReferenceVector, transformOcsPointToWcs, transformWcsPointToOcs } from './AcGeOcsUtil';
6
6
  export { AcGeTol, DEFAULT_TOL } from './AcGeTol';
7
+ export { offsetPointByDirectionInXY, offsetVertexPath } from './AcGeCurveOffsetUtil';
8
+ export { offsetSmoothedSampledPath } from './AcGeSampledCurveOffsetUtil';
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,GAAG,EACJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlightcad/geometry-engine",
3
- "version": "3.2.38",
3
+ "version": "3.2.39",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "require": "./dist/geometry-engine.umd.cjs"
34
34
  },
35
35
  "peerDependencies": {
36
- "@mlightcad/common": "1.4.38"
36
+ "@mlightcad/common": "1.4.39"
37
37
  },
38
38
  "scripts": {
39
39
  "clean": "rimraf dist lib tsconfig.tsbuildinfo",