@mlightcad/geometry-engine 1.0.7 → 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 +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"}
@@ -0,0 +1,491 @@
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
+ import verb from 'verb-nurbs-web';
18
+ // Constants
19
+ var SPLINE_DEGREE = 3;
20
+ var MIN_FIT_POINTS_FOR_SPLINE = 3;
21
+ var CLOSED_SPLINE_EXTRA_CONTROL_POINTS = 3;
22
+ /**
23
+ * Utility class for NURBS basis function calculations
24
+ */
25
+ var NurbsBasisCalculator = /** @class */ (function () {
26
+ function NurbsBasisCalculator() {
27
+ }
28
+ /**
29
+ * Evaluates a degree 3 NURBS basis function at a given parameter value
30
+ */
31
+ NurbsBasisCalculator.evaluateDegree3 = function (knotVector, knotCount, parameterValue, controlPointIndex) {
32
+ var interval = this.findKnotInterval(knotVector, knotCount, parameterValue);
33
+ var knots = this.extractKnotValues(knotVector, interval.start);
34
+ return this.applyDeBoorsAlgorithm(parameterValue, controlPointIndex, interval.start, knots);
35
+ };
36
+ NurbsBasisCalculator.findKnotInterval = function (knotVector, knotCount, parameterValue) {
37
+ var knotIntervalStart = 0;
38
+ var knotIntervalEnd = knotCount;
39
+ while (knotIntervalEnd > knotIntervalStart + 1) {
40
+ var middleIndex = (0.5 * (knotIntervalEnd + knotIntervalStart)) | 0;
41
+ if (knotVector[middleIndex] > parameterValue) {
42
+ knotIntervalEnd = middleIndex;
43
+ }
44
+ else {
45
+ knotIntervalStart = middleIndex;
46
+ }
47
+ }
48
+ return { start: knotIntervalStart };
49
+ };
50
+ NurbsBasisCalculator.extractKnotValues = function (knotVector, intervalStart) {
51
+ return [
52
+ knotVector[intervalStart - 2], // knotMinus2
53
+ knotVector[intervalStart - 1], // knotMinus1
54
+ knotVector[intervalStart], // knotZero
55
+ knotVector[intervalStart + 1], // knotPlus1
56
+ knotVector[intervalStart + 2], // knotPlus2
57
+ knotVector[intervalStart + 3] // knotPlus3
58
+ ];
59
+ };
60
+ NurbsBasisCalculator.applyDeBoorsAlgorithm = function (parameterValue, controlPointIndex, intervalStart, knots) {
61
+ var _a = __read(knots, 6), knotMinus2 = _a[0], knotMinus1 = _a[1], knotZero = _a[2], knotPlus1 = _a[3], knotPlus2 = _a[4], knotPlus3 = _a[5];
62
+ // Initialize basis function values
63
+ var basisValueMinus3 = intervalStart - 3 === controlPointIndex ? 1 : 0;
64
+ var basisValueMinus2 = intervalStart - 2 === controlPointIndex ? 1 : 0;
65
+ var basisValueMinus1 = intervalStart - 1 === controlPointIndex ? 1 : 0;
66
+ var basisValueZero = intervalStart === controlPointIndex ? 1 : 0;
67
+ // De Boor's algorithm for degree 3 evaluation - Step 1
68
+ var alpha = (parameterValue - knotZero) / (knotPlus3 - knotZero);
69
+ var beta = 1 - alpha;
70
+ basisValueZero = beta * basisValueMinus1 + alpha * basisValueZero;
71
+ alpha = (parameterValue - knotMinus1) / (knotPlus2 - knotMinus1);
72
+ beta = 1 - alpha;
73
+ basisValueMinus1 = beta * basisValueMinus2 + alpha * basisValueMinus1;
74
+ alpha = (parameterValue - knotMinus2) / (knotPlus1 - knotMinus2);
75
+ beta = 1 - alpha;
76
+ basisValueMinus2 = beta * basisValueMinus3 + alpha * basisValueMinus2;
77
+ // De Boor's algorithm for degree 3 evaluation - Step 2
78
+ alpha = (parameterValue - knotZero) / (knotPlus2 - knotZero);
79
+ beta = 1 - alpha;
80
+ basisValueZero = beta * basisValueMinus1 + alpha * basisValueZero;
81
+ alpha = (parameterValue - knotMinus1) / (knotPlus1 - knotMinus1);
82
+ beta = 1 - alpha;
83
+ basisValueMinus1 = beta * basisValueMinus2 + alpha * basisValueMinus1;
84
+ // De Boor's algorithm for degree 3 evaluation - Step 3
85
+ alpha = (parameterValue - knotZero) / (knotPlus1 - knotZero);
86
+ beta = 1 - alpha;
87
+ basisValueZero = beta * basisValueMinus1 + alpha * basisValueZero;
88
+ return basisValueZero;
89
+ };
90
+ return NurbsBasisCalculator;
91
+ }());
92
+ /**
93
+ * Utility class for knot vector generation
94
+ */
95
+ var KnotVectorGenerator = /** @class */ (function () {
96
+ function KnotVectorGenerator() {
97
+ }
98
+ /**
99
+ * Generates a knot vector based on the specified parameterization type
100
+ */
101
+ KnotVectorGenerator.generate = function (fitPoints, knotParameterization, knotVectorSize) {
102
+ switch (knotParameterization) {
103
+ case 'Uniform':
104
+ return this.generateUniformKnotVector(knotVectorSize);
105
+ case 'Chord':
106
+ return this.generateChordKnotVector(fitPoints, knotVectorSize);
107
+ case 'SqrtChord':
108
+ return this.generateSqrtChordKnotVector(fitPoints, knotVectorSize);
109
+ default:
110
+ throw new Error("Unsupported knot parameterization: ".concat(knotParameterization));
111
+ }
112
+ };
113
+ KnotVectorGenerator.generateUniformKnotVector = function (knotVectorSize) {
114
+ var knotVector = new Array(knotVectorSize);
115
+ for (var i = 0; i < knotVectorSize; i++) {
116
+ knotVector[i] = i;
117
+ }
118
+ return knotVector;
119
+ };
120
+ KnotVectorGenerator.generateChordKnotVector = function (fitPoints, knotVectorSize) {
121
+ var knotVector = new Array(knotVectorSize);
122
+ var fitPointCount = fitPoints.length;
123
+ var cumulativeDistance = 0;
124
+ knotVector[0] = 0;
125
+ for (var i = 1; i < knotVectorSize; i++) {
126
+ var point1 = fitPoints[(i - 4 + fitPointCount) % fitPointCount];
127
+ var point2 = fitPoints[(i - 3 + fitPointCount) % fitPointCount];
128
+ var segmentLength = this.calculateDistance(point1, point2);
129
+ cumulativeDistance += segmentLength;
130
+ knotVector[i] = cumulativeDistance;
131
+ }
132
+ return knotVector;
133
+ };
134
+ KnotVectorGenerator.generateSqrtChordKnotVector = function (fitPoints, knotVectorSize) {
135
+ var knotVector = new Array(knotVectorSize);
136
+ var fitPointCount = fitPoints.length;
137
+ var cumulativeDistance = 0;
138
+ knotVector[0] = 0;
139
+ for (var i = 1; i < knotVectorSize; i++) {
140
+ var point1 = fitPoints[(i - 4 + fitPointCount) % fitPointCount];
141
+ var point2 = fitPoints[(i - 3 + fitPointCount) % fitPointCount];
142
+ var segmentLength = Math.sqrt(this.calculateDistance(point1, point2));
143
+ cumulativeDistance += segmentLength;
144
+ knotVector[i] = cumulativeDistance;
145
+ }
146
+ return knotVector;
147
+ };
148
+ KnotVectorGenerator.calculateDistance = function (point1, point2) {
149
+ return Math.sqrt(Math.pow(point2[0] - point1[0], 2) + Math.pow(point2[1] - point1[1], 2));
150
+ };
151
+ return KnotVectorGenerator;
152
+ }());
153
+ /**
154
+ * Utility class for basis matrix operations
155
+ */
156
+ var BasisMatrixBuilder = /** @class */ (function () {
157
+ function BasisMatrixBuilder() {
158
+ }
159
+ /**
160
+ * Builds the basis matrix for spline interpolation
161
+ */
162
+ BasisMatrixBuilder.buildBasisMatrix = function (fitPoints, knotVector, parameterValues) {
163
+ var fitPointCount = fitPoints.length;
164
+ var controlPointCount = fitPointCount + CLOSED_SPLINE_EXTRA_CONTROL_POINTS;
165
+ var basisMatrix = new Array(fitPointCount);
166
+ for (var i = 0; i < fitPointCount; i++) {
167
+ basisMatrix[i] = new Array(controlPointCount);
168
+ for (var j = 0; j < controlPointCount; j++) {
169
+ basisMatrix[i][j] = NurbsBasisCalculator.evaluateDegree3(knotVector, controlPointCount, parameterValues[i], j);
170
+ }
171
+ }
172
+ return basisMatrix;
173
+ };
174
+ /**
175
+ * Reduces the basis matrix for closed spline interpolation
176
+ */
177
+ BasisMatrixBuilder.reduceForClosedSpline = function (basisMatrix, fitPointCount) {
178
+ var reducedBasisMatrix = new Array(fitPointCount);
179
+ for (var i = 0; i < fitPointCount; i++) {
180
+ reducedBasisMatrix[i] = new Array(fitPointCount);
181
+ reducedBasisMatrix[i][0] = basisMatrix[i][0] + basisMatrix[i][fitPointCount];
182
+ reducedBasisMatrix[i][1] = basisMatrix[i][1] + basisMatrix[i][fitPointCount + 1];
183
+ reducedBasisMatrix[i][2] = basisMatrix[i][2] + basisMatrix[i][fitPointCount + 2];
184
+ for (var j = 3; j < fitPointCount; j++) {
185
+ reducedBasisMatrix[i][j] = basisMatrix[i][j];
186
+ }
187
+ }
188
+ return reducedBasisMatrix;
189
+ };
190
+ return BasisMatrixBuilder;
191
+ }());
192
+ /**
193
+ * Utility class for control point calculations
194
+ */
195
+ var ControlPointCalculator = /** @class */ (function () {
196
+ function ControlPointCalculator() {
197
+ }
198
+ /**
199
+ * Solves for control points using the reduced basis matrix
200
+ */
201
+ ControlPointCalculator.solveControlPoints = function (reducedBasisMatrix, fitPoints) {
202
+ var dimensions = fitPoints[0].length;
203
+ var fitPointCount = fitPoints.length;
204
+ var solvedControlPoints = [];
205
+ // Create dimension matrices from fit points
206
+ for (var i = 0; i < dimensions; i++) {
207
+ var dimensionMatrix = new Array(fitPointCount);
208
+ for (var j = 0; j < fitPointCount; j++) {
209
+ dimensionMatrix[j] = fitPoints[j][i];
210
+ }
211
+ // @ts-expect-error - verb library typing issue
212
+ solvedControlPoints[i] = verb.core.Mat.solve(reducedBasisMatrix, dimensionMatrix);
213
+ }
214
+ return solvedControlPoints;
215
+ };
216
+ /**
217
+ * Constructs control points from solved values
218
+ */
219
+ ControlPointCalculator.constructControlPoints = function (solvedControlPoints, fitPointCount, dimensions) {
220
+ var controlPoints = new Array(fitPointCount);
221
+ // Construct control points from solved values
222
+ for (var i = 0; i < fitPointCount; i++) {
223
+ controlPoints[i] = dimensions >= 3
224
+ ? [solvedControlPoints[0][i], solvedControlPoints[1][i], solvedControlPoints[2][i]]
225
+ : [solvedControlPoints[0][i], solvedControlPoints[1][i]];
226
+ }
227
+ // Add duplicate control points for closed spline
228
+ for (var i = 0; i < CLOSED_SPLINE_EXTRA_CONTROL_POINTS; i++) {
229
+ controlPoints[i + fitPointCount] = dimensions >= 3
230
+ ? [solvedControlPoints[0][i], solvedControlPoints[1][i], solvedControlPoints[2][i]]
231
+ : [solvedControlPoints[0][i], solvedControlPoints[1][i]];
232
+ }
233
+ return controlPoints;
234
+ };
235
+ /**
236
+ * Creates uniform weights array
237
+ */
238
+ ControlPointCalculator.createUniformWeights = function (controlPointCount) {
239
+ return new Array(controlPointCount).fill(1);
240
+ };
241
+ return ControlPointCalculator;
242
+ }());
243
+ /**
244
+ * Utility class for NURBS curve subdivision
245
+ */
246
+ var NurbsSubdivider = /** @class */ (function () {
247
+ function NurbsSubdivider() {
248
+ }
249
+ /**
250
+ * Subdivides a degree 3 NURBS curve at a given parameter value
251
+ */
252
+ NurbsSubdivider.subdivideDegree3 = function (controlPoints, knotVector, subdivisionParameter) {
253
+ var interval = this.findKnotInterval(knotVector, controlPoints.length, subdivisionParameter);
254
+ var knots = this.extractKnotValues(knotVector, interval.start);
255
+ var controlPointCoords = this.extractControlPointCoordinates(controlPoints, interval.start);
256
+ var subdividedPoints = this.applyDeBoorsSubdivision(subdivisionParameter, knots, controlPointCoords);
257
+ return this.constructSubdividedCurves(controlPoints, knotVector, interval.start, subdivisionParameter, subdividedPoints);
258
+ };
259
+ NurbsSubdivider.findKnotInterval = function (knotVector, controlPointCount, subdivisionParameter) {
260
+ var knotIntervalEnd = controlPointCount;
261
+ var knotIntervalStart = 0;
262
+ while (knotIntervalEnd > knotIntervalStart + 1) {
263
+ var middleIndex = (0.5 * (knotIntervalEnd + knotIntervalStart)) | 0;
264
+ if (knotVector[middleIndex] > subdivisionParameter) {
265
+ knotIntervalEnd = middleIndex;
266
+ }
267
+ else {
268
+ knotIntervalStart = middleIndex;
269
+ }
270
+ }
271
+ return { start: knotIntervalStart };
272
+ };
273
+ NurbsSubdivider.extractKnotValues = function (knotVector, intervalStart) {
274
+ return [
275
+ knotVector[intervalStart - 2], // knotMinus2
276
+ knotVector[intervalStart - 1], // knotMinus1
277
+ knotVector[intervalStart], // knotZero
278
+ knotVector[intervalStart + 1], // knotPlus1
279
+ knotVector[intervalStart + 2], // knotPlus2
280
+ knotVector[intervalStart + 3] // knotPlus3
281
+ ];
282
+ };
283
+ NurbsSubdivider.extractControlPointCoordinates = function (controlPoints, intervalStart) {
284
+ var dimensions = controlPoints[0].length;
285
+ return [
286
+ {
287
+ x: controlPoints[intervalStart - 3][0],
288
+ y: controlPoints[intervalStart - 3][1],
289
+ z: dimensions >= 3 ? controlPoints[intervalStart - 3][2] : 0
290
+ },
291
+ {
292
+ x: controlPoints[intervalStart - 2][0],
293
+ y: controlPoints[intervalStart - 2][1],
294
+ z: dimensions >= 3 ? controlPoints[intervalStart - 2][2] : 0
295
+ },
296
+ {
297
+ x: controlPoints[intervalStart - 1][0],
298
+ y: controlPoints[intervalStart - 1][1],
299
+ z: dimensions >= 3 ? controlPoints[intervalStart - 1][2] : 0
300
+ },
301
+ {
302
+ x: controlPoints[intervalStart][0],
303
+ y: controlPoints[intervalStart][1],
304
+ z: dimensions >= 3 ? controlPoints[intervalStart][2] : 0
305
+ }
306
+ ];
307
+ };
308
+ NurbsSubdivider.applyDeBoorsSubdivision = function (subdivisionParameter, knots, controlPoints) {
309
+ var _a = __read(knots, 6), knotMinus2 = _a[0], knotMinus1 = _a[1], knotZero = _a[2], knotPlus1 = _a[3], knotPlus2 = _a[4], knotPlus3 = _a[5];
310
+ var _b = __read(controlPoints, 4), cpMinus3 = _b[0], cpMinus2 = _b[1], cpMinus1 = _b[2], cpZero = _b[3];
311
+ // De Boor's algorithm for degree 3 subdivision - Step 1
312
+ var alphaZero_1 = (subdivisionParameter - knotZero) / (knotPlus3 - knotZero);
313
+ var betaZero_1 = 1 - alphaZero_1;
314
+ var cpZero_1 = this.interpolatePoint(cpMinus1, cpZero, alphaZero_1, betaZero_1);
315
+ var alphaMinus1_1 = (subdivisionParameter - knotMinus1) / (knotPlus2 - knotMinus1);
316
+ var betaMinus1_1 = 1 - alphaMinus1_1;
317
+ var cpMinus1_1 = this.interpolatePoint(cpMinus2, cpMinus1, alphaMinus1_1, betaMinus1_1);
318
+ var alphaMinus2_1 = (subdivisionParameter - knotMinus2) / (knotPlus1 - knotMinus2);
319
+ var betaMinus2_1 = 1 - alphaMinus2_1;
320
+ var cpMinus2_1 = this.interpolatePoint(cpMinus3, cpMinus2, alphaMinus2_1, betaMinus2_1);
321
+ // De Boor's algorithm for degree 3 subdivision - Step 2
322
+ var alphaZero_2 = (subdivisionParameter - knotZero) / (knotPlus2 - knotZero);
323
+ var betaZero_2 = 1 - alphaZero_2;
324
+ var cpZero_2 = this.interpolatePoint(cpMinus1_1, cpZero_1, alphaZero_2, betaZero_2);
325
+ var alphaMinus1_2 = (subdivisionParameter - knotMinus1) / (knotPlus1 - knotMinus1);
326
+ var betaMinus1_2 = 1 - alphaMinus1_2;
327
+ var cpMinus1_2 = this.interpolatePoint(cpMinus2_1, cpMinus1_1, alphaMinus1_2, betaMinus1_2);
328
+ // De Boor's algorithm for degree 3 subdivision - Step 3
329
+ var alphaZero_3 = (subdivisionParameter - knotZero) / (knotPlus1 - knotZero);
330
+ var betaZero_3 = 1 - alphaZero_3;
331
+ var cpZero_3 = this.interpolatePoint(cpMinus1_2, cpZero_2, alphaZero_3, betaZero_3);
332
+ return [cpMinus2_1, cpMinus1_2, cpZero_3, cpZero_2, cpZero_1];
333
+ };
334
+ NurbsSubdivider.interpolatePoint = function (p1, p2, alpha, beta) {
335
+ return {
336
+ x: beta * p1.x + alpha * p2.x,
337
+ y: beta * p1.y + alpha * p2.y,
338
+ z: beta * p1.z + alpha * p2.z
339
+ };
340
+ };
341
+ NurbsSubdivider.constructSubdividedCurves = function (controlPoints, knotVector, intervalStart, subdivisionParameter, subdividedPoints) {
342
+ var dimensions = controlPoints[0].length;
343
+ var _a = __read(subdividedPoints, 5), cpMinus2_1 = _a[0], cpMinus1_2 = _a[1], cpZero_3 = _a[2], cpZero_2 = _a[3], cpZero_1 = _a[4];
344
+ // Construct first subdivided curve (before subdivision point)
345
+ var firstCurveControlPoints = this.buildFirstCurveControlPoints(controlPoints, intervalStart, [cpMinus2_1, cpMinus1_2, cpZero_3], dimensions);
346
+ var firstCurveKnots = this.buildFirstCurveKnots(knotVector, intervalStart, subdivisionParameter);
347
+ // Construct second subdivided curve (after subdivision point)
348
+ var secondCurveControlPoints = this.buildSecondCurveControlPoints(controlPoints, intervalStart, [cpZero_3, cpZero_2, cpZero_1], dimensions);
349
+ var secondCurveKnots = this.buildSecondCurveKnots(knotVector, intervalStart, subdivisionParameter);
350
+ return [
351
+ {
352
+ points: firstCurveControlPoints,
353
+ knots: firstCurveKnots,
354
+ degree: SPLINE_DEGREE
355
+ },
356
+ {
357
+ points: secondCurveControlPoints,
358
+ knots: secondCurveKnots,
359
+ degree: SPLINE_DEGREE
360
+ }
361
+ ];
362
+ };
363
+ NurbsSubdivider.buildFirstCurveControlPoints = function (controlPoints, intervalStart, subdividedPoints, dimensions) {
364
+ var firstCurveControlPoints = [];
365
+ // Add control points before subdivision
366
+ for (var i = 0; i < intervalStart - 2; i++) {
367
+ firstCurveControlPoints[i] = controlPoints[i];
368
+ }
369
+ // Add subdivided control points
370
+ subdividedPoints.forEach(function (point) {
371
+ firstCurveControlPoints.push(dimensions >= 3 ? [point.x, point.y, point.z] : [point.x, point.y]);
372
+ });
373
+ return firstCurveControlPoints;
374
+ };
375
+ NurbsSubdivider.buildFirstCurveKnots = function (knotVector, intervalStart, subdivisionParameter) {
376
+ var firstCurveKnots = [];
377
+ // Add knots before subdivision
378
+ for (var i = 0; i < intervalStart + 1; i++) {
379
+ firstCurveKnots[i] = knotVector[i];
380
+ }
381
+ // Add subdivision parameter knots
382
+ firstCurveKnots.push(subdivisionParameter, subdivisionParameter, subdivisionParameter, subdivisionParameter);
383
+ return firstCurveKnots;
384
+ };
385
+ NurbsSubdivider.buildSecondCurveControlPoints = function (controlPoints, intervalStart, subdividedPoints, dimensions) {
386
+ var secondCurveControlPoints = [];
387
+ // Add subdivided control points
388
+ subdividedPoints.forEach(function (point) {
389
+ secondCurveControlPoints.push(dimensions >= 3 ? [point.x, point.y, point.z] : [point.x, point.y]);
390
+ });
391
+ // Add remaining control points
392
+ for (var i = intervalStart; i < controlPoints.length; i++) {
393
+ secondCurveControlPoints[i + 3 - intervalStart] = controlPoints[i];
394
+ }
395
+ return secondCurveControlPoints;
396
+ };
397
+ NurbsSubdivider.buildSecondCurveKnots = function (knotVector, intervalStart, subdivisionParameter) {
398
+ var secondCurveKnots = [
399
+ subdivisionParameter,
400
+ subdivisionParameter,
401
+ subdivisionParameter,
402
+ subdivisionParameter
403
+ ];
404
+ for (var i = intervalStart + 1; i < knotVector.length; i++) {
405
+ secondCurveKnots[i + 3 - intervalStart] = knotVector[i];
406
+ }
407
+ return secondCurveKnots;
408
+ };
409
+ return NurbsSubdivider;
410
+ }());
411
+ /**
412
+ * Main spline utility class
413
+ */
414
+ var AcGeSplineUtil = /** @class */ (function () {
415
+ function AcGeSplineUtil() {
416
+ }
417
+ /**
418
+ * Creates a NURBS curve from fit points using the specified knot parameterization
419
+ * @param fitPoints Array of fit points in 3D space
420
+ * @param knotParameterization Type of knot parameterization ('Uniform', 'Chord', or 'SqrtChord')
421
+ * @returns A NURBS curve object or undefined if insufficient points
422
+ */
423
+ AcGeSplineUtil.createByFitPoints = function (fitPoints, knotParameterization) {
424
+ if (knotParameterization === void 0) { knotParameterization = 'Uniform'; }
425
+ if (fitPoints.length < MIN_FIT_POINTS_FOR_SPLINE) {
426
+ return undefined;
427
+ }
428
+ var closedSplineData = this.convertClosedFitPointsToControlPoints(fitPoints, knotParameterization);
429
+ var nurbsCurve = verb.geom.NurbsCurve.byKnotsControlPointsWeights(closedSplineData.degree, closedSplineData.knots, closedSplineData.points, closedSplineData.weights);
430
+ return nurbsCurve;
431
+ };
432
+ /**
433
+ * Converts closed fit points to control points for NURBS curve creation
434
+ * @param fitPoints Array of fit points defining the curve
435
+ * @param knotParameterization Type of knot parameterization
436
+ * @returns NURBS curve data with control points, weights, knots, and degree
437
+ */
438
+ AcGeSplineUtil.convertClosedFitPointsToControlPoints = function (fitPoints, knotParameterization) {
439
+ var cleanedFitPoints = this.removeDuplicateEndPoint(fitPoints);
440
+ var closedSplineData = this.createClosedSplineInterpolation(cleanedFitPoints, knotParameterization);
441
+ return this.convertClosedNurbsToClamped(closedSplineData);
442
+ };
443
+ AcGeSplineUtil.removeDuplicateEndPoint = function (fitPoints) {
444
+ var startPoint = fitPoints[0];
445
+ var endPoint = fitPoints[fitPoints.length - 1];
446
+ if (startPoint[0] === endPoint[0] && startPoint[1] === endPoint[1]) {
447
+ return fitPoints.slice(0, -1);
448
+ }
449
+ return fitPoints;
450
+ };
451
+ AcGeSplineUtil.createClosedSplineInterpolation = function (fitPoints, knotParameterization) {
452
+ var fitPointCount = fitPoints.length;
453
+ var controlPointCount = fitPointCount + CLOSED_SPLINE_EXTRA_CONTROL_POINTS;
454
+ var knotVectorSize = fitPointCount + CLOSED_SPLINE_EXTRA_CONTROL_POINTS + SPLINE_DEGREE + 1;
455
+ // Generate knot vector
456
+ var knotVector = KnotVectorGenerator.generate(fitPoints, knotParameterization, knotVectorSize);
457
+ // Extract parameter values for fit points
458
+ var parameterValues = knotVector.slice(SPLINE_DEGREE, SPLINE_DEGREE + fitPointCount);
459
+ // Build basis matrix
460
+ var basisMatrix = BasisMatrixBuilder.buildBasisMatrix(fitPoints, knotVector, parameterValues);
461
+ var reducedBasisMatrix = BasisMatrixBuilder.reduceForClosedSpline(basisMatrix, fitPointCount);
462
+ // Solve for control points
463
+ var solvedControlPoints = ControlPointCalculator.solveControlPoints(reducedBasisMatrix, fitPoints);
464
+ var controlPoints = ControlPointCalculator.constructControlPoints(solvedControlPoints, fitPointCount, fitPoints[0].length);
465
+ // Create weights
466
+ var weights = ControlPointCalculator.createUniformWeights(controlPointCount);
467
+ return {
468
+ points: controlPoints,
469
+ weights: weights,
470
+ knots: knotVector,
471
+ degree: SPLINE_DEGREE
472
+ };
473
+ };
474
+ AcGeSplineUtil.convertClosedNurbsToClamped = function (closedSplineData) {
475
+ var splineDegree = closedSplineData.degree;
476
+ var startParameter = closedSplineData.knots[splineDegree];
477
+ var endParameter = closedSplineData.knots[closedSplineData.knots.length - splineDegree - 1];
478
+ if (splineDegree === SPLINE_DEGREE) {
479
+ var subdividedCurves = NurbsSubdivider.subdivideDegree3(closedSplineData.points, closedSplineData.knots, startParameter);
480
+ subdividedCurves = NurbsSubdivider.subdivideDegree3(subdividedCurves[1].points, subdividedCurves[1].knots, endParameter);
481
+ return subdividedCurves[0];
482
+ }
483
+ return closedSplineData;
484
+ };
485
+ return AcGeSplineUtil;
486
+ }());
487
+ export { AcGeSplineUtil };
488
+ // Export the main function for backward compatibility
489
+ export var createByFitPoints = AcGeSplineUtil.createByFitPoints;
490
+ export var convertClosedFitPointsToControlPoints = AcGeSplineUtil.convertClosedFitPointsToControlPoints;
491
+ //# sourceMappingURL=AcGeSplineUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeSplineUtil.js","sourceRoot":"","sources":["../../src/util/AcGeSplineUtil.ts"],"names":[],"mappings":"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"}