@mlightcad/geometry-engine 3.4.7 → 3.4.9

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.
@@ -25,16 +25,8 @@ export declare class AcGeSpline3d extends AcGeCurve3d {
25
25
  */
26
26
  get degree(): number;
27
27
  get knotParameterization(): AcGeKnotParameterizationType | undefined;
28
- get controlPoints(): {
29
- x: number;
30
- y: number;
31
- z: number;
32
- }[];
33
- get fitPoints(): {
34
- x: number;
35
- y: number;
36
- z: number;
37
- }[] | undefined;
28
+ get controlPoints(): import("../math").AcGeVector3dLike[];
29
+ get fitPoints(): import("../math").AcGeVector3dLike[] | undefined;
38
30
  get knots(): number[];
39
31
  get weights(): number[];
40
32
  /**
@@ -133,5 +125,88 @@ export declare class AcGeSpline3d extends AcGeCurve3d {
133
125
  * @returns A closed spline
134
126
  */
135
127
  static createClosedSpline(fitPoints: AcGePoint3dLike[], parameterization?: AcGeKnotParameterizationType, degree?: number): AcGeSpline3d;
128
+ /**
129
+ * Creates a 3D spline geometry from control points, knots, and optional weights.
130
+ *
131
+ * This factory is intended for robust deserialization: it normalizes degree and
132
+ * weights from imperfect source data and returns `null` instead of throwing when
133
+ * the NURBS definition is invalid.
134
+ *
135
+ * @param controlPoints - Control vertices defining the curve shape
136
+ * @param knots - Full knot vector for the spline
137
+ * @param weights - Optional per-control-point weights; ignored when the array length
138
+ * does not match `controlPoints.length`
139
+ * @param declaredDegree - Degree from the source file; when less than 1, derived from
140
+ * `knots.length - controlPoints.length - 1`, then clamped to `[1, controlPoints.length - 1]`
141
+ * @param closed - Whether the spline forms a closed loop
142
+ * @returns A spline geometry, or `null` if construction fails
143
+ */
144
+ static fromControlPoints(controlPoints: AcGePoint3dLike[], knots: number[], weights: number[] | undefined, declaredDegree: number | undefined, closed: boolean): AcGeSpline3d | null;
145
+ /**
146
+ * Creates a 3D spline geometry that interpolates fit points.
147
+ *
148
+ * Knots and control points are generated from the fit data. Non-zero start/end
149
+ * tangents constrain the curve ends; zero-length tangents are ignored. Degree is
150
+ * clamped so that `fitPoints.length + tangentCount >= degree + 1`.
151
+ *
152
+ * @param fitPoints - Points the spline should pass through
153
+ * @param knotParam - Knot parameterization (`'Uniform'`, `'Chord'`, or `'SqrtChord'`)
154
+ * @param declaredDegree - Requested degree from the source file; defaults to 3 when
155
+ * missing or less than 1, then clamped to fit the available fit/tangent data
156
+ * @param closed - Whether the spline forms a closed loop
157
+ * @param startTangent - Optional start tangent direction; ignored when zero-length
158
+ * @param endTangent - Optional end tangent direction; ignored when zero-length
159
+ * @returns A spline geometry, or `null` if construction fails
160
+ */
161
+ static fromFitPoints(fitPoints: AcGePoint3dLike[], knotParam: AcGeKnotParameterizationType, declaredDegree: number | undefined, closed: boolean, startTangent?: AcGePoint3dLike | null, endTangent?: AcGePoint3dLike | null): AcGeSpline3d | null;
162
+ /**
163
+ * Creates a 3D spline geometry from parsed DWG/DXF spline-edge data.
164
+ *
165
+ * Used for hatch boundary paths, proxy-graphics edges, and similar structures where
166
+ * spline data is embedded as a lightweight edge record rather than a full SPLINE
167
+ * entity. Control-point data is preferred; fit data is used when control points are
168
+ * absent. Fit-point edges always use `'Uniform'` knot parameterization and are
169
+ * treated as open curves.
170
+ *
171
+ * @param spline - Parsed spline-edge payload from a DWG/DXF reader
172
+ * @param spline.numberOfControlPoints - Count of control points in the edge record
173
+ * @param spline.numberOfKnots - Count of knots in the edge record
174
+ * @param spline.numberOfFitData - Count of fit points in the edge record
175
+ * @param spline.degree - Optional declared degree
176
+ * @param spline.controlPoints - Control vertices, optionally with per-point `weight`
177
+ * @param spline.knots - Knot values for the control-point representation
178
+ * @param spline.fitDatum - Fit points when the edge is defined by fit data
179
+ * @param spline.startTangent - Optional start tangent for fit-data edges
180
+ * @param spline.endTangent - Optional end tangent for fit-data edges
181
+ * @returns A spline geometry, or `null` when neither representation can be built
182
+ */
183
+ static fromDwgSplineEdge(spline: {
184
+ numberOfControlPoints: number;
185
+ numberOfKnots: number;
186
+ numberOfFitData: number;
187
+ degree?: number;
188
+ controlPoints: Array<{
189
+ x: number;
190
+ y: number;
191
+ z?: number;
192
+ weight?: number | null;
193
+ }>;
194
+ knots: number[];
195
+ fitDatum: Array<{
196
+ x: number;
197
+ y: number;
198
+ z?: number;
199
+ }>;
200
+ startTangent?: {
201
+ x: number;
202
+ y: number;
203
+ z?: number;
204
+ } | null;
205
+ endTangent?: {
206
+ x: number;
207
+ y: number;
208
+ z?: number;
209
+ } | null;
210
+ }): AcGeSpline3d | null;
136
211
  }
137
212
  //# sourceMappingURL=AcGeSpline3d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeSpline3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB,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;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,WAAW,CAAC,CAAe;gBAGjC,aAAa,EAAE,eAAe,EAAE,EAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO;gBAGhB,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,4BAA4B,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,aAAa,EAC5B,UAAU,CAAC,EAAE,aAAa;IAmJ5B;;OAEG;IACH,OAAO,CAAC,UAAU;IA4DlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,IAAI,MAAM,WAET;IAED,IAAI,oBAAoB,6CAEvB;IAED,IAAI,aAAa;;;;QAMhB;IAED,IAAI,SAAS;;;;oBAMZ;IAED,IAAI,KAAK,aAER;IAED,IAAI,OAAO,aAEV;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,WAAW,CAM5B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAM1B;IAED;;OAEG;IACH,IAAI,MAAM,WAET;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,SAAK,GAAG,WAAW;IAK/D;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW;IAKlC;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAU7C;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAM/B;;;OAGG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG;QACzC,MAAM,EAAE,WAAW,EAAE,CAAA;QACrB,QAAQ,EAAE,WAAW,EAAE,CAAA;KACxB;IAID;;;;;OAKG;IACH,SAAS,CAAC,SAAS,GAAE,MAAY,GAAG,WAAW,EAAE;IAsBjD,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAmBnD;;OAEG;IACH,oBAAoB;IAKpB,IAAI,MAAM,IAGQ,OAAO,CADxB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY;IAqC9B;;OAEG;IACH,KAAK;IAyCL;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IAIpB;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,SAAS,EAAE,eAAe,EAAE,EAC5B,gBAAgB,GAAE,4BAAwC,EAC1D,MAAM,GAAE,MAAU,GACjB,YAAY;CAUhB"}
1
+ {"version":3,"file":"AcGeSpline3d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSpline3d.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,4BAA4B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAQ/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;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,WAAW,CAAC,CAAe;gBAGjC,aAAa,EAAE,eAAe,EAAE,EAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO;gBAGhB,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,4BAA4B,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,aAAa,EAC5B,UAAU,CAAC,EAAE,aAAa;IAmJ5B;;OAEG;IACH,OAAO,CAAC,UAAU;IA4DlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,IAAI,MAAM,WAET;IAED,IAAI,oBAAoB,6CAEvB;IAED,IAAI,aAAa,yCAEhB;IAED,IAAI,SAAS,qDAEZ;IAED,IAAI,KAAK,aAER;IAED,IAAI,OAAO,aAEV;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,WAAW,CAM5B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,WAAW,CAM1B;IAED;;OAEG;IACH,IAAI,MAAM,WAET;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,SAAK,GAAG,WAAW;IAK/D;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW;IAKlC;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAU7C;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAM/B;;;OAGG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG;QACzC,MAAM,EAAE,WAAW,EAAE,CAAA;QACrB,QAAQ,EAAE,WAAW,EAAE,CAAA;KACxB;IAID;;;;;OAKG;IACH,SAAS,CAAC,SAAS,GAAE,MAAY,GAAG,WAAW,EAAE;IAsBjD,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAmBnD;;OAEG;IACH,oBAAoB;IAKpB,IAAI,MAAM,IAGQ,OAAO,CADxB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY;IAqC9B;;OAEG;IACH,KAAK;IAqBL;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IAIpB;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,SAAS,EAAE,eAAe,EAAE,EAC5B,gBAAgB,GAAE,4BAAwC,EAC1D,MAAM,GAAE,MAAU,GACjB,YAAY;IAWf;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,iBAAiB,CACtB,aAAa,EAAE,eAAe,EAAE,EAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,MAAM,EAAE,OAAO,GACd,YAAY,GAAG,IAAI;IA2BtB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,aAAa,CAClB,SAAS,EAAE,eAAe,EAAE,EAC5B,SAAS,EAAE,4BAA4B,EACvC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,MAAM,EAAE,OAAO,EACf,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,EACrC,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,GAClC,YAAY,GAAG,IAAI;IAoCtB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;QAC/B,qBAAqB,EAAE,MAAM,CAAA;QAC7B,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;QACvB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,KAAK,CAAC;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAA;QAClF,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,QAAQ,EAAE,KAAK,CAAC;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACrD,YAAY,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;QAC1D,UAAU,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KACzD,GAAG,YAAY,GAAG,IAAI;CA+BxB"}
@@ -40,9 +40,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
40
40
  };
41
41
  import { AcCmErrors } from '@mlightcad/common';
42
42
  import { AcGeBox3d, AcGePoint3d } from '../math';
43
+ import { AcGeGeometryUtil } from '../util/AcGeGeometryUtil';
43
44
  import { acGeClosedPolygonArea3d } from '../util/AcGePolygonAreaUtil';
44
45
  import { AcGeCurve3d } from './AcGeCurve3d';
45
46
  import { AcGeNurbsCurve } from './AcGeNurbsCurve';
47
+ import { isNonZeroDirection, normalizeSplineWeights, resolveControlPointSplineDegree, resolveFitPointSplineDegree } from './AcGeSplineUtil';
46
48
  var AcGeSpline3d = /** @class */ (function (_super) {
47
49
  __extends(AcGeSpline3d, _super);
48
50
  function AcGeSpline3d(a, b, c, d, e, f) {
@@ -221,11 +223,7 @@ var AcGeSpline3d = /** @class */ (function (_super) {
221
223
  });
222
224
  Object.defineProperty(AcGeSpline3d.prototype, "controlPoints", {
223
225
  get: function () {
224
- return this._controlPoints.map(function (point) { return ({
225
- x: point.x,
226
- y: point.y,
227
- z: point.z || 0
228
- }); });
226
+ return this._controlPoints.map(AcGeGeometryUtil.point2dToPoint3d);
229
227
  },
230
228
  enumerable: false,
231
229
  configurable: true
@@ -233,11 +231,7 @@ var AcGeSpline3d = /** @class */ (function (_super) {
233
231
  Object.defineProperty(AcGeSpline3d.prototype, "fitPoints", {
234
232
  get: function () {
235
233
  var _a;
236
- return (_a = this._fitPoints) === null || _a === void 0 ? void 0 : _a.map(function (point) { return ({
237
- x: point.x,
238
- y: point.y,
239
- z: point.z || 0
240
- }); });
234
+ return (_a = this._fitPoints) === null || _a === void 0 ? void 0 : _a.map(AcGeGeometryUtil.point2dToPoint3d);
241
235
  },
242
236
  enumerable: false,
243
237
  configurable: true
@@ -328,7 +322,7 @@ var AcGeSpline3d = /** @class */ (function (_super) {
328
322
  var length = this._fitPoints.length;
329
323
  var newIndex = index < 0 || index >= length ? length - 1 : index;
330
324
  var point = this._fitPoints[newIndex];
331
- return { x: point.x, y: point.y, z: point.z || 0 };
325
+ return AcGeGeometryUtil.point2dToPoint3d(point);
332
326
  };
333
327
  /**
334
328
  * Return the value of the control point at position index in the list of control points.
@@ -451,29 +445,9 @@ var AcGeSpline3d = /** @class */ (function (_super) {
451
445
  */
452
446
  AcGeSpline3d.prototype.clone = function () {
453
447
  if (this._fitPoints && this._knotParameterization) {
454
- return new AcGeSpline3d(this._fitPoints.map(function (point) { return ({
455
- x: point.x,
456
- y: point.y,
457
- z: point.z || 0
458
- }); }), this._knotParameterization, this._degree, this._closed, this._startTangent
459
- ? {
460
- x: this._startTangent.x,
461
- y: this._startTangent.y,
462
- z: this._startTangent.z || 0
463
- }
464
- : undefined, this._endTangent
465
- ? {
466
- x: this._endTangent.x,
467
- y: this._endTangent.y,
468
- z: this._endTangent.z || 0
469
- }
470
- : undefined);
448
+ return new AcGeSpline3d(this._fitPoints.map(AcGeGeometryUtil.point2dToPoint3d), this._knotParameterization, this._degree, this._closed, this._startTangent ? AcGeGeometryUtil.point2dToPoint3d(this._startTangent) : undefined, this._endTangent ? AcGeGeometryUtil.point2dToPoint3d(this._endTangent) : undefined);
471
449
  }
472
- return new AcGeSpline3d(this._controlPoints.map(function (point) { return ({
473
- x: point.x,
474
- y: point.y,
475
- z: point.z || 0
476
- }); }), this._nurbsCurve.knots(), this._nurbsCurve.weights(), this._degree, this._closed);
450
+ return new AcGeSpline3d(this._controlPoints.map(AcGeGeometryUtil.point2dToPoint3d), this._nurbsCurve.knots(), this._nurbsCurve.weights(), this._degree, this._closed);
477
451
  };
478
452
  /**
479
453
  * Convert input points to points in NURBS format
@@ -518,6 +492,112 @@ var AcGeSpline3d = /** @class */ (function (_super) {
518
492
  // Create spline using the constructor with fit points, degree, and closed=true
519
493
  return new AcGeSpline3d(fitPoints, parameterization, degree, true);
520
494
  };
495
+ /**
496
+ * Creates a 3D spline geometry from control points, knots, and optional weights.
497
+ *
498
+ * This factory is intended for robust deserialization: it normalizes degree and
499
+ * weights from imperfect source data and returns `null` instead of throwing when
500
+ * the NURBS definition is invalid.
501
+ *
502
+ * @param controlPoints - Control vertices defining the curve shape
503
+ * @param knots - Full knot vector for the spline
504
+ * @param weights - Optional per-control-point weights; ignored when the array length
505
+ * does not match `controlPoints.length`
506
+ * @param declaredDegree - Degree from the source file; when less than 1, derived from
507
+ * `knots.length - controlPoints.length - 1`, then clamped to `[1, controlPoints.length - 1]`
508
+ * @param closed - Whether the spline forms a closed loop
509
+ * @returns A spline geometry, or `null` if construction fails
510
+ */
511
+ AcGeSpline3d.fromControlPoints = function (controlPoints, knots, weights, declaredDegree, closed) {
512
+ if (controlPoints.length < 2 || knots.length < 2) {
513
+ return null;
514
+ }
515
+ var degree = resolveControlPointSplineDegree(declaredDegree, controlPoints.length, knots.length);
516
+ if (controlPoints.length < degree + 1) {
517
+ return null;
518
+ }
519
+ try {
520
+ return new AcGeSpline3d(controlPoints, knots, normalizeSplineWeights(weights, controlPoints.length), degree, closed);
521
+ }
522
+ catch (_a) {
523
+ return null;
524
+ }
525
+ };
526
+ /**
527
+ * Creates a 3D spline geometry that interpolates fit points.
528
+ *
529
+ * Knots and control points are generated from the fit data. Non-zero start/end
530
+ * tangents constrain the curve ends; zero-length tangents are ignored. Degree is
531
+ * clamped so that `fitPoints.length + tangentCount >= degree + 1`.
532
+ *
533
+ * @param fitPoints - Points the spline should pass through
534
+ * @param knotParam - Knot parameterization (`'Uniform'`, `'Chord'`, or `'SqrtChord'`)
535
+ * @param declaredDegree - Requested degree from the source file; defaults to 3 when
536
+ * missing or less than 1, then clamped to fit the available fit/tangent data
537
+ * @param closed - Whether the spline forms a closed loop
538
+ * @param startTangent - Optional start tangent direction; ignored when zero-length
539
+ * @param endTangent - Optional end tangent direction; ignored when zero-length
540
+ * @returns A spline geometry, or `null` if construction fails
541
+ */
542
+ AcGeSpline3d.fromFitPoints = function (fitPoints, knotParam, declaredDegree, closed, startTangent, endTangent) {
543
+ if (fitPoints.length < 2) {
544
+ return null;
545
+ }
546
+ var hasStartTangent = isNonZeroDirection(startTangent);
547
+ var hasEndTangent = isNonZeroDirection(endTangent);
548
+ var tangentCount = (hasStartTangent ? 1 : 0) + (hasEndTangent ? 1 : 0);
549
+ var degree = resolveFitPointSplineDegree(declaredDegree, fitPoints.length, tangentCount);
550
+ if (fitPoints.length + tangentCount < degree + 1) {
551
+ return null;
552
+ }
553
+ try {
554
+ if (hasStartTangent || hasEndTangent) {
555
+ return new AcGeSpline3d(fitPoints, knotParam, degree, closed, hasStartTangent ? startTangent : undefined, hasEndTangent ? endTangent : undefined);
556
+ }
557
+ return new AcGeSpline3d(fitPoints, knotParam, degree, closed);
558
+ }
559
+ catch (_a) {
560
+ return null;
561
+ }
562
+ };
563
+ /**
564
+ * Creates a 3D spline geometry from parsed DWG/DXF spline-edge data.
565
+ *
566
+ * Used for hatch boundary paths, proxy-graphics edges, and similar structures where
567
+ * spline data is embedded as a lightweight edge record rather than a full SPLINE
568
+ * entity. Control-point data is preferred; fit data is used when control points are
569
+ * absent. Fit-point edges always use `'Uniform'` knot parameterization and are
570
+ * treated as open curves.
571
+ *
572
+ * @param spline - Parsed spline-edge payload from a DWG/DXF reader
573
+ * @param spline.numberOfControlPoints - Count of control points in the edge record
574
+ * @param spline.numberOfKnots - Count of knots in the edge record
575
+ * @param spline.numberOfFitData - Count of fit points in the edge record
576
+ * @param spline.degree - Optional declared degree
577
+ * @param spline.controlPoints - Control vertices, optionally with per-point `weight`
578
+ * @param spline.knots - Knot values for the control-point representation
579
+ * @param spline.fitDatum - Fit points when the edge is defined by fit data
580
+ * @param spline.startTangent - Optional start tangent for fit-data edges
581
+ * @param spline.endTangent - Optional end tangent for fit-data edges
582
+ * @returns A spline geometry, or `null` when neither representation can be built
583
+ */
584
+ AcGeSpline3d.fromDwgSplineEdge = function (spline) {
585
+ if (spline.numberOfControlPoints > 0 && spline.numberOfKnots > 0) {
586
+ var controlPoints = spline.controlPoints.map(AcGeGeometryUtil.point2dToPoint3d);
587
+ var hasWeights_1 = true;
588
+ var weights = spline.controlPoints.map(function (item) {
589
+ if (item.weight == null)
590
+ hasWeights_1 = false;
591
+ return item.weight || 1;
592
+ });
593
+ return AcGeSpline3d.fromControlPoints(controlPoints, spline.knots, hasWeights_1 ? weights : undefined, spline.degree, false);
594
+ }
595
+ if (spline.numberOfFitData > 0) {
596
+ var fitPoints = spline.fitDatum.map(AcGeGeometryUtil.point2dToPoint3d);
597
+ return AcGeSpline3d.fromFitPoints(fitPoints, 'Uniform', spline.degree, false, spline.startTangent ? AcGeGeometryUtil.point2dToPoint3d(spline.startTangent) : undefined, spline.endTangent ? AcGeGeometryUtil.point2dToPoint3d(spline.endTangent) : undefined);
598
+ }
599
+ return null;
600
+ };
521
601
  return AcGeSpline3d;
522
602
  }(AcGeCurve3d));
523
603
  export { AcGeSpline3d };
@@ -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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"}
@@ -0,0 +1,6 @@
1
+ import { AcGePoint3dLike } from '../math';
2
+ export declare function isNonZeroDirection(vector?: AcGePoint3dLike | null): boolean;
3
+ export declare function resolveControlPointSplineDegree(declaredDegree: number | undefined, controlPointCount: number, knotCount: number): number;
4
+ export declare function resolveFitPointSplineDegree(declaredDegree: number | undefined, fitPointCount: number, tangentCount: number): number;
5
+ export declare function normalizeSplineWeights(weights: number[] | undefined, controlPointCount: number): number[] | undefined;
6
+ //# sourceMappingURL=AcGeSplineUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeSplineUtil.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeSplineUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAM3E;AAED,wBAAgB,+BAA+B,CAC7C,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR;AAED,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,MAAM,CAQR;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,iBAAiB,EAAE,MAAM,GACxB,MAAM,EAAE,GAAG,SAAS,CAKtB"}
@@ -0,0 +1,36 @@
1
+ export function isNonZeroDirection(vector) {
2
+ var _a, _b, _c;
3
+ if (!vector)
4
+ return false;
5
+ var x = (_a = vector.x) !== null && _a !== void 0 ? _a : 0;
6
+ var y = (_b = vector.y) !== null && _b !== void 0 ? _b : 0;
7
+ var z = (_c = vector.z) !== null && _c !== void 0 ? _c : 0;
8
+ return x * x + y * y + z * z > 1e-20;
9
+ }
10
+ export function resolveControlPointSplineDegree(declaredDegree, controlPointCount, knotCount) {
11
+ var degree = declaredDegree !== null && declaredDegree !== void 0 ? declaredDegree : 0;
12
+ if (degree < 1 && knotCount > 0 && controlPointCount > 0) {
13
+ degree = knotCount - controlPointCount - 1;
14
+ }
15
+ if (degree < 1) {
16
+ degree = 3;
17
+ }
18
+ degree = Math.min(degree, controlPointCount - 1);
19
+ return Math.max(1, degree);
20
+ }
21
+ export function resolveFitPointSplineDegree(declaredDegree, fitPointCount, tangentCount) {
22
+ var degree = declaredDegree !== null && declaredDegree !== void 0 ? declaredDegree : 0;
23
+ if (degree < 1) {
24
+ degree = 3;
25
+ }
26
+ var maxDegree = fitPointCount + tangentCount - 1;
27
+ degree = Math.min(degree, maxDegree);
28
+ return Math.max(1, degree);
29
+ }
30
+ export function normalizeSplineWeights(weights, controlPointCount) {
31
+ if (!weights || weights.length !== controlPointCount) {
32
+ return undefined;
33
+ }
34
+ return weights;
35
+ }
36
+ //# sourceMappingURL=AcGeSplineUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeSplineUtil.js","sourceRoot":"","sources":["../../src/geometry/AcGeSplineUtil.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAA+B;;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAM,CAAC,GAAG,MAAA,MAAM,CAAC,CAAC,mCAAI,CAAC,CAAA;IACvB,IAAM,CAAC,GAAG,MAAA,MAAM,CAAC,CAAC,mCAAI,CAAC,CAAA;IACvB,IAAM,CAAC,GAAG,MAAA,MAAM,CAAC,CAAC,mCAAI,CAAC,CAAA;IACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,cAAkC,EAClC,iBAAyB,EACzB,SAAiB;IAEjB,IAAI,MAAM,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,CAAA;IAChC,IAAI,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,GAAG,CAAC,CAAA;IACZ,CAAC;IACD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,cAAkC,EAClC,aAAqB,EACrB,YAAoB;IAEpB,IAAI,MAAM,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,CAAA;IAChC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,GAAG,CAAC,CAAA;IACZ,CAAC;IACD,IAAM,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,CAAC,CAAA;IAClD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA6B,EAC7B,iBAAyB;IAEzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACrD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
package/lib/index.d.ts CHANGED
@@ -2,5 +2,5 @@ export { AcGeArea2d, AcGeCatmullRomCurve3d, AcGeCircArc2d, AcGeCircArc3d, AcGeCu
2
2
  export type { AcGeBoundaryEdgeType, AcGeIndexNode, AcGeKnotParameterizationType, AcGeLoop2dType, AcGePolyline2dVertex, CatmullRomCurveType } from './geometry';
3
3
  export { AcGeBox2d, AcGeBox3d, AcGeEuler, AcGeMatrix2d, AcGeMatrix3d, AcGePlane, AcGePoint2d, AcGePoint3d, AcGeQuaternion, AcGeVector2d, AcGeVector3d } from './math';
4
4
  export type { AcGePoint, AcGePoint2dLike, AcGePoint3dLike, AcGePointLike, AcGeVector, AcGeVector2dLike, AcGeVector3dLike, AcGeVectorLike } from './math';
5
- export { AcGeGeometryUtil, AcGeMathUtil, AcGeTol, DEFAULT_TOL, DEG2RAD, FLOAT_TOL, ORIGIN_POINT_2D, ORIGIN_POINT_3D, RAD2DEG, TAU, basisFunction, calculateCurveLength, ceilPowerOfTwo, clamp, computeParameterValues, damp, degToRad, euclideanModulo, evaluateNurbsPoint, evaluateNurbsDerivatives, signedPlanarCurvature, floorPowerOfTwo, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUUID, generateUniformKnots, getOcsAngle, getOcsReferenceVector, intPartLength, interpolateControlPoints, interpolateNurbsCurve, inverseLerp, isBetween, isBetweenAngle, isPointInPolygon, isPolygonIntersect, isPowerOfTwo, lerp, mapLinear, normalizeAngle, pingpong, radToDeg, randFloat, randFloatSpread, randInt, relativeEps, seededRandom, smootherstep, smoothstep, transformOcsPointToWcs, transformWcsPointToOcs, offsetPointByDirectionInXY, offsetSmoothedSampledPath, offsetVertexPath, acGeClosedPolygonArea2d, acGeClosedPolygonArea3d, acGePolygonArea2d, acGePolygonArea3d, acGeSignedPolygonArea2d } from './util';
5
+ export { AcGeGeometryUtil, AcGeMathUtil, AcGeTol, DEFAULT_TOL, DEG2RAD, FLOAT_TOL, ORIGIN_POINT_2D, ORIGIN_POINT_3D, RAD2DEG, TAU, basisFunction, calculateCurveLength, ceilPowerOfTwo, clamp, computeParameterValues, damp, degToRad, euclideanModulo, evaluateNurbsPoint, evaluateNurbsDerivatives, signedPlanarCurvature, floorPowerOfTwo, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUUID, generateUniformKnots, getOcsAngle, getOcsReferenceVector, intPartLength, interpolateControlPoints, interpolateNurbsCurve, inverseLerp, isBetween, isBetweenAngle, isPowerOfTwo, lerp, mapLinear, normalizeAngle, pingpong, radToDeg, randFloat, randFloatSpread, randInt, relativeEps, seededRandom, smootherstep, smoothstep, transformOcsPointToWcs, transformWcsPointToOcs, offsetPointByDirectionInXY, offsetSmoothedSampledPath, offsetVertexPath, acGeClosedPolygonArea2d, acGeClosedPolygonArea3d, acGePolygonArea2d, acGePolygonArea3d, acGeSignedPolygonArea2d } from './util';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,QAAQ,CAAA;AACf,YAAY,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,OAAO,EACP,SAAS,EACT,eAAe,EACf,eAAe,EACf,OAAO,EACP,GAAG,EACH,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,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,EACV,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,QAAQ,CAAA;AACf,YAAY,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,OAAO,EACP,SAAS,EACT,eAAe,EACf,eAAe,EACf,OAAO,EACP,GAAG,EACH,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,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,EACV,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,QAAQ,CAAA"}
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { AcGeArea2d, AcGeCatmullRomCurve3d, AcGeCircArc2d, AcGeCircArc3d, AcGeCurve2d, AcGeEllipseArc2d, AcGeEllipseArc3d, AcGeLine2d, AcGeLine3d, AcGeLoop2d, AcGeNurbsCurve, AcGePolyline2d, AcGeShape2d, AcGeSpline3d } from './geometry';
2
2
  export { AcGeBox2d, AcGeBox3d, AcGeEuler, AcGeMatrix2d, AcGeMatrix3d, AcGePlane, AcGePoint2d, AcGePoint3d, AcGeQuaternion, AcGeVector2d, AcGeVector3d } from './math';
3
- export { AcGeGeometryUtil, AcGeMathUtil, AcGeTol, DEFAULT_TOL, DEG2RAD, FLOAT_TOL, ORIGIN_POINT_2D, ORIGIN_POINT_3D, RAD2DEG, TAU, basisFunction, calculateCurveLength, ceilPowerOfTwo, clamp, computeParameterValues, damp, degToRad, euclideanModulo, evaluateNurbsPoint, evaluateNurbsDerivatives, signedPlanarCurvature, floorPowerOfTwo, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUUID, generateUniformKnots, getOcsAngle, getOcsReferenceVector, intPartLength, interpolateControlPoints, interpolateNurbsCurve, inverseLerp, isBetween, isBetweenAngle, isPointInPolygon, isPolygonIntersect, isPowerOfTwo, lerp, mapLinear, normalizeAngle, pingpong, radToDeg, randFloat, randFloatSpread, randInt, relativeEps, seededRandom, smootherstep, smoothstep, transformOcsPointToWcs, transformWcsPointToOcs, offsetPointByDirectionInXY, offsetSmoothedSampledPath, offsetVertexPath, acGeClosedPolygonArea2d, acGeClosedPolygonArea3d, acGePolygonArea2d, acGePolygonArea3d, acGeSignedPolygonArea2d } from './util';
3
+ export { AcGeGeometryUtil, AcGeMathUtil, AcGeTol, DEFAULT_TOL, DEG2RAD, FLOAT_TOL, ORIGIN_POINT_2D, ORIGIN_POINT_3D, RAD2DEG, TAU, basisFunction, calculateCurveLength, ceilPowerOfTwo, clamp, computeParameterValues, damp, degToRad, euclideanModulo, evaluateNurbsPoint, evaluateNurbsDerivatives, signedPlanarCurvature, floorPowerOfTwo, generateAveragedKnots, generateChordKnots, generateSqrtChordKnots, generateUUID, generateUniformKnots, getOcsAngle, getOcsReferenceVector, intPartLength, interpolateControlPoints, interpolateNurbsCurve, inverseLerp, isBetween, isBetweenAngle, isPowerOfTwo, lerp, mapLinear, normalizeAngle, pingpong, radToDeg, randFloat, randFloatSpread, randInt, relativeEps, seededRandom, smootherstep, smoothstep, transformOcsPointToWcs, transformWcsPointToOcs, offsetPointByDirectionInXY, offsetSmoothedSampledPath, offsetVertexPath, acGeClosedPolygonArea2d, acGeClosedPolygonArea3d, acGePolygonArea2d, acGePolygonArea3d, acGeSignedPolygonArea2d } from './util';
4
4
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AASnB,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,QAAQ,CAAA;AAWf,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,OAAO,EACP,SAAS,EACT,eAAe,EACf,eAAe,EACf,OAAO,EACP,GAAG,EACH,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,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,EACV,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AASnB,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,QAAQ,CAAA;AAWf,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,OAAO,EACP,SAAS,EACT,eAAe,EACf,eAAe,EACf,OAAO,EACP,GAAG,EACH,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,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,EACV,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,QAAQ,CAAA"}
@@ -9,6 +9,10 @@ export declare class AcGeMatrix3d {
9
9
  * Identity matrix.
10
10
  */
11
11
  static IDENTITY: Readonly<AcGeMatrix3d>;
12
+ /**
13
+ * Create a translation matrix from a vector or numbers x, y and z.
14
+ */
15
+ static makeTranslation(x: number | AcGeVector3dLike, y?: number, z?: number): AcGeMatrix3d;
12
16
  /**
13
17
  * A column-major list of matrix values.
14
18
  */
@@ -190,7 +194,7 @@ export declare class AcGeMatrix3d {
190
194
  * @param z Input one number
191
195
  * @returns Return this matrix
192
196
  */
193
- makeTranslation(x: number | AcGeVector3d, y?: number, z?: number): this;
197
+ makeTranslation(x: number | AcGeVector3dLike, y?: number, z?: number): this;
194
198
  /**
195
199
  * Set this matrix as a rotational transformation around the X axis by theta (θ) radians.
196
200
  * @param theta Input rotation angle in radians.
@@ -1 +1 @@
1
- {"version":3,"file":"AcGeMatrix3d.d.ts","sourceRoot":"","sources":["../../src/math/AcGeMatrix3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AcGeMatrix3d.d.ts","sourceRoot":"","sources":["../../src/math/AcGeMatrix3d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE/D;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,QAAQ,yBAAoC;IAEnD;;OAEG;IACH,MAAM,CAAC,eAAe,CACpB,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAC5B,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,GACT,YAAY;IAGf;;OAEG;IACI,QAAQ,EAAE,MAAM,EAAE,CAAA;IAEzB;;;;;;;;;;;;;;;;;;;;OAoBG;gBAED,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM;IA2Cd;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,GAAG,CACD,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM;IAwBb;;;OAGG;IACH,QAAQ;IAKR,KAAK;IAIL;;;;OAIG;IACH,IAAI,CAAC,CAAC,EAAE,YAAY;IAwBpB;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,YAAY;IAW5B;;;;OAIG;IACH,cAAc,CAAC,CAAC,EAAE,YAAY;IAyB9B;;;;OAIG;IACH,yBAAyB,CAAC,SAAS,EAAE,YAAY;IA6CjD;;;;;;OAMG;IACH,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;IAQ1E;;;;;;OAMG;IACH,SAAS,CACP,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,gBAAgB;IAwBzB;;;;OAIG;IACH,eAAe,CAAC,CAAC,EAAE,YAAY;IAoK/B;;;;OAIG;IACH,0BAA0B,CAAC,CAAC,EAAE,cAAc;IAI5C;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY;IA2ChE;;;;OAIG;IACH,QAAQ,CAAC,CAAC,EAAE,YAAY;IAIxB;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,YAAY;IAI3B;;;;;OAKG;IACH,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY;IA8DjD;;;;OAIG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM;IAuBxB;;;OAGG;IACH,WAAW;IAuDX;;;OAGG;IACH,SAAS;IA2BT;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAgB1D;;;;OAIG;IACH,MAAM;IAkKN;;;;OAIG;IACH,KAAK,CAAC,CAAC,EAAE,YAAY;IAsBrB;;;OAGG;IACH,iBAAiB;IAUjB;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM;IAUpE;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM;IAS3B;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM;IAS3B;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM;IAS3B;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM;IAkClD;;;;;;OAMG;IACH,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAMzC;;;;;;;;;OASG;IACH,SAAS,CACP,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM;IAOZ;;;;;;OAMG;IACH,OAAO,CACL,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,YAAY;IAgDrB;;;;;;;;;;OAUG;IACH,SAAS,CACP,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,YAAY;IAmJrB;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY;IAW3B;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,SAAI;IAQrC;;;;;OAKG;IACH,OAAO,CAAC,KAAK,GAAE,MAAM,EAAO,EAAE,MAAM,GAAE,MAAU;CAyBjD"}
@@ -46,6 +46,12 @@ var AcGeMatrix3d = /** @class */ (function () {
46
46
  this.set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44);
47
47
  }
48
48
  }
49
+ /**
50
+ * Create a translation matrix from a vector or numbers x, y and z.
51
+ */
52
+ AcGeMatrix3d.makeTranslation = function (x, y, z) {
53
+ return new AcGeMatrix3d().makeTranslation(x, y, z);
54
+ };
49
55
  /**
50
56
  * Set the elements of this matrix to the supplied row-major values n11, n12, ... n44.
51
57
  *
@@ -152,17 +158,25 @@ var AcGeMatrix3d = /** @class */ (function () {
152
158
  * @returns Return this matrix
153
159
  */
154
160
  AcGeMatrix3d.prototype.setFromExtrusionDirection = function (extrusion) {
155
- if (!DEFAULT_TOL.equalPoint3d(extrusion, AcGeVector3d.Z_AXIS)) {
161
+ var length = Math.hypot(extrusion.x, extrusion.y, extrusion.z);
162
+ if (!Number.isFinite(length) || length < 1e-12) {
163
+ this.identity();
164
+ return this;
165
+ }
166
+ var normal = Math.abs(length - 1) > 1e-6
167
+ ? extrusion.clone().multiplyScalar(1 / length)
168
+ : extrusion;
169
+ if (!DEFAULT_TOL.equalPoint3d(normal, AcGeVector3d.Z_AXIS)) {
156
170
  var xAxis = new AcGeVector3d(1, 0, 0);
157
- if (Math.abs(extrusion.x) < 1.0 / 64.0 &&
158
- Math.abs(extrusion.y) < 1.0 / 64.0) {
159
- xAxis.crossVectors(AcGeVector3d.Y_AXIS, extrusion).normalize();
171
+ if (Math.abs(normal.x) < 1.0 / 64.0 &&
172
+ Math.abs(normal.y) < 1.0 / 64.0) {
173
+ xAxis.crossVectors(AcGeVector3d.Y_AXIS, normal).normalize();
160
174
  }
161
175
  else {
162
- xAxis.crossVectors(AcGeVector3d.Z_AXIS, extrusion).normalize();
176
+ xAxis.crossVectors(AcGeVector3d.Z_AXIS, normal).normalize();
163
177
  }
164
- var yAxis = extrusion.clone().cross(xAxis).normalize();
165
- this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, extrusion.x, extrusion.y, extrusion.z, 0, 0, 0, 0, 1);
178
+ var yAxis = normal.clone().cross(xAxis).normalize();
179
+ this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, normal.x, normal.y, normal.z, 0, 0, 0, 0, 1);
166
180
  }
167
181
  else {
168
182
  this.identity();
@@ -719,8 +733,9 @@ var AcGeMatrix3d = /** @class */ (function () {
719
733
  * @returns Return this matrix
720
734
  */
721
735
  AcGeMatrix3d.prototype.makeTranslation = function (x, y, z) {
722
- if (x instanceof AcGeVector3d) {
723
- this.set(1, 0, 0, x.x, 0, 1, 0, x.y, 0, 0, 1, x.z, 0, 0, 0, 1);
736
+ var _a;
737
+ if (typeof x === 'object') {
738
+ this.set(1, 0, 0, x.x, 0, 1, 0, x.y, 0, 0, 1, (_a = x.z) !== null && _a !== void 0 ? _a : 0, 0, 0, 0, 1);
724
739
  }
725
740
  else {
726
741
  this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);