@mlightcad/geometry-engine 2.0.0 → 2.0.1

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.
@@ -1,63 +1,22 @@
1
1
  import { AcGeBox3d, AcGeMatrix3d, AcGePoint3d, AcGePoint3dLike, AcGePointLike } from '../math';
2
2
  import { AcGeCurve3d } from './AcGeCurve3d';
3
- export type AcGeKnotParameterizationType = 'Uniform' | 'Chord' | 'SqrtChord';
4
- /**
5
- * Lightweight NURBS curve implementation
6
- */
7
- declare class NurbsCurve {
8
- private _degree;
9
- private _knots;
10
- private _controlPoints;
11
- private _weights;
12
- constructor(degree: number, knots: number[], controlPoints: number[][], weights?: number[]);
13
- degree(): number;
14
- knots(): number[];
15
- controlPoints(): number[][];
16
- weights(): number[];
17
- /**
18
- * Calculate a point on the curve at parameter u
19
- */
20
- point(u: number): number[];
21
- /**
22
- * Calculate curve length using numerical integration
23
- */
24
- length(): number;
25
- /**
26
- * Create a NURBS curve from control points and knots
27
- */
28
- static byKnotsControlPointsWeights(degree: number, knots: number[], controlPoints: number[][], weights?: number[]): NurbsCurve;
29
- /**
30
- * Create a NURBS curve from fit points using interpolation
31
- */
32
- static byPoints(points: number[][], degree: number, parameterization?: AcGeKnotParameterizationType): NurbsCurve;
33
- }
3
+ import { AcGeKnotParameterizationType, AcGeNurbsCurve } from './AcGeNurbsCurve';
34
4
  export declare class AcGeSpline3d extends AcGeCurve3d {
35
5
  private _nurbsCurve;
36
6
  private _fitPoints?;
37
7
  private _knotParameterization?;
38
8
  private _controlPoints;
39
9
  private _closed;
40
- private _originalControlPoints?;
41
- private _originalKnots?;
42
- private _originalWeights?;
43
- constructor(controlPoints: AcGePointLike[], knots: number[], weights?: number[], closed?: boolean);
10
+ constructor(controlPoints: AcGePoint3dLike[], knots: number[], weights?: number[], closed?: boolean);
44
11
  constructor(fitPoints: AcGePointLike[], knotParam: AcGeKnotParameterizationType, closed?: boolean);
45
12
  /**
46
- * Set the closed property and rebuild the curve if necessary
47
- */
48
- private setClosed;
49
- /**
50
- * Make the spline closed by adding control points and adjusting knots
51
- */
52
- private makeClosed;
53
- /**
54
- * Make the spline open by restoring the original curve
13
+ * Build the NURBS curve using stored data
55
14
  */
56
- private makeOpen;
15
+ private buildCurve;
57
16
  /**
58
- * Create knot vector for closed curve
17
+ * Set the closed property and rebuild the curve if necessary
59
18
  */
60
- private createClosedKnotVector;
19
+ private setClosed;
61
20
  /**
62
21
  * Degree of the spline to be created.
63
22
  */
@@ -90,7 +49,7 @@ export declare class AcGeSpline3d extends AcGeCurve3d {
90
49
  * @param index Input index (0 based) of point to get
91
50
  * @returns
92
51
  */
93
- getControlPointAt(index: number): import("../math").AcGeVectorLike;
52
+ getControlPointAt(index: number): import("../math").AcGeVector3dLike;
94
53
  /**
95
54
  * Divide this spline into the specified nubmer of points
96
55
  * those points as an array of points.
@@ -98,7 +57,7 @@ export declare class AcGeSpline3d extends AcGeCurve3d {
98
57
  * @returns Return an array of point
99
58
  */
100
59
  getPoints(numPoints?: number): AcGePoint3d[];
101
- getCurvePoints(curve: NurbsCurve, count: number): number[][];
60
+ getCurvePoints(curve: AcGeNurbsCurve, count: number): number[][];
102
61
  /**
103
62
  * @inheritdoc
104
63
  */
@@ -116,11 +75,11 @@ export declare class AcGeSpline3d extends AcGeCurve3d {
116
75
  */
117
76
  private toNurbsPoints;
118
77
  /**
119
- * Convert input points to points in geometry engine format
120
- * @param points Input points to convert
121
- * @returns Return converted points
78
+ * Create a closed spline from fit points using AcGeNurbsCurve.createClosedCurve
79
+ * @param fitPoints - Array of fit points defining the curve
80
+ * @param parameterization - Knot parameterization type for NURBS
81
+ * @returns A closed spline
122
82
  */
123
- private toGePoints;
83
+ static createClosedSpline(fitPoints: AcGePoint3dLike[], parameterization?: AcGeKnotParameterizationType): AcGeSpline3d;
124
84
  }
125
- export {};
126
85
  //# sourceMappingURL=AcGeSpline3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeSpline3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeSpline3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE/E,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,qBAAqB,CAAC,CAA8B;IAC5D,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,OAAO,CAAS;gBAGtB,aAAa,EAAE,eAAe,EAAE,EAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,OAAO;gBAGhB,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,4BAA4B,EACvC,MAAM,CAAC,EAAE,OAAO;IAoElB;;OAEG;IACH,OAAO,CAAC,UAAU;IAgDlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,IAAI,MAAM,WAET;IAED,IAAI,oBAAoB,6CAEvB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,WAAW,CAM5B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAM1B;IAED;;OAEG;IACH,IAAI,MAAM,WAET;IAED;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAU7C;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAM/B;;;;;OAKG;IACH,SAAS,CAAC,SAAS,GAAE,MAAY,GAAG,WAAW,EAAE;IAsBjD,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAkBnD;;OAEG;IACH,oBAAoB;IAKpB,IAAI,MAAM,IAGQ,OAAO,CADxB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAExB;IAED;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,YAAY;IAM/B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACvB,SAAS,EAAE,eAAe,EAAE,EAC5B,gBAAgB,GAAE,4BAAwC,GACzD,YAAY;CAQhB"}
@@ -13,102 +13,10 @@ var __extends = (this && this.__extends) || (function () {
13
13
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
14
  };
15
15
  })();
16
- var __read = (this && this.__read) || function (o, n) {
17
- var m = typeof Symbol === "function" && o[Symbol.iterator];
18
- if (!m) return o;
19
- var i = m.call(o), r, ar = [], e;
20
- try {
21
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
- }
23
- catch (error) { e = { error: error }; }
24
- finally {
25
- try {
26
- if (r && !r.done && (m = i["return"])) m.call(i);
27
- }
28
- finally { if (e) throw e.error; }
29
- }
30
- return ar;
31
- };
32
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
33
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
34
- if (ar || !(i in from)) {
35
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
36
- ar[i] = from[i];
37
- }
38
- }
39
- return to.concat(ar || Array.prototype.slice.call(from));
40
- };
41
16
  import { AcCmErrors } from '@mlightcad/common';
42
17
  import { AcGeBox3d, AcGePoint3d } from '../math';
43
- import { calculateCurveLength, evaluateNurbsPoint, generateChordKnots, generateSqrtChordKnots, generateUniformKnots, interpolateControlPoints } from '../util';
44
18
  import { AcGeCurve3d } from './AcGeCurve3d';
45
- /**
46
- * Lightweight NURBS curve implementation
47
- */
48
- var NurbsCurve = /** @class */ (function () {
49
- function NurbsCurve(degree, knots, controlPoints, weights) {
50
- this._degree = degree;
51
- this._knots = __spreadArray([], __read(knots), false);
52
- this._controlPoints = controlPoints.map(function (p) { return __spreadArray([], __read(p), false); });
53
- this._weights = weights
54
- ? __spreadArray([], __read(weights), false) : new Array(controlPoints.length).fill(1.0);
55
- }
56
- NurbsCurve.prototype.degree = function () {
57
- return this._degree;
58
- };
59
- NurbsCurve.prototype.knots = function () {
60
- return __spreadArray([], __read(this._knots), false);
61
- };
62
- NurbsCurve.prototype.controlPoints = function () {
63
- return this._controlPoints.map(function (p) { return __spreadArray([], __read(p), false); });
64
- };
65
- NurbsCurve.prototype.weights = function () {
66
- return __spreadArray([], __read(this._weights), false);
67
- };
68
- /**
69
- * Calculate a point on the curve at parameter u
70
- */
71
- NurbsCurve.prototype.point = function (u) {
72
- return evaluateNurbsPoint(u, this._degree, this._knots, this._controlPoints, this._weights);
73
- };
74
- /**
75
- * Calculate curve length using numerical integration
76
- */
77
- NurbsCurve.prototype.length = function () {
78
- return calculateCurveLength(this._degree, this._knots, this._controlPoints, this._weights);
79
- };
80
- /**
81
- * Create a NURBS curve from control points and knots
82
- */
83
- NurbsCurve.byKnotsControlPointsWeights = function (degree, knots, controlPoints, weights) {
84
- return new NurbsCurve(degree, knots, controlPoints, weights);
85
- };
86
- /**
87
- * Create a NURBS curve from fit points using interpolation
88
- */
89
- NurbsCurve.byPoints = function (points, degree, parameterization) {
90
- if (parameterization === void 0) { parameterization = 'Uniform'; }
91
- // Generate knots based on parameterization type
92
- var knots;
93
- switch (parameterization) {
94
- case 'Chord':
95
- knots = generateChordKnots(degree, points);
96
- break;
97
- case 'SqrtChord':
98
- knots = generateSqrtChordKnots(degree, points);
99
- break;
100
- case 'Uniform':
101
- default:
102
- knots = generateUniformKnots(degree, points.length);
103
- break;
104
- }
105
- // Generate control points from fit points
106
- var controlPoints = interpolateControlPoints(points);
107
- var weights = new Array(controlPoints.length).fill(1.0);
108
- return new NurbsCurve(degree, knots, controlPoints, weights);
109
- };
110
- return NurbsCurve;
111
- }());
19
+ import { AcGeNurbsCurve } from './AcGeNurbsCurve';
112
20
  var AcGeSpline3d = /** @class */ (function (_super) {
113
21
  __extends(AcGeSpline3d, _super);
114
22
  function AcGeSpline3d(a, b, c, d) {
@@ -136,12 +44,8 @@ var AcGeSpline3d = /** @class */ (function (_super) {
136
44
  throw AcCmErrors.ILLEGAL_PARAMETERS;
137
45
  }
138
46
  var points = _this.toNurbsPoints(_this._fitPoints);
139
- _this._nurbsCurve = NurbsCurve.byPoints(points, degree, _this._knotParameterization);
140
- _this._controlPoints = _this.toGePoints(_this._nurbsCurve.controlPoints());
141
- // Store original data for potential reopening
142
- _this._originalControlPoints = __spreadArray([], __read(_this._controlPoints), false);
143
- _this._originalKnots = __spreadArray([], __read(_this._nurbsCurve.knots()), false);
144
- _this._originalWeights = __spreadArray([], __read(_this._nurbsCurve.weights()), false);
47
+ _this._nurbsCurve = AcGeNurbsCurve.byPoints(points, degree, _this._knotParameterization);
48
+ _this._controlPoints = _this._nurbsCurve.controlPoints();
145
49
  }
146
50
  else {
147
51
  // Constructor with control points
@@ -154,20 +58,49 @@ var AcGeSpline3d = /** @class */ (function (_super) {
154
58
  if (_this._controlPoints.length < 4) {
155
59
  throw AcCmErrors.ILLEGAL_PARAMETERS;
156
60
  }
157
- var points = _this.toNurbsPoints(_this._controlPoints);
158
- _this._nurbsCurve = NurbsCurve.byKnotsControlPointsWeights(degree, b, points, c);
159
- // Store original data for potential reopening
160
- _this._originalControlPoints = __spreadArray([], __read(_this._controlPoints), false);
161
- _this._originalKnots = __spreadArray([], __read(_this._nurbsCurve.knots()), false);
162
- _this._originalWeights = c
163
- ? __spreadArray([], __read(c), false) : new Array(_this._controlPoints.length).fill(1.0);
61
+ _this._nurbsCurve = AcGeNurbsCurve.byKnotsControlPointsWeights(degree, b, _this._controlPoints, c);
164
62
  }
165
63
  // Apply closed state if specified
166
64
  if (_this._closed) {
167
- _this.makeClosed();
65
+ _this.buildCurve();
168
66
  }
169
67
  return _this;
170
68
  }
69
+ /**
70
+ * Build the NURBS curve using stored data
71
+ */
72
+ AcGeSpline3d.prototype.buildCurve = function () {
73
+ var degree = 3;
74
+ if (this._fitPoints && this._knotParameterization) {
75
+ // Build from fit points
76
+ if (this._closed) {
77
+ // Create closed curve from fit points
78
+ this._nurbsCurve = AcGeNurbsCurve.createClosedCurve(this._fitPoints, degree, this._knotParameterization);
79
+ }
80
+ else {
81
+ // Create open curve from fit points
82
+ var points = this.toNurbsPoints(this._fitPoints);
83
+ this._nurbsCurve = AcGeNurbsCurve.byPoints(points, degree, this._knotParameterization);
84
+ }
85
+ this._controlPoints = this._nurbsCurve.controlPoints();
86
+ }
87
+ else if (this._controlPoints) {
88
+ // Build from control points
89
+ if (this._closed) {
90
+ // Create closed curve from control points
91
+ var parameterization = this._knotParameterization || 'Chord';
92
+ this._nurbsCurve = AcGeNurbsCurve.createClosedCurve(this._controlPoints, degree, parameterization);
93
+ this._controlPoints = this._nurbsCurve.controlPoints();
94
+ }
95
+ else {
96
+ // Create open curve from control points
97
+ // Get knots and weights from the current NURBS curve
98
+ var knots = this._nurbsCurve.knots();
99
+ var weights = this._nurbsCurve.weights();
100
+ this._nurbsCurve = AcGeNurbsCurve.byKnotsControlPointsWeights(degree, knots, this._controlPoints, weights);
101
+ }
102
+ }
103
+ };
171
104
  /**
172
105
  * Set the closed property and rebuild the curve if necessary
173
106
  */
@@ -177,71 +110,7 @@ var AcGeSpline3d = /** @class */ (function (_super) {
177
110
  }
178
111
  this._closed = closed;
179
112
  this._boundingBoxNeedsUpdate = true;
180
- if (closed) {
181
- this.makeClosed();
182
- }
183
- else {
184
- this.makeOpen();
185
- }
186
- };
187
- /**
188
- * Make the spline closed by adding control points and adjusting knots
189
- */
190
- AcGeSpline3d.prototype.makeClosed = function () {
191
- var degree = this._nurbsCurve.degree();
192
- var originalControlPoints = this._nurbsCurve.controlPoints();
193
- var originalKnots = this._nurbsCurve.knots();
194
- var originalWeights = this._nurbsCurve.weights();
195
- // For a closed curve, we need to add control points at the end
196
- // that ensure the curve closes smoothly
197
- var closedControlPoints = __spreadArray([], __read(originalControlPoints), false);
198
- var closedWeights = __spreadArray([], __read(originalWeights), false);
199
- // Add control points to close the curve
200
- // For a degree 3 curve, we typically need 3 additional control points
201
- for (var i = 0; i < degree; i++) {
202
- // Use the first control point to ensure the curve closes
203
- closedControlPoints.push(__spreadArray([], __read(originalControlPoints[0]), false));
204
- closedWeights.push(originalWeights[0]);
205
- }
206
- // Create new knot vector for closed curve
207
- var closedKnots = this.createClosedKnotVector(originalKnots, degree);
208
- // Create new NURBS curve
209
- this._nurbsCurve = NurbsCurve.byKnotsControlPointsWeights(degree, closedKnots, closedControlPoints, closedWeights);
210
- this._controlPoints = this.toGePoints(closedControlPoints);
211
- };
212
- /**
213
- * Make the spline open by restoring the original curve
214
- */
215
- AcGeSpline3d.prototype.makeOpen = function () {
216
- if (!this._originalControlPoints ||
217
- !this._originalKnots ||
218
- !this._originalWeights) {
219
- throw new Error('Original curve data not available');
220
- }
221
- var degree = this._nurbsCurve.degree();
222
- var originalPoints = this.toNurbsPoints(this._originalControlPoints);
223
- // Create new NURBS curve with original data
224
- this._nurbsCurve = NurbsCurve.byKnotsControlPointsWeights(degree, this._originalKnots, originalPoints, this._originalWeights);
225
- this._controlPoints = __spreadArray([], __read(this._originalControlPoints), false);
226
- };
227
- /**
228
- * Create knot vector for closed curve
229
- */
230
- AcGeSpline3d.prototype.createClosedKnotVector = function (originalKnots, degree) {
231
- // For a closed curve, we need to create a proper knot vector
232
- // that allows the curve to close smoothly
233
- // Start with the original knots
234
- var closedKnots = __spreadArray([], __read(originalKnots), false);
235
- // For a closed curve, we need to extend the knot vector
236
- // The key is to ensure that the curve can actually close
237
- var lastKnot = originalKnots[originalKnots.length - 1];
238
- // Add knots for the additional control points
239
- // Use a spacing that ensures the curve closes properly
240
- var additionalKnots = degree;
241
- for (var i = 1; i <= additionalKnots; i++) {
242
- closedKnots.push(lastKnot + i);
243
- }
244
- return closedKnots;
113
+ this.buildCurve();
245
114
  };
246
115
  Object.defineProperty(AcGeSpline3d.prototype, "degree", {
247
116
  /**
@@ -403,16 +272,18 @@ var AcGeSpline3d = /** @class */ (function (_super) {
403
272
  return nurbsPoints;
404
273
  };
405
274
  /**
406
- * Convert input points to points in geometry engine format
407
- * @param points Input points to convert
408
- * @returns Return converted points
275
+ * Create a closed spline from fit points using AcGeNurbsCurve.createClosedCurve
276
+ * @param fitPoints - Array of fit points defining the curve
277
+ * @param parameterization - Knot parameterization type for NURBS
278
+ * @returns A closed spline
409
279
  */
410
- AcGeSpline3d.prototype.toGePoints = function (points) {
411
- var gePoints = new Array(points.length);
412
- points.forEach(function (point, index) {
413
- gePoints[index] = { x: point[0], y: point[1], z: point[2] };
414
- });
415
- return gePoints;
280
+ AcGeSpline3d.createClosedSpline = function (fitPoints, parameterization) {
281
+ if (parameterization === void 0) { parameterization = 'Uniform'; }
282
+ if (fitPoints.length < 4) {
283
+ throw new Error('At least 4 points are required for a closed spline');
284
+ }
285
+ // Create spline using the constructor with fit points and closed=true
286
+ return new AcGeSpline3d(fitPoints, parameterization, true);
416
287
  };
417
288
  return AcGeSpline3d;
418
289
  }(AcGeCurve3d));
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeSpline3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeSpline3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,6 @@ export * from './AcGeLine2d';
10
10
  export * from './AcGeLine3d';
11
11
  export * from './AcGeLoop2d';
12
12
  export * from './AcGeSpline3d';
13
+ export * from './AcGeNurbsCurve';
14
+ export * from './AcGeCatmullRomCurve3d';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA"}
@@ -10,4 +10,6 @@ export * from './AcGeLine2d';
10
10
  export * from './AcGeLine3d';
11
11
  export * from './AcGeLoop2d';
12
12
  export * from './AcGeSpline3d';
13
+ export * from './AcGeNurbsCurve';
14
+ export * from './AcGeCatmullRomCurve3d';
13
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/geometry/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA"}
@@ -0,0 +1,36 @@
1
+ import verb from 'verb-nurbs-web';
2
+ import { AcGeKnotParameterizationType } from '../geometry';
3
+ /**
4
+ * Represents the data structure for a NURBS curve including control points, weights, knots, and degree
5
+ */
6
+ export type NurbsCurveData = {
7
+ points: number[][];
8
+ weights?: number[];
9
+ knots: number[];
10
+ degree: number;
11
+ };
12
+ /**
13
+ * Main spline utility class
14
+ */
15
+ export declare class AcGeSplineUtil {
16
+ /**
17
+ * Creates a NURBS curve from fit points using the specified knot parameterization
18
+ * @param fitPoints Array of fit points in 3D space
19
+ * @param knotParameterization Type of knot parameterization ('Uniform', 'Chord', or 'SqrtChord')
20
+ * @returns A NURBS curve object or undefined if insufficient points
21
+ */
22
+ static createByFitPoints(fitPoints: number[][], knotParameterization?: AcGeKnotParameterizationType): verb.geom.NurbsCurve | undefined;
23
+ /**
24
+ * Converts closed fit points to control points for NURBS curve creation
25
+ * @param fitPoints Array of fit points defining the curve
26
+ * @param knotParameterization Type of knot parameterization
27
+ * @returns NURBS curve data with control points, weights, knots, and degree
28
+ */
29
+ static convertClosedFitPointsToControlPoints(fitPoints: number[][], knotParameterization: AcGeKnotParameterizationType): NurbsCurveData;
30
+ private static removeDuplicateEndPoint;
31
+ private static createClosedSplineInterpolation;
32
+ private static convertClosedNurbsToClamped;
33
+ }
34
+ export declare const createByFitPoints: typeof AcGeSplineUtil.createByFitPoints;
35
+ export declare const convertClosedFitPointsToControlPoints: typeof AcGeSplineUtil.convertClosedFitPointsToControlPoints;
36
+ //# sourceMappingURL=AcGeSplineUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeSplineUtil.d.ts","sourceRoot":"","sources":["../../src/util/AcGeSplineUtil.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,gBAAgB,CAAA;AAEjC,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAO1D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAikBD;;GAEG;AACH,qBAAa,cAAc;IACzB;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,MAAM,EAAE,EAAE,EACrB,oBAAoB,GAAE,4BAAwC;IAgBhE;;;;;OAKG;IACH,MAAM,CAAC,qCAAqC,CAC1C,SAAS,EAAE,MAAM,EAAE,EAAE,EACrB,oBAAoB,EAAE,4BAA4B,GACjD,cAAc;IAMjB,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAWtC,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAqC9C,OAAO,CAAC,MAAM,CAAC,2BAA2B;CAqB3C;AAGD,eAAO,MAAM,iBAAiB,yCAAmC,CAAA;AACjE,eAAO,MAAM,qCAAqC,6DAAuD,CAAA"}