@mlightcad/geometry-engine 3.0.4 → 3.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/geometry-engine.js +10702 -0
  2. package/dist/geometry-engine.umd.cjs +4 -0
  3. package/lib/geometry/AcGeArea2d.d.ts +61 -0
  4. package/lib/geometry/AcGeArea2d.d.ts.map +1 -0
  5. package/lib/geometry/AcGeArea2d.js +174 -0
  6. package/lib/geometry/AcGeArea2d.js.map +1 -0
  7. package/lib/geometry/AcGeCatmullRomCurve3d.d.ts +146 -0
  8. package/lib/geometry/AcGeCatmullRomCurve3d.d.ts.map +1 -0
  9. package/lib/geometry/AcGeCatmullRomCurve3d.js +358 -0
  10. package/lib/geometry/AcGeCatmullRomCurve3d.js.map +1 -0
  11. package/lib/geometry/AcGeCircArc2d.d.ts +132 -0
  12. package/lib/geometry/AcGeCircArc2d.d.ts.map +1 -0
  13. package/lib/geometry/AcGeCircArc2d.js +473 -0
  14. package/lib/geometry/AcGeCircArc2d.js.map +1 -0
  15. package/lib/geometry/AcGeCircArc3d.d.ts +138 -0
  16. package/lib/geometry/AcGeCircArc3d.d.ts.map +1 -0
  17. package/lib/geometry/AcGeCircArc3d.js +447 -0
  18. package/lib/geometry/AcGeCircArc3d.js.map +1 -0
  19. package/lib/geometry/AcGeCurve2d.d.ts +85 -0
  20. package/lib/geometry/AcGeCurve2d.d.ts.map +1 -0
  21. package/lib/geometry/AcGeCurve2d.js +213 -0
  22. package/lib/geometry/AcGeCurve2d.js.map +1 -0
  23. package/lib/geometry/AcGeCurve3d.d.ts +27 -0
  24. package/lib/geometry/AcGeCurve3d.d.ts.map +1 -0
  25. package/lib/geometry/AcGeCurve3d.js +29 -0
  26. package/lib/geometry/AcGeCurve3d.js.map +1 -0
  27. package/lib/geometry/AcGeEllipseArc2d.d.ts +105 -0
  28. package/lib/geometry/AcGeEllipseArc2d.d.ts.map +1 -0
  29. package/lib/geometry/AcGeEllipseArc2d.js +292 -0
  30. package/lib/geometry/AcGeEllipseArc2d.js.map +1 -0
  31. package/lib/geometry/AcGeEllipseArc3d.d.ts +142 -0
  32. package/lib/geometry/AcGeEllipseArc3d.d.ts.map +1 -0
  33. package/lib/geometry/AcGeEllipseArc3d.js +459 -0
  34. package/lib/geometry/AcGeEllipseArc3d.js.map +1 -0
  35. package/lib/geometry/AcGeLine2d.d.ts +56 -0
  36. package/lib/geometry/AcGeLine2d.d.ts.map +1 -0
  37. package/lib/geometry/AcGeLine2d.js +125 -0
  38. package/lib/geometry/AcGeLine2d.js.map +1 -0
  39. package/lib/geometry/AcGeLine3d.d.ts +134 -0
  40. package/lib/geometry/AcGeLine3d.d.ts.map +1 -0
  41. package/lib/geometry/AcGeLine3d.js +291 -0
  42. package/lib/geometry/AcGeLine3d.js.map +1 -0
  43. package/lib/geometry/AcGeLoop2d.d.ts +59 -0
  44. package/lib/geometry/AcGeLoop2d.d.ts.map +1 -0
  45. package/lib/geometry/AcGeLoop2d.js +141 -0
  46. package/lib/geometry/AcGeLoop2d.js.map +1 -0
  47. package/lib/geometry/AcGeNurbsCurve.d.ts +73 -0
  48. package/lib/geometry/AcGeNurbsCurve.d.ts.map +1 -0
  49. package/lib/geometry/AcGeNurbsCurve.js +172 -0
  50. package/lib/geometry/AcGeNurbsCurve.js.map +1 -0
  51. package/lib/geometry/AcGePolyline2d.d.ts +90 -0
  52. package/lib/geometry/AcGePolyline2d.d.ts.map +1 -0
  53. package/lib/geometry/AcGePolyline2d.js +224 -0
  54. package/lib/geometry/AcGePolyline2d.js.map +1 -0
  55. package/lib/geometry/AcGeShape.d.ts +12 -0
  56. package/lib/geometry/AcGeShape.d.ts.map +1 -0
  57. package/lib/geometry/AcGeShape.js +22 -0
  58. package/lib/geometry/AcGeShape.js.map +1 -0
  59. package/lib/geometry/AcGeShape2d.d.ts +31 -0
  60. package/lib/geometry/AcGeShape2d.d.ts.map +1 -0
  61. package/lib/geometry/AcGeShape2d.js +51 -0
  62. package/lib/geometry/AcGeShape2d.js.map +1 -0
  63. package/lib/geometry/AcGeShape3d.d.ts +33 -0
  64. package/lib/geometry/AcGeShape3d.d.ts.map +1 -0
  65. package/lib/geometry/AcGeShape3d.js +52 -0
  66. package/lib/geometry/AcGeShape3d.js.map +1 -0
  67. package/lib/geometry/AcGeSpline3d.d.ts +99 -0
  68. package/lib/geometry/AcGeSpline3d.d.ts.map +1 -0
  69. package/lib/geometry/AcGeSpline3d.js +350 -0
  70. package/lib/geometry/AcGeSpline3d.js.map +1 -0
  71. package/lib/geometry/index.d.ts +15 -0
  72. package/lib/geometry/index.d.ts.map +1 -0
  73. package/lib/geometry/index.js +15 -0
  74. package/lib/geometry/index.js.map +1 -0
  75. package/lib/index.d.ts +4 -0
  76. package/lib/index.d.ts.map +1 -0
  77. package/lib/index.js +4 -0
  78. package/lib/index.js.map +1 -0
  79. package/lib/math/AcGeBox2d.d.ts +173 -0
  80. package/lib/math/AcGeBox2d.d.ts.map +1 -0
  81. package/lib/math/AcGeBox2d.js +289 -0
  82. package/lib/math/AcGeBox2d.js.map +1 -0
  83. package/lib/math/AcGeBox3d.d.ts +195 -0
  84. package/lib/math/AcGeBox3d.d.ts.map +1 -0
  85. package/lib/math/AcGeBox3d.js +378 -0
  86. package/lib/math/AcGeBox3d.js.map +1 -0
  87. package/lib/math/AcGeEuler.d.ts +133 -0
  88. package/lib/math/AcGeEuler.d.ts.map +1 -0
  89. package/lib/math/AcGeEuler.js +358 -0
  90. package/lib/math/AcGeEuler.js.map +1 -0
  91. package/lib/math/AcGeMatrix2d.d.ts +203 -0
  92. package/lib/math/AcGeMatrix2d.d.ts.map +1 -0
  93. package/lib/math/AcGeMatrix2d.js +393 -0
  94. package/lib/math/AcGeMatrix2d.js.map +1 -0
  95. package/lib/math/AcGeMatrix3d.d.ts +279 -0
  96. package/lib/math/AcGeMatrix3d.d.ts.map +1 -0
  97. package/lib/math/AcGeMatrix3d.js +1037 -0
  98. package/lib/math/AcGeMatrix3d.js.map +1 -0
  99. package/lib/math/AcGePlane.d.ts +131 -0
  100. package/lib/math/AcGePlane.d.ts.map +1 -0
  101. package/lib/math/AcGePlane.js +218 -0
  102. package/lib/math/AcGePlane.js.map +1 -0
  103. package/lib/math/AcGePoint.d.ts +4 -0
  104. package/lib/math/AcGePoint.d.ts.map +1 -0
  105. package/lib/math/AcGePoint.js +2 -0
  106. package/lib/math/AcGePoint.js.map +1 -0
  107. package/lib/math/AcGePoint2d.d.ts +17 -0
  108. package/lib/math/AcGePoint2d.d.ts.map +1 -0
  109. package/lib/math/AcGePoint2d.js +40 -0
  110. package/lib/math/AcGePoint2d.js.map +1 -0
  111. package/lib/math/AcGePoint3d.d.ts +18 -0
  112. package/lib/math/AcGePoint3d.d.ts.map +1 -0
  113. package/lib/math/AcGePoint3d.js +43 -0
  114. package/lib/math/AcGePoint3d.js.map +1 -0
  115. package/lib/math/AcGeQuaternion.d.ts +230 -0
  116. package/lib/math/AcGeQuaternion.d.ts.map +1 -0
  117. package/lib/math/AcGeQuaternion.js +666 -0
  118. package/lib/math/AcGeQuaternion.js.map +1 -0
  119. package/lib/math/AcGeVector.d.ts +9 -0
  120. package/lib/math/AcGeVector.d.ts.map +1 -0
  121. package/lib/math/AcGeVector.js +2 -0
  122. package/lib/math/AcGeVector.js.map +1 -0
  123. package/lib/math/AcGeVector2d.d.ts +361 -0
  124. package/lib/math/AcGeVector2d.d.ts.map +1 -0
  125. package/lib/math/AcGeVector2d.js +622 -0
  126. package/lib/math/AcGeVector2d.js.map +1 -0
  127. package/lib/math/AcGeVector3d.d.ts +493 -0
  128. package/lib/math/AcGeVector3d.d.ts.map +1 -0
  129. package/lib/math/AcGeVector3d.js +868 -0
  130. package/lib/math/AcGeVector3d.js.map +1 -0
  131. package/lib/math/index.d.ts +14 -0
  132. package/lib/math/index.d.ts.map +1 -0
  133. package/lib/math/index.js +14 -0
  134. package/lib/math/index.js.map +1 -0
  135. package/lib/util/AcGeConstants.d.ts +19 -0
  136. package/lib/util/AcGeConstants.d.ts.map +1 -0
  137. package/lib/util/AcGeConstants.js +25 -0
  138. package/lib/util/AcGeConstants.js.map +1 -0
  139. package/lib/util/AcGeGeometryUtil.d.ts +16 -0
  140. package/lib/util/AcGeGeometryUtil.d.ts.map +1 -0
  141. package/lib/util/AcGeGeometryUtil.js +56 -0
  142. package/lib/util/AcGeGeometryUtil.js.map +1 -0
  143. package/lib/util/AcGeMathUtil.d.ts +203 -0
  144. package/lib/util/AcGeMathUtil.d.ts.map +1 -0
  145. package/lib/util/AcGeMathUtil.js +585 -0
  146. package/lib/util/AcGeMathUtil.js.map +1 -0
  147. package/lib/util/AcGeNurbsUtil.d.ts +34 -0
  148. package/lib/util/AcGeNurbsUtil.d.ts.map +1 -0
  149. package/lib/util/AcGeNurbsUtil.js +218 -0
  150. package/lib/util/AcGeNurbsUtil.js.map +1 -0
  151. package/lib/util/AcGeTol.d.ts +91 -0
  152. package/lib/util/AcGeTol.d.ts.map +1 -0
  153. package/lib/util/AcGeTol.js +83 -0
  154. package/lib/util/AcGeTol.js.map +1 -0
  155. package/lib/util/index.d.ts +6 -0
  156. package/lib/util/index.d.ts.map +1 -0
  157. package/lib/util/index.js +6 -0
  158. package/lib/util/index.js.map +1 -0
  159. package/package.json +2 -2
@@ -0,0 +1,459 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __values = (this && this.__values) || function(o) {
17
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
18
+ if (m) return m.call(o);
19
+ if (o && typeof o.length === "number") return {
20
+ next: function () {
21
+ if (o && i >= o.length) o = void 0;
22
+ return { value: o && o[i++], done: !o };
23
+ }
24
+ };
25
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
26
+ };
27
+ import { AcCmErrors } from '@mlightcad/common';
28
+ import { AcGeBox3d, AcGePlane, AcGePoint3d, AcGeVector3d } from '../math';
29
+ import { AcGeMathUtil, ORIGIN_POINT_3D, TAU } from '../util';
30
+ import { AcGeTol } from '../util/AcGeTol';
31
+ import { AcGeCurve3d } from './AcGeCurve3d';
32
+ /**
33
+ * Class representing a 3d ellipse arc defined by center, normal, majorAxis, majorAxisRadius,
34
+ * minorAxisRadius, startAngle, and endAngle.
35
+ * - The majorAxis vector represents half the major axis of the ellipse (that is, from the center
36
+ * point to the start point of the ellipse) and is the zero angle for startAngle and endAngle.
37
+ * - Positive angles are counter-clockwise when looking down the normal vector (that is, right-hand
38
+ * rule). A startAngle of 0 and endAngle of 2pi will produce a closed Ellipse.
39
+ * - If startAngle is equal to 0 and endAngle is equal to 2 * Math.PI, it represents a full 3d ellipse.
40
+ */
41
+ var AcGeEllipseArc3d = /** @class */ (function (_super) {
42
+ __extends(AcGeEllipseArc3d, _super);
43
+ /**
44
+ * Construct an instance of the ellipse arc.
45
+ * @param center Center point of the ellipse.
46
+ * @param normal Normal vector defining the plane of the ellipse
47
+ * @param majorAxis Major axis vector (in WCS coordinates) of the ellipse.
48
+ * @param majorAxisRadius Major axis radius of the ellipse.
49
+ * @param minorAxisRadius Minor axis radius of the ellipse.
50
+ * @param startAngle Start angle of the ellipse arc in radians.
51
+ * @param endAngle End angle of the ellipse arc in radians.
52
+ */
53
+ function AcGeEllipseArc3d(center, normal, majorAxis, majorAxisRadius, minorAxisRadius, startAngle, endAngle) {
54
+ if (startAngle === void 0) { startAngle = 0; }
55
+ if (endAngle === void 0) { endAngle = TAU; }
56
+ var _this = _super.call(this) || this;
57
+ _this.center = center;
58
+ _this.normal = normal;
59
+ _this.majorAxis = majorAxis;
60
+ _this.majorAxisRadius = majorAxisRadius;
61
+ _this.minorAxisRadius = minorAxisRadius;
62
+ // Check whether it is a full ellipse
63
+ var angleDiff = Math.abs(endAngle - startAngle);
64
+ if (Math.abs(angleDiff - TAU) < 1e-10 ||
65
+ Math.abs(angleDiff - 2 * TAU) < 1e-10) {
66
+ _this.startAngle = 0;
67
+ _this.endAngle = TAU;
68
+ }
69
+ else {
70
+ _this.startAngle = startAngle;
71
+ _this.endAngle = endAngle;
72
+ }
73
+ return _this;
74
+ }
75
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "center", {
76
+ /**
77
+ * Center of the ellipse in 3d space
78
+ */
79
+ get: function () {
80
+ return this._center;
81
+ },
82
+ set: function (value) {
83
+ this._center = new AcGePoint3d(value.x, value.y, value.z || 0);
84
+ this._boundingBoxNeedsUpdate = true;
85
+ },
86
+ enumerable: false,
87
+ configurable: true
88
+ });
89
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "majorAxisRadius", {
90
+ /**
91
+ * Major axis radius of the ellipse
92
+ */
93
+ get: function () {
94
+ return this._majorAxisRadius;
95
+ },
96
+ set: function (value) {
97
+ if (value < 0)
98
+ throw AcCmErrors.ILLEGAL_PARAMETERS;
99
+ this._majorAxisRadius = value;
100
+ this._boundingBoxNeedsUpdate = true;
101
+ },
102
+ enumerable: false,
103
+ configurable: true
104
+ });
105
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "minorAxisRadius", {
106
+ /**
107
+ * Minor axis radius of the ellipse
108
+ */
109
+ get: function () {
110
+ return this._minorAxisRadius;
111
+ },
112
+ set: function (value) {
113
+ if (value < 0)
114
+ throw AcCmErrors.ILLEGAL_PARAMETERS;
115
+ this._minorAxisRadius = value;
116
+ this._boundingBoxNeedsUpdate = true;
117
+ },
118
+ enumerable: false,
119
+ configurable: true
120
+ });
121
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "startAngle", {
122
+ /**
123
+ * Start angle of the ellipse arc in radians in the range -pi to pi.
124
+ */
125
+ get: function () {
126
+ return this._startAngle;
127
+ },
128
+ set: function (value) {
129
+ this._startAngle = AcGeMathUtil.normalizeAngle(value);
130
+ this._boundingBoxNeedsUpdate = true;
131
+ },
132
+ enumerable: false,
133
+ configurable: true
134
+ });
135
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "endAngle", {
136
+ /**
137
+ * End angle of the ellipse arc in radians in the range -pi to pi.
138
+ */
139
+ get: function () {
140
+ return this._endAngle;
141
+ },
142
+ set: function (value) {
143
+ this._endAngle =
144
+ this.startAngle == 0 && value == TAU
145
+ ? value
146
+ : AcGeMathUtil.normalizeAngle(value);
147
+ this._boundingBoxNeedsUpdate = true;
148
+ },
149
+ enumerable: false,
150
+ configurable: true
151
+ });
152
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "deltaAngle", {
153
+ /**
154
+ * Return angle between endAngle and startAngle in range 0 to 2*PI
155
+ */
156
+ get: function () {
157
+ var diff = this.endAngle - this.startAngle;
158
+ // Handle full circle case
159
+ if (Math.abs(diff - TAU) < 1e-10) {
160
+ return TAU;
161
+ }
162
+ return AcGeMathUtil.normalizeAngle(diff);
163
+ },
164
+ enumerable: false,
165
+ configurable: true
166
+ });
167
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "isLargeArc", {
168
+ /**
169
+ * Return true if the arc is a large arc whose delta angle value is greater than PI.
170
+ */
171
+ get: function () {
172
+ return Math.abs(this.deltaAngle) > Math.PI ? 1 : 0;
173
+ },
174
+ enumerable: false,
175
+ configurable: true
176
+ });
177
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "clockwise", {
178
+ /**
179
+ * Return true if the arc is clockwise from startAngle to endAngle
180
+ */
181
+ get: function () {
182
+ return this.deltaAngle <= 0;
183
+ },
184
+ enumerable: false,
185
+ configurable: true
186
+ });
187
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "normal", {
188
+ /**
189
+ * Unit normal vector defining the plane of the ellipse
190
+ */
191
+ get: function () {
192
+ return this._normal;
193
+ },
194
+ set: function (value) {
195
+ this._normal = new AcGeVector3d(value.x, value.y, value.z);
196
+ // Normalize the normal vector to ensure it's a unit vector
197
+ this._normal.normalize();
198
+ this._boundingBoxNeedsUpdate = true;
199
+ },
200
+ enumerable: false,
201
+ configurable: true
202
+ });
203
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "majorAxis", {
204
+ /**
205
+ * Unit major axis vector (in WCS coordinates) of the ellipse. The major axis vector is the vector from the
206
+ * ellipse's center point to its start point.
207
+ */
208
+ get: function () {
209
+ return this._majorAxis;
210
+ },
211
+ set: function (value) {
212
+ this._majorAxis = new AcGeVector3d(value.x, value.y, value.z);
213
+ // Normalize the normal vector to ensure it's a unit vector
214
+ this._majorAxis.normalize();
215
+ this._boundingBoxNeedsUpdate = true;
216
+ },
217
+ enumerable: false,
218
+ configurable: true
219
+ });
220
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "minorAxis", {
221
+ /**
222
+ * Unit minor axis vector (in WCS coordinates) of the ellipse.
223
+ */
224
+ get: function () {
225
+ return new AcGeVector3d()
226
+ .crossVectors(this.normal, this.majorAxis)
227
+ .normalize();
228
+ },
229
+ enumerable: false,
230
+ configurable: true
231
+ });
232
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "startPoint", {
233
+ /**
234
+ * Compute the start point of the ellipse arc.
235
+ * @returns Return the start point of the ellipse arc.
236
+ */
237
+ get: function () {
238
+ return this.getPointAtAngle(this._startAngle);
239
+ },
240
+ enumerable: false,
241
+ configurable: true
242
+ });
243
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "endPoint", {
244
+ /**
245
+ * Compute the end point of the ellipse arc.
246
+ * @returns Return the end point of the ellipse arc.
247
+ */
248
+ get: function () {
249
+ return this.getPointAtAngle(this._endAngle);
250
+ },
251
+ enumerable: false,
252
+ configurable: true
253
+ });
254
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "isCircular", {
255
+ /**
256
+ * @inheritdoc
257
+ */
258
+ /**
259
+ * Check if this ellipse arc is actually a circular arc (major and minor radii are equal)
260
+ * @returns True if the ellipse arc is circular
261
+ */
262
+ get: function () {
263
+ return AcGeTol.equal(this.majorAxisRadius, this.minorAxisRadius);
264
+ },
265
+ enumerable: false,
266
+ configurable: true
267
+ });
268
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "length", {
269
+ get: function () {
270
+ // For circular arcs, use the exact formula: length = radius * deltaAngle
271
+ if (this.isCircular) {
272
+ return this.majorAxisRadius * Math.abs(this.deltaAngle);
273
+ }
274
+ // For elliptical arcs, use numerical integration
275
+ var steps = 1000;
276
+ var step = this.deltaAngle / steps;
277
+ var length = 0;
278
+ var prevPoint = this.getPointAtAngle(this.startAngle);
279
+ for (var i = 1; i <= steps; i++) {
280
+ var angle = this.startAngle + i * step;
281
+ var point = this.getPointAtAngle(angle);
282
+ var dx = point.x - prevPoint.x;
283
+ var dy = point.y - prevPoint.y;
284
+ var dz = point.z - prevPoint.z;
285
+ length += Math.sqrt(dx * dx + dy * dy + dz * dz);
286
+ prevPoint = point;
287
+ }
288
+ return length;
289
+ },
290
+ enumerable: false,
291
+ configurable: true
292
+ });
293
+ /**
294
+ * Compute the bounding box of the 3D ellipse arc.
295
+ * The bounding box is defined by its minimum and maximum x, y, and z coordinates.
296
+ * @returns Return bounding box containing the min and max coordinates
297
+ */
298
+ AcGeEllipseArc3d.prototype.calculateBoundingBox = function () {
299
+ var e_1, _a;
300
+ // To make it faster, check whether major axis is euqal to x-axis or y-axis firstly because
301
+ // major axis of ellipse arc is equal to x-axis or y-axis in most of cases.
302
+ if (this.majorAxis.equals(AcGeVector3d.X_AXIS) ||
303
+ this.majorAxis.equals(AcGeVector3d.Y_AXIS) ||
304
+ this.majorAxis.isParallelTo(AcGeVector3d.X_AXIS) ||
305
+ this.majorAxis.isParallelTo(AcGeVector3d.Y_AXIS)) {
306
+ var angles = [this.startAngle, this.endAngle];
307
+ for (var i = 0; i < 2 * Math.PI; i += Math.PI / 2) {
308
+ if (AcGeMathUtil.isBetweenAngle(i, this.startAngle, this.endAngle)) {
309
+ angles.push(i);
310
+ }
311
+ }
312
+ var minX = Infinity, minY = Infinity, minZ = Infinity;
313
+ var maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
314
+ try {
315
+ for (var angles_1 = __values(angles), angles_1_1 = angles_1.next(); !angles_1_1.done; angles_1_1 = angles_1.next()) {
316
+ var angle = angles_1_1.value;
317
+ var point = this.getPointAtAngle(angle);
318
+ if (point.x < minX)
319
+ minX = point.x;
320
+ if (point.y < minY)
321
+ minY = point.y;
322
+ if (point.z < minZ)
323
+ minZ = point.z;
324
+ if (point.x > maxX)
325
+ maxX = point.x;
326
+ if (point.y > maxY)
327
+ maxY = point.y;
328
+ if (point.z > maxZ)
329
+ maxZ = point.z;
330
+ }
331
+ }
332
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
333
+ finally {
334
+ try {
335
+ if (angles_1_1 && !angles_1_1.done && (_a = angles_1.return)) _a.call(angles_1);
336
+ }
337
+ finally { if (e_1) throw e_1.error; }
338
+ }
339
+ return new AcGeBox3d({ x: minX, y: minY, z: minZ }, { x: maxX, y: maxY, z: maxZ });
340
+ }
341
+ else {
342
+ var numPoints = 100;
343
+ var minX = Infinity, minY = Infinity, minZ = Infinity;
344
+ var maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
345
+ for (var i = 0; i <= numPoints; i++) {
346
+ var angle = this.startAngle + this.deltaAngle * (i / numPoints);
347
+ var point = this.getPointAtAngle(angle);
348
+ minX = Math.min(minX, point.x);
349
+ minY = Math.min(minY, point.y);
350
+ minZ = Math.min(minZ, point.z);
351
+ maxX = Math.max(maxX, point.x);
352
+ maxY = Math.max(maxY, point.y);
353
+ maxZ = Math.max(maxZ, point.z);
354
+ }
355
+ // Return the bounding box defined by min and max coordinates
356
+ return new AcGeBox3d({ x: minX, y: minY, z: minZ }, { x: maxX, y: maxY, z: maxZ });
357
+ }
358
+ };
359
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "closed", {
360
+ /**
361
+ * Return true if its start point is identical to its end point. Otherwise, return false.
362
+ */
363
+ get: function () {
364
+ return this.deltaAngle == 0;
365
+ },
366
+ enumerable: false,
367
+ configurable: true
368
+ });
369
+ AcGeEllipseArc3d.prototype.getPoints = function (numPoints) {
370
+ if (numPoints === void 0) { numPoints = 100; }
371
+ var points = [];
372
+ var deltaAngle = this.deltaAngle;
373
+ var startAngle = this.startAngle;
374
+ if (this.closed) {
375
+ deltaAngle = TAU;
376
+ startAngle = 0;
377
+ }
378
+ for (var i = 0; i <= numPoints; i++) {
379
+ var angle = startAngle + deltaAngle * (i / numPoints);
380
+ var point = this.getPointAtAngle(angle);
381
+ points.push(point);
382
+ }
383
+ return points;
384
+ };
385
+ /**
386
+ * Calculate a point on the ellipse at a given angle.
387
+ * @param angle Input the angle in radians where the point is to be calculated.
388
+ * @returns Return the 3d coordinates of the point on the ellipse.
389
+ */
390
+ AcGeEllipseArc3d.prototype.getPointAtAngle = function (angle) {
391
+ var cosTheta = Math.cos(angle);
392
+ var sinTheta = Math.sin(angle);
393
+ var tmp = this.minorAxis
394
+ .clone()
395
+ .multiplyScalar(this.minorAxisRadius)
396
+ .multiplyScalar(sinTheta);
397
+ var point = this.majorAxis
398
+ .clone()
399
+ .multiplyScalar(cosTheta * this.majorAxisRadius)
400
+ .add(tmp);
401
+ return new AcGePoint3d(this.center.x + point.x, this.center.y + point.y, this.center.z + point.z);
402
+ };
403
+ /**
404
+ * Determines whether a given point is inside the ellipse.
405
+ * @param point - The 3D point to check.
406
+ * @returns - True if the point is inside the ellipse, false otherwise.
407
+ */
408
+ AcGeEllipseArc3d.prototype.contains = function (point) {
409
+ var toPoint = new AcGeVector3d(point).sub(this.center);
410
+ var majorDist = toPoint.dot(this.majorAxis);
411
+ var minorDist = toPoint.dot(this.minorAxis);
412
+ var normalizedMajorDist = majorDist / this.majorAxisRadius;
413
+ var normalizedMinorDist = minorDist / this.minorAxisRadius;
414
+ return (normalizedMajorDist * normalizedMajorDist +
415
+ normalizedMinorDist * normalizedMinorDist <=
416
+ 1);
417
+ };
418
+ /**
419
+ * @inheritdoc
420
+ */
421
+ AcGeEllipseArc3d.prototype.transform = function (_matrix) {
422
+ this._boundingBoxNeedsUpdate = true;
423
+ return this;
424
+ };
425
+ /**
426
+ * @inheritdoc
427
+ */
428
+ AcGeEllipseArc3d.prototype.copy = function (value) {
429
+ this.center = value.center;
430
+ this.normal = value.normal;
431
+ this.majorAxis = value.majorAxis;
432
+ this.majorAxisRadius = value.majorAxisRadius;
433
+ this.minorAxisRadius = value.minorAxisRadius;
434
+ this.startAngle = value.startAngle;
435
+ this.endAngle = value.endAngle;
436
+ this._boundingBoxNeedsUpdate = true;
437
+ return this;
438
+ };
439
+ /**
440
+ * @inheritdoc
441
+ */
442
+ AcGeEllipseArc3d.prototype.clone = function () {
443
+ return new AcGeEllipseArc3d(this.center, this.normal, this.majorAxis, this.majorAxisRadius, this.minorAxisRadius, this.startAngle, this.endAngle);
444
+ };
445
+ Object.defineProperty(AcGeEllipseArc3d.prototype, "plane", {
446
+ /**
447
+ * Return the plane in which the ellipse arc lies.
448
+ */
449
+ get: function () {
450
+ var distance = new AcGeVector3d(this.center).distanceTo(ORIGIN_POINT_3D);
451
+ return new AcGePlane(this.normal, distance);
452
+ },
453
+ enumerable: false,
454
+ configurable: true
455
+ });
456
+ return AcGeEllipseArc3d;
457
+ }(AcGeCurve3d));
458
+ export { AcGeEllipseArc3d };
459
+ //# sourceMappingURL=AcGeEllipseArc3d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeEllipseArc3d.js","sourceRoot":"","sources":["../../src/geometry/AcGeEllipseArc3d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { AcGeBox2d, AcGeMatrix2d, AcGePoint2d, AcGePoint2dLike } from '../math';
2
+ import { AcGeCurve2d } from './AcGeCurve2d';
3
+ /**
4
+ * The class represents one 3d line geometry specified by its start point and end point.
5
+ */
6
+ export declare class AcGeLine2d extends AcGeCurve2d {
7
+ private _start;
8
+ private _end;
9
+ /**
10
+ * This constructor initializes the line object to use start as the start point, and end
11
+ * as the endpoint. Both points must be in WCS coordinates.
12
+ */
13
+ constructor(start: AcGePoint2dLike, end: AcGePoint2dLike);
14
+ /**
15
+ * The line's startpoint in WCS coordinates
16
+ * @returns Return the line's startpoint in WCS coordinates.
17
+ */
18
+ get startPoint(): AcGePoint2d;
19
+ set startPoint(value: AcGePoint2dLike);
20
+ /**
21
+ * The line's endpoint in WCS coordinates
22
+ * @returns Return the line's endpoint in WCS coordinates.
23
+ */
24
+ get endPoint(): AcGePoint2d;
25
+ set endPoint(value: AcGePoint2dLike);
26
+ /**
27
+ * Convert line to a point array with start point and end point.
28
+ * @returns Return an array of point
29
+ */
30
+ getPoints(): AcGePoint2d[];
31
+ /**
32
+ * @inheritdoc
33
+ */
34
+ get length(): number;
35
+ /**
36
+ * @inheritdoc
37
+ */
38
+ calculateBoundingBox(): AcGeBox2d;
39
+ /**
40
+ * @inheritdoc
41
+ */
42
+ transform(matrix: AcGeMatrix2d): this;
43
+ /**
44
+ * @inheritdoc
45
+ */
46
+ get closed(): boolean;
47
+ /**
48
+ * @inheritdoc
49
+ */
50
+ copy(value: AcGeLine2d): this;
51
+ /**
52
+ * @inheritdoc
53
+ */
54
+ clone(): AcGeLine2d;
55
+ }
56
+ //# sourceMappingURL=AcGeLine2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeLine2d.d.ts","sourceRoot":"","sources":["../../src/geometry/AcGeLine2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;GAEG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAa;IACzB;;;OAGG;gBACS,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe;IAMxD;;;OAGG;IACH,IAAI,UAAU,IAAI,WAAW,CAE5B;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,eAAe,EAGpC;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,WAAW,CAE1B;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,eAAe,EAGlC;IAED;;;OAGG;IACH,SAAS,IAAI,WAAW,EAAE;IAI1B;;OAEG;IACH,IAAI,MAAM,WAET;IAED;;OAEG;IACH,oBAAoB,IAAI,SAAS;IAYjC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY;IAO9B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU;IAOtB;;OAEG;IACH,KAAK;CAGN"}
@@ -0,0 +1,125 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ import { AcGeBox2d, AcGePoint2d } from '../math';
17
+ import { AcGeCurve2d } from './AcGeCurve2d';
18
+ /**
19
+ * The class represents one 3d line geometry specified by its start point and end point.
20
+ */
21
+ var AcGeLine2d = /** @class */ (function (_super) {
22
+ __extends(AcGeLine2d, _super);
23
+ /**
24
+ * This constructor initializes the line object to use start as the start point, and end
25
+ * as the endpoint. Both points must be in WCS coordinates.
26
+ */
27
+ function AcGeLine2d(start, end) {
28
+ var _this = _super.call(this) || this;
29
+ _this._start = new AcGePoint2d(start);
30
+ _this._end = new AcGePoint2d(end);
31
+ return _this;
32
+ }
33
+ Object.defineProperty(AcGeLine2d.prototype, "startPoint", {
34
+ /**
35
+ * The line's startpoint in WCS coordinates
36
+ * @returns Return the line's startpoint in WCS coordinates.
37
+ */
38
+ get: function () {
39
+ return this._start;
40
+ },
41
+ set: function (value) {
42
+ this._start.copy(value);
43
+ this._boundingBoxNeedsUpdate = true;
44
+ },
45
+ enumerable: false,
46
+ configurable: true
47
+ });
48
+ Object.defineProperty(AcGeLine2d.prototype, "endPoint", {
49
+ /**
50
+ * The line's endpoint in WCS coordinates
51
+ * @returns Return the line's endpoint in WCS coordinates.
52
+ */
53
+ get: function () {
54
+ return this._end;
55
+ },
56
+ set: function (value) {
57
+ this._end.copy(value);
58
+ this._boundingBoxNeedsUpdate = true;
59
+ },
60
+ enumerable: false,
61
+ configurable: true
62
+ });
63
+ /**
64
+ * Convert line to a point array with start point and end point.
65
+ * @returns Return an array of point
66
+ */
67
+ AcGeLine2d.prototype.getPoints = function () {
68
+ return [this.startPoint, this.endPoint];
69
+ };
70
+ Object.defineProperty(AcGeLine2d.prototype, "length", {
71
+ /**
72
+ * @inheritdoc
73
+ */
74
+ get: function () {
75
+ return this.startPoint.distanceTo(this.endPoint);
76
+ },
77
+ enumerable: false,
78
+ configurable: true
79
+ });
80
+ /**
81
+ * @inheritdoc
82
+ */
83
+ AcGeLine2d.prototype.calculateBoundingBox = function () {
84
+ var min = new AcGePoint2d(Math.min(this._start.x, this._end.x), Math.min(this._start.y, this._end.y));
85
+ var max = new AcGePoint2d(Math.max(this._start.x, this._end.x), Math.max(this._start.y, this._end.y));
86
+ return new AcGeBox2d(min, max);
87
+ };
88
+ /**
89
+ * @inheritdoc
90
+ */
91
+ AcGeLine2d.prototype.transform = function (matrix) {
92
+ this._start.applyMatrix2d(matrix);
93
+ this._end.applyMatrix2d(matrix);
94
+ this._boundingBoxNeedsUpdate = true;
95
+ return this;
96
+ };
97
+ Object.defineProperty(AcGeLine2d.prototype, "closed", {
98
+ /**
99
+ * @inheritdoc
100
+ */
101
+ get: function () {
102
+ return false;
103
+ },
104
+ enumerable: false,
105
+ configurable: true
106
+ });
107
+ /**
108
+ * @inheritdoc
109
+ */
110
+ AcGeLine2d.prototype.copy = function (value) {
111
+ this.startPoint = value.startPoint;
112
+ this.endPoint = value.endPoint;
113
+ this._boundingBoxNeedsUpdate = true;
114
+ return this;
115
+ };
116
+ /**
117
+ * @inheritdoc
118
+ */
119
+ AcGeLine2d.prototype.clone = function () {
120
+ return new AcGeLine2d(this._start.clone(), this._end.clone());
121
+ };
122
+ return AcGeLine2d;
123
+ }(AcGeCurve2d));
124
+ export { AcGeLine2d };
125
+ //# sourceMappingURL=AcGeLine2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcGeLine2d.js","sourceRoot":"","sources":["../../src/geometry/AcGeLine2d.ts"],"names":[],"mappings":"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"}